シェケナベイベー

れっつだんしんぐ!

3Dアニメーション処理の学習まとめ~その2


※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。

以下のアセットを利用したUnityによる3Dアニメーション処理の学習コースをまとめます。Unity Learnにおいては1.3章からのまとめになります。

 

assetstore.unity.com

learn.unity.com


 

Unityにおける3Dnimator機能の学習まとめその2。前回からの続きで今回はより実践的にAnimationブレンドの入門編と云った回。まずはProject>1.3 - Core Concepts Animation Blending>ScenesからCoreConceptsシーンをダブルクリックで開く。

 

シーンが開けたらCubeが一つあるのでダブルクリックあるいはクリックしてFキーでシーンの中心に持ってくる。Inspectorを見てみよう。重要なのは以下のAnimatorコンポーネントとBlendingExampleスクリプトの2つだ。

サンプルシーンをRunしてみて欲しい。そしてBlendingExampleのCircleWeight部分のスライダーをクリック&ホールドしながら左右にマウスを動かしCircleとSquareの比率に応じてAnimationの挙動が変化することを確認して欲しい。

 

まずはAnimatorコンポーネントだ。Controller部にはこのAnimationを統括するCubeControllerと名付けて保存された設定Assetが指定されておりダブルクリックするとAnimator編集ウィンドウが開く。ややこしくなってすまないが、AnimatorコンポーネントはAnimation Clipの上位に存在する管理目的のコンポーネントだ。すなわちCubeControllerの下にAnimationClipが保管管理される。(複数のClipを管理しうると言うことだ)

 

そのAnimator編集ウィンドウを見てみよう。念のために開き方はメニューからWindow>Animation>Animatorと辿っても良いし、InspectorのCubeController部をダブルクリックのどちらもで良い。以下の様にいくつか色分けされたオブジェクトらしき物が並んでいると思うが、その中からBlendTreeをダブルクリックしてみて欲しい。

 

冒頭で述べたAnimation Blendingの本体がコレだ。今は詳しく知らなくても構わない。後でちゃんと詳細は説明する。ざっくりとSquareとCirleと名付けられた2つのAnimationが一つのBlendTreeという要素にまとめて管理されており、この2種類はブレンドしてAnimationを表現しうる機能だということだ。

 

では実践的にオリジナルのAnimator Controllerを作ってみよう。まずProject>1.3 - Core Concepts Animation Blending>AnimatorControllersフォルダへ移動しよう。(移動しなくても良いがUnityでは機能種別ごとにフォルダを分けて管理するのが基本ルールだ) そこで右クリックからCreate>AnimatorControllerを指定し新規にExampleControllerと名付けたオリジナルコントローラーを作る。

 

現在ExampleControllerの中身は空なのでClipを追加してみよう。やり方はこうだ。まずは念のためにExampleControllerをダブルクリックしてAnimator編集ウィンドウをアクティブにしておく。(先の例のようにBlendTreeが無い事を確認してくれたまへ) 続いてProject>1.3 - Core Concepts Animation Blending>AnimatorClipsフォルダを開いてからCircleクリップをAnimator編集ウィンドウにドラッグ&ドロップする。以下の様にCircleが追加されラインが結ばれたのが確認できるだろうか?同様にしてSquareもドラッグ&ドロップしておいて欲しい。今度はラインで結ばれずに色もグレイの状態だが気にしないで良い。

 

さてまた新しい概念だ。頭がパンクしないように付いてきてるかい?Transitionと呼ばれる機能だが、日本語に訳すと遷移となる概念でようはアニメーションとは何らかの状態が遷移して行く様子を記録または再現する事なので、このTransitionを定義しないと始まらないという事だ。

 

そして上記のAnimator編集ウィンドウに並ぶアイコンを見るとこのTransitionを解りやすく表現する目的で用意されたものだと徐々に理解できてくる。まずはCircleを右クリックすると表示されるPopupMenuからMakeTransitionを選択する。するとラインを繋げるモードに変化しているハズなので続けてSquareを左クリックするとラインが結ばれる事が確認できるはずだ。

 

さてこの出来上がったTransitionであるが解りづらい事にライン部分をクリック出来る。そしてInspectorを見るとTransition設定内容が確認できる様になっている。中身を見てゆこう。まず折りたたまれているSetteings部分の▼をクリックして以下の様にパラメータをチェックする。

まずはExit Timeだ。デフォルトの設定は0.75。これがどういう事かと言えばCircleClipが75%進んだ時にTransitionが開始される事を指定している。下のグラフのが解りやすいかもしれない。残り25%から斜めの描写が始まりやがて消えていると同時にSquareClipのアニメーション描画に切り替わって行く事を示している。つまりBlendだ。

 

このままだとCircleClipが一度も完了しないままでSquareに遷移してしまうので1.5に変更してみよう。これにより一度円を描いてから二回目にSquare軌道に移行するBlendとなる。

さらに微調整しよう。1.5に変更してしまった為にSquare側では25%部分からのアニメーション描写が始まる事になる。これを調整する為にTransition Offsetに0.5を指定する。これによりSquareClipは中間地点から描写が始まる事になり、よりスムーズな遷移描写になるハズだ。

最後にTransiton Durationsを2に変更して仕上げだ。これは遷移時間を変更するもので2秒かけてCircleからSquareに徐々にBlendされながら遷移する設定の出来上がりというわけだ。以下の様なグラフになっているか確認したまへ。(グラフの部分でマウスホイールを使って拡大率を変更させている)

 

では実際のアニメーション確認と行こう。CoreConceptsシーンに戻ってくれたまへ。Cubeを選択してAnimatorコンポーネント部を見つけたらControllerの設定をCubeControllerからExampleControllerに変更してRunだ。(◎クリックで変更しても良いしProjectからドラッグ&ドロップでも良い) どうだい?円運動から四角運動へ滑らかにアニメーションが遷移するのが確認できたかな?

 

これらの一連の作業がすべての基本だ。AnimationClipはアニメの基本単位、これを箱に収めるのがAnimatorで遷移などの挙動編集も可能だ。これらを適切に組み合わせる事で人形のダンスシーンや派手な爆発シーンが組みあがっているワケだ。

 

とまぁ、概念的な物から手始めにUnityにおけるアニメーション処理の概要をまとめてみた。単純ではあるが、どんな複雑なアニメーションもこれらの基礎の積み重ねである事をまずは理解されたい。AnimationBlendさえそのスタートの1技術に過ぎないのだ。

 

では次回でまた会おう!