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

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は合成機能だけではなく、テクスチャーも作り出すことができるので
いろいろと研究の余地はあると思います。

Houdiniでポリゴンモデリング

今回、Houdiniでキャラクターモデリングを行ってみた。

一昔前だとHoudiniではキャラクターなどのポリゴンモデリングは厳しかったが
現在のHoudiniは必要なツールが一通り揃っているので、ある程度は問題なく行える。
(と、言っても、Houdiniでゼロからキャラクターをモデリングしている人は
そんなにいないとは思いますが…)

ポリゴンモデリングは主にラジアルメニュー(Cキーで表示)を使用して行った。
その場合、ほとんどのオペレーションはシーンビュー内で行うことになり、
ノードは自動的に作成され、自動的に接続されていく。

例えば、ポリゴンの押し出しやスプリットを使ってボックスから手の形を作成していくと
オペレーションのたびに対応するノードが自動的に作成され、
ネットワークに直列に接続されていく。

ロボットのゴーグルの穴はブーリアンを使用せずにモデリングで穴をあけた。
これはブーリアンを使用するとサブディビジョンの際に問題が出るため。

胸の紋章のモデリングは画像ベースで、VEXを使ったポイント移動によって行った。

今回、ラピュタのロボットをモデリングするために作られたノードは以下の通り。

そしてモデリング終了後にUV展開を行って、サブスタンスペインターでテクスチャーを作成した。
以下に示すように、HoudiniのUV圧縮を行うUV Layoutノードは非常に性能がいい。
今回は全てのパーツをまとめてテクスチャー作業を行ったため、テクスチャは4Kで作成した。

今回初めて本格的にサブスタンスペインターを使用したが、
Houdiniと同様に「プロシージャル」なフローでテクスチャー作成が可能になっており
とてもいいツールだと思う。
UIも最新バージョンで刷新されており、使いやすくなった印象を受けた。

最後にサブスタンスペインターからbasecolor,roughness,metal,normalマップを
エクスポートし、マントラでレンダリングを行った。

 

Houdini RBD(リジッドボディ)

新年あけましておめでとうございます。
本年もよろしくお願いいたします。

冬休みにまとまった時間が取れたので
再学習も兼ねてHoudiniのRBD(リジッドボディ)アニメーションを作ってみた。

Houdini RBD personal study 03 from shuichi sakuma on Vimeo.

今回のシーンは通常のセッティングでは重すぎて最初計算が回らなかったが、
VEXを使うことでなんとか計算を回すことができた。

VEXは窓ガラス一枚ごとの粉砕・非粉砕状態のスイッチング、
建物のコンストレイン、RBDのアクティベーション、ガラス破片の初速度設定、
デブリ発生のタイミング制御など、様々な場面で使用している。

Houdini RBD personal work 03 wire view from shuichi sakuma on Vimeo.

一般に「ダイナミクス」というと、ツール側でほとんどやってくれそうなイメージがあるが
計算をうまく回すためのお膳立ての部分は、ハンドメイドで作成していくことになる。

Houdiniはポイント制御に始まりポイント制御に終わるツールなんだということを
今回改めて実感した。