Blenderで炎(その1)

12-7.Blender

bl-fire-title
TVアニメ『テイルズ オブ ゼスティリア ザ クロス』
原作のゲームをプレイしたことがないので、感情移入がまだできていないのですが、内容なんてどうでも良いほど3D映像が綺麗に感じます。シミュレーションでしょうか、焚き火の炎とか、綺麗な川や噴水がこれみよがしに出てきますが、綺麗なので目を奪われます。乗っている岩が壊れるシーンとか、粉砕の仕方が美しくて何回も見てしまいます。まあ、リアルなのが逆に嫌な黒い虫のシーンとかありますが、そこはスキップ。綺麗な映像がエスカレートしていくことを期待して試聴継続しようと思っています。

今回は、Blenderで炎を出してみます。

炎を作るには、以下2つが必要です。
・ドメインにするオブジェクトを作る
・炎の元になるオブジェクトを作る

ドメインを作り、どの範囲に炎のシミュレートを効かせるか決めます。
デフォルトのCubeをそのままドメインにします。

bpy.ops.object.modifier_add(type='SMOKE')
bpy.data.objects['Cube'].modifiers['Smoke'].smoke_type='DOMAIN'

続いて、ドメインの中に、炎の元にするオブジェクトを作ります。
球体にしました。

bpy.ops.mesh.primitive_uv_sphere_add()

このままではドメインと同じぐらい大きいので、10分の1に縮小します。

bpy.ops.transform.resize(value=(0.1,0.1,0.1))

最後に球体に炎の設定をします。

bpy.ops.object.modifier_add(type='SMOKE')
bpy.data.objects['Sphere'].modifiers['Smoke'].smoke_type='FLOW'
bpy.data.objects['Sphere'].modifiers['Smoke'].flow_settings.smoke_flow_type='FIRE'

全部合わせるとこうなります。

~$ cat -n fire.sh
     1	#!/bin/bash
     2	cat <<EOL>/tmp/tmp.py
     3	
     4	import bpy
     5	
     6	bpy.data.worlds['World'].horizon_color=(0,0,0)
     7	
     8	bpy.ops.object.modifier_add(type='SMOKE')
     9	bpy.data.objects['Cube'].modifiers['Smoke'].smoke_type='DOMAIN'
    10	
    11	bpy.ops.mesh.primitive_uv_sphere_add()
    12	bpy.ops.transform.resize(value=(0.1,0.1,0.1))
    13	bpy.ops.object.modifier_add(type='SMOKE')
    14	bpy.data.objects['Sphere'].modifiers['Smoke'].smoke_type='FLOW'
    15	bpy.data.objects['Sphere'].modifiers['Smoke'].flow_settings.smoke_flow_type='FIRE'
    16	
    17	EOL
    18	blender -P /tmp/tmp.py

これを実行して、ALT+Aを押すと、燃え始めます。
(ただし、これだけではレンダリングはできません)

続く

コメント

タイトルとURLをコピーしました