PDA

View Full Version : How to reverse Animation Curve?


spazzmonkeys
07-18-2008, 08:38 AM
Hi, I'm trying to flip the x and the y values of an animation curve in maya. That is, I want to run information through a curve backwards (using the curve.output channel as the input). The information only needs to be queried, so it could be done with a calculation. I've tried my hand at this for quite some time now with no success. If anyone has any ideas, please let me know!
Right now I'm trying to make a duplicate curve and rebuild that backwards. The only problem with that is reversing the tangent angles: something that appears to be beyond me. The tangent angles returned from the keyTangent command seem to be degrees at first glance, however they do not change in a linear fashion. So I don't understand how to get them into a predictable unit I understand and convert them back again.

spazzmonkeys
07-19-2008, 11:49 PM
Well, I managed to figure something out myself. If anyone needs to reverse an animation curve in the future, here's the code I came up with. I'm fairly sure it only works with weighted curves though.

global proc inverseCurve(string $curve){
//this is closer to reversing a curve, but that is already a named command.
int $numKeys = `keyframe -q -kc $curve`;
float $tempFloat[];
float $yVal[];
float $xVal[];
float $ox[];
float $oy[];
float $ix[];
float $iy[];
for($x = 0; $x < $numKeys; $x++){
$tempFloat = `keyframe -in $x -a -q -vc $curve `; $yVal[$x] = $tempFloat[0];
$tempFloat = `keyframe -in $x -a -q -fc $curve `; $xVal[$x] = $tempFloat[0];
$tempFloat = `keyTangent -in $x -q -ox $curve `; $ox[$x] = $tempFloat[0];
$tempFloat = `keyTangent -in $x -q -oy $curve `; $oy[$x] = $tempFloat[0];
$tempFloat = `keyTangent -in $x -q -ix $curve `; $ix[$x] = $tempFloat[0];
$tempFloat = `keyTangent -in $x -q -iy $curve `; $iy[$x] = $tempFloat[0];
}
for($x = 0; $x < $numKeys; $x++){
keyframe -in $x -a -o over -fc $yVal[$x] -vc $xVal[$x] $curve;
keyTangent -in $x -ox $oy[$x] -oy $ox[$x] -ix $iy[$x] -iy $ix[$x] $curve;
}
}


I would still like to know why the tangent angles in maya don't move in a linear fashion, if anyone knows. You never know when you'll need to know stuff like that in the future!

CGTalk Moderation
07-19-2008, 11:49 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.