見出し画像

Houdiniを使い、BlenderのカーブデータをGroomHair用Alembicカーブに変換する

ライフワークの制作作業を切り出してみます。技術的な内容をどういう温度感で書けばよいか迷っています。とりあえず誰か必要な人に届くと嬉しいです。

概要

キャラモデルの眉毛をHairGroom製の髪と同じ質感にしたい。

Blenderのカーブは普通に書き出してもうまく読み込まれない。

Houdiniを経由することで、理想的なGroomアセットが作成できた。

検証に至った経緯

HairGroomとはUE4で髪を表現するための機能の一つです。Alembic形式で出力された「カーブ」を一本一本シェーディングします。

多くのDCCツールはカーブを髪として編集する機能があるため、カーブをそのままリアルタイムに持っていけるというのは直観的で良いのです。複雑で自然な表現もし易そうです。

将来性も感じますし、今後ゲームを作るうえで、髪表現はこの機能を中心に作っていこうと思いました。

画像1

↑現在製作中のモデルに簡易な髪を当ててみた図です。

HairGroomで製作を進めていく過程で、一つ問題に衝突ました。

すなわち、

画像2

「眉毛(やまつ毛)も髪と同じ質感で表現したい」。

もともと眉毛はBlenderMarketから

のものを流用させてもらっています。様々な形状の眉毛がそろっていて、地味に良い買い物をしたと思っています。

眉毛はカーブとして入っており、先の画像はそれをポリゴンに変換してから書き出していました。

画像3

↑EyeBrow Packを使った眉毛です。これくらいなら秒で作れます。

試してみたのですが、BlenderではカーブをAlembicエクスポートしても、UE4上でうまく読み込まれません。

BlenderからAlembicカーブを出力する方法は特殊で、カーブではなく、パーティクルヘアーを用いるようです。この辺りは発展途上なのか、少し整備が行き届いていない印象です。方法の詳細はこの方の動画が明るいです。今回は割愛します。

どういったデータであればAlembicカーブとしてインポートできるのか、検証をするにはアトリビュート単位で触れるHoudiniが便利だと考え、ためしてました。

Blenderで作った眉毛をHoudiniで加工しUE4でインポートする

①基となるカーブで構成されたデータを用意します。

基となるデータからカーブだけ取り出しました。

画像4

②このデータから「面」を取り除き、「頂点」のみのつながりを持ったデータとして書き出しが可能な状態にします。

"Object Data Property"→"Geometry"→"Bevel"→"Depth"を0に設定することでカーブから太さが無くなり面が無くなります。

画像5

③Objデータとして書き出します。

特別な設定は不要です。これでBlenderでの作業は完了です。

画像6

④Houdiniのジオメトリノード内でインポートします。

このとき、primnumを表示しておくと、次の結果が分かり易いです。

画像7

⑤PolyPath SOPノードを繋ぎます。

パッと見変化が分かりにくいですが、primnumを表示することで変化が一目瞭然です。各primitiveがカーブ単位で統合されていることが分かります。

画像8

⑥各pointに太さを定義します。

工程を細分して記載します。

⑥-1

UVTexture SOPノードをつなぎ、画像の設定にすれば、全てのカーブのポイントがUV空間のU方向に正規化された形で整列します。

画像9

⑥-2
各U座標から@widthを設定します。今回はPointWrangleでrampを使いました。ColorSOPを使うと、根本と末端は値が低く、中間部分は値が高いことが確認できます。

画像10

⑦alembicで書き出します。

特別な設定は不要です。これでHoudiniでの作業は完了です。

画像11

⑧UE4にインポートします。

眉毛のシェーディングが髪と同じになりました!素敵ですね。これで全工程が完了しました。

画像12

太さの設定がプロシージャルだったりします。

画像13

結果には満足。HDA化してワークフローに組み込むことが確定したのでした。

最後に雑記

こういった感じで、最近はキャラモデルを作っています。

理想のキャラモデル製作というのは本当に難しいですが、これが完成したら動画撮ったり雰囲気を作るのが捗るので踏ん張りどころです。

少なくとも髪を綺麗にしてあげたいですね。今はちょっとみすぼらしいので、目線を入れました。

そのうちキャラモデルの試行錯誤の変遷とかをnoteにアップできるといいですね。

この記事が気に入ったらサポートをしてみませんか?