Copy link to clipboard
Copied
I have an expression that references an expression controller (slider) on another layer, in another comp.
It was working fine until randomly the reference the the slider will only return 0, even though the slider has a non-zero value.
There is no error, and when I rename the expression controller it auto-updates the name in my reference. So clearly it still pointed correctly. If I reference the same controller from an expression within the same comp it returns the actual value.
My assumption is this is a bug. But I dont know how to get around it. I would appreciate any help.
If the slider is being referenced from a comp that's nested as a layer in the comp with the slider, and the slider is animated (keyframed or expression), and the nested comp layer doesn't start at time 0, you have to adjust your expression, using something like this:
C = comp("Main Comp");
ctrl = C.layer("Controls").effect("Slider Control")("Slider");
L = C.layer(thisComp.name);
ctrl.valueAtTime(time + L.startTime)
Copy link to clipboard
Copied
It could be a timing issue. We need to see a flowchart showing the relationship and we need to see the modified properties of the layers giving you problems. Press 'uu' to reveal all modified properties, share the expressions, and give us your AE version down to the last decimal point and your system and os specs.
I have a couple of expressions in a fairly complex extended graphics project that is suffering timing issues that cause a crash when you scrub through the timeline quickly. I did find a workaround, but it took removing some of the references to time in the expressions.
Copy link to clipboard
Copied
I'm running Windows 10 Pro version 2004 (KB4023057), Intel i9-9900k, Nvidia 2080ti, AE 17.6.0 (build 46).
I have many (probably too many) expressions controlling a decently complex project. Too many to paste here but I can describe exactly what is going on that is relevant to this issue.
- I have a comp with a null with many expression controllers; mostly sliders that animate 0-100 with keyframes.
- In that comp I have a precomp that has many layers referencing one of the sliders. this reference results in 0.
- Even if I create a text layer in the precomp and set the sourcetext to the value of the slider, it will return 0.
- If I create a text layer in the main comp and set the sourcetext to the value of the slider, it will return the true value.
- I have a single reference to time in another layer which is totally unrelated. removing this doesnt change my outcome.
Let me know if thats enough information. Just to be clear, all was working fine for weeks until about an hour ago. In fact if I open an older version the same expression is working.
Copy link to clipboard
Copied
If the slider is being referenced from a comp that's nested as a layer in the comp with the slider, and the slider is animated (keyframed or expression), and the nested comp layer doesn't start at time 0, you have to adjust your expression, using something like this:
C = comp("Main Comp");
ctrl = C.layer("Controls").effect("Slider Control")("Slider");
L = C.layer(thisComp.name);
ctrl.valueAtTime(time + L.startTime)
Copy link to clipboard
Copied
This seems to be my issue. Since it stopped working when I slid the layers over on my timeline.
When I move the both back to start at time 0, my expression works agian.
Trying to implement your solution now.
Copy link to clipboard
Copied
Okay as I suspected this fixed my issue.
Thanks for teaching me something new.