Short version: When I parent a beam's end point to a motion-track point on a null, it's offset a bit to the right and slightly lower (perhaps 30 to 40 pixels each way) in relation to the motion tracker. It follows the track uniformly as expected, but always with that offset, which of course kills the accuracy. Likewise, parenting a beam to a shape layer's position results in the same offset.
All the tutorials I've watched on how to animate beams via their starting/ending points don't seem to have that problem. They always seem to align accurately to whichever element they're being parented.
I can't figure out what I'm doing wrong to cause the offset.
Here's the longer, more detailed version of what I'm doing...
Project concept: pricetags move around slowly while lines (via the beam generator) connect those pricetags to corresponding items on a base-layer video (FWIW, the video track is a pre-composition, made necessary by the use of a warp stabilizer; resulting motion tracking is accurate). The pricetags reduce in scale as items get further away. Simple concept.
First bit: Each pricetag is contained in one shape layer, made with a horizontal rectangle and triangle at the side; a merge-path and stroke are applied to the entire shape. I snap the entire shape's anchor point to the tip of the triangle. The beam's starting point is supposed to be at the tip of the triangle. I then keyframe a slow, simple, straight-line movement across the duration of the composition. It all goes smoothly until I parent the starting point of the beam to the shape's keyframed position. Instead of connecting to the shape's anchor at the pointed tip (isn't that where it's supposed to connect??), the beam's starting point is offset by about 30 or 40 pixels to the right and down, so it doesn't actually touch the pricetag.
Second bit: I motion-track an object on the video layer, send it to a null, and then parent the beam's end point to that null. All pretty basic stuff. Except the beam's end point is... you guessed it... offset. It doesn't land on the motion track point. It's a bit to the right and down, roughly 30 to 40 pixels each way.
So I tried it a different way, customizing this script template on the beam's starting and end points:
I adjusted the numerical values to get the beam's point precisely where it needed to be. It worked like a charm until the pricetag was scaled up or down, at which time the starting point no longer corresponded accurately.