« ShaderMixerでエリアライトを自作する | トップページ | リアルなガラス »

勢いよく噴出する流体

Fluidtest天川和香さんのブログにて、Blenderを使った流体シミュレーションでいろいろ実験をされております。血しぶきのような効果ということなので、勢いよく噴出させる方法について考察してみました。


Blenderのバージョンは2.67bを使用しております。血しぶきというよりは噴水といった感じですが・・・。(;´▽`A``

Fluid001まず立方体を作成します。この内側がシミュレーション領域となるので、内側が見えるようにWire表示に変えておきます。


Fluid002立方体を流体のドメインに設定し、位置や大きさをお好みに調整します。ワールドサイズはデフォルトの0.5 Meters (50cm)のまま使うことにしました。


Fluid003流入口(Inflow)のためにCircleを作成します。


Fluid004_2Sキーを押してサイズを調整します。勢いよく噴出させるためには小さめのサイズがよさそうです。


Fluid006TABキーを押してメッシュ編集モードにし、Fキーを押して円の中に面を張ります。多角形の1枚ポリゴンでさくっと中身が埋まります。終わったらTABキーでオブジェクトモードに戻ります。


Fluid007流体のタイプをInflowに設定します。Volume InitializationはBothにしておきましょう。


Fluid008流入の初速を設定します。上方向に噴出させたいのでZ軸(青い矢印)方向に数値を入れます。とりあえず1を入れて様子を見てみます。あとで円を傾けて流出方向を変えたいならローカル座標にチェックをいれておきましょう。


Fluid009ドメインの解像度を設定します。今回は100分割ぐらいで使おうと思います。ここを大きくするとメモリ使用量が桁違いに増えますので、これぐらいが実用的かも知れません。ビューポートもFinalで表示させるようにします。


Fluid010Bakeを押してシミュレーションをしてみましたが、勢いが足りなかったようです。べちゃっとしてますね。。・゚・(ノ∀`)・゚・。


Fluid011流入速度を2にしてみます。さっきより高くまで水が飛び出すはずです。


Fluid012_2良い感じになってきました。最終的にはもう少し細くしておいたほうがよさそうですね。


Fluid013細かいしぶきを出すためにパーティクルを生成するようにします。パーティクルを有効にするにはSubdivisionsを2以上にする必要があります。大きい数値を設定すると恐ろしく重くなるので、私はいつも2を設定しています。Generateは1.0に設定しておきます。


Fluid014これでシミュレーションすると、こんなふうに細かい水滴が飛び散るようになります。でもあまり派手に飛び散らないですね。パーティクルは流体が衝突したときに発生するので、障害物がない状態だとこの程度が限界になってしまいます。


Fluid015パーティクルを発生させるために、衝突オブジェクトを置くのではなく、上から水滴を落とすことにします。これなら噴出する水と同化するので後始末が簡単です。IcoSphereを追加して流入口と同じぐらいの直径になるようにサイズ調整し、流入口の真上に配置します。


Fluid016IcoSphereのタイプをFluidにします。これでこの球は水滴になります。初速は設定せず、自由落下させるようにします。噴水の勢いが落下する水滴に負けないように、Inflowの流入速度を上げて3にしておきます。


Fluid017Bakeを押してシミュレーションしてみると、うまい具合に水滴が飛び散りました。落下する水滴に衝突することでパーティクルが発生し、それが新たな障害物となって噴出する水に衝突するとまたパーティクルが発生する・・・というように連鎖していくわけですね。


Fluid018目的の形に近くなったところまでアニメーションフレームを進めてから流体モディファイヤをApplyさせて形状を確定させます。これで流体は普通のメッシュオブジェクトになるので、EDITモードで自由に編集することができるようになります。


壁に張り付いた水滴が邪魔なので消していきます。EDITモードに入り、視点を切り替えながらBキーで頂点を範囲選択し、Ctrl+Lで接続頂点をすべて選択したらXキーで頂点を削除・・・という感じで余分な水滴を消していきます。


編集が終わったらOBJで出力してD|Sに持ち込むことができます。ヽ(´ー`)ノ

|

« ShaderMixerでエリアライトを自作する | トップページ | リアルなガラス »

Blender」カテゴリの記事

コメント

わぁっ! とうふさんっ!
すっごいまとめありがとうございます!
上から滴を落として飛沫を作るとか、目から鱗でした!
さっそくやってみます!
ありがとうございます!

投稿: 天川和香 | 2013年7月22日 (月) 07時14分

天川和香さん、コメントありがとうございます。
水滴を落とすというのは夢の中で思いつきました。不思議と頭の中に残っていたみたいです。(笑)
うまくいくことを願っていますね。(´∀`*)

投稿: とうふ | 2013年7月22日 (月) 21時26分

初めてコメントさせていただきます。blenderの記事、ありがとうございます。blenderを使えば、わりと少ない手順でこういったものができることがわかりました。とりあえず自分のやりたいことが実現できる範囲で操作を覚えていこうと思います。そんなきっかけをいただきました。

投稿: komajiro | 2013年7月25日 (木) 12時04分

komajiroさん、はじめまして。コメントありがとうございます。
BlenderはD|Sで使うための小物を作ったり、ちょっとした効果を出したりするのにとても便利ですよ。操作にクセがあるので慣れが必要ですが、無料なのでぜひ使ってみてください。(´∀`*)

投稿: とうふ | 2013年7月25日 (木) 21時36分

突然ですがモーフローダープロ、正常に動いてます?

cr2 形式(DSON以外)のフィギュアじゃ、モーフローダーで正常にMTを読み込めなくなっているようなんです。 
ちなみに、hexagon bridge だと作れます。

Zbrushのプラグインがおかしいというのは
聞いてたのですが、モーフローダーが
ダメっていうのはあんまりだぁ、、。


投稿: gonzou | 2013年7月27日 (土) 20時02分

gonzouさん、コメントありがとうございます。
Morph Loader Proでレガシーフィギュア(にあみぃ)に、自作モーフのOBJを読み込んでみましたが、特に問題なくモーフ作成できました。ZBrushで作ったモーフを保存するとおかしくなる現象は私のところでも発生していまして、それを回避するために一旦OBJでエクスポートしたものをMorph Loader Proで読み込んでモーフにしていましたので、GoZのバグ以外に問題ないと思っていました。ちなみにHexagon Bridgeでもちゃんとモーフを作れていました。
異常を再現させるための詳しい情報を何かお持ちでしたら教えていただけると嬉しいのですが・・・。(´・ω・`)

投稿: とうふ | 2013年7月27日 (土) 21時26分

mantisのバグレポートを見て、半信半疑で試したんですが
私の環境では、まったくコントローラーを作ってくれません。

v4,A3,あと、服などcr2のファイルほぼ全般ですね。
hexagon bridgeは正常に動いてます。
ただ、あまりに報告が少ないので、特別な環境
たとえばwindowsのみなど。の問題かなとも。

まったく同じMTで、triax weight に変換したのにモーフローダーで読み込んだら今tローラーができるんです。(まだセーブしていない状態でも)

投稿: gonzou | 2013年7月27日 (土) 21時51分

MTを読み込み時に、正常に読み込みましたという報告は出るのに、parameter>morph loaderのセクションにコントローラーができないんです。

で、logfileを見ると、デルタが見つからないとかいうエラーが出るんですが、まったく同じMTのobjファイルで、triax化したfigureだと、普通にコントローラーを作るんです。
オプション設定と言ってもモーフローダーには
ほとんどないですし、なぜかさっぱりわからないんで困ってます。
何か特別な条件があるんでしょうかね。

投稿: gonzou | 2013年7月27日 (土) 21時55分

gonzouさん、情報ありがとうございます。
バグレポートを見てV4で半信半疑で試してみましたが、私のところでも同様の問題が発生しました。確かに読み込みが成功したように見えるんですが、ログを見ると「No deltas for morph, skipping node.」と出てモーフが作成されません。

正直、これは致命的なバグですね。早急に直して欲しいところです。D|S3をお持ちなら、修正されるまでの間はそちらで対応するしかなさそうです。(´・ω・`)

投稿: とうふ | 2013年7月27日 (土) 22時15分

だめでしたか、、お手数おかけしました。
私はgenesis しかほとんど使わないので、この件ではそれほど実害はないんですが ^^;

何か手順が間違ってるのかと心配になったので、皆様に聞こうと思った次第です。

DAZは旧世代フィギュアやファイル形式の対応がどうも悪くなってる気がするのですが、完全に独自路線でいくつもりなんですかね?

新しいプリセットでも、cr2ファイルやpp2では使えないのもありましたし。A3のショート
ヘアも今のパッケージから抜けたまま、ずっと放置されてるし。 

DIMになったら、それまであったファイルを入れ忘れるとか、ホントありえないですっw

投稿: gonzou | 2013年7月27日 (土) 22時50分

私もすっかりGenesisに移行してしまっていたので、V4のようなレガシーフィギュアはほとんど使っていませんでした。おそらく海外のユーザーも似たような感じなのでバグの発覚が遅れたのでしょうね。

DAZはこの手のバグが本当に多いですよね。D|Sに限らず海外製のソフトはバグが多すぎです。もう少しテストをしっかりやって欲しいです。。・゚・(ノ∀`)・゚・。

投稿: とうふ | 2013年7月27日 (土) 23時55分

ブログ参考にさせていただきました。
blenderを使った流体シミュレーション、奥が深いです。

投稿: れいじ | 2013年8月 5日 (月) 16時25分

とても参考になりました。

DAZ Studio以外のソフトもうまく使いこなして連携すれば、表現の幅が更に広がりますねヽ(´▽`)/

投稿: おーちゃん | 2013年8月 5日 (月) 20時16分

れいじさん、コメントありがとうございます。
Blenderを使うと手軽に面白い効果を演出できるので、D|Sと連携させると守備範囲が一気に広がりますよね。(´∀`*)

投稿: とうふ | 2013年8月 5日 (月) 21時50分

おーちゃんさん、コメントありがとうございます。
いろんなソフトと連携できるのがD|Sの強みですよね。ブログ引越しされたのですね。新しいリンク先に更新しておきますね。(´∀`*)

投稿: とうふ | 2013年8月 5日 (月) 21時52分

とうふさんできましたっ!
ファイルありがとうございます!

また記事にさせていただきますが
(10月以降になります)
パーティクルが出なかった原因は
ドメインの『プレビュー』を『最終結果』にしていなかったからでした。

ちょう初歩的なところで抜けていました。
とうふさんのファイルと指さし確認してようやく気づきました。
ありがとうございますっ!
本当にありがとうございます。

これで、やっと流体が先にすすめます。
本当にありがとうございました!

投稿: 天川和香 | 2013年9月 5日 (木) 09時39分

天川和香さん、コメントありがとうございます。
無事に解決できたようで、良かったです。プレビュー表示だと荒いポリゴンで表示されるので、パーティクルのような細かいしぶきは見えないんですよね。(;´▽`A``

投稿: とうふ | 2013年9月 5日 (木) 20時20分

非常に判りやすい記事ありがとうございました。
blenderは4度ほど挫折していますがwおかげ様で少し遊べました。

一つ質問なのですが、障害物(例えば人間)に対して水流の大きさが大きいなと思い、発生源の大きさを小さくするとシミュレーションしなくなるのですが、どうやって大きさを合わせるのでしょうか。この場合人間を大きくするのでしょうか。回答頂けると幸いです。

投稿: にょろ | 2013年9月20日 (金) 20時08分

にょろさん、コメントありがとうございます。
流体シミュレーションの場合、流体を計算する最小単位はドメインの解像度に依存しています。ドメインのResolutionを50にし、ワールドの大きさ(ドメインの長辺の長さ)を1mに設定した場合、計算の最小単位は2cmになります。つまり、流入口が2cmより小さいと水が通り抜けられないので、シミュレーションできないのだと思います。

小さな流入口をつけたい場合はResolutionの数値を大きくするしかないのですが、解像度を上げると使用メモリと計算時間が膨大になるので、そのあたりのバランスを見て調整するしかないと思います。

また、実際にはシミュレーションできていても、表示解像度がプレビュー設定になっていると、計算結果が見えないこともあります。このあたりも注意してみてください。(´∀`*)

投稿: とうふ | 2013年9月20日 (金) 22時30分

ご回答ありがとうございました。
理解できました。
中々参考書等読んでも何故そうなのかという部分が書いてないので非常にありがたいです。

ついでにもう一つwお聞きします。
inflowでa秒で射出、b秒で停止ということは出来ますでしょうか?

start,endを設定してもどうやら違うようでした。度々すみませんがご存知でしたらお知恵をお借りしたく思います。

投稿: にょろ | 2013年9月21日 (土) 10時11分

にょろさん、コメントありがとうございます。
実は私もやりかたを知らなかったので、少し調べてみたのですが、流体シミュレーションのプロパティをGraph Editorを使って時間軸で制御できる方法があるようです。
Wikiに記述がありました。
http://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Physics/Fluid/Animation

IPOカーブエディタは2.6系ではGraph Editorと名前を変えています。試してみようとしたのですが、有用なチュートリアルが見当たらず、Fluid Simというカーブを追加することができませんでした。ごめんなさい。・゚・(ノ∀`)・゚・。

投稿: とうふ | 2013年9月21日 (土) 11時46分

丁寧な回答ありがとうございます。
wiki見てみました。
出来るんだなという事はわかりましたがワタシレベルでは解読にかなりの時間が掛かりそうですw

試行錯誤しながらまた遊んでみたいと思います。ありがとうございました。

投稿: にょろ | 2013年9月21日 (土) 21時50分

コメントを書く



(ウェブ上には掲載しません)




« ShaderMixerでエリアライトを自作する | トップページ | リアルなガラス »