Big Bug: Expressions on Shape Layer FX (with demo video)
Here's a two-minute demo of the bug in question: https://www.youtube.com/watch?v=Q_c6XOWOv-w
...and here's the same thing in text form:
1) New Comp ([1000,1000])
2) New Shape Layer
3) Effects -> Expression Controls -> Point Control ([100,100])
4) Change Comp Size ([880, 1230])
The value of the Point Control CHANGES ITSELF from [100,100] to [88, 123].
As I mention in the video, I'm sure this has something to do with the back-end of how Shape Layers deal with the canvas — and, obviously, Shape Layers aren't meant to have renderable effects applied to them. That said, I can't think of a good reason for Shape Layers to preclude the use of an empty expression controller. An argument along the lines of 'but Shape Layers are only meant for mograph pipelines, so you should never need to use effects on them' would seem to be forgetting that we use expression controllers all the time in a mograph pipeline.
Anyway. Funny 'lil bug. Hopefully it's easy to stomp out.
(In the meantime, I'm counteracting this behavior with yet another expression. :-P)
Thank you for reporting this. At the moment, it’s unclear what you would like to have changed.
The cause of what you are observing is that shape layers always inherit the dimensions of the composition that contains them. Thus, by changing the dimensions of the composition, you are also changing the dimensions of the shape layer.
You will get the same result if you apply a Point Control effect to a solid layer, and then change the dimensions of the solid layer. The coordinate values of the Point Control will scale to compensate.
The result in both cases is that coordinate values are scaled along with the layer so that the any rendered result is proportional to the original. If this wasn’t done, effects wouldn’t appear to scale with the rest of the layer and the result would look “wrong”.
I can see that may not be the result you expect from an unreferenced expression controller, however the Point Control effect remains an effect and if referenced could affect rendering. An exception would need to be made for an unreferenced controller to behave differently.
What about this behavior would you like to see changed? How should After Effects behave differently? Should this be a global change, or should there be affordance for the user to control the behavior?
For a case like this, I wouldn’t use a shape layer as the source for the Point Control effect. The Point Controller could be applied to a different layer type (solid or null) that doesn’t scale with the composition, or you could store and reference the value in a different way (text layer, comment, etc.). Or, as you’ve mentioned, you can write an expression in a way that compensates for any changes to the composition size.
Also: I would not say that shape layers aren’t meant to have renderable effects applied to them. If they weren’t, After Effects wouldn’t allow you to do so. Apply away!