スキニングされた スタティックメッシュ オブジェクトと スケルタルメッシュ オブジェクト用の正確で非線形なデフォーマシステムの作成は複雑で計算コストの高いプロセスであり、これらの変形シミュレーションのリアルタイムな計算の場合は特にそうです。Unreal Engine の Machine Learning (ML) Deformer Framework を使用すると、外部で事前に生成されたメッシュ変形シミュレーション データを用いて、ML Deformer Model を学習させ、高品質なメッシュ変形を模倣することで、リアルタイム変形生成の計算コストなしにゲーム内のメッシュ変形の品質を大幅に向上させることが可能になります。
ML Deformer Framework は、デフォーマ モデルによって駆動される ネットワーク推論 システムを内部的に活用し、GPU でメッシュ変形計算の近似処理を行い、CPU の処理帯域を軽減しています。
また、Unreal Engine マーケットプレイスでは、必要なメッシュ変形データを生成するための AutoDesk Maya のプラグインが提供されています。AutoDesk Mayaでメッシュ変形データを生成した後、データを FBX (.fbx) ファイルおよび Alembic (.ab) ファイルとしてエクスポートし、Unreal Engine にインポートしてデフォーマー モデルのトレーニングに使用することが可能です。
このドキュメントでは、Autodesk Maya でメッシュ変形シミュレーション データを生成し、そのデータを Unreal Engine で使用して、ランタイム時にキャラクターのメッシュ変形を近似するデフォーマ モデルのトレーニングを行うワークフローの例について説明します。
前提条件
-
ML Deformer Framework は プラグイン であるため、使用する前に有効にしておく必要があります。Unreal Engine メニューで [Edit (編集)] > [Plugins (プラグイン)] に移動し、[Animation (アニメーション)] セクションで ML Deformer Framework を見つけて有効にします。プラグインを有効にした後、エディタを再起動する必要があります。
- ML デフォーマ ワークフローは、ワークフローの一部で、Autodesk Maya を使用する必要がある。
- Unreal Engine と Autodesk Maya の両方にスキン キャラクターがあること。
ML デフォーマ モデル
ML Deformer Framework は、スキニングされたメッシュの変形を駆動するために、トレーニングされた ML デフォーマ モデルに依存しています。
事前作成されたモデルを プラグイン の形でインストールすることができます。この例では、プラグイン ウィンドウからインストールできる ML Deformer Neural Morph Model をワークフローの一部でオプションとして使用しています。
- ML Deformer Neural Morph Model は プラグイン であるため、使用する前に有効にしておく必要があります。Unreal Engine メニューで [Edit (編集)] > [Plugins (プラグイン)] に移動し、[Animation (アニメーション)] セクションで ML Deformer Neural Morph Model を見つけて有効にします。プラグインを有効にした後、エディタを再起動する必要があります。

このほかにも、プロジェクトに設置して使用するプレハブ式のモデルがいくつかあります。プラグインの C++ パッケージ内で独自の ML デフォーマ モデルを作成したり、既存のモデルをカスタマイズすることも可能です。
Autodesk Maya プラグインの設定
ML Deformer Data Generation Maya プラグイン をダウンロードして、インストールする必要があります。MotionBuilder Live Link プラグインをダウンロードしてインストールする必要があります。そのためには、まずマーケットプレイスの「MotionBuilder LiveLink」ページに移動し、このプラグインをダウンロードします。

プラグインがインストールされると、Unreal Engine のインストール ディレクトリの 「Plugins」 フォルダ内に格納されます。デフォルトでは、このプラグインは次のパスのフォルダにインストールされます。
…\Engine\Plugins\Marketplace\MayaMLDeformer\Content\MayaMLDeformer.zip
MayaMLDeformer.zip のコンテンツを「C:\Users\username\Documents\maya\modules
」に解凍してください。「modules
」フォルダがない場合は、作成することができます。

Mac を使用している場合、プラグインは「/Users/Shared/Autodesk/modules/maya
」にインストールされます。
これで、Autodesk Maya を開くと、メインメニュー バーに UE MLDeformer が表示されます。

Maya でのトレーニング データの生成
ML Deformer プラグインは、機械学習アルゴリズムに役立つデータ セットを生成するボーンにプロシージャルなキーフレームを設定することで、キャラクターのトレーニング データを作成します。トレーニング データ生成プロセスを開始するには、まずツールを開く必要があります。
Maya のメインメニュー バーから、[UE ML Deformer] > [Data Generator (データ ジェネレーター)] をクリックすると、[Training Data Generation Setup (トレーニング データ生成セットアップ)] ウィンドウが表示されます。

また、Maya シーンにスキン キャラクターをインポートするか、開きます。このワークフローの例では、MetaHuman を使用しています。

ボーン パラメータを追加する
ジョイントをトレーニングするには、修正するノードと属性のリストおよびこれらの属性が受け入れることのできる値の範囲を追加する必要があります。
追加したい Maya のジョイントを選択し、[Training Data Generation Setup] ウィンドウの [Parameters (パラメータ)] セクションにある 追加 (+) ボタンをクリックします。

この操作により、[Add Parameters (パラメータを追加)] ウィンドウが開きます。このウィンドウで、トレーニングに使用するジョイント属性をさらに絞り込むことができます。また、更新 ボタンをクリックすると、現在の選択内容でパラメータ リストが更新されます。

パラメータとして追加したいジョイント属性を選択して、[Add Selected Parameters (選択したパラメータを追加)] をクリックし、[Training Data Generation Setup] に追加します。ほとんどの場合、ジョイントで必要なのは回転属性だけです。

[Attributes Filter (属性フィルタ)] セクションを使用すると、自動的に属性を絞り込んで除外することができます。追加 (+) ボタンをクリックして新しいエントリを追加し、除外したい属性に基づいた名前を付けます。この例では、結果として得られる属性が回転のみを示すように、すべての平行移動とその他の細かい属性を除外しています。

ボーン パラメータを設定する
属性が追加されたら、今度は各軸の可動範囲を設定する必要があります。これには、各属性を選択して、[Parameter Properties (パラメータ プロパティ)] でその軸の可動範囲の [Minimum (最小)] と [Maximum (最大)] を指定します。これらの値は、キャラクターの複雑度やタイプに応じて、できるだけ現実的な値にする必要があります。このデータの定義は、ML デフォーマのトレーニング プロセスの正確性と品質を確保するために必要です。このプラグインでは、値がそのジョイントに対して設定されている場合、Maya で設定されているジョイント制限に合わせて値を自動的に初期化します。また、特定のパラメータ タイプにデフォルトを指定することもできます。

これらのパラメータを正しく設定するのは時間がかかるため、[File (ファイル)] > [Save Config (コンフィグを保存)] をクリックして進捗を「.json
」ファイルとして保存することをお勧めします。

保存した設定は、[File] > [Load Config (コンフィグをロード)] を選択して復元できます。コンフィギュレーション ファイルはノード名および属性名に基づいており、名前が一致するすべての Maya のシーンで使用できます。
メッシュを設定する
トレーニング データを確定するには、[Base Mesh (ベース メッシュ)] と、オプションで [Target Mesh (ターゲット メッシュ)] を指定する必要があります。
ベース メッシュ はスケルトンにバインドされているメッシュで、Unreal Engineで使用されているメッシュと同じです。
ターゲット メッシュ は、ベース メッシュと同じ頂点とトポロジを含む別のメッシュであるものの、変形に使用されます。たとえば、ターゲット メッシュは、リアルな変形を作成するために、ボリューム保存手法や筋肉シミュレーションを使用する場合があります。ターゲット メッシュは Maya のものを使用したり、Houdini などの外部プログラムで作成することもできます。ターゲット メッシュは alembic キャッシュ .abc
としてエクスポートされます。
ベース メッシュとターゲット メッシュを指定するには、[Mesh Settings (メッシュ設定)] 領域の 追加 (+) ボタンをクリックします。ウィンドウが表示されるので、[Select (選択)] ボタンをクリックし、各メッシュを指定します。ターゲット メッシュはシーンに含まれていない限りオプションです。

メッシュを選択して、[OK] をクリックすると、[Mesh Settings (メッシュ設定)] リストに追加します。

スケルタル メッシュが複数のメッシュで構成されている場合、個々のメッシュを [Mesh Settings] リストに追加する必要があります。通常、これは、 モジュラー キャラクター を使用している場合に限り、行う必要があります。
ポーズ生成を開始する
最後に、[Generator Settings (ジェネレーター設定)] を指定して、トレーニングの長さと構成を決定します。キーフレームは、パラメータ リストの各属性に対して、[Num Poses (ポーズ数)] ごとに作成されます。

名称 | 説明 |
---|---|
Num Poses (ポーズ数) | 作成するランダム ポーズの数。これらのフレームに対してアニメーションを作成します。推奨範囲は 5,000 ~ 50,000 ですが、一般的なケースでは、25,000 に設定します。 トレーニングで適切な結果を得るには、大量のデータが必要です。Unreal のデフォルトのトレーニング設定に対応するアニメーション データは、約 25,000 フレームと想定されています。より少ないデータ セットでトレーニングすることもできますが、多くの場合、結果の品質が低下します。[Num Poses] の値が大きいほど、トレーニングに時間がかかります。 |
Start Frame (開始フレーム) | ランダムに生成されるポーズが開始するフレーム番号です。「0」より大きい値を設定することで、既存のアニメーション データと生成されたフレームを組み合わせることができます。 |
Active Parameters (アクティブ パラメータ) | 各フレーム間のポーズのランダム性の度合い。ほとんどの場合、「75%」 前後に設定する必要があります。値が高いほど品質が高くなります。ただし、「100%」 に設定すると、シミュレーションの問題が発生することがあります。 |
[Generate (生成)] をクリックして、Maya でのトレーニング データ生成プロセスを開始します。[Target Mesh] と [Target Alembic File (ターゲット Alembic ファイル)] を使用している場合、このプロセスに非常に長い時間がかかることがあります。メッシュの複雑度により、完了するまで数分から数時間かかる場合があります。また、Alembic ファイルは頂点数とポーズ数の設定によっては非常に大きくなる (約 50 ~ 10 GB) ため、十分な空きディスク容量を確保してください。

トレーニング データの生成が終了すると、[Target Alembic File] を指定した場合は、エクスポートされた .fbx
ファイルおよび .abc
ファイルが得られます。

FBX ファイルと Alembic ファイルは同じ数のフレームを含んでおり、各フレームは同じスケルタル ポーズに対応している必要があります。
Unreal Engine でのデフォーマのトレーニング
これで、完成したトレーニング ファイルを Unreal Engine に取り込むことができます。
Alembic ファイルをインポートする
まず、トレーニング プロセスで作成した .abc
ファイル、または別の外部デフォーマ ツールで作成したファイルをインポートします。コンテンツ ブラウザで、[Import (インポート)] をクリックし、.abc
ファイルを選択して [Open (開く)] をクリックします。

インポート設定ダイアログ ウィンドウで、インポートに関する次のパラメータを設定します。
- [Import Type (インポート タイプ)] を [Geometry Cache (ジオメトリ キャッシュ)] に設定します。
- [Flatten Tracks (平坦化されたトラック)] を無効にします。これは、FBX メッシュを Alembic Geometry Cache トラックと一致させるために必要です。メッシュが 1 つのみの場合は、[Flatten Tracks] を有効にしておくことができますが、必須ではありません。Alembic Track の名前の先頭は、Maya のアウトライナで表示される名前と同じである必要があります。
- より高い精度を確保するために、[Compressed Position Precision (圧縮された位置の精度)] を 「0.001」 に設定します。デフォルトを維持すると、ML デフォーマが圧縮によって生じた誤差を学習することがあります。
- [Store Imported Vertex Numbers (インポート済み頂点数の格納)] を有効にします。これは、スケルタル メッシュとジオメトリ キャッシュの間で頂点を一致させるために必要です。これを怠ると、ML デフォーマ エディタが警告を表示し、ジオメトリ キャッシュを再度インポートする必要があります。

これらのパラメータを設定したら、[Import] をクリックして、ジオメトリ キャッシュをインポートします。このプロセスは、alembic ファイルのサイズにより非常に長い時間がかかる場合があります。複雑度とサイズにより、完了するまで数分から数時間かかる場合があります。
トレーニングした FBX をインポートする
次に、Maya のトレーニング データから作成した FBX ファイルをインポートする必要があります。[FBX Import Options (FBX インポート オプション)] で、インポートに関する次のパラメータを設定します。
- すでに Unreal Engine に FBX ファイルをインポートしている場合は、キャラクターのスケルトンを使用するように [Skeleton (スケルトン)] フィールドを設定します。
- [Import Animations (アニメーションをインポート)] を有効にします。
- [Animation Length (アニメーションの長さ)] を [Exported Time (エクスポート時間)] に設定します。

これらのパラメータを設定したら、[Import (インポート)] をクリックして FBX をインポートします。このプロセスは、FBX ファイルのサイズにより非常に長い時間がかかる場合があります。
ML Deformer アセットを作成する
次に、Alembic と FBX の両方のシーケンスを格納し、関連付けるために、ML Deformer アセットを作成する必要があります。コンテンツ ブラウザで、追加 (+) ボタンをクリックして、[Animation (アニメーション)] > [ML Deformer (ML デフォーマ)] を選択します。作成されたら、アセットを開きます。

ML デフォーマ エディタ の [Details (詳細)] パネルで、キャラクターのスケルタル メッシュとインポートされたトレーニング済みの FBX アニメーション シーケンスの両方を、それぞれのプロパティに割り当てます。これで、メッシュがビューポートの Training Base というラベルの下に表示されるようになります。

また、インポートされた Alembic ファイルを Geometry Cache プロパティに割り当てます。これで、Alembic メッシュがビューポートの Training Target というラベルの下に表示されるようになります。
トレーニング ベース モデルの上にレンダリングされた緑色の線が表示されているのがわかります。これらはベース メッシュとターゲット メッシュの差分 (デルタ) を表しています。デフォーマ モデルはトレーニング中にこれらを学習しますので、これらが正しく表示されていることを確認してください。ターゲット メッシュの回転がトレーニング ベースと異なる場合、[Alignment Transform (アライメント トランスフォーム)] を使用して、両者を一致させることができます。両者を重ねる必要はありません。回転だけ一致させる必要があります。

タイムラインの再生ヘッドをドラッグすると、両方のシーケンスが一緒にスクラブされ、アニメーションが一致していることを確認することができます。緑色の線 (デルタ) が各フレームで適切に表示されることを確認してください。
一部のフレームでデルタが正しく表示されていない場合は、オプション [Constant Topology Optimization (一致のトポロジの最適化)] を有効にしてジオメトリ キャッシュの再インポートを試みることができます。

ML デフォーマ エディタ ツールバーの [Train Model (モデルをトレーニング)] をクリックし、トレーニングを開始します。このプロセスには、時間かかる場合があります。

トレーニング プロセスが完了すると、ML Deformer Testing モードに結果が表示されます。

[Visualization] パネルの Weight プロパティを調節して、リニア スキンメッシュ (左) と比較した ML デフォーマ メッシュ (右) の効果を確認することができます。

Show Heat Map プロパティを有効にして [Visualization] パネルの [Heat Map] オプションを調節すると、ML デフォーマで変形されるメッシュの領域が視覚的に表示されます。

デフォーマ ブループリントの設定
レベルのキャラクターで ML デフォーマを使用し始めるには、ブループリントの ML Deformer コンポーネント を使用して、キャラクターを設定する必要があります。
まず、アクタ ブループリント を作成します。コンテンツ ブラウザ で、追加 (+) > [Blueprint Class (ブループリント クラス)] をクリックして、[Actor (アクタ)] を選択します。作成されたら、ブループリントを開きます。

スケルタル メッシュをコンテンツ ブラウザから [Components (コンポーネント)] パネルにドラッグし、ブループリントに追加します。

次に、[Components] パネルの 追加 (+) をクリックし、[MLDeformer] を選択して、MLDeformer コンポーネント を追加します。

MLDeformer コンポーネント を選択して、[Details (詳細)] パネルで ML Deformer アセット を指定します。

最後に、Skeletal Mesh コンポーネント を選択して、Mesh Deformer プロパティで デフォーマ グラフ を指定します。

デフォーマ グラフがない場合は、「Engine > Plugins > MLDeformer Content > Deformers」コンテンツ フォルダにあるサンプルの DefaultMLDeformerGraph を使用することができます。このフォルダにアクセスするには、コンテンツ ブラウザの [Settings (設定)] をクリックし、[Show Engine Content (エンジンのコンテンツを表示)] と [Show Plugin Content (プラグインのコンテンツを表示)] の両方を有効にしてください。
