Forum Replies Created
-
Due to the logic unknown to me, 2 revolutions of Temporal Phase correspond to 1 sec of wiggle time.
Fun fact: the correspondence is slightly inaccurate under non-integer 29.97 fps but exact under integer 30 or 60 fps.Anyway, due to this fact, offsetting Temporal Phase back every t second by 2*360*t will result in looping the wiggle after time=t.
Expression for Temporal Phase (looping after time=4):
loopTime = 4;
-2*loopTime *360*Math.floor(time/loopTime);
The loop like this will not be smooth at the cut-offs but I’m sure there are easy workarounds for that. -
Oleg Pirogov
March 28, 2019 at 11:33 am in reply to: Stopping a loopOut() expression at a certain frame>I also tried the solution from there -> https://forums.creativecow.net/docs/forums/post.php?forumid=227&postid=20810&univpostid=20810&pview=t
Well that quite an elegant solution, which in your case I guess will look smth like that:
t = timeToFrames(2000);
fadeTime = 1;
ease(time,t,t+fadeTime,loopOut(),value)
I would suggest to try to figure out why it doesn’t work in your case, but anyway you can always go rigth-click on looped-out property -> Keyframe Assistant -> Convert Expression to Keyframes and do all the things manually. -
Oleg Pirogov
March 28, 2019 at 11:20 am in reply to: Having issues with the Anchor Behind Tool for 3D ObjectsIf I get it right, you have Position property animated for that green rectangle
>it only moved the middle point and not the other points as well, like in the second picture
>I’ve already successfully moved the anchor points for my other 3D Objects, and those times the entire anchor point moved
These are anchor points of Position property’s spatial trajectory. They are the little squares [I assume] you want to move altogether. They a moved using Selection Tool.Pan Behind tool works with layer’a anchor point which is kinda totally different thing than anchor point of spatial trajectory. It is the aim-like thing which [I assume] you don’t need to move, so you don’t need Pan Behind tool.
If you want to move the whole trajectory, you should select all it’s anchor points and move them simultaneously wherever you want. You can select them by clicking on the Position property.
-
“i” stuff was a debugging thing, you don’t need it:
var t = text.sourceText;
var regex = /\d[a-z]+(?=,)/g;function indexMatched(index){
var matched = false;
var match;while ((match = regex.exec(t)) !== null){
matched |= match.index -
First of all lookbehind assertion is not implemented in JS before ECMAScript 2018, thus will not work with AE’s legacy expression engine, i.e. will not work in any version before CC 2019. So I will proceed with:
/\d[a-z]+(?=,)/g
, keeping in mind that it also matches the number at the beginning.Next, for picking the desired characters I will use Expression Selector for Text Animator. It runs its expression for every character indexed as “textIndex” if Based On property = Characters. Note, that for the first char textIndex=1 not 0;
For each textIndex expression evaluates, if the corresponding char is one of those to be colored. And colors it if yes.
Looks like this:
var t = text.sourceText;
var regex = /\d[a-z]+(?=,)/g;function indexMatched(index){
var matched = false;
var match;
var i=[];while ((match = regex.exec(t)) !== null){
matched |= match.indexWorks like this:

I hope I got it right and that's what you wish for. -
Oleg Pirogov
March 15, 2019 at 11:38 am in reply to: How to make Outer Glow layer style work properly in 3D space?If I got it right, you’ve applied Layer Styles to a 3D layer (a precomp) and after that it stopped interacting properly with other 3D layers?
Yeah, that’s what it does: https://www.provideocoalition.com/cmg_hidden_gems_chapter_13_-_3d_space/ (at the end: Mixing 2D and 3D Layers).
That’s for “what’s going on”.As for workarounds, I’m sure there are many ways. The first thing that comes to my mind is to go to you precomp, precomp it again (as a 2D) layer, scale it a bit, so the glow will fit in, and add the glow. Should save you from those 2D-3D layer intersect issues.
-
I suppose,
seedRandom(index, true);
s=random(0, 100);
[s,s]; -
How about converting NULL 1 animation to keyframes, copying it to NULL 2 and smoothing the movement through spatial interpolation?
BTW,
>if I can access NULL2.transform.position.valueAtTime( t-1 ) in the expression calculating NULL.transform.position at time t
yes, sure. -
Oleg Pirogov
March 14, 2019 at 4:38 am in reply to: Using a marker with specific name to trigger animation multiple timesI suppose you only need to add a line that checks, if the comment of nearest (from the left) marker equals “Click”:
theMarker = marker.key("Click");n = marker.nearestKey(time).index;
if (marker.key(n).time > time) n--;
if (n!== 0 && marker.key(n).comment == "Click") theMarker=marker.key(n);rampStart = theMarker.time;
rampEnd = theMarker.time + .15;
startVal = [100,100];
maxVal = [85,85];rampMid = rampStart + (rampEnd - rampStart)/2;
if (time < rampStart || time > rampEnd){
value
}else if (time < rampMid){
ease(time,rampStart,rampMid,startVal, maxVal)
}else{
ease(time,rampMid,rampEnd,maxVal,startVal)
}P.S. I’ve omitted marker.numKeys > 0 condition since your code assumes there’s at least one marker anyway.
And if there are several markers with the same comment (a.k.a key(name)) “Click”, this: marker.key(“Click”) – returns the first of them -
Oleg Pirogov
March 14, 2019 at 12:53 am in reply to: limit a string-length by the length of another stringIf you are ok with throwing away the symbols out of safe are, why not just use a Paragraph Text of safe area size?
It will do exactly what you want, as it appears to me.