Awesome
English (by Google Translate)
NVIDIA Hair Works Integration
NVIDIA Hair Works の Unity インテグレーションです。 MAYA や 3ds Max でオーサリングした Hair データを Unity で表示させることができます。
How To use
Unity 5.2 以降、かつ Windows & D3D11 専用です。
使用には少々面倒な前準備が必要です。
Hair Works SDK は再配布が認められていないため、各自個別に NVIDIA の開発者サイトから入手してプロジェクトへインポートする必要があります。
以下に手順を記します。現状 SDK はバージョン 1.1.1 を前提としています。
- このパッケージ をプロジェクトへインポート
- Hair Works SDK を入手
- https://developer.nvidia.com/gameworksdownload ここの NVIDIA HairWorks -> HairWorks 1.1.1
- ダウンロードには NVIDIA の開発者アカウントが必要です。アカウント作成は無料ですが、申請から作成されるまでに 1 日前後時間がかかります。
- MAYA や 3ds Max のプラグインもここから入手できます
- Hair Works SDK に含まれる必要なファイルをプロジェクトへインポート
- HairWorks-r1_1_1-62/HairWorks/bin/win64/GFSDK_HairWorks.win64.dll を Assets/UTJ/Plugins/x86_64 の中にコピー
シェーダをカスタマイズしたい場合、hair には Unity のシェーダは使えないので独自に HLSL を書いてコンパイルする必要があります。
シェーダやプラグイン本体をビルドしたい場合、HairWorks-r1_1_1-62/HairWorks ディレクトリをまるごと Plugin/Externals の中にコピーしてから Plugin/HairWorksIntegration.sln をビルドします。
ちなみにスクリーンショットの虫は SDK 付属のサンプルで、media/Mite にあります。
Hair Instance Component
前提として、現状 hair 関連のデータ (.apx, .cso ファイル) は、Assets/StreamingAssets 以下に置く必要があります。
- "Load Hair Asset": hair のアセットファイル (.apx) を指定します。
- "Load Hair Shader": hair のシェーダ (.cso = コンパイルされた HLSL) を指定します。 最初からデフォルトのシェーダが指定されており、変える必要があるケースは稀だと思われます。
- "Reload Hair Asset/Shader": 実行中に .apx や .cso を更新した場合、それを反映させるにはこのボタンを押します。
- Root_bone: bone の root となるオブジェクトを指定します。 SkinnedMeshRenderer がある場合、それの Root_bone がデフォルトで指定されています。
- Invert_bone_x: チェックすると bone の x 座標を反転する処理が入ります。 FBX との座標系を一致させるためにこの設定が必要になるケースがあります。後述の FBX のロード設定にも注意を払う必要があります。
- Params: hair の色やシミュレーションのパラメータを設定します。 これらのパラメータは .apx ファイルにも含まれており、デフォルトでそれが設定されています。 細かい調整にはこちらを使うといいでしょう。
モデルの座標の単位に注意が必要です。
現状 hair はスケールをかけると結果が正しくなくなってしまいます。
Unity ではモデルはインポート時に File Scale によるスケールがかかりますが、
.apx のデータはこのスケールがかかる前の座標系になっています。
面倒なことに File Scale は 0.01 になっていることがよくあり、
こういう場合 .apx の座標系と Unity の座標系を一致させる必要があります。
DCC ツール側で File Scale が 1 になるように変更するか、
Unity 側で Scale Factor * File Scale が 1 になるように調整してスケーリングをキャンセルします。
後者の場合超でかくなってしまうので、前者による解決が望ましいでしょう。
参考: Import settings
Hair Light Component
Hair をライティングするにはこのコンポーネントが必要です。通常の Light オブジェクトに追加します。
大体見たまんまです。copy_light_params をチェックすると Light コンポーネントのパラメータをコピーして使うようになります。
Warning
Hair Works を含む NVIDIA GameWorks SDK は、使用する場合 NVIDIA のロゴの表示義務が生じます。
これは本プラグインを使用する場合にも適用されます。使用の際はこちらをよく確認してそれに従ってください。
GameWorks SDK EULA
大雑把にまとめると、ゲームの開始画面、マニュアル、プレスリリースなどに NVIDIA Game Works のロゴの表示義務が生じ、加えて商用利用の場合は NVIDIA へその旨を報告する必要がある、といったものです。ライセンス料の類は特にないようです。