スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Houdini] プロシージャルに地面から煙を発生させる

前回のブログに書きましたように、Houdini VFX セミナーに参加して、私もプロシージャルに土煙を出したくなりました。そこで(セミナーから時間が経ちましたが・・・)Houdiniで組んで、3dsMaxとV-Rayでレンダリングしてみました。

品質についてはまだまだなのですが、数値などの調整はナシで、Alembicファイルを差し替えただけでキャラクターの動きに合わせた煙を生成することができました。検証するにあたって"Attribute from Volume"ノードのサンプルファイルと、以下の動画を参考にしました。Digital-tutorsは有料動画チュートリアルのサイトですがPayPalのアカウントがあれば入会手続きはそれほど難しくなかったです。

Digital-tutors Creating a Procedural Terrain in Houdini

接地部分の検出

悩んだところの1つは、キャラと地面の接地部分をどう検出するかでした。上記のチュートリアルではモデル表面との距離から計算していました。ただ、この方法ですとモデルの内側も検出してしまうので、もう少しに楽にならないかなと検討しました。Attribute from Volumeのサンプルシーンを見たところ応用できそうだったので、このノードを使って組んでみました。

接地しているところの周りを赤く色分けしました。最終的にはこの赤くなった箇所にポイントをばら撒いて、そのポイントをソースにしてPyroのシミュレーションをしました。

paint

色分けについては、次のようなネットワークになりました。地面はあらかじめ細かく分割しておきます。地面に対してキャラクターとの接地箇所を色付けし、さらにキャラクターからNormalとVelocityを地面のpointに受け渡しています。

network

個々のノードの中身をお見せすると。point_Nノードでは、単にNormalをキャラクターのpointに付加しています。

Normal

isoOffsetノードでは、キャラクターをVolumeに変換しています。これを接地の検出に使います。Volumeにする場合は、Output TypeをFog Volumeにします。また、Offsetでボリュームの大きさを調整したり、Uniform Sampleing…でボリュームの解像度を調整しています。

isoOffset

今回のポイントはここでしょうか。このノードを使用して、地面のpointに対して最も近いVolumeのdensityを参照して色を塗ります。Attribute NameにCdをセットします。塗り分けはMappingタブのMap Volume to Vectorにチェックを入れ、下のグラデーションで調整します。

attribute from volume

Attribute Wrangleで地面にキャラクターのNormalとVelocityを付加します。VEX Expressionの記述については、右側三角形から選べるプリセット"Nearest Point Distance"を流用しています。最も近いモデルのpointから値を参照しているのですが、Velocityについてはそのままpointに付加しています。一方、Normalについては"sN"というAttributeを作りそちらに数値を入れています。(Expressionの記述についてはまだまだ分からないことだらけです)

attribute wrangle

これ以降については、地面の赤い部分にScatterでポイントクラウドを発生させて、地面に付加したVelocityやNormalを加工して付加しました。そして、そのポイントクラウドをPyroのソースにしています。あまりに長くなってしまうので、申し訳ないですが詳しくは、Digital-tutorsの動画を見ていたければと思います・・・

今後の課題としては、

  • 煙と地面のコリジョン
  • subnetworkノードなどを使ってAsset化できないか
  • 小さな砂なども飛ばせるか
  • Pyroの煙の調整方法を理解する
  • VRayVolumeGridの質感設定を理解する

などなど、調整したいことはたくさんありますね・・・ お仕事としては煙や炎が多い方なので、そのあたりから充実させたいです。 Houdiniは気軽にモデルをボリューム化できることや、Velocityを加工するのが容易なので、そこが大変便利だなと感じています。

関連記事
スポンサーサイト

テーマ: 3DCG - ジャンル: コンピュータ

Comment

Post comment

Secret

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。