[Blender 2.8] シーン全体の力『重力』と、個々のオブジェクトの力『フォースフィールド』の、機能と使い方のご紹介
今回の記事は、Blenderの物理シミュレーションの『重力』と『フォースフィールド』についてです。
どちらも「力(フォース)」な訳ですが、『重力』はシーンで起こしている力で、『フォースフィールド』はオブジェクトで起こしている力、という違いがあります。
様々な『物理シミュレーション』を扱っていく中で、『フォースフィールド』もそうですが、特に『重力』は意識せずとも扱う必須のものだと思います。
とは言え、そこまで堅苦しく難しいことをするつもりはありません。難しい計算などはBlenderがやってくれますし、操作は簡単で、使い方によっては凄くハイクオリティな表現も出来る便利なものなので、「こんなことが出来るんだ」という一例として見ていってください。
※2020年6月8日 画像の追加、及び加筆修正を行いました。
※2020年6月10日 加筆修正を行いました。
※2020年7月2日 加筆修正を行いました。
※2020年7月19日 加筆修正を行いました。
※2021年1月1日 加筆修正を行いました。
※2021年1月8日 加筆修正を行いました。
目次
- 重力(Gravity)
- フォースフィールド(Force Fields)
- フォースフィールドの作成方法
- 共通のフィールド設定一覧
- フォースフィールドの『タイプ』
重力(Gravity)
『重力』は、シーン内のすべての物理システムに適用されるグローバルな「力」の設定です。[プロパティエディタ]>[シーンプロパティ]にあります。 この値はデフォルトでは、リアルの世界での重力のZ軸の”-9.810″になっています。通常の場合、これを弄る必要はありません。この値を変更すると、リアルとは違った重力をシミュレートできます。重力は”g”、測定値は”m×s⁻²”で表されます。
重力は、すべての物理システムに等しく適用されます。
重力は地球全体で実質的に同じですが、例えば月のシーンをレンダリングするには、6分の1の値、つまり”1.622 m×s⁻²”を使用します。 または、火星の重力値は”-3.69″です。
各物理システムの重力値は、それぞれの[フィールドの重み]タブから個別に調整が可能です。
フォースフィールド(Force Fields)
『フォースフィールド』は、他のシミュレーションに影響を与えることができる「力」の設定です。動きに振り幅を持たせたい場合に、動きを追加するために使われます。
フォースフィールドの影響するオブジェクトやシミュレーションについて
『パーティクル』、『ソフトボディ』、『リジッドボディ』、および『クロス』の全てのオブジェクトは、自動的にフォースフィールドの影響を受けます。
ですが、オブジェクトは、影響を受けるため、少なくとも1つの共通のレイヤー(ビューレイヤー)を共有している必要があります。
『パーティクル』、『ソフトボディ』、『リジッドボディ』、『クロス』について、詳しくは下記の各記事をご覧ください。
フォースフィールドが生成できるオブジェクトについて
また、様々なオブジェクトからは勿論の事、フォースフィールドは、パーティクルから生成することも出来ます。詳しくは、「[チャージ(Charge)]」で実際にパーティクルにフォースフィールドを付与してみているので、そちらをご覧ください。
基本的には、全てのタイプのオブジェクトとパーティクルがフィールドを生成出来ますが、例外的に、『カーブガイドフィールド』を使えるのは、カーブオブジェクトのみとなっています。
フォースフィールドからの影響をコントロールするには
シミュレーション、または、パーティクルシステムから、フォースフィールドの影響を下げたり、取り除きたい場合、『重力』同様、[フィールドの重み]パネルで、そのタイプのフォースフィールドの影響を調整する事が可能です。
また、パーティクルへの影響をオブジェクトの特定のコレクションに制限することができます。
フォースフィールドの作成方法
『フォースフィールド』の作成方法は2パターンあります。
1つ目は、[追加]メニューから作成する方法。この場合、[追加]([Shift]+[A])メニュー>[フォースフィールド]を選択し、表示されるメニューの中から目的のフォースフィールドのタイプを選択します。こちらの場合、[フォースフィールド]が付与された『エンプティ』が作成されます。
2つ目の方法は、既存のオブジェクトに『フォースフィールド』を付与する方法。この場合、オブジェクトを選択し、[プロパティエディタ]>[物理演算プロパティ]の[フォースフィールド]ボタンをクリックし、[フィールドのタイプ]メニューから目的のフォースフィールドのタイプを選択します。
[フィールド]パネルのフィールドを変更したり、[コリジョン]パネルの振れを設定した場合には、一度キャッシュを解放して、『パーティクル』、『ソフトボディ』、『クロス』システムを再計算する必要があります。この操作は自動的に行われないため、手動でする必要があります。
ちなみに、『パーティクル』はあらゆる種類のフォースフィールドに反応するのに対し、『ソフトボディ』は[力]、[風]、[渦]にしか反応しません([調和]フィールドには反応しますが、有用な方法では反応しません)。
共通のフィールド設定一覧
フォースフィールドは、タイプによって動作は大きく異なりますが、ほとんど同じ設定です。フィールドタイプ固有の設定を以下に示します。ただし、[カーブガイド]と[テクスチャ]フィールドのみ例外で、特殊なオプション構成となっています。
- [設定(Settings)]
- [減衰(Falloff)]
[設定(Settings)]
[シェイプ(Shape)]
エフェクターの力の方向を設定します。
エンプティオブジェクトのフォースフィールドの場合は、[ポイント]と[ライン]と[平面]のみが使用できます。3Dオブジェクトのフィールドの場合は、その他にも[サーフェス]と[全ての点]オプションが使用可能です。カーブオブジェクトの場合は[サーフェス]と[全ての点]が無い代わり、[カーブ]が使用可能になります。
- [ポイント(Point)] …無指向性の影響力を持つポイント。 オブジェクトの原点をエフェクタポイントとして使用し、フィールドを展開します。
- [ライン(Line)] …オブジェクトのローカルZ軸からフィールドを展開します。
- [平面(Plane)] …オブジェクトのローカルXY平面からフィールドを展開します。
- [サーフェス(Surface)] …3Dオブジェクトの表面からフィールドを展開します。
- [全ての点(Every Point)] …オブジェクトの全頂点からフィールドを展開します。
- [カーブ(Curve)] …カーブに沿ってフィールドを展開します。
[強さ(Strength)]
フィールドの影響の強さ。フォースが作用する方向を正負で変更できます。また、フォースフィールドの強さは、フォースオブジェクトのスケールでスケーリングされます。この項目では、同じ効果の強さを維持しながらスケールの調整ができるようにします。
[フロー(Flow)]
“0”以外の場合、有効なフォースはパーティクルの速度に依存します。この値は、エフェクターのフォース(加速度)が一定の「気流」の速度として変換される値を定義します。
[位置に影響(Affect Location)]
パーティクルの位置に影響を与えます。このチェックを外すと、フォースフィールドの影響が無くなります。
[回転に影響(Affect Rotation)]
パーティクルの力学的な回転に影響を与えます。
この項目での影響は、[パーティクル設定]で、[回転]>[ダイナミック]にチェックを入れておき、有効にしておかなければ実際に回転に影響を与えられないようです。
こんな形に変形させた平面オブジェクトを用意します。
パーティクルのエミッター用のオブジェクトで、[回転]にチェックを入れた上で、[ダイナミック]にチェックを入れて、フォースフィールドの[回転に影響]の影響を受けられるようにします。
更に、先程作成したパーティクル用の平面オブジェクトをパーティクルとして使うために、[レンダー]>[レンダリング方法]で[オブジェクト]に指定し、その下に表示される[オブジェクト]>[インスタンスオブジェクト]で先ほど作成したオブジェクト名を指定します。
その上で[回転に影響]のチェックの有無を比べると↓のようになります。
[ノイズ量(Noise Amount)]
フォースの強さにノイズを追加します。
[シード(Seed)]
ランダムノイズのシードを変更します。
[吸収(Absorption)]
コリジョンオブジェクトによってフォースが吸収されます。
例えば、パーティクルのエミッターオブジェクトとフォースオブジェクトの下に、コリジョンオブジェクトを設置し、そのコリジョンオブジェクトの[フィールドの吸収]という項目の値を”1″に設定します。
その状態で、このフォースフィールドオブジェクトの[吸収]のチェックの有無を比べて見ますと、↓のようになります。チェック有りの方は、地面用のコリジョンオブジェクトにパーティクルが接触する度に、フォースフィールドからの影響が減って、バラバラに拡散していっています。
[減衰(Falloff)]
[シェイプ(Shape)]
フォースフィールドの形状を指定出来ます([パワー]が”0″より大きい場合)。
- [球(Sphere)] …球のように、全ての方向で均一に減衰します。
- [チューブ(Tube)] …減衰により、チューブ状のフォースフィールドを生成します。これを選択すると、[放射]という項目が新たに表示され、そこで[パワー]と、フィールドの[最小距離]と[最大距離]を調整できます。
- [円錐(Cone)] …減衰により、円錐形のフォースフィールドを生成します。これを選択すると、[角度]という項目が新たに表示され、そこでそこで[パワー]と、フィールドの[最小角度]と[最大角度]を調整できます。
[Z方向(Z Direction)]
フォースの作用する方向を設定します。[両方のZ]、[+Z]、[-Z]から指定します。
[パワー(Power)]
フォースフィールドからの距離によってフォースフィールドの力がどのように変化するかを設定します。
“r”が「オブジェクトの原点からの距離」としますと、力は”1/r[power]”という風に変化します。例えば、[パワー]が”2″の場合、フォースフィールドは”1/r2″で変化します。つまりこれは「引き寄せる力の減衰」です。
[最小を使用(Use Minimum)]
減衰の[最小距離]を使用します。
[最小距離(Min Distance)]
オブジェクトの原点から、フォースフィールドが完全な強さで有効になるまでの距離。減衰が”0″の場合、フィールドは[最大距離](または無限大)まで最大の強さで効果が出るため、このパラメーターは効果がありません。範囲はオブジェクトの周りの追加の円で示されます。
[最大を使用(Use Maximum)]
減衰の[最大距離]を使用します。
[最大距離(Max Distance)]
フォースフィールドが、指定された最大半径(オブジェクトの周りの追加の円によって示される円の半径)内でのみ、他のオブジェクトに影響を与えるようにします。
memo: [チューブ]か[円錐]の場合の減衰設定
- [チューブ]の場合… 高さを[減衰]の方、半径を[放射]の方で最大・最小それぞれの範囲を操作します。
- [円錐]の場合… 母線を[減衰]の方、オブジェクトのZ軸からの角度を[角度]の方で最大・最小それぞれの範囲を操作します
フォースフィールドの『タイプ』
各フォースフィールドのサンプルを作成するにあたって、下記リンクのページを大いに参考にさせて頂きました。
外部ページリンク: Blender解説ページ > フォースフィールド
[力(Force)]
[力]フィールドは、最も単純なフィールドです。 [強さ]が正の場合オブジェクトの原点に向かい、[強さ]が負の場合遠ざかる一定の力を与えます。
ただし、[パーティクル設定]で[物理演算]>[物理タイプ]で[ニュートン力学]を指定したパーティクルの場合は、負の[強さ]を持つフィールドに引き付けられ、正の[強さ]を持つフィールドからは吹き飛ばされる、という動作になります。
[力]の特殊な設定項目
[重力(Gravitation)]
重力に”1/距離”を乗算します。
[風(Wind)]
[風]フォースフィールドは、フォースオブジェクトのローカルZ軸に沿って、単一の方向に一定の力を与えます。力の強さは、表示されている円の間隔によって視覚化されます。
[渦(Vortex)]
[渦]フォースフィールドは、フォースオブジェクトのローカルZ軸で周りの点の方向を捩れた螺旋状に力を与えます。
「竜巻」や「パーティクルの[ヘアー]のねじれ」を作成するのに役立ちます。
[磁石(Magnetic)]
[磁石]フィールドは、パーティクルの速度に依存します。磁気を帯びたオブジェクトの磁力をシミュレートします。
[調和(Harmonic)]
[調和]フォースフィールドでは、フォースフィールドの元は調和振動子(バネ、振り子)の”0″の点(基準点)です。[減衰]を”1″に設定すると、オブジェクトに到達した瞬間に動きが停止します。このフォースフィールドは、パーティクルに割り当てる場合、本当に特別です。
[調和]の特殊な設定項目
[減衰(Damping)]
調和力の減速。
[静止時の長さ(Rest Length)]
調和の力の静止する長さ。
[複数のばね(Multiple Springs)]
すべてのポイントが複数のばねの影響を受けます。
通常、フィールドシステムの全てのパーティクルは、ターゲットシステムの全てのパーティクルに影響します。それは調和ではありません。ここでは、全てのターゲットパーティクルがフィールドパーティクルに割り当てられています。したがって、パーティクルは他のパーティクルの場所に移動し、形状を形成します。
[チャージ(Charge)]
[チャージ]フォースフィールドは、影響を受けるパーティクルのチャージフィールド(正/負)に基づいてその動作(引き付け/反発)を変更することを除いて、[力]フィールドに似ています。
つまり、このフィールドは、[チャージ]フィールドを持つパーティクルにのみ影響します。そうでない場合、「電荷(charge)」がないため、フォースフィールドの影響が出ません。
[レナードジョーンズ(Lennard-Jones)]
レナード・ジョーンズフォースフィールドは非常に短距離の力であり、動作は「エフェクター」とその影響を受ける「パーティクル」のサイズによって決まります。 組み合わせたサイズよりも短い距離では、フィールドは非常に反発し、その距離より離れていた場合は引き付け、パーティクルを互いに平衡距離に保とうとします。 このフィールドの影響を受けるには、パーティクルが互いに接近している必要があります。
パーティクルは、[チャージ]とこの[レナードジョーンズ]ポテンシャルの両方を組み合わせる事も可能です。
レナード=ジョーンズ・ポテンシャル(英: Lennard-Jones potential)[1][2]とは、2つの原子間の相互作用ポテンシャルエネルギーを表す経験的なモデルの一つである。ポテンシャル曲線を表す式が簡単で扱いやすいので、分子動力学計算など、様々な分野において使われる。その名はレナード=ジョーンズにちなむ。
レナード=ジョーンズ・ポテンシャルは、実際のポテンシャル曲線を表現するための簡便な手法であり、少数のパラメータを用いたフィッティングに相当するため厳密ではない。しかし、問題の種類によっては、この方法で十分な場合がかなり多い。レナード=ジョーンズ・ポテンシャルに用いるパラメータは、実験的に求められた第二ビリアル係数、粘性係数、熱伝導率などから、推定することができる。他の原子間の相互作用のモデルポテンシャルとしては、モースポテンシャル(Morse potential)等が挙げられる。
引用元: レナード-ジョーンズ・ポテンシャル – Wikipedia
[テクスチャ(Texture)]
[テクスチャ]フォースフィールドを使用すると、調整次第で複雑なフォースフィールドを作成する事が可能です。
3方向のフォースは色(RGB)で分けられています。 具体的には、赤はX軸のコーディング、緑はY軸、青はZ軸のコーディングです(3Dビューの座標軸の色と同様)。 値”0.5″は力がないことを意味し、負の軸方向の加速度(-Zなど)が0.5より大きい値、正の軸方向の加速度(+Zなど)が0.5未満の値です。
ちなみに今回は、Blenderでデフォルトで用意されている『プロシージャルテクスチャ』の1つの、[マジック]テクスチャを使用してみました。
『プロシージャルテクスチャ』や[マジック]テクスチャについて、もっと詳しく知りたい方は、下記記事の「memo: 『プロシージャルテクスチャ』とは?」にて触れておりますので、よろしければそちらをご覧ください。
[テクスチャ]の特殊な設定項目
[テクスチャモード(Texture mode)]
ここでは、フォースベクトルがテクスチャから導出される方法を設定します。
- [RGB] …色でエンコードされた方向のフォースベクトルコンポーネントとして、色コンポーネントを直接使用します。これにはRGBテクスチャ(画像またはカラーランプ(色の傾斜))が必要です。したがって、カラーランプの無いブレンドテクスチャでは十分な効果が得られません。
- [グラデーション(Gradient)] …テクスチャの強度(グレースケール)を3Dグラデーションとしてフォースベクトルを計算します。グラデーションベクトルは、常に明るさが増す方向を指します。
- [カール(Curl)] …3D-RGBテクスチャのカール(RGBベクトルの回転)からフォースベクトルを計算します。カラーテクスチャでのみ機能します。例えば、パーリンノイズを使用してカラーのクラウドテクスチャで見栄えの良い乱気流を作成するために使用できます。
[ナブラ(Nabla)]
これは、[グラデーション]および[カール]の[テクスチャモード]に必要な偏微分を計算するために使用されるオフセットです。
[座標を使用(Use Coordinates)]
テクスチャにオブジェクト/グローバル座標を使用します。
[2D]
[2D]は、パーティクルのZ座標を無視し、テクスチャ座標としてパーティクルXとYのみを使用します。
※プロシージャルテクスチャは「3Dのテクスチャ」である事にご注意ください。
[カーブガイド(Curve Guide)]
[カーブガイド]は、パーティクルがカーブオブジェクトによって定義された特定のパスをたどるようにコントロールするために使用されます。
『カーブオブジェクト』について、本当に基本的な構造についてもよくご存じない方は、別の記事の「MEMO: ベジェカーブのハンドルタイプ4種」でほんの少しですがご紹介しておりますので、よろしければご参考までにどうぞご覧ください。
典型的な使用例は、静脈内で赤血球を動かすこと、またはモーターでパーティクルの流れをアニメーション化することです。 カーブガイドを使用して、特定の髪の束を形成することもできます。
パーティクル編集モードを使用してパスを定義することも出来ます。
カーブを『ソフトボディ』か、または他の通常の方法でアニメーション化できるため、非常に複雑なアニメーションを作成しながら、優れたコントロールを維持して、シミュレーション時間を最小限に抑えることができます。
[カーブガイド]は、カーブまでの距離に関係なく、同じレイヤー上のすべてのパーティクルに影響します。レイヤーに複数のガイドがある場合、それらのフィールドは互いに加算されます。ただし、[最小距離]を変更することで、影響半径を制限できます。
[カーブガイド]は『ソフトボディ』には影響しません。
[カーブガイド]の特殊な設定項目
[最小距離(Minimum Distance)]
カーブから、フォースフィールドが完全な強度で有効になるところまでの距離。減衰が”0″の場合、フィールドは[最大距離](または無限)までの最大強度で有効であるため、このパラメーターは効果がありません。[最小距離]は、3Dビューのカーブの端点に円で表示されます。
[フリー(Free)]
パーティクルが、カーブに沿って動いていない寿命時間の割合。
[減衰のべき乗(Falloff Power)]
フォースフィールドからの距離でどれぐらい早く力が弱まるか。
[付加(Additive)]
距離と減衰によりパス全体から一部を追加します。
※この項目の使い方はよくわかりませんでした。
[ウェイト(Weights)]
カーブのウェイトを使用し、カーブに沿ったパーティクルへの影響を操作します。
カーブオブジェクトの制御点毎に『ウェイト』付けられるようです。[サイドバー]>[アイテム]>[トランスフォーム]>[ウェイト]から調整できます。
[集結の量(Clumping amount)]
“1”だとパーティクルはカーブの終わりに集まり、”-1″だと発生地点がカーブの始まりに集中します。
[シェイプ(Shape)]
パーティクルが集まる形を定義します。
“+0.99″に設定した場合、パーティクルはカーブの最後で交わります。
“0”に設定した場合、曲線に沿った線形進行。
“-0.99″に設定した場合、パーティクルはカーブの最初で交わります。
[最大を使用(Use Max)]
フォースフィールド効果に[最大距離]を使用します。
[最大距離(Maximum Distance)]
効果の及ぶ最大距離。
[ねじれ(Kink)]
Blenderの公式マニュアルによると、この機能は現在のバージョンでは壊れているようですので、ご使用になる場合は、自己責任でお願いします。
[タイプ(Type)]
周期オフセットのタイプ。
- [ロール(Roll)] …一次元の定在波。
- [回転(Rotation)] …(不明)
- [三つ編み(Braid)] …三つ編み。
- [波(Wave)] …二次元の定在波。
- [放射(Radial)] …立体的な定在波。
- [カール(Curl)] …影響の半径は、エミッタからカーブまでの距離に依存します。
[座標軸(Axis)]
オフセットに使用する軸。
[頻度(Frequency)]
オフセットの頻度(“1/トータルタイム”)。
[シェイプ(Shape)]
始点/終点のオフセットを調整します。
[振幅(Amplitude)]
オフセットの振り幅。
[ボイド(Boid)]
[ボイド]フォースフィールドは物理演算に影響を与えず、『ボイドパーティクル』と一緒に使用して、「ボイドAIルール」のボイド”捕食者”と”ゴール”を定義します。
ちなみに『ボイドパーティクル』とは、[パーティクル設定]で、[物理演算]>[物理タイプ]を[ボイド]に設定したパーティクルの事です。
『ボイド』、及び『ボイド』タイプの物理演算を使ったパーティクルについて、詳しくは下記記事をご覧ください。
[乱流(Turbulence)]
[乱流]フォースフィールドは、海の噴流や間欠泉に似たランダムでカオス的な3Dノイズ効果を作成します。
[乱流]の特殊な設定項目
[サイズ(Size)]
ノイズのスケールを調整します。
[グローバル(Global)]
ノイズがアタッチされているオブジェクトではなく、ワールドに対してノイズのサイズと強度を作成します。
[ドラッグ(Drag)]
[ドラッグ]フォースフィールドは、速度を下げる力を作成します。
恐らく、この[ドラッグ]フォースフィールドは他のフォースフィールドと組み合わせて使うのが主な使い方なのだと思います。
↓のGIFでは、[渦]フォースフィールドと組み合わせてみました。右側のチューブに囲われた部分だけ、速度が遅くなっているのがお分かりになるでしょうか?
[ドラッグ]の特殊な設定項目
[リニア(Linear)]
速度に比例して抵抗する力。
[二次式(Quadratic)]
速度の二乗に比例して抵抗する力。
[煙のフロー(Smoke Flow)](※v2.91では[流体フロー(Fluid Flow)])
Blenderのバージョン2.91では名称が[流体フロー]に変更されていますが、機能としては同じものです。
[煙のフロー]フォースフィールドは、『流体シミュレーション』の空気の流れに基づいてフォースを作成します。
『流体シミュレーション』について、詳しくは下記記事をご覧ください。
フォースフィールドを使用する他のシミュレーションへの力として、『煙シミュレーション』の気流速度を適用します。
これを使用するには、[煙のフロー]フォースフィールドを追加して、そのドメインオブジェクトを選択する必要があります。
例えば、火の煌めきのような、シミュレートされた火の近くの乱気流に沿ってリアルに流れる様を再現する、という使い方ができます。
ちなみに、このフォースフィールドの使い方を試すにあたり、参考にさせて頂いた動画様です↓
『煙シミュレーション』を簡単に[クイック煙]で用意しました。
その時に生成されたドメインオブジェクト(↓画像の選択中のオブジェクトです)を、
[煙のフロー]フォースフィールドの[ドメインオブジェクト]に設定し、[煙のフロー]を付与しているオブジェクトをパーティクルとして使います。
ここまでだと動画と同じになってしまうので、カーブオブジェクトで敷いたレールを使って、エミッターオブジェクトを[パスに追従]コンストレイントで動かします。
出来上がった物がこちらになります。
[煙のフロー]の特殊な設定項目
[ドメインオブジェクト(Domain Object)]
煙のシミュレーションのドメインとして使用されるオブジェクト。
[密度を適用(Apply Density)]
煙の密度に基づいて力の強さを調整します。
参考にさせて頂いたサイト・ページ一覧
- Physics — Blender Manual
- Forces — Blender Manual
- View Layers — Blender Manual
- レナード-ジョーンズ・ポテンシャル – Wikipedia
- Boids – 群れの再現 – TauStation
- Doc:JA/2.6/Manual/Physics/Force Fields – wiki
- Blender解説ページ > フォースフィールド
- Blender 2.8 Force Fields || Smoke Flow – YouTube