まだDLしてないから正確性はしらね。
BF Windows 2006/02/27 : fluid sims updated
http://www.blender.org/forum/viewtopic.php?t=8263&sid=c852282318579d2b90c389488b7734d3 こんにちは新しいコンパイル結果です。
NTが彼の流体シミュレータを更新した。
でかいコミットですまん。たくさんの問題を平行して修正中・・・んでこのコミットに入っているのはこんなん: ソルバーの更新(動くオブジェクトとか)、IPOとの統合、改良レンダリング(モーションブラー、滑らかな法線)、最初のパーティクルテスト。
詳細↓
■■ソルバーの更新■■
◆動くオブジェクト
比較的シンプルなモデルを使うこと。まだちゃんと最適化されてないから。 水に落ちる箱とかはOK。 動くグラスの中の水はまずいと思う。
シミュレーションの計算時間はmeshの三角ポリの数で変わる。 meshを増やすと遅くなるぜ。
◆obstacle(障害物) settingsの追加。
noslip(従来どおり)、free slip(壁にそって自由に動く)、part slip(2つを混ぜたもの)。
・obstacle settingsはdomain(計算対象空間)の壁部分にも追加。domainの6つの面もやはりobstacleなのだ。
-templates廃止。これで例えばmac用コンパイルが楽になる。linuxも同様。最終的にparser(といくつかの他のコード)も廃止。
今のシミュレーションではデータ転送に内部APIしか使わなくなった。
-不要なファイルをいくつか削除。GUIに3つのボタンが必要になった・・・これはもうちょっと見直すべきだ(domainオブジェクト用のパネルを追加することになるかも)
BF Windows 2006/02/27 : fluid sims updated
その2
■■IPO■■
◆アニメーションできるパラメータ:
domainに対するvisconsity粘り気、time、gravity重力。
Blenderオブジェクトにある普通のtime IPOと対照的に、この流体シミュの時間軸は、時間の進む単位を変更する。
定数1だと効果なし。0に向かって小さくすると、遅くなる。 大きくするとシミュレーションがスピードアップ。 (長い時間単位にすると計算が遅くなる。)
◆visconsity IPOは選択された粘り気の因子。(もいっかい言うが1=効果なし)
-流体シミュが有効なオブジェクトに対し新しいIPO typeが登場。
Inflow(流出源)オブジェクトは流出速度にvelocity速度チャネルを使える。
Obstacleとin/outflowのオブジェクト3種は、シミュレーション中にオン・オフ可能(オンは、IPOI>0、オフは同<0)
◆移動・回転・スケール変更をこれら3種に行うのは、通常のBlenderチャネルからエクスポートされる(Loc・dLocなどのチャネル)。
■■パーティクル■■
◆まだ実験なのでリリースでは無効にしてある・・・これはある時点で小さな水しぶきをモデリングするのに使うもの。
''realworld''サイズとパーティクル生成の設定に依存。 パーティクルはシミュレーション中に生成される(_particles_X.gzファイルに格納)。
◆arbitaryな(それぞれの?)オブジェクトに対してパーティクルフィールドを有効にするとこれがロードされる。Haloマテリアルを設定すべき。
各フレームごとに〜meshのロードと同じく〜パーティクルシsツエムはシミュレートされたパーティクルの位置を読み込む。
◆レンダリングでは、part->rtフィールド(Renderingコンテクストのデバッグ用フィールド?)を【勝手に使った】。
これ以外使い道なかったしうまく動いてるみたいだ。流体シミュのパーティクルはそのサイズをそこに格納する。
BF Windows 2006/02/27 : fluid sims updated
#その3
■■Rendering■■
◆流体シミュのパーティクルはスケール変更されたサイズとアルファ(透明度)の値を使い、変化に富んだ外見になる。
"convertblender.c"ファイルで、流体シミュのパーティクルシステムは、p->rtフィールドがサイズを大きくし、「より小さなパーティクル」透明度を下げる。
流体シミュの設定で、influenceフィールドをゼロに設定するとどこでも同じ透明度・同じサイズになる。 高い値ではずっと違ってくる。?
◆滑らかな法線:
変更されていない流体mesh(例:Subdivide無し)の法線は、ソルバーによって計算され、使われる。
これは単純に、convertblender.cで法線の再計算を無効にすることで実現した。(関数calc_fluidsimnormalsが、calc_vertexnormalsの代わりに他のメッシュの初期化を行う)。
これは他のメッシュでも使われる。例えば、Modifierで法線を変更した場合・・・
◆もうひとつの変更は、流体シミュのメッシュは、シミュレーション中、イメージベースのモーションブラー用に計算されたvelocities速度を読み込む。
これはload_fluidsimspeedvectorsで初期化される。 vectorパスのために(DerivedMesh readBobjgzの通常のロード中に、これらもロードされる。)
(流体の)生成と読み込みは設定画面で切り替えできる。Vectorパスは現在Fluidsimのメッシュを三回読み込む。 これは最適化すべきだ。