カテゴリー別アーカイブ: houdini

Houdini UDIMワークフロー

HoudiniとSubstance Painter間のUDIMワークフローについての備忘録。

まずHoudiniでモデリングを行う。

今回は3つのパーツ(外装パーツ、インナーチューブ、背中ブースター)に分けてUVを作成した。
それぞれUV UnwrapでUV展開した後、UV LayoutでUDIMの1001,1002,1003の領域へレイアウト。
(UDIMに関しては以下のサイトを参照)
https://www.fxguide.com/featured/udim-uv-mapping/



最後にHoudiniからobjファイルとしてジオメトリをエクスポートする。

ここらかサブスタンスペインターの作業。
サブスタンスペインターでHoudiniからエクスポートしたobjファイルを読み込む際に
UDIMのテクスチャー領域ごとにテクスチャーセットを作成する設定を行う。

これによりUDIMのUV領域ごとにテクスチャーを作成できるようになる。



作成されたテクスチャー。

サブスタンスペインターからテクスチャーのエクスポートを行う。
プリセットを「PBR Metal Rough」に設定し、
BaseColor,Metallic,Roughness,Normalテクスチャーをエクスポートする。
(テクスチャーセットの3セット分が一度にエクスポートされる)

ここからHoudiniの設定。サブスタンスペインターの見た目と合わせてみる。

以下、PrincipledShaderのパラメーター設定。
(Metal-Roughnessワークフローに関しては以下のサイトを参照。)
https://academy.allegorithmic.com/courses/the-pbr-guide-part-1
https://academy.allegorithmic.com/courses/the-pbr-guide-part-2

BaseColor、Roughnes、Metallic、Normalエクスチャーにサブスタンスペインターから
エクスポートされたテクスチャー名を設定する。
テクスチャー名はファイル名の「udim番号(1001から1003)」の部分を
「%(UDIM)d」に置き換えればOK。


ついでに、環境マップもサブスタンスペインターと合わせてみる。
デフォルトでは、以下のフォルダに入っているPanorama.hdrを使用している。

mantraでレンダリング。これでサブスタンスペインターとほぼ同じ見た目になる。


Houdini Rose シミュレーション

以前、Houdini のClothで作成したバラの花びらのシミュレーションを
Vellumでやってみた。
バラのモデルはHoudini 17で再度フルスクラッチで作成した。

Houdini Rose from shuichi sakuma on Vimeo.

80枚の花びらをVellumでシミュレーションしているが
動作が非常に軽く、セッティングはClothよりもシンプルで使いやすい。

VellumはSOPに組み込みやすいので、
モデリングの一部としても使っていけると思う。

 

Houdini Hair シミュレーション

HoudiniでHairのシミュレーションを行ってみた。

Houdini Hair Simulation test from shuichi sakuma on Vimeo.

Houdiniは何をやるにもアトリビュートドリブン(駆動)なので
今回はアトリビュートを使って、髪の根本から毛先までかけて
徐々に髪質が柔らかくなるような設定にしてみた。
これにより、髪の毛先はより外部フォースの影響を受けやすくなる。

以下は髪の毛のコリジョン設定を可視化したもの。

今回のようなロングヘアーの場合、リアルな挙動を再現するためには
髪の毛同士のセルフコリジョンが必要になり、計算負荷は高くなる。
それでもVellumの高速な処理のおかげで8コアのマシンでも十分作業ができた。

 

Houdini Hair ジェネレーター

Houdiniでヘアーを作成してみた。

今回は標準のHair Generateノードは使用せずに
SOPで自前のジェネレータを作ってヘアーを生成した。

 

■ 巻き髪ヘアー

■ 三つ編みヘアー

ヘアーを生成後、VEXを使って髪のボリューム感(ふわっとした感じ)を出している。
この自前のジェネレータはチューブジオメトリからプロシージャルにヘアーを生成するので
ロングヘアーなどに活用できそうだ。

 

Houdini Fur ダイナミクステスト

Vellumによるファーダイナミクスのテストを行った。
従来はWireSolverを使用していたので
VellumSolverに切り替えると体感的にも再生スピードが上がるのがわかる。

WireSolverの場合、従来のmass-springモデルのため
速い動きに対しては解が発散傾向にあり
ワイヤーの伸びはどうしても避けられなかった。

これに対して、Vellumの場合PBDモデルのため解は常に安定することになり
ワイヤーの伸び縮みを気にしなくてよくなる。
少なくとも体毛の揺れに関しては、WireSolverを使用することはなくなりそうだ。

今後はVellumのおかげで、キャラクターFXに関しても
Houdiniを使用することが増えてきそうだ。

 

Houdini Fur


Houdiniを使って動物のファーを作成してみた。
使用バージョンは16.5。


16.5から体の部位ごとにガイドカーブを別々にグルーミングして
その後マージすることが可能になった。
(「グルーミング」とは毛の流れを整える作業)
マージ後、各部位の境界付近のガイドカーブは
CVの数も含めて綺麗に補間される。

今回、全長2メートルの熊に対して生成されたファーは約70万本。
ファーのベースとなるガイドカーブは約1万本使用した。

このようなファーに対しても、Houdiniのプロシージャルシステムのおかげで
かなり効率的に作業を進められたが
グルーミング作業時には挙動が若干もっさりしている印象を受けた。
(H17では、ヘルプを見ると4倍から10倍のスピードになっているらしいが…)

やはりというか、動物のファーを本物らしく見せるのはかなり難しい。

シーグラフアジア

シーグラフアジアへ参加。

朝一でWetaの講演を聞くために
Houdini Hiveの会場へ。

内容はWetaのスーパーバイザーMatt Aitken氏による
映画「アベンジャーズ」におけるHoudiniの活用例について。
時間は30分強くらいだったが、内容はかなり濃く
Matt Aitken氏が以下のサイトで解説されているものに近かったと思います。

「How Weta’s VFX Team Brought the Most Epic Moments of Avengers: Infinity War to Life」
https://io9.gizmodo.com/how-wetas-vfx-team-brought-the-most-epic-moments-of-ave-1828264355

Wetaのエフェクトアーティストは30人。
エフェクトを作るにあたって自社のエフェクトライブラリの再利用はあまりないそう。
(完成までのプロセスが大事みたいな話)
エフェクトに関しては自社開発のFluid Solver(シナプス)と共に
HoudiniのSolverの利用が徐々に増えているとの話もあった。
R&DはMantraで行い、最終レンダリングは
自社開発のレンダラーManukaを使用とのこと。

クローズアップでも本人にしか見えない
Wetaのデジタルダブルの完成度が凄かった…

HoudiniのTシャツもらいました。
夏場はこれ着て職場に行くか。

Houdini影だけのレンダリング

備忘録:Houdiniで影だけをレンダリングし背景画像と合成するシンプルなやり方。
(他にもやり方はあると思いますが、とりあえず今回試したやり方)

 

/out内で以下の3つのROPを作成。

1.キャラクターのみをレンダリングするROP
2.影が落ちる地面のみをレンダリングするROP(影を落とすキャラクターはファントム(幽霊)設定。direct_shadowとindirect_shadowのプレーンを追加)
3.背景のみをレンダリングするROP

3つのROPは以下に示すようにMergeで結合。
Mergeノードにはrenderボタンがあり、それを押すことで
Mergeに接続されているROPノードが左から右へ順番にレンダリングされる。
その結果、それぞれのレンダリング結果がEXRファイルに保存されていく。

以下、それぞれのROPの設定とそのレンダリング結果。

1.キャラクターのみをレンダリングするROP設定



2.影が落ちる地面のみをレンダリングするROP設定




3.背景のみをレンダリングするROP設定

COP2 Networkを作成し、レンダリングされたキャラクター、影つき地面、背景の各EXRファイルを読み込んで以下のネットワークを作成。これによりdirect_shadowとindirect_shadowチャンネルが
アルファチャンネルにマージされる。

1のChannelCopyノードの設定

2のChannelCopyノードの設定

3のChannelCopyノードの設定

最後に背景の上に影を重ね、さらにその上にキャラクターを重ねて完成。
(影には適度にブラーを適用)

Houdini16.5における書籍p382(手順30)の車輪回転アニメーションに関しまして

拙著「Houdini SOP&VEX編」のp382の手順30において
キャタピラと車輪をパックして1ポイント扱いにしていますが、
Houdini16.5ではAlembicパックジオメトリ(車輪)と
標準パックジオメトリ(キャタピラ)が混在した状態でパックすると
Alembicパックジオメトリ(車輪)に設定していた回転行列が機能しなくなるようです。
その結果、キャタピラが回っていても車輪は停止する状態になります。
(なお、Houdini16ではこの現象は発生しません)

これを避けるために、Houdini 16.5では手順28(p382)において
Solver(solver2)とMerge(merge2)の間にPrimitiveWrangleとPackを挿入し、
以下に示すようにパラメータ設定を行ってください。
これは事前にPackノードによって、車輪の4つのAlembicパックジオメトリを
標準パックジオメトリに変換しておく処理に相当します。


◆PrimitiveWrangleの設定
@name = “piece”+itoa(@primnum);

◆Packの設定


以上、お手数をおかけしますが
よろしくお願いいたします。

Houdiniでポリゴンモデリング part2

先日、ラピュタのロボットをHoudiniでモデリングしてみたが、
(http://www.serenelight3d.com/blog55/?p=3583)
今回は球体を使って様々な野菜やフルーツを作ってみた。

表面の模様や凹凸のディテールは、HoudiniのCOP内で
プロシージャルテクスチャを作成し、
ディスプレイスメントマッピングにより表現した。
今回、手作業によるペイントは行っていない。


今回、一番時間がかかったのはメロンの表面。

HoudiniのCOPは合成機能だけではなく、テクスチャーも作り出すことができるので
いろいろと研究の余地はあると思います。