Timewarp problem.


#1

Hello.
Ran into another issue… this one involving a timewarped scene in Maya. I am using the Maya timewarp function that remaps the scene time using a animation curve; it is activated under Animate menu. It lets one arbitrarily remap output time from “time1” node to the current frame. Useful because time1 drives all the animation curves and dynamics nodes allowing global timewarps fairly effortlessly, at least in theory. It does mess with maya’s dynamics caches.

Was pretty happy at first because everything looks fine with the PRT loader in interactive with the timewarp on. The PRT particles are interpolated correctly and the particle motion follows the timewarp perfectly. Until render time…

When test rendering in the Render View with the timewarp active the rendered frame comes out wrong. It ignores the timewarp and renders the frame using the unwarped time at a given frame and not the remapped outputTime. Again, strange, because in the modeller the PRT loader is displaying the timewarped frame and interpolating the time correctly.

Checking the PRTLoader1 node input, it is taking the time1.outTime plug at .inTime, so it should pick up the timewarped value. Not sure why the camera would revert to non-timewarped position either.


#2

Very strange. Would you be able to provide a test scene so I can reproduce the issue?


#3

sure… let me check with production and set that up.


#4

Received! I’ll take a look.


#5

It may be Maya not delivering the right data. Been noticing weirdness with the timewarp in other areas. Like nParticles that stop emitting when a timewarp curve just exists, whether or not it is active.


#6

I found a work around for this problem. Had to be able to render the timewarp effect without activating the timewarp globally since the Krakatoa render ignores Maya’s global timewarp and renders as if it is not activated.

Here is how to fix it…

When creating a timewarp in maya (under the Animate menu item) an animation curve is created and attached to time1 node (this is the master time node.) Activating the timewarp uses this curve to remap the active frame to a new time value which is plugged into all dynamics nodes and animation curve nodes, the latter through implicit connections.

To fix the timewarp for krakatoa to use it one has to wire the timewarp animation curve output directly to any nodes that are animating in the render range. In this case that was
A) the PRT loader, to which the timewarp curve output plugs into the Playback Graph attribute, though plugging into current time would probably work too. Having in the Playback Graph attribute lets one turn on and off the timewarp effect though.
B) all the camera animation curves, here the timewarp curve output plugs into the animation curve input attribute

Since there were a few animation curves driving the camera I made a little script to do the connections:

string $sel[] = `ls -sl`; string $it; for($it in $sel) { connectAttr -f "sh010_shot_timewarp.output" ($it+".input"); }

this should work on any animation that needs to timewarp during the render, just select the animation curve nodes and run the script (you will have to change the name of the timewarp curve in quotes above.)

What was initially confusing is that the PRT loader in Maya GUI was recognizing the timewarp when it was active. It is only the renderer that was ignoring it.


#7

Thank you for your investigation and for providing the solution. This is very helpful to me.

We’ll test it here, and try to fix it on our end!