2D テクスチャやメッシュ UV に複雑なアニメーション データを保存することは、アニメーションが必要とするルック アンド フィールを維持しながら、アニメーションのオーバーヘッドを削減する優れた方法です。 これまで同じ操作を行うために モーフターゲット を使用したかもしれませんが、この新しい手法にはモーフターゲットにはない利点がいくつかあります。 利点の一つとして、システム内で複雑なアニメーションデータの使用が可能になります。そうでなければ、カスケード パーティクル エディタのようなモーフターゲットの利用ができません。 このガイドでは、このスクリプトを利用したプロジェクトのコンテンツの作成方法について説明します。
前提条件
スクリプトを使用する前に、このテクニックを使用して最良の結果を得るために知っておくべきことがいくつかあります。
スクリプトの保存場所
Vertex Animation Script (頂点アニメーション スクリプト) は次の場所に保存されていて、 VertexAnimationTools.ms. という名前がつけられています。
Engine\Extras\3dsMaxScripts\VertexAnimationTools.ms
Verext Animation Script の最新バージョンが、3Ds Max 2014 以降が image gamma を処理する方法を修正するように更新されました。
ツールに関する注意事項
このツールは複雑なアニメーション データをテクスチャに格納することでアニメーション オーバーヘッドを削減する利点がある一方で、いくつかの欠点もあります。 まず第一にこのツールは、単一 2D テクスチャで影響を与える頂点が最大 8192 頂点 に限られます。 理由は DirectX 11 のテクスチャの最大サイズが、X もしくは Y 方向のどちらかに 8192 ピクセルだからです。 ツールは以下の計算式を使用してテクスチャにデータを生成します。
最終的なテクスチャ解像度:X = メッシュ内の頂点数、 Y = キャプチャしたフレーム数
こうした制限があるため、このツールはアニメーションを必要とするビジュアルエフェクトやアンビエントスタティックメッシュなどに最適ですが、複雑なアニメーション リグを使用してこれを行うことは適切ではない場合があります。 マテリアル エディタでボーン変換が利用できないため、このツールはスケルタルメッシュアニメーションで 機能しません。 つまり同様のやり方でスケルタルメッシュの頂点に影響を与えたい場合は、代わりに モーフターゲット を使用しなくてはいけません。
頂点アニメーション ツールの概要
頂点アニメーション ツール内に、スタティックメッシュの頂点に影響を与えるまったく異なる方法が 2 つあります。 次のセクションでは、この 2 つの方法とその違いについて説明します。
-
Vertex Animation Tools: 頂点アニメーション ツールの一番上のセクションにある Vertex Animation Tool は、モーフターゲットの頂点位置と法線を保存する 2D テクスチャを生成します。
プロパティ名 説明 Animation Options: 3Ds Max でタイムラインを活用して作成したアニメーション、または 3Ds Max または Maya や Blender など別の 3D パッケージを利用して作成した個別のキーフレーム メッシュの利用のいずれかを選択できます。その後、パッケージからフレームごとにエクスポートして 3Ds Max 内でアニメーションを再構成できます。 Process Animated Meshes: このボタンは 3Ds Max シーン内のアニメートしたメッシュを処理します。必要なテクスチャを作成して、エクスポートします。 Anim Start: アニメーションが開始するフレームを定義します。 Anim End: アニメーションが終了するフレームを定義します。 Frame Skip: テフレームをスキップしてクスチャ空間を節約できます。 Process Selected Meshes: キーフレーム メッシュが有効な時だけ利用可能なオプションです。キーフレームメッシュを選択された順序で処理します。 -
Sequence Painter: 頂点アニメーション ツールの機能とほぼ同等ですが、頂点位置の情報が 2D テクスチャではなくメッシュの UV に保存される点が大きな相違点です。
プロパティ名 説明 Paint Selection Sequence: メッシュ頂点に関する情報を 2D テクスチャにデータとして保存する代わりにメッシュ UV 内に保存します。
3Ds Max バージョンおよびスクリプトのインストール
このツールは 3Ds Max 2015 を利用したテストしか行っていません。 3Ds Max の他のバージョンで機能する場合でもテストは一切行っていないため保証はできません。3DsMax の他のバージョンを使用する場合は自己責任でお願いいたします。 スクリプトのインストールは、 4.8\Engine\Extras\3dsMaxScripts からスクリプトを 3ds Max ビューポートにドラッグするだけで、スクリプトが起動します。
プロジェクトでこのスクリプトの使用頻度が高い場合、スクリプトをツールバーやクワッド (quad) メニューにいつでも追加できます。操作方法の説明は Autodesk サイトの詳細なウォークスルー にあります。
[/region]3Ds Max の単位設定
ツールを使用する前に 3Ds Max で使用している測定単位が UE4 で使用している単位と完全に一致することを確認します。 同じ単位を使用することで、 3Ds Max からツールを利用してエクスポートするデータを UE4 内部でも確実に機能させることができます。 UE4 ではセンチメートル (CM) をデフォルト単位として使用するため、 3Ds Max でもこの単位を使用するようにします。変更するには、以下の操作を必ず行ってください。
- 最初に 3Ds Max 2015 を開いてロードしたら、メイン ツールバーから [Customize (カスタマイズ)] > [Unit Setup (単位の設定)] の順序で選択します。
- 次に [System Unit Setup (システム単位の設定)] をクリックして、 [System Unit Setup] の単位をインチから [Centimeters (センチ)] へ変更して [OK] ボタンを押します。
- 最後に [Display Unit Scale (単位スケールを表示)]] を [Generic Units (一般単位)] に変更して [OK] ボタンを押します。
このステップを スキップしない ことが極めて重要になります。UE4 と 3Ds Max は単位が異なるため、 この手順を行わない場合、UE4 へコンテンツをインポートするとレンダリング エラーが発生します。
[/region]ツール選択
頂点アニメーション 3Ds Max スクリプトは、頂点アニメーション データを以下の 2 種類の方法で保存します。 ひとつは頂点の位置を 2D テクスチャに保存する方法で、もうひとつは頂点の位置データをメッシュの UV に保存する方法です。 以下に上記の 2 種類の設定と使用方法を示すリンクを紹介します。
キーフレーム - 3D パッケージからエクスポートして 3Ds Max へインポート可能な個々のキーフレームを使用します。情報はメッシュ UV に保存されます。
アニメーション タイムライン - 3Ds Max アニメーション タイムラインを使用して、結果を 2D テクスチャにエンコードします。
ヒントとコツ
この技術を最大限に利用するためのヒントをいくつか紹介します。
アニメーション再生レートを加速させる
アニメーションの再生レートが遅すぎると感じたら、 TimeWithSpeedVariable マテリアル関数を利用して再生速度を上げることができます。 これを行うには、 MS_SequencePainter_SequenceFlibook マテリアル関数を使用している場合は TimeWithSpeedVariable の出力を 0-1 Animation 入力に接続します。 MS_VertexAnimationTools_MorphTargets マテリアル関数を使用している場合は TimeWithSpeedVariable の出力を Morph Animations 入力に接続します。

複数のアニメートされたメッシュ
一度に複数のアニメートされたメッシュを選択して、全てのデータを 1 つのメッシュと 1 つのテクスチャ セットとして、スクリプトでベイクすることができます。 様々なパーツで構成されたキャラクターの作業時にとても便利な機能です。 使用するパーツを選択して通常通りスクリプトを実行するだけです。 その後スクリプトで選択した構成要素を結合して、必要な 2D テクスチャと一緒に新規メッシュを作成します。
フレームのスキップ
スクリプトの Vertex Animation Tools セクションの Frame Skip オプションを有効にすると、特定のフレームをスキップすることができます。 オリジナルのアニメーションのルック アンド フィールを保ちながら、最終テクスチャ サイズを削減するため、とても有用なオプションです。

以下のビデオは実際のフレームスキップ機能を表示しています。 「Original」と表示されたひとつめのティーポットは、全フレームを使用したティーポットがどのようにアニメートされるかを示しています。 次の「2」と表示されたティーポットは、2 フレーム毎などにアニメーションをスキップする様子を示しています。 最後に表示されるティーポットを見るとわかるように、10 フレームをスキップしてもオリジナルのルックアンドフィールは維持されたままです。
メッシュの名前/番号 | テクスチャサイズ | メモリの節約 |
---|---|---|
Original | 175 KB | 該当なし |
2 | 59 KB | 116 KB |
5 | 30 KB | 145 KB |
10 | 21 KB | 154 KB |
テクニカル情報
以下のセクションでは頂点アニメーション スクリプトがどのように機能するかに関するテクニカル情報を紹介します。 この情報は、純粋に参考として、または修正目的でスクリプトの動作方法の詳細が必要なユーザーを対象に提供しています。
制限事項
頂点位置に関するモーフターゲット情報は、16 ビットの符号付きの浮動小数点ファイル形式で保存されています。 32 ビット画像の方が正確ですが、ほとんどの FX 作業には 16 ビットで十分です。 しかし、オフセット頂点位置は静止している場所から離れるにつれて精度が低下します。
スクリプトのテクスチャは最近傍法を使ってサンプリングすることにも注意してください。
メモリ使用量
頂点ごとの各フレームのメモリ使用量は以下の通りです。
- 頂点オフセット テクスチャ:各フレームの頂点毎に 8 バイト (各ピクセル)
- 法線テクスチャ:各フレームの頂点毎に 4 バイト (各ピクセル)