Another fun expression question

Hi again guys,

I got the flickering expression figured out, now I’m diving into triggering expressions based on other axis information.

I currently have a rotation driver expresion that rotates on the y - axis from 180 to 0 degrees over 4 frames. I’m trying to have multiple axis in a line look at the previous axis and when it finishes that rotation driver expression it then starts it’s own rotation. So in essence Axis1 rotates from 180 to 0, Axis 2 rotates from 180 to 0 but doesn’t start until Axis 1 finishes. Axis 3 rotates from 180 to 0, but doesn’t start till Axis 2 finishes.

This would let me alter the speed of the rotation and start timing without having to go through and change what till end up being over 100 cascading axis by the time I’m finished.

Thoughts?

@FlameTrinity

I think I was going in the wrong direction. I kept wanting to point to the driver axis to get the animation. This was totally unnecessary as I can just look at the previous axis values (frame - driveraxis) where driver axis is the length of the animation curve. Duh

1 Like

Are you trying to create a split-flap display animation? Or if not, I really wonder what you’re trying to achieve…

There is a way to cascade expressions with SelectionOrder.

Select the rotation channel for each Axis in the order you want them to happen. Then, as part of your expression, if you type “SelectionOrder” (no space) when you hit enter that text will be replaced with 1,2,3, etc.

Now what you will also want is some kind of null to multiply this number by to get the exact delay you want. Say it’s 4 frames so you want the expressions to inlcude (SelectionOrder*Null.position.x) and make Null.position.x value 4.

Read more here:
Cascading Expressions

1 Like

Create a dummy axis (have I mentioned how much I hate dummy axis?) and create the rotation in the y axis to the desired duration. Enter the duration in the position.z of the dummy axis. For each of the axis that you wan too affect, select them in order and enter the expression eval(dummyaxis.rotation.y,frame-(dummyaxis.position.z*(SelectionOrder-1))). You can now adjust the rotation at will on the dummy and adjust the duration as well. You don’t even need to keep them in “sync.” You can start each subsequent axis before the previous one is finished by making the dummy.position.z value to be smaller than the rotational duration.