Language:
Page Info
Skill Level:
Engine Version:

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

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

この手法は、複数の 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 からエクスポートして、アンリアルへインポートすることができます。このプロセスに関する詳細は、 FBX スタティック メッシュ パイプライン を参照してください。

マテリアル設定

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

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

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

morph_material_setup.png

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

morph_result.png