シェケナベイベー

れっつだんしんぐ!

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


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

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

 

assetstore.unity.com

learn.unity.com

 

Unityにおける3D Animator機能の学習まとめ。2.3からとなります。

 

モデル固有のアニメーション設定について

本章はInspectorに表示されるモデル固有のアニメーション設定に関してまとめる。

まずProjecrtから2.3 - Model specific animation import settingsを開きHumanoidIdleを選択状態にした際のInspectorを以下に示す。

デジタルコンテンツ作成(DCC)プログラムからデータをインポートする場合、モデルには2つのセクションに分かれたアニメーション設定がある。

モデル固有の設定:モデルでインポートされた全てのアニメーションに影響する

アニメーション固有の設定:モデルでインポートされた個々のアニメーション全てに影響する。

これらを踏まえた上でこれからまとめる設定は上記InspectorのAnimationタブに集約されている。

 

モデルアニメーションの基礎

Unity のモデルは三角形のメッシュで表されます。モデルをアニメートする場合は、三角形の位置と形状が変わるようにメッシュを変形する必要があります。

モデルに含まれる三角形が多すぎて、各モデルを個別に移動できない場合があります。モデルの定義が高いほど、三角形の数が多くなります。アニメーション中に各三角形を個別に移動する代わりに、モデルはアニメーション化される前にスキン設定されます。

スキニングは、三角形を構成する各頂点に「ボーン」への依存を与えます。このボーンはアニメーションデータを使用して移動され、関連付けられた頂点はボーンの位置と回転に基づいてどこにあるべきかを判断します。

ボーン階層とそれらがメッシュに与える影響は、リグの一部です。リグの詳細については、 2.8 汎用リグの設定を参照してください。

 

Unity では、ボーンはトランスフォームで表されます。このチュートリアルでは、次の 2 種類の変換について説明します。

  • Forward Kinematics(FK)
  • Inverse Kinematics(IK)

 

Forward Kinematicsについて

変換には階層構造があります。これは子変換が親に対して相対的に移動することを意味し、同じことがBonesにも当てはまる。例えば手の骨の位置は、下腕の骨の位置に依存するし、連鎖して上腕の位置に依存して位置が決まると云う事である。

この依存関係はForward Kinematics(FK)と呼ばれ、目的の全体的なアニメーションを取得する為に、必要に応じて位置と回転のプロパティを取得できるため、アニメーションの手法としてはよく利用される一つであります。

 

Inverse Kinematicsについて

アニメーションのもう一つの手法がInverse Kinematics(IK)と呼ばれる手法で、FKと逆の発想に基づく理論です。すなわち、骨のチェーンを想定した場合に先端から末端へと向かって終端位置から逆算するアルゴリズムに基づきアニメーションを計算で求める手法です。

IKを使用してDCCソフトウェアでアニメーションを作成し、それをUnityへインポートする事は可能ですし、現在はこの手法が効率的であるので主流です。(ランタイムアニメーションにも使用可能)

 

これらの基本を理解する事はモデルアニメーションをUnityにインポートする際に利用できる様々な設定を理解するのに役立ちます。

 

Import Contraints & Import Animation設定

以下の様にInspectorのAnimationタブ設定群の中の上位に位置する設定をですが、

Import Contraintsは関節の動きに関する制限です。この設定にチェックを入れてインポートを行うと元データに含まれている関節の稼働領域がUnity側にも取り込まれます。

Import Animation設定は言葉通り、元データに含まれるAnimationデータをインポートする際にチェックを入れます。これを外すとUnityのClipは生成されません。

 

Bake Animation設定は少しややこしいが、IKとしてインポートされたアニメーションをBakeと呼ばれるプロセスを通じてFKに変換する設定となります。(通常は使わない) この機能にチェックを入れて利用するには以下の上限がある。

  • 読み込まれたアニメーションはMaya,3DS Max,Cinema4D形式のいずれかである。
  • アニメーションはIKまたは趣味レーションデータとして記録されている。

Resample Curves設定はヒューマノイドタイプのリグが自動的にResampleされる為に汎用リグを搭載したモデルでのみ利用可能となっている。この設定を利用すると回転にオイラー角を使用してインポートされたアニメーションを、代わりにQuateernion角度に変換する。

Anim. Compression設定はディスク上&メモリ内の両方でインポートされた元のファイルから近似値を作成する事によってアニメーションサイズを縮小する方法を指定します。各オプションは以下の通り。

  • Off:圧縮しない
  • Keyframe Reduction:同様の値を持つ一部のKeyフレームを圧縮しサイズを圧縮。このオプションを選択するとさらに圧縮で許容されるエラー量に関するサブオプションが表示される。
  • Optimal:最適な設定は以下参照。

 

Anim. CompressionのOptimal設定

Optimalを設定した場合にはUnityは最初にKeyフレームリダクションの使用を試みます。アニメーションカーブの値の変更頻度が高い場合には圧縮によるサイズ現象はあまり期待できません。この場合、アニメーションクリップの簡略表示が各フレームの値間の線形補間とともに使用されます。これによりアニメーションクリップのサイズは最小となりますが、アニメーションの外観に影響が出る事になります。

Keyframe Reduction設定の一部としてKeyフレームを削除するかどうか決定する時、Unityは特定のKeyフレームの位置とスケール値の両方を評価します。これは、Keyフレームの削除が特定の誤差範囲内のアニメーションカーブに影響を与えるかどうかを調べる為に行われます。Keyフレームがエラー設定値の余白の外側にある場合、Keyフレームは削除されません。

位置とスケールに非常に大きな値がある場合はKeyフレームが削除される可能性が高くなります。このプロセスは回転誤差を利用した回転曲線でも同様ですがQuaternionが評価されます。

Animation Custom Properties設定はモデルの作成に使用されたパッケージでアニメーションされた追加プロパティをインポートするかどうかのオプションです。詳しくはデータ作成元のマニュアルなどを参照してください。

 

以上、モデル固有のアニメーションインポート設定に関してほんの触りだけ解説しましたが、作成元のデータと密接に関係する機能でもあるので詳細はここではまとめきれません。さらっと流していただいて構いません。