未来を創る、テックコミュニティー

代表技術通信~Unityに舞い戻りでVR⑨

草場代表
2020/11/10

こんばんは。代表の草場です。

Unity LearnのIntroduction to 3D Animation Systemsの勉強です。Working with Assets です。

2.3 Model-specific animation import settings

1.概要

モデル固有のアニメーションの基本について学び、アニメーションのインポート設定の範囲を確認します。モデルをデジタルコンテンツ作成(DCC)プログラムからインポートすると、2つのセクションに分かれているアニメーション設定があります。
モデル固有の設定は、そのモデルでインポートされたすべてのアニメーションに影響を与えます。
アニメーション固有の設定は、そのモデルでインポートされた個々のアニメーションに影響を与えます。

2.始める前に

3Dアニメーションシステム入門Unityプロジェクトをダウンロードしたら、Unityエディタでプロジェクトを開き、プロジェクトウィンドウで、アセット > 2.3 モデル固有のアニメーションのインポート設定に移動、 HumanoidIdleモデルを選択します。インスペクタのアニメーションタブで設定を確認することができます。

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

Unityのモデルは三角形のメッシュで表現されます。モデルをアニメーションさせたい場合は、三角形の位置や形が変わるようにメッシュを変形させなければなりません。モデルは、三角形の数が多すぎて、それぞれを個別に動かすことができません。モデルの定義が高いほど、三角形の数は多くなります。アニメーション中に各三角形を個別に動かすのではなく、モデルはアニメーションの前にスキニングされます。
スキニングは、三角形を構成する各頂点に「ボーン」への依存性を与えます。このボーンはアニメーションデータを使用して移動され、関連する頂点はボーンの位置と回転に基づいてどこにあるべきかを計算します。ボーンの階層とそれがメッシュに与える影響は、Rigs の一部です。Rigsの詳細については、2.8 Generic Rigsの設定を参照してください。

Unityでは、ボーンはTransformで表現されます。このチュートリアルでは、2種類のトランスフォームについて学びます。

前方運動学
逆運動学

・前方運動学
トランスフォームは階層構造になっています。つまり、トランスフォームの子は親から相対的に移動します。ボーンについても同じことが言えます。例えば、手の骨の位置は下腕の骨の位置に依存します。また、手の骨の位置は上腕の骨の位置に依存します。
この依存関係はフォワードキネマティクス(FK、前方運動学)として知られており、位置や回転のプロパティを好きなように設定することで、全体的に望ましいアニメーションを得ることができるため、一般的にアニメーションに使用されます。

・逆運動学
アニメーションのための別の手法として、インバースキネマティクス(IK、逆運動学)と呼ばれるものがあります。これは、ボーンのチェーンの端の位置や回転を設定し、チェーンのさらに上のボーンの位置や回転をアルゴリズムで設定して、端のボーンの位置や回転に対応させます。
逆運動学は、DCCソフトウェアでアニメーションをオーサリングする際に使用でき、Unityにインポートすることができます。また、Unityのランタイムアニメーションにも使用できます。
これらの基本を理解することで、モデルアニメーションをUnityにインポートする際のさまざまな設定を理解することができます。

4.制約とアニメーションのインポート

アニメーションタブの最初の2つの設定は
制約のインポート
アニメーションのインポート
です。


これらの設定は、モデルに関連付けられた制約やアニメーションをインポートするかどうかを決定します。
制約は、ジョイントの動きを制限するものです。インポートを選択すると、インスタンス化されたモデルの一部にすることができます。
アニメーションをインポートしないことを選択した場合、設定する設定はなくなり、アニメーションクリップは生成されません。

5.ベーキングアニメーション

Animationタブの次の設定は、Bake Animationsです。これは、逆運動学(IK)またはシミュレーションデータとしてインポートされたアニメーションを、ベイクと呼ばれるプロセスを経て順運動学(FK)に変換するかどうかを決定します。


アニメーションクリップは、そのデータをFK形式で保存します。つまり、IKデータでインポートされたモデルは、IKからFKに変換するためにベイクする必要があります。2 つの条件を満たす場合は、アニメーションのベイク設定を有効にすることができます。
1.インポートされたアニメーションが Maya、3DS Max、または Cinema 4D のいずれかで作成されている。
2.アニメーションが IK またはシミュレーション データとしてインポートされています。

6.アニメーションカーブのリサンプリング

次の設定は「カーブの再サンプル」です。

見当たらない!???

ヒューマノイドリグは自動的に再サンプルされるので、このオプションはジェネリックリグを使用しているモデルでのみ使用できます。この設定では、回転にオイラー角を使用してインポートされたアニメーションを、代わりにクォータニオン角に変換するかどうかを決定します。原則として、オイラー角でインポートされたアニメーションはすべてリサンプルする必要があります。唯一の例外は、アニメーションがフレーム間で180度以上の回転をする場合など、変換に問題がある場合です。

7.アニメーションサイズの最適化

アニメーションの圧縮設定は、インポートしたオリジナルのファイルから近似値を作成することで、ディスク上とメモリ上の両方でアニメーションのサイズをどのように縮小するかを指定します。以下のオプションから選択できます。


オフ: アニメーションを作成時と同じように表示。
キーフレームリダクション:似た値を持つキーフレームが削除され、アニメーションクリップが実行時に使用するメモリ量が削減されます。これは、結果のアニメーションにも影響します。この設定を選択すると、削減の際に許容されるエラーの量のオプションが追加されます。
Optimal:これは、選択したエラーの設定を考慮してアニメーションのサイズを可能な限り小さくします。

最適化の設定
最適設定を選択した場合、Unityはまずキーフレームリダクションを使用しようとします。アニメーションカーブの値の変化の頻度が高い場合、キーフレームリダクションを使用してもサイズはあまり小さくなりません。この場合、アニメーションクリップの簡略化された表現が使用され、各フレームでの値の間に線形補間が行われます。これにより、アニメーションクリップのサイズが最も小さくなり、アニメーションの外観に影響を与えることになります。

キーフレーム縮小の設定でキーフレームを削除するかどうかを決める際に、Unityは特定のキーフレームの時点での位置とスケール値を評価します。これは、キーフレームの削除がアニメーションカーブに影響を与えるかどうかを、特定の誤差の範囲内で判断するために行われます。キーフレームが誤差の範囲外にある場合、キーフレームは削除されません。デフォルトの誤差範囲は0.5%です。これは、圧縮処理によって削除されるためには、キーフレームの時点での位置とスケールの値の評価が、周囲のキーフレームの値の100.5%から99.5%の間でなければならないことを意味します。
位置とスケールの値が非常に大きい場合は、キーフレームが削除される可能性が高くなります。処理は、回転誤差を使用した回転曲線の場合と似ていますが、その代わりにクォータニオンが評価されます。

8.カスタムプロパティの設定

最後の一般的な設定は、アニメーション化されたカスタム・プロパティです。これは、モデルの作成に使用されたDCCパッケージでアニメーション化された追加のプロパティをインポートするための高度な設定です。

 

この記事を書いた人
草場代表
エディター