2016-09-23 7 views
0

時間と数時間の研究の後、私は2つのアニメーションカーブを線形補間できません。アニメーションカーブのMathf.lerpのようなものが必要です。アニメーションカーブのキーフレームでinTangentとOutTangentを試しましたが、値、私は何かを逃している? ガイダンスが必要な場合、これは私のプロジェクトで多くの助けになります。ありがとうございます。ユニティ3Dでアニメーションカーブを線形補間する方法は?

+0

ユースケースを明確にしてください。その2つのアニメーションカーブは何ですか?また、何を達成しようとしていますか?私は 'AnimationCurve'を使って様々な目的で[' AnimationCurve.Evaluate'](https://docs.unity3d.com/ScriptReference/AnimationCurve.Evaluate.html)を使って補間するカーブを定義しますが、あなたの質問には明確化が必要です。 – jjmontes

+0

もちろん、Mathf.lerp(float a、float b、float time)のように、最も単純な方法で説明することができます。AnimationCurve.Lerp(animationCurve a、アニメーション曲線b、浮動時間) –

答えて

1

あなたは "morph"を別のものにアニメーションカーブにしているようです。これはあなたのユースケースに依存します。

両方の曲線が[0.0,1.0]の間に定義されていると仮定して、私は両方の曲線の値を計算し、両方の結果を同じ時間に直線補間します。

あなたは異なるアプローチを使用して、両方の AnimationCurve間を補間することを望むかもしれない
/* 
* Evaluates two AnimationCurve objects, and interpolates linearly 
* between the results, effectively "morphing" from curve A to curve 
* B in a linear fashion. 
* Both curves must be defined between 0.0 and 1.0, and t must be 
* within the same 0.0-1.0 range too. 
*/ 
public float EvaluateLerpTwoCurves(AnimationCurve a, AnimationCurve b, float t) { 
    float valueA = a.Evaluate (t); 
    float valueB = b.Evaluate (t); 
    float result = Mathf.Lerp(valueA, valueB, t); 
    return result; 
} 

(ない直線Mathf.Lerpのように行います)、あなたも両方の曲線の間をモーフィングする方法を定義する第三AnimationCurveを使用することができます。

上記の推奨コードでは、両方のカーブを0.0〜1.0の間で定義する必要があり、tも同じ0.0〜1.0の範囲内になければなりません。

+0

感謝の男はそれを試して、それは動作します! @jjmontes –

関連する問題