ゲームアニメーションでは 2 つかそれ以上のモーション間でブレンドを行うことがよくあります。もっとも良く知られるケースはキャラクターの速度に基づいた歩行と走行アニメーションのブレンディングです。もうひとつの事例は走っているときに左右に体を傾けるようなケースです。
遷移(Transition)とブレンドツリー(Blend Tree)は区別して考えることが重要です。両方とも滑らかなアニメーションを作るために使用されるものですが、それぞれ異なる状況で用いられます。
遷移 は、ある Animation State から別の Animation State への移り変わりを、一定の時間内で滑らかに行うために使用されます。遷移は、アニメーションステートマシン の一部として指定されます。あるモーションからまったく違う別のモーションへの遷移も、素早い遷移であれば通常問題ありません。
ブレンドツリー は、複数のアニメーションを、それらすべての部分部分を異なる度合いで組み込むことによって、滑らかにブレンド(混合)できるようにするものです。それぞれのモーションを最終的なアニメーションにどの程度影響させるかは、ブレンディングパラメーター を使用して制御します。これは Animator Controller に付随する アニメーションパラメーター のひとつです。ブレンドされたモーションが自然に見えるためには、性質とタイミングが類似したモーション同士でブレンドされる必要があります。ブレンドツリーは、アニメーションステートマシンにおける特殊なタイプのステートです。
同様のモーションの事例はさまざまな歩行や走行のアニメーションで見られます。ブレンドが適切に動作するためにはクリップの動きは正規化された時間で同期して行われる必要があります。例えば、歩行や走行アニメーションは足が地面に着地する同じ正規化された時間に起きるように同期させることごできる(例えば左足が 0.0 で着地、右足が 0.5 で着地など)。正規化された時間が使用されるため、クリップが異なる長さであるかは影響しない。
新規のブレンドツリーで作業するためには:
これで Animator Window にブレンドツリー全体のグラフを表示し、インスペクターでは現在選択されているノードおよびその直接の子ノードを表示します。
ブレンドツリーにアニメーションクリップを追加するには、インスペクタービューの + ボタンを押し、Motion Field をクリックします。
代わって、コンテキストメニューから選択して、プレンドツリー上で右クリックすると子ノードかアニメーションクリップを追加することができます。
ブレンドツリーをアニメーションクリップと入力パラメーターで設定する場合、インスペクター ウィンドウでパラメーター値の変更して、アニメーションがどのように組み合わされるかグラフィックの視覚化を行います(スライダーをドラッグすると、ツリーのルートからの矢印が変化して、現在優位となっているアニメーションクリップを表示します)
ブレンドツリーグラフの任意のノードを選択してインスペクターで表示することが可能です。もし選択されたノードがアニメーションクリップである場合は、インスペクター上でそのアニメーションクリップが表示されます。アニメーションがモデルからインポートされた場合、設定は読み取り専用となります。もしノードがブレンドノードである場合、インスペクター上でブレンドノードが表示されます。
Blend Type メニューから、1D ブレンディング か 2D ブレンディング のいずれかのタイプのブレンディングを選ぶことができます。二つの違いは、このセクション中、それぞれに関するページで説明しています。
アニメーション間のブレンディングは、リニア補間を使用して行われます。(つまり、ブレンディングパラメーターによって加重される個々のアニメーションの平均が、各アニメーションの量になります。)ただし、ルートモーションは同じ方法で補間される訳ではありません。このことがキャラクターにどのような影響を及ぼすか、詳しくはルートモーションの仕組み のページを参照してください。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.