Paint Tracking - stroke/tracker relationship

I think it’s worth clarifying how this works, piecing together @Jeff’s explanation and my experience since.

Each paint stroke has a number of animation channels, including a position x/y. This is stored on a per stroke basis.

Even though in the UI this is labeled ‘Axis’, there doesn’t appear a separate persistent Axis object attached to the stroke. Instead there is a single hidden Axis object that exists for the entire node. When you enter the tracker, it is this hidden Axis object that you are tracking (which is also why the most recent tracking data pop back up when you re-enter the tracker).

When you return from the tracker UI, the position x/y data from this hidden Axis object is copied into the position x/y channels of all selected strokes. But it’s a one-time copy, not a link.

When you select a different set of strokes, reset that hidden Axis object, and do a new track, the refreshed data gets copied to the now selected strokes.

This hidden axis object is what Jeff aptly called a scratchpad, because that’s exactly how it acts.

As a result of this Axis object being recycled and there not being a link, there is no way of keeping any information. The best that could be done is keeping kind of a tracking generation/version number that starts at 1 and gets incremented every time the Axis object tracking data gets changed. Then in the stroke edit tab it could simply show this generation/version number, so you know which set of tracking data it currently occupies. But this would be purely informational, and possibly of limited use.

While this single temp Axis object concept was an efficient way of implementing it, and somewhat genius in that way, it is counter to the way Axis objects are used almost everywhere else, which makes it a bit of outlier/source of confusion. I think long-term, maintaining persistent axis objects with links to groups of strokes would be a an improvement both for consistency, and also making it easier to manage/refine tracking data. It would also open the option to track with two points to populate the scale channels in the stroke.

Screen Shot 2023-07-13 at 8.42.07 AM

PS: Should also amend Jeff’s wording. He wrote ‘Tracking data does not persist on a per-stroke basis’. That’s a bit ambiguous as a statement. It’s true that the tracker itself does not persist on per stroke basis. But the tracking result data, specifically the position x/y does persist by the way of copying it into the strokes position channels.

2 Likes