On this page |
Vertex Animation Texturesは、ゲームエンジン内で複雑なシミュレーションを再生するための代替メソッドです。 これらのテクスチャを使用する利点は、テクスチャがGPUから読み込まれるため、複雑なアニメーションの再生に適していることです。 欠点は、その結果の精度を上げるためには、これらのテクスチャを無圧縮にする必要があるので、メモリ使用量を大量に消費してしまうことです。
要件 ¶
ジオメトリに必ず法線とUVがあること(流体エクスポートを除く)。 ジオメトリにuvとuv2が存在した場合、このROPは頂点アニメーションテクスチャデータにuv3を使用します。 そのため、それに応じてゲームエンジンシェーダを修正する必要があります。
Unrealクィックスタート ¶
Unityクィックスタート ¶
基本的なエクスポートの手順 ¶
-
エクスポートするMethodとEngineを選択して、“Initialize for Engine”をクリックします。
-
エクスポートしたいジオメトリのパスをSOP Pathに設定します。
-
今回初めてVertex Animation Textureをエクスポートするのであれば、シェーダのインストールのセクションを参照してください。
-
Projectパスにファイルのエクスポート先を設定します。Unityでは、ここにUnityプロジェクトのフォルダを設定することで、自動インポートとマテリアルの更新をさせることができます。
-
Renderをクリックします。
-
VAT ROPをダブルクリックして中に入り、その結果のジオメトリを検査することで、エクスポートデータが正しいかどうかを確認することができます。テンプレートフラグが有効になっているジオメトリがオリジナルの入力です。
Unityでアセットをインポートしてセットアップする ¶
-
まず最初にSideFX Vertex Animation Texturesパッケージがインストールされていることを確認してください。これはURPと互換性があります。
-
レガシーレンダラーまたはLWRPを使用しているのであれば、v2.0のVAT ROPを使用してください。
-
VATアセットを含んだフォルダに移動するか、または、VATアセットをあなたのプロジェクトにインポートしてください。
テクスチャの設定 ¶
-
sRGB(Color Texture) - OFF
-
Alpha Source - Input Texture Alpha
-
Non-Power of 2 - None
-
Generate Mip Maps - OFF
-
Filter Mode - Point(no filter)
-
Compression Format - RGBA Half。場合によっては、これを設定するために各プラットフォームをオーバーライドする必要があります。
マテリアルの設定 ¶
-
マテリアルには、自動的に正しいシェーダが割り当てられて値が設定されます。
-
テクスチャをPostion Texture入力に割り当てます。エクスポートタイプに応じてRotationまたはColorにも割り当てます。
-
マテリアル値がまだデフォルト値であれば、プロジェクトを保存して、再度Houdiniからエクスポートを試してください。
-
VAT ROPの各フィールドの隣にあるコピー/ペーストアイコンを使用してその値をコピーアンドペーストすることもできます。
-
エクスポート時に生成されたJSONファイルを参照して、値が正しいかどうかを確認することもできます。
Unrealでアセットをインポートしてセットアップする ¶
-
まず最初にSideFX Labsコンテンツプラグインがインストールされていることを確認してください。このプラグインには、マテリアル、マテリアル関数、ユーティリティが含まれています。
テクスチャ ¶
-
テクスチャをContent Browserにインポートします。
-
それらのテクスチャを選択し、どれかのテクスチャの上で右クリックして、Scripted Actions > SideFX Set VAT Texturesを選択します。
-
これは、Compression SettingsをVector Displacmentmapに設定します(精度は良くなるけどファイルが大きくなっていいのであればHDRを試すと良いでしょう)。
-
FilterをNearestに設定します。
-
メッシュ ¶
-
メッシュをContent Browserにインポートします。 FBX Import Options:
-
Auto Generate Collision - OFF
-
Vertex Color Import Option - Replace
-
Remove Degenerates - OFF
-
Convert Scene - ON
-
Material Import Method - Do Not Create Material
-
-
メッシュをインポートした後に、そのアセットをダブルクリックするとプレビューウィンドウが開きます。
-
“Use Full Precision UVs”を有効にし、Apply Changesをクリックして、アセットを保存します。
マテリアル ¶
-
マテリアルインスタンスで使用したいJSONファイルをContent Browserフォルダにインポートします。
-
DataTable Optionsウィンドウで、Choose DataTable Row TypeをVAT_Material_Attributesに設定します。
-
新しくマテリアルインスタンスを作成し、ParentをM_VAT_(Export Type)に設定します。例えばM_VAT_Soft。
-
手動でテクスチャを割り当てて、マテリアルパラメータを有効にする必要があります。
-
マテリアルインスタンスを閉じます(閉じないと、以下の更新内容が表示されません)。
-
Content Browserで、マテリアルインスタンスとJSONデータアセットを選択し、右クリックしてScripted Actions > SideFX Set VAT Mat Instanceを選択します。これは、マテリアルインスタンス上にパラメータを設定します。
シェーダのインストール ¶
Unity ¶
-
このROPの上部にあるUser Interfaceドロップダウンメニューを“User Interface - Normal”に変更します。
-
パラメータダイアログの下部に新しくセクションが表示されます。“Sample Shader Code”タブに進みます。
-
“Unity Package Path”の隣にあるアイコンをクリックして、シェーダパッケージのパスをコピーします。
-
UnityでPackage Mangerを開きます(Window > Package Manager)。
-
左上のプラスアイコンをクリックして“Add package from disk”を選択します。
-
その上部にあるアドレスバーにそのパスをペーストします(Macでは手動で移動する必要があります)。
-
package.jsonファイルを開いてシェーダをインストールします。
Unreal ¶
-
このROPの上部にあるUser Interfaceドロップダウンメニューを“User Interface - Normal”に変更します。
-
パラメータダイアログの下部に新しくセクションが表示されます。“Sample Shader Code”タブに進みます。
-
“Content Plugin ->”の隣にあるアイコンをクリックすると、コンテンツプラグインフォルダを含んだウィンドウが開きます。
-
SideFX_Labsフォルダを(あなたのUnreal Project)/Pluginsにコピーします。
トラブルシューティング ¶
-
アニメーションキャラクタには、アニメーション関連のテイクが含まれていることがあります。このテイクが原因でエクスポート処理で問題が引き起こされる可能性があります。まず最初にメッシュをAlembicファイルにエクスポートしてから、そのAlembicファイルをSoftエクスポートメソッドの入力として使用してください。
-
メッシュをエクスポートする前に必ずUVが付いていることを確認してください。UVがなかった場合、シェーダは間違ったUVチャンネルを使ってVATデータを取得してしまいます。
-
リジッドメッシュをUnrealにインポートする時は、必ず“Replace Vertex Colours”を有効にしてください。各塊の重心は頂点カラーに保存されます。
-
pngなどのファイルフォーマットにエクスポートすると、画像のカラー値が変わってしまってVATアニメーションが間違ったルックになってしまう可能性があります。まず最初にexrにエクスポートしてみて、あなたのセットアップが動作しているかどうかを確認してから、テクスチャのカラースペースとプロジェクトをチェックして、ピクセル値が変更されてないかどうかを確認してください。
パラメータ ¶
User Interface
Simple(デフォルト)は、変更頻度の高いパラメータに制限されたUIを表示します。 Normalは、パラメータが多いもののあまり使用しないコントロール付きでフル展開したUIです。
Start/End
ここには、エクスポートする開始フレームと終了フレームを指定します。開始フレームと終了フレームにさらに1フレーム分の余裕を考慮してください。 デフォルトでは、エクスポータは、作成時に動的変数を壊します。
Render With Take
テイクを使用している場合は、ここでエクスポータオプションを変更することができます。
Method
エクスポートするプライマリメソッド:
Soft - シミュレーション全体でトポロジーが変わりません。
Rigid - パックプリミティブスタイルのリジッドボディシミュレーション。
Fluid - シミュレーション全体でトポロジーが変わります。
Sprite - カメラ方向を向いたカード。ポイントはカメラ空間で移動します。
Engine
選択したゲームエンジンに適したスケール、テクスチャタイプ、座標系を設定します。
Initialize for Engine
各エンジンにプリセットオプションを適用します。 これは、その結果がUI内のパラメータを上書きするため、できるだけ早く適用してください。
SOP Path
SOPsのジオメトリのパス。
Data For Realtime Material ¶
Note
ゲームエンジンマテリアルにコピーする必要がある値には、その隣にコピーボタンがあります。
Frame Range
計算されるフレーム数。終了フレーム - 開始フレーム。 この値は、Renderをクリックした時にスクリプトによって設定されます。
Speed
1秒あたりのフレーム数をフレーム範囲で割ったHoudiniのレート。 あなたのエンジンでは、これはフレームレートが違っていたり可変していれば変わります。 この値は、Renderをクリックした時にスクリプトによって設定されます。
Position Max/Min
これらの値をゲームエンジン内のマテリアルにコピーして、正規化されたポジション値を元の範囲に広げます。
Pivot Max/Min
Rigidメソッドが選択されている時に表示されます。 ピボット値は頂点カラーに格納されます。 たいていのゲームエンジンは、これらの値を0から1の範囲にクランプします。 これらの値をゲームエンジン内のマテリアルにコピーして、正規化されたポジション値を元の範囲に広げます。
Scale Max/Min
Rigidメソッドが選択されている時に表示されます。 時間範囲全体にわたって最大スケールと最小スケールをリマップします。
Width/Height
Spriteメソッドが選択されていて、EngineがUnityに設定されている時に表示されます。 スプライトスケールの幅と高さをHoudiniから設定します。
Padded Ratio
Pad to Power of 2が有効な時、ここには、アクティブピクセルとパディングピクセルの比率を指定します。 マテリアルは、この比率を使用してUVルックアップの比率を計算します。 この値は、Renderをクリックした時にスクリプトによって設定されます。
Normalize data range to 0-1 space
テクスチャ圧縮を使用する場合、テクスチャマップには正規化されたデータが必要です。
Pack normals into Position Alpha
ポジションマップのアルファチャンネル内に法線データを格納して、テクスチャ空間を保存します。 このメソッドでは法線の精度が悪くなります。
Pack Pscale into Position Alpha
ポジションマップのアルファチャンネル内にpscaleデータを格納して、テクスチャ空間を保存します。
Pad to Power of 2
有効にすると、すべてのテクスチャは縦/横それぞれ一番近い2のべき乗の値のサイズでエクスポートされます。 2のべき乗のテクスチャは、GPU上でテクスチャストリームを可能にします。
Double Textures (Higher Precision)
あなたのエンジンが8ビットテクスチャに制限されている場合、2枚目のテクスチャを使用して精度を上げることができます。
Target Texture Size
これはテクスチャの最大幅です。 テクスチャの最大高さは、この最大幅を基準としてアニメーションのフレーム数と頂点の数から決まります。
Target Prim Count
これは、流体メッシュのエクスポートで使用される三角形の最大数です。 理想としては、この数には入力メッシュの三角形の数より少ない数を指定してください。
Calculate Optimal Primcount
これは、入力メッシュの現行フレームでの三角形の総数をTarget Prim Countに設定します。
Paths ¶
enable_project
アセット名のオーバーライドを有効にします。
Project
親のプロジェクトディレクトリ。デフォルトでは、これは、スタジオ向けの$JOBです。
Component Enable
これは、ファイルパス内のアセット名をオーバーライドすることができます。 通常では、これは'opname(“..”)'、つまり、このSOP領域の親ノードです。 これによって、このレンダーオブジェクトまたは固有のアセットを必要なだけ何回もコピーアンドペーストすることができます。 サブネット内であれば、これはそのサブネット名が反映されます。
Component
デフォルトでは、これは、親オブジェクトの名前またはこのノードのサブネットの名前を参照するので、ネーム空間のテクニックを利用して、たくさんのコピーアンドペーストの実行によってアセットを複製することができます。必要に応じて、アセット名をオーバーライドして、そこに必要な文字列またはエクスプレッションを入力することができます。
enable_geo
ジオメトリのエクスポートを有効にします。
Geometry
ジオメトリの保存先のディスク上のパス。
Browse Path
リストしたディレクトリでエクスプローラウィンドウを開きます。
enable_pos
位置のエクスポートを有効にします。
Position
位置マップの保存先のディスク上のパス。
Position2
Double Texturesが有効な場合、2枚目のポジションマップの保存先のディスク上のパス。
enable_rot
回転のエクスポートを有効にします。
Rotation
回転マップの保存先のディスク上のパス。
enable_scale
スケールのエクスポートを有効にします。
Scale
エクスポートするメッシュに事前スケールを持たせて、さらに原点をデフォルトにすることができます。
enable_normal
法線マップのエクスポートを有効にします。 無効にすると、法線がアルファにパックされます。
Normal
位置マップのアルファに法線をパックしなかった時の法線マップの保存先のディスク上のパス。
Export Color Map
カラーのエクスポートを有効にします。
Color
カラーマップの保存先のディスク上のパス。
Update Mat
マテリアルインスタンスに対応したエンジン向けにそのマテリアルインスタンスのエクスポートを有効にします。 これは、それに対応したエンジン向けにマテリアルインスタンス内の値を更新します。
Material
エンジン用のコピーアンドペーストマテリアルコード。
Create Data
ソース管理できるように、リアルタイムシェーダ用データをJSONライブラリにエクスポートできるようにします。
Realtime Data
リアルタイムシェーダ用データの保存先のディスク上のパス。
Create Shader
シェーダ生成が可能なエンジン用シェーダの作成を有効にします。
Shader Path
シェーダの保存先のディスク上のパス。
Settings ¶
Initialize Simulation OPs
エクスポートする前にクックチェーンで実行するすべてのシミュレーションコンテキストを発動します。
Equalize Edges
流体エクスポート用。 これは、最適な圧縮ができるように三角形のエッジを均等にします。
Reverse Normals
メッシュの法線を反転させます。これは、スプライトなどの片面メッシュで役に立ちます。
Convert to Image Format’s Colorspace
これは、フォーマットのデフォルトであるsRGBルックアップを除去します。
Raster Depth
これは、Initialize for Engineがクリックされた時に設定されます。 エクスポートされる画像のビット深度を調整します。
Black/White Points
エクスポートする画像の最小ピクセル値と最大ピクセル値。 これは、テクスチャをリマップしないでフィットさせます。
BC 4Channel Split
異なるデータフォーマットで別々にチャンネルをレンダリングします。
Position Coord
これは、Initialize for Engineがクリックされた時に設定されます。 座標系に合わせてコンポーネントを並べ替えます。
Color Coord
異なる座標系のコンポーネントを並べ替えます。 カラーに関しては、おそらく、これはカラー以外の目的でこのマップをハイジャックする場合に役立ちます。
Name
エクスポートされるジオメトリオブジェクトの名前。名前を指定しなかった場合は、MESH.1のようになります。
Position ¶
Translate
エクスポートするメッシュに事前トランスフォームを持たせて、さらに原点をデフォルトにすることができます。
Rotate
エクスポートするメッシュに事前回転を持たせて、さらに原点をデフォルトにすることができます。
Pivot
エクスポートするメッシュに事前ピボットを持たせて、さらに原点をデフォルトにすることができます。
Delta (P.xyz)
エクスポータに渡す必要のある位置アトリビュート。
Normal (N.xyz)
エクスポータに渡す必要のある法線アトリビュート。
Rest (rest.xyz)
エクスポータに渡す必要のあるRestアトリビュート。
Rotation (orient.abcd)
エクスポータに渡す必要のある回転アトリビュート。
scale (scale.xyz)
エンジンに渡す必要のあるスケールアトリビュート。
pscale (pscale.x)
エクスポータに渡す必要のあるポイントスケールアトリビュート。
Pivot (pivot.xyz)
エクスポータに渡す必要のあるピボットアトリビュート。
Color (Cd.xyz)
エクスポータに渡す必要のあるカラーアトリビュート。
Alpha (Alpha.xyz)
エクスポータに渡す必要のあるアルファアトリビュート。
Delta (P)
エンジンに渡す必要のある位置アトリビュート。
Normal (N)
エンジンに渡す必要のある法線アトリビュート。
uv (uv.xy)
エンジンに渡す必要のあるUVアトリビュート。
Tiling Coord (uv2.xy)
エンジンに渡す必要のあるUV2アトリビュート。
uv3 (uv3.xy)
エンジンに渡す必要のあるUV3アトリビュート。
pscale (P.w)
エンジンに渡す必要のあるポイントスケールアトリビュート。
Pivot (Cd.xyz)
エンジンに渡す必要のあるピボットアトリビュート。
Color (Cd.rgb)
エンジンに渡す必要のあるカラーアトリビュート。
Alpha (Cd.a)
エンジンに渡す必要のあるアルファアトリビュート。
Sample Shader Code ¶
シェーダのインストールのセクションを参照してください。 このセクションで用意されているコードのほとんどが参照用または古いセットアップ用になっています。
Note
Unreal Engine用: コピーボタンを使用すると、マテリアル関数にペースト可能なコードがコピーされます。 これは、マテリアルにペーストしても正しく動作しません。
Note
Unity用: Shader Pathオプションが有効になっていれば、プロジェクトパス内にシェーダファイルが自動的に生成されます。
Scripts ¶
Pre-Render
レンダリング前にこのコードを実行します。
Post-Render
すべてのレンダリングの後にこのコードを実行します。