For a long time, our concept of element ordering and position has been very weak. Whenever we need to operate on multiple elements (eg. chasing, spinning, etc.) we've assumed/inferred the element ordering from their order in the group (as setup). Also, we assume that they are equally spaced/positioned (ie. every element is equally sized, and they're all in a line, etc.) This isn't accurate in many cases (eg. when applying effects to larger groups – multiple display sections at once, or even the whole display!). On top of this, we have no good concept of any 2D spaces, for using things like nutcracker effects: all nutcracker operations try to infer a grid from the group setup (of the element they're applied to).
There are may ways we could improve this area in general. We need to figure out ways to put them all together into a cohesive system.
- adding the idea of having different 'views' or 'orders' of elements. These would provide more meaningful information about how elements are set up and how they relate to each other. For example, there might be some 2D 'views' set up for a pixel megatree, or a pixel grid display, or even the whole display, which would provide information about what elements are at what position. This could be used by any effect to render against more accurately. (Nutcracker does this at the moment, but 'guesses' based on element setup; the Wipe effect does this, but only against fixed positions from the display preview.) This would allow new effects like displaying a picture or video on an element or the whole display, as the 2D positions could be provided.
We could also add the ability to have some 1D 'views' (or 'orders') for groups; for example, a spin or chase only operates on a 1D set of elements. If we could get better information about how elements relate in a single 1-dimensional plane, we could more accurately apply effects to collections of elements and have them render accurately. This would fix what Jon wants to do in
– once these 'views' and 'orders' have been imagined, we need to be able to set them up. There could be multiple ways to do this – such as doing it manually, and some might be automatically made for you (eg. when making a megatree) – but there would probably need to be a way to do so via the display preview.
Currently, we automatically set basic 2D positions from the preview, but only for the whole display, and only one single 'view'. If we had some way to define multiple 2D planes or data sets, we would be able to do a lot more. (This would probably require 3D views of the preview, to take 2D 'snapshots'). Once we have that, it's quite easy to take a 2D plane, apply a single vector, and reduce it to a 1D plane (or 'order').
– Once we have those concepts in place, effects would need to be modified to utilize that data instead of their default assumption of element group order.
– within an effect, there would probably be multiple options for a 1D or 2D view to use. The default could be "as per group order", which is what it currently does. Then, there could be options for each one that is set up: "using view 'front of house'", "using view 'side of house'", etc. (there could also be some options for non-preview based views, such as generated ones from element templates (eg. when setting up a megatree)).