「Dev:JA/Ref/Release Notes/2.66/Physics」の版間の差分
(→物理ベースの SPH ソルバー) |
細 (1版 をインポートしました) |
(相違点なし)
|
2018年6月29日 (金) 05:53時点における最新版
Blender 2.66: パーティクル流体物理演算
物理ベースの SPH ソルバー
新しいパーティクル流体(Particle Fluid)ソルバーが追加され、より物理的に正しいシミュレーションができるようになりました(r52989)。この新しいソルバーは初期の SPH の調査を元にしたもので、クラシカル(Classical)ソルバーと呼ばれています。
新しいソルバーは旧ソルバーと同じパラメータを使用しますが、その単位は全く違うことに注意してください。例えば、1x1x1m の水の立方体に1000個のパーティクルが含まれているとすると、おおよそ以下のようなパラメータになります。
- パーティクルの重さ(Mass): 1(kg)
- 剛性(Stiffness): 300(m/s)
- 粘度(Viscosity): 0.01
- 相互作用半径(Interaction radius): 0.225(m)
- 静止時密度(Rest density): 1000(kg/m3)
新しいソルバーではパーティクルの Spacing(間隔)がより均一になります。この間隔はシミュレーション実行前に計算でき、UI内に表示されます。この値はシミュレーションの初期状態、例えば、発生グリッドの解像度などを導くのに使用します。上記の設定では Spacing が約0.1m になります。なぜなら 1kg の水は 10cm の立方体に相当するからです。
剛性(Stiffness)は流体が圧縮されない量を示します。これはシミュレーションのスケールと関係し、小さなスケールのシミュレーションではこれが減ります。例えば Spacing が0.01m では剛性は500になるでしょう。
比較として、旧ソルバーは以下のようなパラメーターを使用していました。
- 重さ(Mass): 4
- 剛性(Stiffness): 1
- 粘度(Viscosity): 2
- 反発係数(Repulsion): 1
- 剛性粘度(Stiff viscosity): 0.1
- 相互作用半径(Interaction radius): 0.225
- 静止時密度(Rest density): 1
旧ソルバーは何も特定の単位を使用していないことに注意してください。ただし新ソルバーは SI単位系[[1]]に対応できます。
この旧ソルバーはいくつかの点でより自由度の利く表現が可能で、現在も倍密度(Double Density)緩和ソルバーという名前で利用できます。
安定性の向上
シミュレーションが不連続なステップで進行します。ステップのサイズをコントロールする3つのパラメーターがあります。
- タイムステップ(Timestep): 各フレーム間に過ぎる現実時間。
- サブフレーム(Subframes): フレーム毎のシミュレーションステップ数。
- しきい値(Threshold): 自動的にサブフレーム数を変化させることのできる許容値。
Blender 2.66では、サブフレーム(Subframes)としきい値(Threshold)パラメーターが設定可能です(r52948)。この場合、フレーム毎のステップ数は少なくともサブフレーム(Subframes)+1になります。流体が荒れている場合、しきい値(Threshold)によってはもっと多いサブフレームでシミュレートされている可能性もあります。従来は、これらのうち一つだけが設定可能で、時々静止時または運動時に不安定な流体になっていました。
上記の1mの立方体の例では、適切な値は以下のようになります。
- タイムステップ(Timestep): 0.04 (フレーム毎秒)
- サブフレーム(Subframes): 3
- しきい値(Threshold): 0.1
トラブルシューティング
もしシミュレーションの挙動がまずい場合(爆発など):
- 計算された Spacing が希望のパーティクルの間隔と適合するようにします。
- 相互作用半径(interaction radius)を荒く(Spacing × 2.25)します。
- サブフレーム(Subframes)数を増やす、またはしきい値(Threshold)を減らします(上記参照)。小さなスケールのシミュレーションでは小さなタイムステップにする必要があることに注意してください。
- 剛性(Stiffness)を小さくする、または粘度(Viscosity)を増やします。