Copy link to clipboard
Copied
Hi, I'm setting lots of expressions to comps & layers via a jsx file.
In current versions I have no problems, but the Beta app (23.4.0) gives me errors, while there are none...
What the issue probably is, is that I'm setting e.g.
_ references to effects (and ffx files) which are not applied yet
_ linking to layer names in compositions which are renamed afterwards in the jsx file etc...
So it seems that the Beta version is evaluating expression on the fly, while current AE versions check the expressions afterwards.
I tried to fix some issues with "autoFixExpressions", but that doesn't work in this case...
Is there anything to worry about when the new release comes out, or will this behaviour of "evaluating expressions" change?
The reason I ask, is because it's a bit clumsy to go through "expression errors" only to click them away and be totally fine at the end.
Anyhow, hope to hear from you, Jochem
Copy link to clipboard
Copied
Hi @Jochem.dk,
Thank you for posting about this issue. Would you be able to share a sample project with a .jsx data file that exhibits this issue, along with the steps to reproduce the errors? And what are your system details?
Seeing issues in the Beta that aren't occurring in the release version is an indicator that a recent change may have introduced a bug and we would like to investigate it before it is released to all customers. Your report appears to indicate that expression evaluation has already changed, hence our need to investigate.
Thank you again for posting about this and for any further info,
- John, After Effects Engineering Team
Copy link to clipboard
Copied
Yes, sure - first thing in the morning!
Copy link to clipboard
Copied
Hi John, thx for looking into this.
My specs: MacOS Ventura 13.2.1 / AE Beta 23.4.0
2,4 GHz 8-Core Intel Core i9 / AMD Radeon Pro 5500M 8 GB
Intel UHD Graphics 630 1536 MB / 64 GB 2667 MHz DDR4
So I tested this morning with an oversimplified version of my jsx file..
In the current releases 22/23 of AE there is no problem, but in the Beta version I get errors..
The crazy thing is that sometimes I get 1 or 2 errors & sometimes I get none, but that's probably because this script is so simple. I can assure you that on a larger script with way more things going on I get a lot of "non-existing" errors..
I also get more errors when the composition window is closed before running the script (which is the case in my larger setup).
Another strange thing is that there's a difference in how the errors are shown, depending if your layers are set to layerNames or sourceNames (see attachment).
And yes I need to set expressions before names are changed or effects are added 🙂
So below is a simple jsx script to test, hope you can encounter the same issue.
/*
_ Just add a compostion and insert a solid layer.
_ With the composition selected in the project panel, run this simple script.
*/
app.beginUndoGroup("z");
if(app.project.activeItem == null || !(app.project.activeItem instanceof CompItem)) {
alert("Select a comp..");
}else{
var activeComp = app.project.activeItem;
var cmpName = activeComp.name;
var lay = activeComp.layer(1);
var layName = lay.name;
// just a precomp & set some expression to - currently none existing - name and layerFX
var preComp = activeComp.layers.precompose([1], layName, false);
var preLay = preComp.layer(1);
preLay("ADBE Transform Group").property("ADBE Opacity").expression = 'comp("' + cmpName + '").layer("someFX").effect("slide")(1)';
preLay("ADBE Transform Group").property("ADBE Scale").expression = 'comp("' + cmpName + '").layer("renamed")("ADBE Transform Group")("ADBE Scale")';
// add
activeComp.layers.addNull();
fxNull = activeComp.layers[1];
fxNull.selected = false;
fxNull.source.name = "someFX";
fxNull.enabled = false;
fxNull.guideLayer = true;
var pr = fxNull.property("ADBE Effect Parade").addProperty("ADBE Slider Control");
pr.name = "slide";
fxNull.effect("slide")(1).setValue(66);
fxNull.effect("slide")(1).expression = 'clamp(effect("slide")(1),0,100);';
pr.enabled = true;
activeComp.layer(2).name = "renamed";
activeComp.openInViewer();
};
app.endUndoGroup();
Copy link to clipboard
Copied
Copy link to clipboard
Copied
As primarily a Mac user, I wasn't aware this is also a Windows thing. I asked chatGPT who gave me the solution... "To address the issue while still using composition, layer, and effect names, you can escape the double quotes in your expressions".
So these are the lines to change in the above code to get it working on Windows:
# Note: still having issues in the Mac Beta version..
preLay("ADBE Transform Group").property("ADBE Opacity").expression = 'comp(\"' + cmpName + '\").layer(\"someFX\").effect(\"slide\")(1)';
preLay("ADBE Transform Group").property("ADBE Scale").expression = 'comp(\"' + cmpName + '\").layer(\"renamed\")(\"ADBE Transform Group\")(\"ADBE Scale\")';
fxNull.effect("slide")(1).expression = 'clamp(effect(\"slide\")(1),0,100);';
Copy link to clipboard
Copied
this is annoying, why can't I edit my posts on this site?.. last call to someone who knows... yes, on a Mac there's the same issue as well, forgot to turn on my show errors bar in the settings 😞 But, still the code works fine, but the errors are just simply not true. Anyone?
Copy link to clipboard
Copied
Thank you for your patience @Jochem.dk. I am down at NAB this week, but I will be more deeply investigating this expression behavior once I return. The inability to edit to related to the maturity of your forum account; newer accounts are not allowed to edit posts until a certain number of posts.
Cheers,
- John, After Effects Engineering Team
Copy link to clipboard
Copied
Hi @JohnColombo ,
The only thing which seems to be working is..
1. setting an expression
2. immediately turn in it off: .expressionEnabled = false;
3. do all the rest
4. at the very end turn all expressions on / to true
Isn't there a more elegant way? The problem is I have to go through multiple compositions twice (potentially hundreds..), which will take unnecessary extra time. Hope to hear from you, tia, Jochem
Copy link to clipboard
Copied
Hi @Jochem.dk,
Thank you for your patience. I was able to give your script a try and found that the errors are not specific to the latest Betas (I could repro them in AE 2022) and that they are related to rendering and expression evaluation.
Expressions are not always re-evaluated when applied—they get re-evaluated when a frame is rendered. In the case of your script, the script created a pre-comp and added expressions within it, but the frames within the pre-comp were not re-rendered when the item names changed because nothing had changed within the pre-comp. This led to the errors you saw when the names of items in the project changed; the expressions were not able to re-evaluate and have their errors resolved as they usually would when the name of a referenced item changed.
To prevent the errors, you can do a couple of things:
The second option above requires a little more code, but I've found it to be more reliable in preventing errors like the ones you saw, due to variability in render performance and the synchronous nature of the scripting. This works both in previous versions and the latest Beta builds.
Cheers,
- John, After Effects Engineering Team
Copy link to clipboard
Copied
Hi John,
I get it and was also afraid of this answer 🙂 Since there's no such thing as a global project "reset evaluation", I prepared my script like I mentioned in my previous comment. Thx anyway, perhaps this reset evaluation thing would be a nice addition for a next update? Cheers, Jochem