Thoughts for achieving a "time delay"

Ie, say we have an animated cube, and I want a fabric node that will display that cube, AND a ghosted second version of what it looked like - say, 1/8 of a second ago - similar to an animated motion trail.

The simplest answer is that we could bake the animated cube out (say, to an alembic cache); then we could use a fabric alembic reader node, which could query the state at the current input time, and at t-.125

However, what if we want our fabric node to be able to display our cube and it's ghost interactively - that is, as the animation controlling it is edited? Ie, suppose we have a "displayMotionTrail" fabric node, that takes as an input a mesh, and (for simplicity's sake) a translateX attribute. We want an animator, in our DCC package (in our case, maya) to be able to set motion keys to animate the translateX, and see the cube and it's ghosted past version, interactively.

One thought I had would be this: instead of our "translateX" input taking a simple float value, what if it instead accepted an instance of a "KeyframeTrack" object - that is, it's input is an animation curve itself. Then, I could create a special node in our DCC that exposes an input that could be animated "normally" in our DCC, but would internally translate that curve to a KeyframeTrack, and update our fabric graph with a dynamically created (or perhaps just dynamically updated) fabric animation curve every time our DCC animation curve changed.

One limitation of this approach is that it only works if the input to our "translateX" is DIRECTLY controlled by an animation curve - we can't hook up some complex network of DCC nodes for controlling translateX, then feed it into our "displayMotionTrail" node, and have it work. For our particular use case, though, this is fine - we want to have any complicated logic done by fabric, and just use the DCC for animation!

Of course, if anyone else has any better ideas, I'm all ears!


Sign In or Register to comment.