Forum Replies Created
-
It breaks at 91 rotations + 8 degrees i.e. at 32768. After that value it skips visually to -32768 and stays there, while the counter goes on. Apparently, this limitation is due to the maximum value of short integer type variable: 32767.
A workaround would be to make a smooth loop for evolution within the boundaries of [-32768, 32768].
Not sure, how smooth it will be in your project, but for starters you can try:
posterizeTime(6)
time*1500 % 32768 -
Oleg Pirogov
November 6, 2019 at 9:55 pm in reply to: Easing: Annoying jumps and spikes in graph editorI assume that your spatial interpolation is set to Auto Bezier by default. I also assume, that you’ve altered the in-tangent handle at your second keyframe before adding the third one, otherwise the undesired hump should not have appeared.
Tangents are auto calculated for Auto Bezier, so when you manually alter them, the spatial interpolation is changed to Continuous Bezier. BTW, there’s a bug (at least, in AE 14.2) that even if you ctrl-z and return the handle to its initial position, spatial interpolation will not return to Auto Bezier and will remain Continuous Bezier.
Anyway, when the last keyframe’s spatial interpolation is changed to Continuous Bezier, the out-tangent is set to be equal in absolute value to the in-tangent and opposite to it in direction. So when you later add a keyframe after it with the same value, it so happens that the property value has a non-zero out-acceleration at the Continuous Bezier keyframe, so some motion should happen between the 2nd and the 3rd keyframes – and that’s your hump.
If you set the 2nd keyframe spatial interpolation to Linear or Auto Bezier, you’ll make your layer hold still between the 2nd and the 3rd keyframes. Then you’ll be able to set it back to Continuous Bezier (without messing with out-tangent this time) to alter its in-tangent.
But the common practice it to Toggle Hold Keyframe every time you want a property’s value be constant between two keyframes. Here’s an old CC tutorial on the issue: https://library.creativecow.net/video_page.php?author_folder=rabinowitz_aharon&article_folder=boomerang_1
-
Ok, got it: Matte Chocker with negative Choke values applied the text used as a matte for a solid.
-
>is there any way of moving all these separate layers according to one controller, say on a radial gradient basis?
That’s exactly what Linked->Radial feature does. There will be two Null layers with various controls. On one you can change Position and on the other – Transition Completion. Grid_Transition_Helper layer contains the actual gradient.
-
When it comes to splitting, there’s a popular Utility Box script by Voxyde (https://voxyde.com/content/utility-box/ – yes, it’s free). A Grid feature there “cuts” a layer into peaces* placing each peace in a separate layer. Moving them is up to you.
Technically, for each peace it has the original layer pre-comped and then masked to the piece.
-
It’s a well-known issue with Motion Blur, though I don’t know an explanation for it. It has something to do with collapsed transformations and rendering order, so Tomas’s suggestion might work. Cleaning cash also helps usually.
I would really appreciate a project file where this bug is present.
-
The enabled stopwatch simply indicates that the property has keyframes, so to enable it you’ll have to add some keyframes.
If I understand you correctly and you want your script to change a value of a certain property so that that value is assigned to a keyframe (which will enable the stopwatch), then you would want to use setValueAtTime instead of just setValue.
For instance, the script eqivalent of toggling on the stopwatch of some property is:
YOUR_PROPERTY.setValueAtTime(activeItem.time, YOUR_PROPERTY.value); -
Oleg Pirogov
October 29, 2019 at 5:39 pm in reply to: Expression to calculate Color Blending Mode on 2 color values?So you have two color vectors:
[r2, g2, b2, a2] for the top solid (Solid2) corresponding to Blend (also called source)
[r1, g1, b1, a1] for the bottom solid (Solid1) corresponding to Target (also called backdrop)The formula you’ve found simplifies to
Target + 2*Blend – 1Linear Light is a separable blend mode, meaning that the formula is applied to each color channel separately.
For instance, for the red channel it will be:
r = r1 + 2*r2 - 1
– same for g and b.If both the Blend and the Target colors have alphas a1=a2=1, then the resulting color is simply:
[r, g, b, 1]If not, then it gets worse, cause alphas have to be taken into account.
Let:
C2 = [r2, g2, b2]
C1 = [r1, g1, b1]
B=[r, g, b]
C – resulting RGB vector (without alpha component)
a = a1+a2 – a1*a2 – resulting alphaThen:
C = (1 – a2/a)*C1+(a2/a)*((1-a1)*C2+a1*B)And the resulting color vector will be:
[Cr, Cg, Cb, a], where Cr, Cg, Cb are the components of C.JS code:
color2 = thisComp.layer("Pre-comp 1").sampleImage([1800,100], radius = [.5, .5]);
color1 = thisComp.layer("Pre-comp 1").sampleImage([100,800], radius = [.5, .5]);
C2 = color2.slice(0,3);
C1 = color1.slice(0,3);
a2=color2[3];
a1=color1[3];
a=a2+a1-a2*a1;function linearLight(r1, r2){
return r1 + 2*r2 - 1;
};B = [linearLight(C1[0], C2[0]), linearLight(C1[1], C2[1]), linearLight(C1[2], C2[2])];
aC=(a - a2)*C1+(a2)*((1-a1)*C2+a1*B);
z=[aC[0]/a, aC[1]/a, aC[2]/a, a];
It appears that it gives the right result. -
>I want the attributes of the shape group and layer to stay at their default values
Why not create a subgroup just for the path and transform it? -
Oleg Pirogov
October 29, 2019 at 3:36 pm in reply to: Attemping to disable all expressions in selected comp using ExtendscriptThis should do it:
function disapbleExpressionsInPropertyGroup(propertyGroup){
var propertiesAdded = false;for (var i=1; i<=propertyGroup.numProperties; i++){
var currentProperty = propertyGroup.property(i);if (currentProperty.propertyType == PropertyType.PROPERTY){
try{
currentProperty.expressionEnabled = false;
}
catch(err){
}
}
else{
disapbleExpressionsInPropertyGroup(currentProperty);
}
}return propertiesAdded;
}function main(){
var activeItem = app.project.activeItem;if (activeItem instanceof CompItem){
for (var i=1; i<=activeItem.layers.length; i++){
disapbleExpressionsInPropertyGroup(activeItem.layers[i]);
}
}
else{
alert("No composiotion is active");
}
}main();