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

[Blender 2.8] 『ニュートン力学』タイプの物理演算 [パーティクルシステム]

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

今回の記事は、Blenderでの『パーティクルシステム』の[ニュートン力学(Newtonian)]というタイプの[物理演算]についてです。

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

※2020年6月30日 加筆修正を行いました。
※2020年7月19日 加筆修正を行いました。

目次

[ニュートン力学(Newtonian)]

パーティクルを古典力学(ニュートン力学)に則って動かします。

パーティクルは指定された初期速度と角速度でその寿命を開始し、外部的なフォースに従って移動します。選択した特定の[計算精度]のタイプに応じて、環境と力に対する応答の計算が異なります。

パーティクルの「初期速度」、「角速度」の設定は、それぞれ[速度]パネル、[回転]パネルで行います。

[速度]パネル、[回転]パネルについて詳しくは、それぞれについての下記記事をご覧ください。

[力(Forces)]

[ブラウン運動(Brownian)]

ブラウン運動の量を指定します。つまり、ここではパーティクルの小さいふらつきの移動量を指定しています。

ブラウン運動は、ブラウンノイズフィールドに基づいて、パーティクルにランダムな運動を追加します。これは、ランダムで小さな風力をシミュレートするのに適しています。

Blender パーティクル エミッター 3DCG
[ブラウン運動]の”0″と”20″で比較

[ドラッグ(Drag)]

空気抵抗の量。

速度とサイズに関連して、粒子の速度を低下させる力(空気抵抗または水の抵抗をシミュレーションするのに役立ちます)。

↓のGIFで、特に跳ね返った時の高さで違いが顕著に見られるかと思います。

Blender パーティクル エミッター 3DCG
[ドラッグ]の”0″と”1″で比較

[減速(Damp)]

パーティクルの減速量を指定します(減速、摩擦、減衰の量でもあります)。

Blender パーティクル エミッター 3DCG
[減速]の”0″と”1″で比較

[衝突(Deflection)]

[衝突にサイズを反映(Size Deflect)]

衝突判定にパーティクルのサイズを使用します。

例えば[レンダー]>[拡大縮小]の値を”1″に設定したとします。その状態でこの項目を有効にすると、衝突判定に使われる範囲がサイズ分広くなるようです。

Blender パーティクル エミッター 3DCG
[衝突にサイズを反映]のチェックの有無で比較

[接触時に消滅(Die on Hit)]

パーティクルがデフレクターオブジェクト(つまり、コリジョンオブジェクト)にあたった時にパーティクルを消滅させます。

deflector

名詞

流れ(水、空気、煙など)をそらせることを意図した装置

a device intended to turn aside the flow of something (water or air or smoke etc).

引用元: deflectorの意味 – 英ナビ!辞書 英和辞典

コリジョンオブジェクト等との接触時に、パーティクルを跳ね返らせたりせず、[寿命]が来ていなくても、その瞬間に消失させる事が出来るようです。

Blender パーティクル エミッター 3DCG
[接触時に消滅]のチェックの有無で比較

[コレクションの衝突設定(Collision Collection)]

これが設定されている場合、パーティクルは設定されたコレクションのオブジェクトとのみ衝突するように制限します。

※衝突するオブジェクトには、当然の事ではありますが『コリジョン』を付与しておく必要があります。

[計算精度(Integration)]

インテグレーター(積分器)は、パーティクルの動きを計算するために利用できる数学的な方法のセットです。次のガイドラインはアニメーターが目指す動作に従って、適切なインテグレーターを選択するのに役立ちます。

[計算精度(Integration)]

物理演算に使用するアルゴリズム。

  • [オイラー(Euler)] …最も単純な積分器。非常に高速ですが、計算の精度も低くなります。ダンピングを使用しない場合、パーティクルは時間の経過とともにますます多くのエネルギーを得ます。例えば弾むパーティクルは、毎回高く跳ね返ります。減衰がなくても、時間の経過とともにエネルギーが減少します。このインテグレーターは、短いシミュレーションや、減衰よりも高速で正確な計算が重要なシミュレーションに使用します。
  • [ベルレ(Verlet)] …非常に高速で安定したインテグレーター。エネルギーは時間と共に節約され、数値の損失はほとんどありません。
  • [中間(Midpoint)] …「2次のルンゲ=クッタ法」とも呼ばれます。オイラーよりも低速ですが、遥かに安定しています。加速度が一定の場合(例えば、抗力がない場合)、エネルギーを節約します。跳ねるパーティクルの例では、パーティクルはたまに開始した時よりも高く跳ね返る可能性がありますが、こう言った事はほとんどありません。このインテグレーターは、ほとんどの場合に使用できる一般的に優れたインテグレーターです。
  • [RK4] …「4次のルンゲ=クッタ法」(または「古典的ルンゲ=クッタ法」)の略称。[中間]と似ていますが、速度が遅く、ほとんどの場合、より正確な結果を得られます。加速度が一定でなくても、エネルギーを節約できます。中点が十分に正確でないことが判明した複雑なシミュレーションでのみ必要となるでしょう。

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

各フレーム中に経過するシミュレーション時間(フレーム毎秒)。

Blender パーティクル エミッター 3DCG
[タイムステップ]を”0.01″、”0.04″(デフォルト)、”0.10″で比較

[サブフレーム(Subframes)]

フレーム当たりのシミュレーションステップ数。

dt = [タイムステップ] / ([サブフレーム] + 1)

シミュレーションの安定性を改善し、パーティクルの精度を向上するためにシミュレートするサブフレーム。より早く移動するパーティクルには、より高い値を使用します。

例えば、[タイムステップ: 0.50]の場合に、[サブフレーム]を”0″と”1000″の場合で比較してみます。”0″の場合は正確に計算されずに下の当たりにパーティクルが留まってしまっているのがお分かりになるでしょうか?

Blender パーティクル エミッター 3DCG
高い[タイムステップ]値の時、[サブフレーム]の”0″と”1000″で比較

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

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

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

Pocket