10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unreal Engine 4 (UE4) その2Advent Calendar 2020

Day 9

HoudiniからUE4へのAlembic Groomインポート

Last updated at Posted at 2020-12-08

#はじめに
この記事はUnreal Engine 4 (UE4) その2 Advent Calendar 2020の9日目の記事になります。

UE4は4.24からAlembic Groomのインポートに対応し、毛の一本一本を正確にシミュレート&レンダリングすることによりフォトリアルなHair&Far表現が可能になりました。
最近ではWeta Digitalのショートムービーが話題になりましたね。

現在最新の4.26ではProduction Redyとなり、製品での使用も可能になりました!

#概要
UE4へのAlembic Groomインポート、運用に関しては公式ドキュメントに詳しく書いてあります。
髪のレンダリングとシミュレーション

UE4向けのGroomアセットの作成、インポートフローについてもドキュメントにまとまっていますが、Mayaベースの解説となってます。
XGen による毛髪や、体毛、毛皮のレンダリングに関するガイドライン

なので今回はHoudiniからUE4へのインポート手順やアトリビュートの受け渡しなどについてまとめてみようと思います。

#準備
UE4プロジェクトでHair Groomを有効にするには以下の設定を行っていただく必要があります。
###Project Settingsを開き、Rendering > OptimizationsでSupport Compute Skin Cacheを有効にする。
2020-12-07_22h38_48.png
###プライグインブラウザを開き、Alembic Groom ImporterとGroomプラグインを有効にする。
2020-12-07_22h42_45.png
再起動を要求されるので再起動します。これでUE4側の準備は完了です。

#HoudiniからUE4へのAlembic Groom受け渡し
###HoudiniでHairを作成する
まずはいつものブタさんに簡単に毛を生やしてみましょう。
そのまま作るとUE4とスケールが合わないので、事前に100倍スケールしておくといいです。
今回はUE4へのインポートがメインですので、この辺りは省略します。
2020-12-07_23h06_41.png
気持ち悪いですね!

###Alembicでエクスポートする
作成したFar(Hair)はジオメトリノードHairgen内でRop Alembicノードを使用してエクスポートします。
2020-12-07_23h12_41.png
2020-12-07_23h12_55.png
微調整のためにいろいろ繋がってますが、HAIRSピン以下につながっていれば大丈夫です。
特に設定は変更せず、エクスポートしたいパスを入力してエクスポート。
2020-12-07_23h59_02.png
###UE4にインポートする
エクスポートしたAlembicはそのままインポートすればGroomとしてインポートされます。
以下のようなウィンドウが出ますが、Houdiniで作成したAlembicをインポートする場合、RotationにX-90、Z180を入れておくと回転が合います。
2020-12-08_00h03_40.png
別途スキンメッシュもインポートし、同じ座標に置けばピッタリ合うはずです。
2020-12-08_00h07_05.png
これでHoudiniからUE4へのAlembic Groomのインポートが完了しました。

#補足情報
###MeshのUVを受け渡す
せっかくなのでもう少し補足情報を。
UE4のマテリアルノードHair Attributesノードでは、Groomに含まれている各種Attributeを取得できます。
2020-12-08_02h50_10.png

このなかのRoot UVは主に元となるメッシュのUVを格納し、Hairにテクスチャをマッピングする用途で使います。
こちらも公式ドキュメントで解説されていますが、やはりMayaベースのものとなってますのでHoudiniでの受け渡し方法も書いておきます。

受け渡すAttributeには命名規則があり、Root UVは"groom_root_uv"という名前でアトリビュートを作成します。
デフォルトでPrimitive AttributeとしてUV情報が転送されているはずなので、ジオメトリノードのhairgen内でAttribute RenameやWrangleを使ってUV情報を持った"groom_root_uv"を作成します。
2020-12-08_02h31_59.png

Rop AlembicノードのGeometryタブ、Additional UV Attributesにgroom_root_uvを入力します。
2020-12-08_02h41_19.png
これでgroom_root_uvがRoot UVから取得できるようになります。
試しにRoot UVをBase Colorに直接接続してみると、ちゃんとUVが来ているかどうか確認できます。
(コンソールコマンド"r.HairStrands.StrandsMode 3"でも確認可能です。)
2020-12-08_00h23_16.png
2020-12-08_02h47_20.png
これで好きなテクスチャをマッピングできますね。
ちなみにgroom_root_uvが作成されていない場合は、spherical mappingを使用して自動的にUVが生成されます。

以上です。
皆さんもHoudiniとUE4でたくさんモフモフを作って遊んでみましょう!
明日は福助8.5号さんです!

10
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?