3D流体煙エフェクトの使い方

Version 4.80から新しい舞台装置エフェクトとしてFluidSmokeが追加されました。StageSet/FluidSmokeフォルダに入っています。sdPBR専用のエフェクトで、sdPBR.pmxとsdPBRGBuffer.xがMMDに既にドロップされている事を前提に動作します。

モコモコした煙を作ろう


すず様作 ミクダヨーさん をお借りしました

3D流体シミュレータを用いた煙を表現するエフェクトです。シミュレータを内部で走らせるため動画専用です。

重いですが、どこから流体が流れ込むかという流入口の指定と、流体をおしのける障害物の指定をそれぞれカプセル型で最大8つまで指定できるほか、スタティックな流入口・障害物マップを3Dテクスチャで指定することが可能で、複雑な流体シミュレーションによる効果をシーンに合わせて得ることが出来ます。

使い方

MMDへFluidSmoke.xをドロップします。画面が真っ暗になるかもしれませんが、その場合はMMDのメニュー背景(B)アクセサリ編集(S)でFluidSmoke.xを表示順で一番下以外の場所にして下さい。

次にFluidSmokeController.pmxをドロップした後、FluidSmokeController.pmxにFluidSmoke.vmdファイルを読み込むとお薦め設定が適用され、煙を出す準備が出来ます。

この状態でさらに、inflow/sdFluidSmoke_I0~7.pmxのうちどれかをドロップし、半径濃度モーフの両方を適当に上げると煙の流入が始まって画面に煙が表示されます。

obstaclesフォルダに入っているsdFluidSmoke_O*.pmxファイルをドロップすると煙を押しのけるカプセル状の障害物を置くことが出来ます。

inflow,obstaclesとも、エフェクト-あたま/しっぽボーンがあるので、それを使うとカプセル型の両端点を指定でき、半径モーフでカプセルの太さを指定できます

発光要素を指定すると燃えているように見えない事もないですが、燃焼のためのシミュレーションをちゃんとやっている訳でも無いので火炎の表現にはちょっと物足りないかもしれません。そのうち気が向いたらFluidFireとか作るかもしれません

スタティック流入口・障害物マップの作り方・使い方

先に述べたinflow,obstaclesフォルダに入っているpmxモデルによって、動かせる(ダイナミックな)流入口・障害物を指定できますが、それぞれカプセル型に限られるため、背景モデルなどに合わせた形状にすることは必ずしも簡単ではありません。

そこで、inflow.dds, obstacle.ddsというファイルをFluidSmokeフォルダに置くことで、フロードメイン内のどこに流入口・障害物があるか、という指定をすることが出来ます。これらは3Dテクスチャであり、MMDに一旦sdFluidSmokeとともに読み込まれると内容は書き換わらないので、スタティック流入口・障害物マップと呼びます

具体的な方法ですが、tools/pmx2sdf/pmx2sdf.exeというexeファイルがあるので、ダブルクリックすると以下のようなウィンドウが表示されます


ウィンドウに背景モデルのうち、流体の流入口・障害物になる部分を適宜抜き出して作成したモデルをドロップしてGo!ボタンをクリックするとsdf.ddsというファイルがpmx2sdf.exeと同じフォルダに出力されるので、sdf.ddsをinflow.ddsまたはboundary.ddsにファイル名を書き換えて使ってください。このプログラムには以下のような特徴、注意点があります。

inflow.ddsまたはboundary.ddsというファイルを作成したら、FluidSmokeDefs.fxsubの先頭付近に

//#define BOUNDARY_MAP "boundary.dds"
//#define INFLOW_MAP "inflow.dds"

として、//でコメントアウトしてある行があるので、それぞれコメントを解除して、用意したddsファイルをエフェクトから認識できるようにしてください。BOUNDARY_MAPはスタティック障害物マップを、INFLOW_MAPはスタティック流入口マップをそれぞれ表しています

Tips