読者です 読者をやめる 読者になる 読者になる

blenderでmantaflowで作ったメッシュを表示する

mantaflowは流体シミュレーションのフレームワークです.計算された流体のメッシュをblenderで読み込み,表示する方法のメモです.blenderにも流体シミュレーションを行い,キャッシュを保存しておくbake機能はありますが,他の方法で生成されたメッシュを読み込むきちんとした機能はないようです.しかし,bakeされたファイルのフォーマットに合わせてファイル名を付けてやると,表示することができます.
環境は以下の通りです.

  • windows10
  • mantaflow 0.7 prebuilt binary
  • blender 2.78

mantaflowのインストール

windowsの場合,ビルド済みのバイナリが配布されています.各種dllも同梱されていますが,シーンファイルを読む際にpythonのライブラリがないとエラーが出るみたいです.そのため,python2.7系をインストールしておきます.mantaflowを起動するとシーンファイルの場所を聞かれるので,同梱されている適当なシーンファイルを選び,GUIが表示されれば成功です.

メッシュを作る

同梱のfreesurface.pyからメッシュを作ってみます.メッシュを保存するためには,シーンファイルを少しいじる必要があります.freesurface.pyの62行目あたりにあるmesh.save('phi%04d.bobj.gz' % t)コメントアウトを外し,ファイル名を'fluidsurface_final_%04d.bobj.gz'に書き換えます.結果としてファイルは以下のようになります.

if (dim==3):
	phi.createMesh(mesh)
	mesh.save('fluidsurface_final_%04d.bobj.gz' % t)

そのあとmantaflowでfreesurface.pyを読み込むと計算されたメッシュが連番の.bobj.gz形式で保存されていきます.ちなみにbobjはバイナリ形式のobjファイルみたいです.
f:id:soma_arc:20170104121203p:plain

blenderで読み込む

blenderを開いたら右側のタブの右端にあるphysicsを選択します.

その他の項目を以下のように設定します.
Enable physics for: -> Fluid
Type: -> Domain
Viewport Display: -> Final
そして,ディレクトリ設定で先ほど保存したメッシュのあるディレクトリを指定すると以下のように読み込まれたメッシュが表示されます.

座標系の違いから横向きになってしまうようです.下部のシークバーでアニメーションできます.
f:id:soma_arc:20170104120438g:plain
以上となります.