- Home /
Flattening unity animation curves
hey
I don't know how to make both sides of each key in an animation curve linear, I will show you what I mean, First I make a animation curve like so:
var curve = new AnimationCurve(Keyframe(0, 0), Keyframe(24, 1))
And then I add a key to it like this:
curve.AddKey(12,1);
This leads to this:
The problem is I don't want it like that I want all the lines between the keys to be straight, like this:
I know you can do this by right-clicked on each key, then clicking "both tangents" and then clicking linear. But I want to know if I can do this via script.
I thank all replies I get in advance.
Answer by Varaughe · Oct 11, 2013 at 06:33 PM
Instead of just "curve.AddKey(12,1);" try this:
//btw this is C#
Keyframe prevKeyframe = curve[0];
Keyframe nextKeyframe = curve[1];
Keyframe keyframe = new Keyframe(12,1);
keyframe.outTangent = (nextKeyframe.value - keyframe.value)/(nextKeyframe.time - keyframe.time);
keyframe.inTangent = (prevKeyframe.value - keyframe.value)/(prevKeyframe.time - keyframe.time);
curve.AddKey(keyframe);
prevKeyframe.outTangent = keyframe.inTangent;
nextKeyframe.inTangent = keyframe.outTangent;
curve.MoveKey(0,prevKeyframe);
curve.MoveKey(2,nextKeyframe);
or a little more elegant solution :
Keyframe prevKeyframe = curve[0];
Keyframe nextKeyframe = curve[1];
Keyframe keyframe = new Keyframe(12,1);
AnimationCurve animCurve1 = AnimationCurve.Linear(prevKeyframe.time,prevKeyframe.value,keyframe.time,keyframe.value);
AnimationCurve animCurve2 = AnimationCurve.Linear(keyframe.time,keyframe.value,nextKeyframe.time,nextKeyframe.value);
//now just merge the 2 curves
keyframe.inTangent = animCurve1[1].inTangent;
keyframe.outTangent = animCurve2[0].outTangent;
curve.AddKey(keyframe);
prevKeyframe.outTangent = keyframe.inTangent;
nextKeyframe.inTangent = keyframe.outTangent;
curve.MoveKey(0,prevKeyframe);
curve.MoveKey(2,nextKeyframe);
Your answer
Follow this Question
Related Questions
Animating Light Intensity with Animation Curve 1 Answer
Animator Jerky Animations 0 Answers
key count: 1 on curve 'curvename' error 1 Answer
Deleting animation curve with editor script 1 Answer
Maya animation curves without joints 1 Answer