« ディスプレイスメントで炎 | Main | 3D画面上で簡易に操作できるカメラ »

June 09, 2011

ディスプレイスメントで噴煙

煙といえばBlender2.5ですが、2.49bでもディスプレイスメントで噴煙みたいなくっきりした煙なら表現できそうな気がして、火山から立ち上る噴煙を作成してみました。
(↓動画が巨大なGIFファイルなので、キャッシュされて滑らかに動くまで時間がかかると思います(^_^;)

vsmoke

vsmoke.zip for Blender 2.49b

↑上掲動画のBlender2.49b用モデリングデータファイルです。
  リンクをクリックするとダウンロードできます。


今回はテクスチャのディスプレイスメントではなく、プレビュー上で結果がわかりやすいオブジェクト側のディスプレイスメントモディファイアのほうを使ってみました。また、火山は手作業で形状を作らず、一枚のプレーンからクラウドテクスチャとディスプレイスメントモディファイアで作成。
加えて噴煙は質感を柔らかくするために、レンダリングの際、コンポジットノードでわずかにブラーをかけてから合成しました。

以下、制作手順の備忘録。

1.噴煙の外観にあわせて低ポリゴンでメッシュを作成。

1

2.ディスプレイスマップとノーマルテクスチャを異なる速度で動かすためのEmptyオブジェクトを3つ追加。

2

それぞれ速度を変えて上に移動するようにキーを打っておく。
IpoカーブエディタでLocZを右上がりにExtrapolation(直線)になるように修正。

2a


3.大きな変形用と小さな変形用の2つのディスプレイス用テクスチャを用意。
  CloudのHard Noiseを選択してメッシュがこぶ状に盛り上がるようにColorbandで濃淡を調整。

3a
3b

4.噴煙のメッシュにSubsurfモディファイアを追加し、適度に細分化し、Displaceモディファイアを2つ追加。
Displaceモディファイアはそれぞれ3で用意した別々のCloudテクスチャを指定し、Ob:にも速いEmptyと次に速いEmptyをそれぞれ指定。Strengthの値も差をつけて高さに変化をつける。

4_2

5.噴煙のマテリアルを設定。
  噴煙メッシュの表面にディテールの凹凸をつける大小2つのノーマルテクスチャを用意し、共に一番遅く移動するEmptyで動かすように指定。
  小さな凹凸がディスプレイスメントのかかったメッシュよりもゆっくりと移動することで膨らんだ煙が巻き上がる感じを出す。
設定は以下のような感じで。(赤枠内が自分的ポイント)

5b

テクスチャはcloudを使ってこんな感じに。

5

6.プレビューで動かしたりレンダリングしてみてEmpty間の速度を調整する。

vsmoke3d

7.上の動画にある火山を作るためにプレーンを用意し、適当な大きさに拡大。

7

8.プレーンを変形させるためのテクスチャを作成。

最初にBlendで火山を盛り上げて火口をへこませる基本的なSphereタイプのグラデーションテクスチャを作成。
(Displaceをかけたあとで再びカラーバンドを調整する)

8a

次に山の細部の凹凸をつけるためのテクスチャにcloudを選択し、Colorbandを編集。

8b

上の2つのテクスチャをノードエディタのテクスチャモードで合成。
ノードテクスチャを使うには新規テクスチャのNodesボタンを押してノードエディタでテクスチャのボタンを押す。
最初に表示されているチェッカーはXで消去。
(赤枠は自分的ポイント)

8c

既存のテクスチャを利用するにはヘッダのAdd→Input→Textureで表示されたウインドウの上下の矢印ボタンから選択すればよい。

9.SubsurfとDisplaceモディファイアを追加。
(Displaceの後に再び軽いSubsurfをかけて、変形できつめに出たポリゴンをなめらかにしている)
Displaceモディファイアには8.で作成したテクスチャを指定。Strengthで高さを調整。

9

10.火山のディテール用にノーマルマップのテクスチャを大小複数作って適用。
いずれもテクスチャはCloudを選び、ごつごつした感じを出すために、HardNoiseを指定、カラーバンドでコントラストを強めにしている。

10

火山のマテリアルは以下のような感じで。(マッピング方式はOrco)
(赤枠内が自分的ポイント)

10b

11.空を追加。例によってUVSphereを平らに潰してノードエディタで作成したテクスチャをマッピング。
今回は円形に抜いてZ軸に垂直にマッピング。(指定方法は下画像の赤枠内)
スペキュラーは出ないようにしてEmitを1、メッシュの全フェイスはFlipNormalで内側に向くようにしてある。

11

12.最後に、噴煙の質感を柔らかくするために、コンポジットノードで煙だけにわずかにブラーをかけて合成。
具体的には火山、煙、空を別々なレイヤーに置き、↓画像の左下赤枠のレンダーレイヤーでそれぞれの該当レイヤーを指定。(上下矢印ボタンでレンダーレイヤーを選択、指定)
これでノードエディタで別々にレンダリングして合成することが出来る。

12

今回は煙のアルファチャンネルにもブラーをかけ、背景の色をできるだけ半球にマップした空のグレーに近くして馴染みをよくしてみた。

手順は以上。


ディスプレイスマップを使いまくっているので、相当レンダリングに時間がかかります。
とりあえず火山やSubsurfのプレビュー画面やレンダリングの分割レベルを落とすことで試行錯誤する時間が短縮できます。
煙は分割レベルが落ちると表面に震えが出るので、レンダリングレベルは可能な限り上げたほうが良い結果になると思います。

|

« ディスプレイスメントで炎 | Main | 3D画面上で簡易に操作できるカメラ »

Comments

Post a comment



(Not displayed with comment.)




« ディスプレイスメントで炎 | Main | 3D画面上で簡易に操作できるカメラ »