https://gyazo.com/1a1f0c692c93350bcbf3157ff85ff93a

3Dモデルのアニメーション

前回に引き続き、Unityのオリジナルキャラクターである「ユニティちゃん」を利用して、 3Dモデルにアニメーションを設定してみましょう(詳細はNyARToolkit for 3Dモデルの表示を参照)。

Unityで3Dモデルにアニメーションを設定するときは、Animator ControllerというAssetを利用します。 「ユニティちゃん」のパッケージには、UnityChanLocomotionsUnityChanActionCheckUnityChanARPoseの 3種類のAnimator Controller **が含まれています。

今回は、UnityChanLocomotionsを「ユニティちゃん」に設定して、キーボードの入力に対応してアニメーションするように改良します。

Animation Controller

[UnityChan]-[Animators]にAnimation ControllerUnityChanLocomotionsがあります。 これをドラッグし、unitychanのInspectorにあるControllerに設定します。 これで、「ユニティちゃん」はUnityChanLocomotionsで定義されたアニメーションを行うことが可能となります。

https://gyazo.com/579941d2517ea73413bf6d16569cbc4c

ここで、UnityChanLocomotionsの内容を確認してみましょう。 Animation Controllerは下図のようにグラフで定義されます。 まずは、Entryから始まり、Idle状態に遷移することが分かります。

https://gyazo.com/b70b92520da89c88aee8315c081b9e27

Idle状態のInspectorを確認すると、 MotionWAIT00が設定されていることが分かります。 このWAIT00が3Dモデルの動きに対応します。 また、Idle状態から、Locomotion状態WalkBack状態Rest状態の 3つの状態に遷移可能なことが分かります。

https://gyazo.com/13294a9337af0868d2ff1e993d7a9489

では、Idle状態から他の状態に遷移するための条件は何でしょうか。 TransitionsのIdle -> Restをクリックすると、状態遷移のための条件(Conditions)が表示されます。 ここでは、Restという変数(パラメータ)がtrueであるときにRest状態に遷移することが分かります。 同様に、Locomotions状態に遷移する条件は、Speedが0.1より大きいとき、 また、WalkBack状態に遷移する条件は、Speedが-0.1より小さいときということが分かります。 このように変数(パラメータ)に基づき、3Dモデルの状態が確定します。

https://gyazo.com/21726acde178155403a0571609c2e418

スクリプトによる状態遷移の制御

次に、C#スクリプトを作成し、キーボードからの入力に応じて状態遷移を制御してみます。 まずは、[Create]-[C# Script]をクリックして、新規にC#のスクリプトを作成します。 ファイル名はARAnimationsとしておきます。

まずは、キーボードの1を押すとRest状態に遷移するようにしてみます。 キーの入力判定はInput.GetKey()メソッドを利用します。 引数にはstring型で対象となるキーを指定します。 また、状態遷移のトリガーとなる変数Restの値を設定するには、 SetBool()メソッドを利用します。 引数には、String型で対象となる変数と、その値を指定します。 再生ボタンをクリックして、「ユニティちゃん」を表示した状態で、キーボードの1を押してみましょう。 ユニティちゃんが背伸びをするアニメーションが表示されるはずです。

次に、キーボードの2を押すとLocomotions状態3を押すとWalkBack状態4を押すとIdle状態に遷移するようにしてみます。 トリガーとなる変数Speedはfloat型のため、SetFloat()メソッドを利用して値を変更しています。 再生ボタンをクリックして、「ユニティちゃん」を表示した状態で、キーボードの234を押してみましょう。 ユニティちゃんが走ったり、後ずさりするアニメーションが表示されるはずです。

https://gyazo.com/19de693257ca6e584186bdcab63eba19

https://gyazo.com/ba1673e91a97d623e711ddc106edf82f

これまでに紹介した機能を利用して、拡張現実を利用した作品を制作してみてください。

参考書籍