2021年09月29日

Houdiniを使ったエフェクト作り

こんにちは、エフェクトデザイナーのSです。

今回はSubstance+Houdini+UE4を活用し
爆発や弾痕などで発生するクレーターのような
デカールを作る過程を紹介できればと思っています。

画像1.jpg

こちらのデカールエフェクトが完成イメージになります。

まずはHoudiniでの作成の過程を中心に流れを説明したいと思います。
こちらがHoudiniのネットワークの全体図です。

画像2.jpg

画像3.jpg

➀:球の作成とUV展開
A:UVのデフォーム
B:ハイトテクスチャの読み込みと押し出し
C:Bで作ったメッシュとボックスを使い、ブーリアン処理
D:ゲームエンジンで使う用の各種テクスチャをレンダリング

順々に工程を説明します。

➀:球を作成し、筒状にUV展開をします
画像4.jpg

A:UVのVをランプでデフォームします
画像5.jpg

UVをデフォームしている理由は
後の過程でこのメッシュを元にデカールの溝を作るのですが
デフォルトの円柱のラッピングだと均一な溝にならず、
UVが伸びたような溝になるからです。

B:SubstanceDesignerで作ったハイトテクスチャを
頂点カラーとして焼き込みます。
画像6.jpg

焼き込んだ頂点カラーを元に法線方向に押し出します。
ただそのまま押し出すと球の底の方が押し出され過ぎてしまいますので
球の底の方はハイトの中央値(グレー)になるように頂点カラーを調整します。

画像7.jpg

カーブの制御の中身は以下のようになっています。
attribvopという頂点情報などを編集するノードを使って以下のように編集します。
attribvoを作ってダブルクリックで中に入ると、
ノードベースで頂点情報などの編集ができます。
イメージ的にはゲームエンジンのマテリアル エディタの頂点版が近いかもです。
また簡単にですが中身の説明も記載いたしました。

画像8.jpg

調整した頂点カラーを元に押し出すと、
以下のように球の底の方はそこまで押し出されず
それ以外の所は均一の高さで押し出しが行われます。

画像9.jpg

デカールの削り部分のメッシュになるのでかなり極端に押し出しをしています。

C:土台となるボックスを作成し、
Bで作った削り用のメッシュをトランスフォームノードで縦に潰し、
位置などを調整した後にブーリアンノードで削ります。
※ブーリアンは2つのモデルを交差するようにして
対象の重なっている部分を削る事ができます。
画像10.jpg

D:ゲームエンジンで使う用の各種テクスチャをレンダリングします
画像11.jpg

あとはゲームエンジンに素材を持って行き、
視差マップ用のマテリアルに適用すれば完成です。
今回はUnreal Engineの「ParallaxOcclusionMapping」を使用しています。
機能別サンプルにも「ParallaxOcclusionMapping」のサンプルがあります。

画像12.jpg

画像13.jpg

実際に適用したものが↓のものになります
画像13.gif
無題.png
使用したハイトテクスチャ↑

マテリアルの構成は以下のような構成になっています。
Houdiniで作ったAO用のテクスチャやノーマルは
大きなディティール情報を持っているので
Substanceで作った細かいディティール情報として
マテリアル上で2つの情報を混ぜ合わせています。

画像14.jpg

画像15.jpg

岩素材のテクスチャデータはsubstanceで作成しています。

画像16.jpg

substanceのテクスチャ素材次第で違った表情のデカール素材になるので、
プロジェクトのテイストに合わせたデカールを作成できると思います。

画像18.gif
無題2.png
ハイトテクスチャを変えた例です↑

記事は以上になります。
拙い記事ではありますが、何かのお役に立てれば嬉しいです!
ここまで読んでいただきありがとうございました。
posted by byking at 17:48| 日記