« BlenderのSSS | Main | ディスプレイスメントで噴煙 »

June 07, 2011

ディスプレイスメントで炎

ディスプレイスメントマップは、燃え盛る炎にも応用できそうな気がしたので、挑戦してみました。

fireball
人魂風
fireball.blend
flame02
キャンプファイヤーや護摩の炎風
flame002.blend
flame01
大規模火災風
flame001.blend
flame01ca
flame001で視点移動
flame001_cameraaction.blend

特に(2.5の)smokeやパーティクルは使っていない簡単なモデルですが、当初思ったよりは、それっぽく見えるような気がします。

flames.zip for Blender 2.49b

↑上掲動画のBlender2.49b用モデリングデータファイルです。
  (上掲に加えて人魂の青バージョンを加えた5タイプを同梱)
  リンクをクリックするとダウンロードできます。


炎の部分の作り方はどれも一緒なので、flame001の作成レシピを備忘録。

1.炎全体のおおまかな外観に編集した低ポリゴンのメッシュオブジェクトを用意。

Mesh


2.メッシュにSubsurfモディファイアを追加。ディスプレイス用に適度に細かくする。

Subsurf


3.オブジェクトモードでディスプレイスマップを動かすためのEmptyオブジェクトを追加。
  炎を表現するために下から上に動くようにキーを打っておく。
  最初のフレームでLocを打ち、最後のフレームに移動してZ方向(上)に移動し、Locを打つ。
  (面倒ならIpoカーブエディタ上でLocZを選択して適当な位置でCtrl+左クリックで右上がりに2度打ち)
  IpoカーブエディタでLoc Zのカーブを選択し、ヘッダのCurve→Extend Mode→Extrapolationで右上がりの直線に変換。
  以降、Rを押してこの角度を変更することでEmptyの上下移動のスピードを簡単に調整できる。

Ipo


4.炎メッシュに大まかな動きを出すためのcloudテクスチャマップを追加。
  HardNoiseを指定し、NoiseSizeは大き目に。NoiseDepthも最小の1で。

Cloud01

  マッピングモード(Map Input)はObjectで、ターゲット名は3.のEmptyを指定。
  Map Toタブでディスプレイス(disp)を指定し適度な値をDispスライダーにセット。

Matmatmat01


5.色や透明度を兼ねたメインの炎のマップを作成。
  テクスチャはCloudを使用。
  Colorbandを使って以下のような感じに。NoiseSize等はレンダリング結果等参考に適度に調整。

Tex02

  Materialタブは以下のような感じで、Colにやや濃い目のオレンジを設定。
  透明を使うのでAは0にして、Links and PipelineタブのZTranspをON。
  ShaderタブではEmit(自己発光)を最高にし、Specは0にするなど、スペキュラーは出ないようにしておく。

Matmat01

  Map ToタブではCol,Alpha,Emit,Disp,StencilをON。(一部無駄かもしれないが不都合は無い)
  特にDispは細かく動きが変化する重要な要素。0.001とごく小さくしておく。
  こちらもMap InputでObjectモードにし、ターゲット名を3.のEmptyに設定。
  縁起物なのでマッピング方式はTube。
  同タブのsizeはレンダリング結果を見ながら調整。今回はZを小さめにしてやや縦長にしている。

Mapinputput01


6.基本的な部分は以上。レンダリングしてテクスチャのサイズなどを調整。


  このモデルではさらに炎メッシュにclothを適用し、ノイズ混じりの風をあてて揺らし、隠し味的に動きのパターン化を和らげています。

3dd

Clothのパラメータでのポイントはピンニングを使って下を固定し、Zをプラス(反重力)にして下に崩れ落ちないようにしている点でしょうか。他、傾向としてはBendStiffやAir Dampを0にして風に揺られやすくしています。

Cloth01

wind等他のパラメータはデータを参照のこと。

|

« BlenderのSSS | Main | ディスプレイスメントで噴煙 »

Comments

Post a comment



(Not displayed with comment.)




« BlenderのSSS | Main | ディスプレイスメントで噴煙 »