スタティックメッシュ モーフ ターゲット

モーフ ターゲットと WorldPositionOffset を使用したスタティックメッシュの変形

モーフターゲット は、元の形状から「ターゲット」とする形状へメッシュを変形させる手段です。 通常はアニメーションシステムの一部としてスケルタル メッシュと併用しますが、 Maxscript 言語で書かれた StaticMeshMorpher.ms
マテリアル関数 を使用して、 スタティックメッシュにモーフターゲットを利用した変形の設定をすることもできます。

この方法は、複数の UV チャンネル、頂点カラー、WorldPositionOffset を使用して変形を実行します。 各モーフターゲットの頂点のオフセットは、 UV チャンネルに頂点カラーとして格納されます。 そして StaticMeshMorphTarget マテリアル関数がこれらを抽出して、 マテリアル内での利用を可能にします。頂点のオフセットをマテリアルの WorldPositionoffset 入力へ渡すことによって、 メッシュの頂点をモーフターゲットの頂点の位置へ変換することができます。

スクリプトの設定とインストール

StaticMeshMorpher.ms maxscript は、ビルド内の UE4/Engine/Extras/FX_tools/3DSMax2012_x64/ にあります。

StaticMeshMorpher.ms maxscript を 実行 するには以下の手順に従います。

  1. 3dsMax の MAXScript メニューから Run Script... を選択します。

  2. ビルド内の StaticMeshMorpher.ms maxscript が格納されている場所へ移動してファイルを開きます。

  3. スクリプトのインターフェースが表示されて使用可能になります。

スクリプトをキーの組み合わせと結合したり、カスタムメニューに追加することで、より高速かつ簡単に実行することができます。

モーフターゲットの作成

モーフターゲットは、頂点を変形させた同一メッシュの複数インスタンスを必要とします。たとえば、 解けかかっている球氷は、以下の 3 つの形状にすることができます。

Game Model

Morph target 1

Morph target 1

ゲームモデル

モーフターゲット 1

モーフターゲット 2

モーフターゲットは、 UV チャンネル 2 と 3 にパッキングして (2 つのモーフターゲットがパッキングされていると仮定します) 、 モーフターゲット 1 の法線も必要に応じてメッシュの頂点カラーへ保存することができます。

モーフターゲットをパッキングするには 以下の手順に従います。

  1. Pick Game Mesh ボタンを押して、シーン内のゲーム モデル メッシュを選択します。

    Game Mesh Selected

  2. Pick Morph Target 1 ボタンを押して、シーンから最初のモーフターゲットとなるメッシュを選択します。

    Morph Target 2 Selected

  3. 必要に応じ、シーンの 2 番目のモーフターゲットに対して上記のステップを繰り返します。

    Morph Target 2 Selected

  4. 必要に応じて、 [Store Morph 1 Normals] チェックボックスにチェックを入れます。

  5. モーフターゲットの UV チャンネルへのパッキングを開始するには Pack Morph Targets ボタンを押します。

    Morph Packing Progress

  6. メッシュは 3ds Max からエクスポートして、Unreal へインポートすることができます。詳細は「FBX スタティックメッシュ パイプライン」を参照してください。

マテリアルの設定

StaticMeshMorphTargets 関数はモーフターゲットと「スタティックメッシュ」に適用された「マテリアル」内の法線へのアクセスを提供します。 この関数には、 2 つのモーフターゲットに対応する 2 つの出力と、法線に対応する 1 つの出力があります。モーフターゲットの出力は、 Material ノードの WorldPositionOffset 入力チャンネルに接続する値を提供し、法線出力は Material ノードの Normal 入力チャンネルへ接続することができます。

ベースメッシュとモーフターゲット間の モーフィング を有効にするために、 アルファ 入力を操作する単一 ScalarParameter と一緒に 1 つ以上の LinearInterpolate 式を使用します。これにより、モーフ ターゲットはゲームプレイ コードまたはマチネによってランタイム時に 操作されます。

以下は設定例 (モーフ ネットワークのみ) です。

morph_material_setup.png

上記ネットワークの Time パラメータが 0 から 1 になる時の結果を以下に示します。

morph_result.png

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル