ジャンル雑多なゲーム・ゲーム制作関連の色々な情報を取り扱っているブログ。最近はBlenderについてが中心。
[Blender 2.8] 『流体』タイプの物理演算 [パーティクルシステム]

[Blender 2.8] 『流体』タイプの物理演算 [パーティクルシステム]

[Blender 2.8] パーティクルで流体の動きをシミュレーションする、『流体』タイプの物理演算の機能と使い方のご紹介

今回の記事は、Blenderでの『パーティクルシステム』の[流体(Fluid)]というタイプの[物理演算]についてです。

また、『パーティクル』の基本的な事や基本操作、どんな機能があるのかをざっくりとまとめたページもありますので、そもそもの『パーティクル』についてという基本的な所を知りたい方には、下記記事から御覧になることをおススメします。

もし、このページにご来訪いただいた方で、『パーティクルシステム』ではない方の『流体シミュレーション』をお探しの方は、下記記事がご参考になるかと思います。よろしければご覧ください。

※2020年7月7日 加筆修正、画像の差し替えを行いました。
※2020年7月19日 加筆修正を行いました。
※2020年12月29日 加筆修正を行いました。
※2020年12月31日 加筆修正を行いました。
※2021年1月8日 加筆修正を行いました。

目次

[流体(Fluid)]について

[流体]の物理演算は、[ニュートン力学]の物理演算と似ている部分が多くあり、また一部オプションを共有しています。

ですがこちらの場合、「圧力」や「表面張力」、「粘度」、「ばね」などのステータスに影響を受け、そして、それらの調整次第で、「液体」から「スライム」、「ねばつくもの」から「砂」、「細かい煙」まで、様々なものを表現出来ます。

memo: 『SPH』について

Blenderの流体パーティクルは、『SPH』を使用してパーティクルの動作を計算しています。『SPH』は、流体の流れのシミュレーションに使用される計算手法です。天体物理学、弾道学、火山学、海洋学など、多くの研究分野で使用されています。メッシュ無しの『ラグランジュの未定乗数法』で、「密度」などの変数に関して、この方法の解像度を簡単に調整できます。

Smoothed Particle Hydrodynamics (SPH、SPH法)は主に流体計算に用いられる微分方程式の数値解析手法の一つ。対象とする物体を有限個の粒子によって表現し、ラグランジュ的に粒子を移動させながら解析する粒子法(またはメッシュフリー粒子法)に分類される。SPHでは、近傍粒子上の関数値の重み付き平均によって補間関数を定義する。この補間関数を近似関数として微分方程式に直接代入、もしくは独自に定義された微分作用素の近似を微分方程式に適用することによって近似方程式が得られる。SPHは単純な近似によって空間のメッシュ分割を用いないメッシュフリー近似を実現できることから、物体の大規模な変形を有するような問題に適しており、天体物理学、構造力学(主に破壊や亀裂進展など)、流体力学など多くの分野で利用されている。しかし、その計算精度や境界条件の扱い方など、十分に確立されていない部分も多い手法でもある。

引用元: Smoothed Particle Hydrodynamics – Wikipedia

ラグランジュの未定乗数法(ラグランジュのみていじょうすうほう、英: method of Lagrange multiplier)とは、束縛条件のもとで最適化を行うための数学(解析学)的な方法である。いくつかの変数に対して、いくつかの関数の値を固定するという束縛条件のもとで、別のある1つの関数の極値を求めるという問題を考える。各束縛条件に対して定数(未定乗数、Lagrange multiplier)を用意し、これらを係数とする線形結合を新しい関数(未定乗数も新たな変数とする)として考えることで、束縛問題を普通の極値問題として解くことができる方法である。

引用元: ラグランジュの未定乗数法 – Wikipedia

基本的な使い方

  1. まずは、発生元となるエミッターオブジェクトを作成します。
Blender パーティクルシステム エミッター 円 3DCG
  1. 水のパーティクル用のオブジェクトを作成して、エミッターオブジェクトの[レンダー]>[オブジェクト]>[インスタンスオブジェクト]に設定します。
Blender パーティクルシステム エミッター 円 立方体 3DCG
  1. 次に、受け皿となるコリジョンオブジェクトを作成します。
Blender 円 コリジョン 3DCG
  1. オススメとしては、[コリジョン]のパラメーターを↓の画像のように弄っておく方がそれっぽい動作になります。
Blender 円 コリジョン 3DCG
  1. 再生します。
Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG

[流体(Fluid)]の設定項目

[SPHソルバー(SPH Solver)]

パーティクルの内部の力を計算するのに使用されるコード。

  • [倍密度(Double Density)] …強い表面張力効果のかかるアーティスティックソルバー(オリジナル)。
  • [クラシカル(Classical)] …より物理的に正確なソルバー。

[剛性(Stiffness)]

流体が圧縮に抵抗する量(音速)。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[剛性]”0″と”10″で比較

[粘度(Viscosity)]

線形(リニア)粘度。粘度の高い流体には、より低い粘度を使用します。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[粘度]”0″と”10″で比較

[浮力(Buoyancy)]

流体内部の圧力差に基づく、負の重力方向での人工の浮力。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[浮力]”0″と”1″で比較

[力(Forces)]

この項目に関しては、[ニュートン力学]の物理演算と共通しているので、[力(Forces)]をご覧ください。

[衝突(Deflection)]

この項目に関しては、[ニュートン力学]の物理演算と共通しているので、[衝突(Deflection)]をご覧ください。

[計算精度(Integration)]

[計算精度(Integration)]

この項目に関しては、[ニュートン力学]の物理演算と共通しているので、[計算精度(Integration)]をご覧ください。

[タイムステップ(Timestep)]

この項目に関しては、[ニュートン力学]の物理演算と共通しているので、[タイムステップ(Timestep)]をご覧ください。

[サブフレーム(Subframes)]

この項目に関しては、[ニュートン力学]の物理演算と共通しているので、[サブフレーム(Subframes)]をご覧ください。

[適応(Adaptive)]

サブフレームの数を自動的に設定。

[しきい値(Threshold)]

適応サブフレームのしきい値。

より多くのサブフレームを必要とする前に、パーティクルが動くことのできる相対距離(対象『クーラン数』)。0.01~0.3が推奨範囲。

クーラン数

非定常計算において、1サイクルで流れが要素いくつ分進むかを示したものです。

引用元: クーラン数|熱流体解析|ソフトウェアクレイドル
Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[適応]ON/OFFで比較

[ばね(Springs)]

[力(Force)]

ばねの力。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[力]”0″と”10″で比較

[ばねの粘弾性(Viscoelastic Springs)]

フックのばねの代わりに粘弾性ばねを使用します。

[弾性限界(Elastic Limit)]

長さを変更するために、ばねをどれだけ伸縮するか。

[可塑性(Plasticity)]

弾性限界を超えた後、変更出来るスプリングの残りの長さ。

可塑性

自由自在に形を整えることの出来る物性。粘土のような物性で成形が容易な物性をいう。マジパンは可塑性がある物性の代表。  

引用元: 可塑性とは? Weblio辞書
Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[弾性限界]、[可塑性]
[初期静止長(Initial Rest Length)]

パーティクルサイズ×2の代わりに、初期の長さをスプリングの静止時の長さとして使用します。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[初期静止長]
[フレーム(Frames)]

パーティクルが生成されてからこのフレーム数分、ばねを作成します(“0″で常に作成)。

“1”に設定した方は、すぐに跳ねなくなるので、あまり飛び散らないように思います。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[フレーム]

[詳細設定(Advanced)]

[静止時の長さ(Rest Length)]

スプリングの元の長さ(パーティクル半径の係数)。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[静止時の長さ]、(どちらも[静止長係数]ON)
[静止長係数(Factor Rest Length)]

この項目を有効にすると、[ばね]>[静止時の長さ]が2×パーティクルサイズの係数となります。

[詳細設定(Advanced)]

[反発係数(Repulsion Factor)]

流体が塊になるのを反発しようとする強さ(剛性の係数)。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[反発係数] (どちらも[反発力係数]ON)
[反発力係数(Factor Repulsion)]

反発力を剛性の係数の1つとして設定します。

[剛性粘度(Stiff Viscosity)]

膨張する流体の粘度を作成します。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[剛性粘度](どちらも[剛性粘度係数]ON)
[剛性粘度係数(Factor Stiff Viscosity)]

通常の粘度の係数として設定します。

[相互作用半径(Interaction Radius)]

流体の相互作用半径。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[相互作用半径](どちらも[半径係数]ON)
[半径係数(Factor Radius)]

判定半径はパーティクルサイズ×4の係数として計算します。

[静止時密度(Rest Density)]

静止時の流体の密度。

Blender パーティクルシステム エミッター 流体 円 コリジョン 3DCG
[静止時密度](どちらも[密度係数]ON)
[密度係数(Factor Density)]

密度はデフォルト密度の係数として計算します(パーティクルサイズに依存)。

[流体の相互作用(Fluid Interaction)]

[ターゲットオブジェクト(Target Object)]

ターゲットとなるパーティクルシステムを持つオブジェクト名(ない場合は同じオブジェクト)。

[システム(System)]

[ターゲットオブジェクト]上のパーティクルシステムのインデックス。

まずは2つ程、[流体]タイプの物理演算を設定したパーティクルシステムを持つオブジェクトを用意します。

まだ[流体の相互作用]に何もセットしていない状態ですと、↓のように、互いにもう一方を無視した動作をします。

Blender パーティクルシステム エミッター 流体 ICO球 コリジョン 3DCG
[流体の相互作用]設定なしver

それぞれもう一方のオブジェクトを[ターゲットオブジェクト]に設定します。

Blender パーティクルシステム エミッター 流体 ICO球 コリジョン 3DCG
[流体の相互作用]リストに設定

設定が済んだ状態で再びアニメーション再生してみると、↓のように、中央部分で少し衝突が起こります。

Blender パーティクルシステム エミッター 流体 ICO球 コリジョン 3DCG
[流体の相互作用]設定なしver

参考にさせて頂いたサイト・ページ一覧

パーティクルについてのまとめ記事のご紹介

Blenderに関する記事や作品をまとめたページ作りました!

Pocket

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください