サイトアイコン ほろほろりドットコム

[Blender 2.8] 剛体の衝突や破壊表現 [リジッドボディワールド、リジッドボディコンストレイント]

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 滑り台 スライダー

『リジッドボディワールド』と『リジッドボディコンストレイント』の機能と使い方のご紹介

今回の記事では、『リジッドボディ』の持つ機能を使いこなす上で知っておきたい、『リジッドボディワールド』と『リジッドボディコンストレイント』という機能についてです。

ちなみに、『リジッドボディ』については、下記記事にて詳しく取り上げておりますので、そちらをご覧ください。

目次

リジッドボディワールド

『リジッドボディワールド』は、シミュレーションする中で、全てのリジッドボディオブジェクトに適用される設定を保持する「リジッドボディオブジェクトのコレクション」です。

『リジッドボディ』をオブジェクト1つにでも追加すると、デフォルトで”RigidBodyWorld”と名付けられているコレクションが自動的に作成されます。そして、『リジッドボディ』を追加したオブジェクトは、このコレクションに自動で追加されます。

また、[プロパティエディタ]>[オブジェクトプロパティ]>[コレクション]パネルから、リジッドボディオブジェクトを割り当てる事で、複数のリジッドボディワールドコレクションを作成する事も可能です。

ですが、リジッドボディオブジェクトとコンストレイントは、[プロパティエディタ]>[シーン]>[リジッドボディワールド]>[コレクション]フィールドで指定されたコレクション内にある場合にのみ、シミュレーションの効果が出ます。

リジッドボディワールドの詳細設定項目一覧

[リジッドボディワールドを追加(Add Rigid Body World)]

[コレクション]で指定されたコレクションに参加しているかどうかに基づき、リジッドボディオブジェクトの、リジッドボディシミュレーションの評価を有効/無効にします。

[リジッドボディワールドを追加]

1つもリジッドボディオブジェクトを作成していない時にこのボタンが表示されています。

わざわざこのボタンから作成しなくても、1つリジッドボディオブジェクトを作成すればそれと同時に自動でリジッドボディワールドも作成されますので、敢えてこのボタンを触ることも無いかと思います。

[リジッドボディワールドを削除(Remove Rigid Body World)]

現在のシーンからリジッドボディシミュレーションを削除します。

[リジッドボディワールドを削除]

[設定(Settings)]

[コレクション(Collection)]

このシミュレーションに参加しているリジッドボディオブジェクトを保有するコレクション。デフォルトでは、”RigidBodyWorld”という名前のコレクションが用意されます。

ちなみに、そのオブジェクトがどんなコレクションに所属しているかは、[プロパティエディター]>[オブジェクトプロパティ]>[コレクション]から確認できます。↓の画像の場合は、”ball”というコレクションと、”RigidBodyWorld”というコレクションの、計2つのコレクションに所属していることになります。

[プロパティエディター]>[オブジェクトプロパティ]>[コレクション]

[コンストレイント(Constraints)]

シミュレーションに参加しているリジッドボディコンストレイントオブジェクトを保有するコレクション。デフォルトでは、”RigidBodyConstraints”という名前のコレクションが用意されます。

『リジッドボディコンストレイント』について、詳しくは後述

[速度(Speed)]

シミュレーションの加速、または減速の調整に使用できます。

[速度: 0.5]
[速度: 1.0]

[分離の衝撃(Split Impulse)]

オブジェクトが衝突したときに発生する可能性がある、速度の低減を有効/無効にします。

有効にすると、衝突時にオブジェクトが分離される力を制限します。通常は、より良い結果が得られますが、シミュレーションの安定性が少し低下するため、必要な場合にのみ使用してください(特に多くのオブジェクトをスタックする場合)。

例えば、同じ位置(0,0,0)に重なるように2つのオブジェクトを配置し、それぞれをアクティブなリジッドボディオブジェクトにしておきます。その場合、[分離の衝撃]の有無で↓のように変化します。

[分離の衝撃] 有り
[分離の衝撃] 無し

[ステップ/秒(Steps Per Second)]

1秒あたりに実行されるシミュレーションステップ数(値が大きいほど正確ですが、演算に時間が掛かり遅くなります)。

これは精度にのみ影響し、シミュレーションの[速度]には影響しません。

デフォルトの”60″と、倍にした”120″で比較してみました↓ 花弁の拡散の仕方も大きいですが、ひらひらと回転する度合いも”120″の時の方が多いように見受けられます。

[ステップ/秒: 60]
[ステップ/秒: 120]

[ソルバー反復数(Solver Iterations)]

シミュレーションステップごとに行われるコンストレイントソルバー反復の量(値が大きいほど正確ですが、演算に時間が掛かり遅くなります)。

『リジッドボディコンストレイント』について、詳しくは後述

これを増やすと、コンストレイントとオブジェクトのスタックがより安定し、精度の高い結果が出ます。

[ソルバー反復数: 20]

[ソルバー反復数: 60]

ちなみに、「ソルバー」とは、英語で「解決する、解明する」といった意味があるようですが、IT用語としては機能の名称としての意味を持つようです。

ソルバー

【英】solver

ソルバーとは、Microsoft Excelをはじめとする表計算ソフトの機能の一種で、複数の変数を含む数式において、目標とする値を得るための、最適な変数の値を求めることができる機能のことである。

ソルバーでは、複数の変数の値を変化させながら変数の相互関係を判断し、最適な値を算出することができる。ある変数に特定の制約条件をつけたり、あるいは特定の変数が最大値・最小値を得るために他の変数の値を変化させたりすることもできる。ソルバーを用いれば、連立方程式の解や、複数の項目が連動する事業計画の試算といった複雑な演算ができる。ちなみに変数が1つだけの場合は、一般的にゴールシークと呼ばれる機能が用いられる。

(以下略)

引用元: ソルバーとは(solver): – IT用語辞典バイナリ

[キャッシュ(Cache)]

[キャッシュ]サブパネルは、シミュレーションがアクティブなフレーム範囲を指定します。シミュレーションのベイクに使用できます。

「.blend」ファイルを保存していない場合、キャッシュはメモリ内に作成されるため、最初にファイルを保存しないとキャッシュが失われる可能性があります。

[シミュレーション開始(Simulation Start)]

シミュレーションの最初のフレーム。

[終了(End)]

シミュレーションの最後のフレーム。

[ベイク(Bake)]

シミュレーションを計算し、キャッシュを保護します。ベイクするには、[オブジェクトモード]になっている必要があります。

[ベイクを削除(Delete Bake)]

シミュレーションのベイク後に選択できるようになります。ベイクされたキャッシュを削除します。

[このフレームまで計算(Calculate to Frame)]

物理演算を現在のフレームまでベイクします。

[現在のキャッシュをベイク(Current Cache to Bake)]

キャッシュからベイクします。

[全物理演算をベイク(Bake All Dynamics)]

全ての物理をベイクします。

[全ベイクを削除(Delete All Bakes)]

現在のシーンのすべてのオブジェクトのベイクキャッシュをすべて削除します。

[フレームまで全て更新(Update All To Frame)]

キャッシュを現在のフレームまで更新し、ベイクします。

[フィールドの重み(Field Weights)]

他の物理力学システムと同様に、リジッドボディシミュレーションも外部のフォースエフェクターの影響を受けます。

ここでは、それぞれの『重力』や『フォースフィールド』の影響を、コントロールすることができます。

『重力』や各『フォースフィールド』についての詳細は、下記記事をご覧ください。

リジッドボディコンストレイント

リジッドボディのコンストレイント(ジョイントとも呼ばれます)は、2つのリジッドボディを接続するのに使われます。

constraintとは

[主な意味] 強制、圧 迫、束縛、制約 するもの、窮屈な感じ、気がね

引用元: constraintの意味・使い方・読み方|Weblio英和辞書

物理コンストレイントは、エンプティオブジェクトにアタッチされます。エンプティオブジェクトにアタッチされた状態では、コンストレイントには、コンストレイントによってバインドされる2つの物理演算が使用可能なオブジェクトを指すことができるフィールドが存在します。つまり、エンプティオブジェクトからは、2つのコンストレイントオブジェクトとは異なるコンストレイントの「位置」と「軸」を使う事が出来ます

物理コンストレイントをホストする実体の「位置」は、コンストレイントの2つのオブジェクトそれぞれの「位置」と「軸」のセットをマークします。これらの2つのアンカーポイントはアニメーションの開始時に計算され、その「位置」と「方向」は、アニメーション中、オブジェクトのローカル座標系で固定されたままです。

オブジェクトはコンストレイントオブジェクトから遠くに移動できますが、コンストレイントアンカーはオブジェクトとともに移動します。

この機能に制限があって適切でなかったり、使いづらいと思われる場合は、複数の子を持つ物理コンストレイントのないオブジェクトを使用する方法もありますので、その方法で子オブジェクトの相対的な位置をアニメートしてください。

リジッドボディコンストレイントを作成する方法

コンストレイントオブジェクトを作成する方法は2つあります。

[接続(Connect)]から作成

2つのオブジェクトを拘束する最も簡単な方法は、そのオブジェクト両方を選択して、[オブジェクト]>[リジッドボディ]>[接続]ボタンをクリックすることです。

[オブジェクト]>[リジッドボディ]>[接続]

これにより、物理コンストレイントが自動で接続され、選択された2つのオブジェクトを指している新しいエンプティオブジェクト(“Constraint”という名前)が作成されます。

[リジッドボディコンストレイント]が付与されたエンプティオブジェクト”Constraint”

[リジッドボディコンストレイント]ボタンから作成

[プロパティエディター]>[物理演算プロパティ]>[リジッドボディコンストレイント]ボタンを使用して、2つの拘束されたオブジェクトのいずれかにリジッドボディコンストレイントを作成することも出来ます。このコンストレイントは、それが作成されたオブジェクトの「位置」と「回転」に依存します。

この場合には、コンストレイントに対して制作されたエンプティオブジェクトは存在しません。エンプティオブジェクトの役割は、この、[リジッドボディコンストレイント]ボタンを使用した方のオブジェクトが負います。

[リジッドボディコンストレイント]ボタンから作成した場合のリジッドボディコンストレイントオブジェクト

また、コンストレイントされたオブジェクトを[パッシブ]タイプとして設定すると、コンストレイントをより効果的に操作できます。

[プロパティエディター]>[物理演算プロパティ]>[リジッドボディコンストレイント]パネルに、選択したエンプティオブジェクト、または作成されたコンストレイントを持つ2つのコンストレイントオブジェクトのいずれかに関する追加のパラメーターが表示されます。

リジッドボディコンストレイントに共通する設定項目一覧

[設定(Settings)]

[有効(Enabled)]

このコンストレイントを有効にします。

[コリジョンを無効(Disable Collisions)]

コンストレイントされているリジッドボディ間の衝突判定を無効にします。

[コリジョンを無効] チェック無し
[コリジョンを無効] チェック有り

[破壊可能(Breakable)]

[しきい値]以上の衝撃を受けるとコンストレイントが壊れるようにします。

シミュレーション中にコンストレイントを解除できます。 [モーター]タイプのコンストレイントでは無効です。これは破壊をシミュレートするために使用できます。

[しきい値(Threshold)]

コンストレイントが壊れる最小のしきい値。

[破壊可能]のチェックの有無で比較

[オブジェクト(object)]

[最初(First)]

最初のコンストレイントされいてるリジッドボディオブジェクト。

[秒数(Second)]

2つ目のコンストレイントされいてるリジッドボディオブジェクト。

[反復の上書き(Override Iterations)]

ソルバー反復数の置き換え。

このコンストレイントソルバーの反復数を置き換え、精度を変えます。

[ソルバー反復数(Solver Iterations)]」の項もご参照ください。

[反復(Iterations)]

ソルバー反復数。シミュレーションステップ毎のコンストレイントソルバー反復数(高い値で精度が高くなりますが、遅くなります)。

リジッドボディコンストレイントのタイプ

[固定(Fixed)]

このコンストレイントにより、2つのオブジェクトが1つとして移動します。

物理システムにはわずかな傾斜が含まれているため、オブジェクトは、同じメッシュの一部であるようには厳密に移動しません。

[固定]

[ポイント(Point)]

オブジェクトは、ポイントベアリングによってリンクされており、コンストレイントオブジェクトの位置を中心にあらゆる種類の回転が可能ですが、相対移動はできません。物理エンジンは、2つのコンストレイントされたオブジェクト上のコンストレイントオブジェクトによってしていされた2つのポイントが一致するように最善の結果を導き出します。

ベアリング

軸受(じくうけ)とは機械要素の一つで、回転や往復運動する相手部品に接して荷重を受け、軸などを支持する部品である。日本では英語の”bearing”(bear = 支える、担うの意)を外来語として、軸受全般をベアリングと呼ぶことも一般的である。

引用元: 軸受 – Wikipedia
[ポイント]

[ヒンジ(Hinge)]

[ヒンジ]は、2つのオブジェクト間の指定した角度の余裕を許します。ただし、トランスレーション(平行移動)は、完全に制限されています。物理コンストレイントをホストしているオブジェクトのZ軸を中心とした回転が許可されています(通常は、リンクされている2つのオブジェクトとは異なるエンプティオブジェクトです)。

コンストレイントをホストするオブジェクトの「位置」と「回転」を調整すると、アンカーとヒンジの軸を制御できます。

ヒンジは、X軸を使用しないでZ軸を使用する唯一の1軸回転コンストレイントです。ヒンジに問題がある場合は、他のコンストレイントをチェックして、これが問題であるかどうかを確認してください。

ちなみに、「ヒンジ」とは「蝶番、かなめ、要点」という意味です。

hingeとは

[主な意味] (戸・ふた・二枚貝などの)ちょうつがい、かなめ、要点

引用元: hingeの意味・使い方・読み方|Weblio英和辞書

[リミット(Limits)]

[角度(Angular)]
[Z軸角度(Z Angle)]

Z軸を中心とした回転の制限を有効/無効にします。

[スライダー(Slider)]

[スライダー]コンストレイントでは、コンストレイントオブジェクトのX軸に沿った相対的な移動は可能ですが、相対的な回転や、他の軸に沿った相対的な移動はできません。

[リミット(Limits)]

[リニア(Linear)]
[X軸(X Axis)]

X軸を中心とした移動の制限を有効/無効にします。

[ピストン(Piston)]

[ピストン]は、コンストレイントオブジェクトのX軸に沿った移動と、X軸を中心とした回転が可能です。

つまりは、[スライダー]と[ヒンジ]を組み合わせたようなものです(どちらも単独では非常に制限があります)。

[リミット(Limits)]

[角度(Angular)]
[X軸角度(X Angle)]

X軸を中心とした回転制限を有効/無効にします。

[リニア(Linear)]
[X軸(X Axis)]

X軸を中心とした移動の制限を有効/無効にします。

[汎用(Generic)]

[汎用]コンストレイントには、使用可能な多くのパラメーターがあります。

X、Y、Z軸のコンストレイントを使用して、オブジェクト間の移動量を制限できます。最小/最大を”0″にクランプ(Clamp)すると、[ポイント]コンストレイントと同じ効果があります。

相対回転を”0″にクランプすると、オブジェクトの位置が揃います。絶対回転と平行移動クランプを組み合わせると、[固定]コンストレイントのように動作します。

パラメーターに”0″以外の広がりを持たせるすると、シミュレーションの過程全体でその範囲内である程度前後させる余裕を持たせることができます。

クランプ

Clamp(コンピュータ プログラミング) – 指定された数値xを所定の範囲[a, b]内に制約する処理。

clamp(x) = max(a, min(x, b))

引用元: クランプ – Wikipedia
[汎用]

[リミット(Limits)]

[角度(Angular)]
[X/Y/Z軸角度(X/Y/Z)]

X, Y, Z軸を中心とした回転の制限をそれぞれ有効/無効にします。

[リニア(Linear)]
[X/Y/Z軸(X/Y/Z Axis)]

X, Y, Z軸の移動の制限をそれぞれ有効/無効にします。

[汎用ばね(Generic Spring)]

[汎用ばね]コンストレイントは、[汎用]コンストレイントで使用可能な全てのオプションに、更にX/Y/Z軸のそれぞれに対応した[ばね]パラメーターを追加します。

[ばね]のみを使用すると、オブジェクトは、コンストレイントオブジェクトにアンカーされたスプリングで接続されているかのように跳ね返る動作をさせることができます。ですが通常、これは少し自由度が高すぎるため、ほとんどのアプリケーションでは、移動、または回転のコンストレイントを有効にする方が有益です。

[ばね]の[減衰]が”1″に設定されている場合、[ばね]の力がアンカーポイントを再調整することを妨げ、奇妙な動作を引き起こします。[ばね]が奇妙に動作している場合は、[減衰]を確認してください。

[汎用ばね]

[リミット(Limits)]

[角度(Angular)]
[X/Y/Z軸角度(X/Y/Z Angle)]

X, Y, Z軸を中心とした回転の制限をそれぞれ有効/無効にします。

[リニア(Linear)]
[X/Y/Z軸(X/Y/Z Axis)]

X, Y, Z軸の移動の制限をそれぞれ有効/無効にします。

[ばね(Springs)]

[タイプ(Type)]

使用するばねの実装。

[角度(Angular)]
[X/Y/Z軸角度(X/Y/Z Angle)]

X, Y, Z軸を中心としたばねの回転をそれぞれ有効/無効にします。

[リニア(Linear)]
[X/Y/Z軸(X/Y/Z Axis)]

X, Y, Z軸のばねの移動をそれぞれ有効/無効にします。

[モーター(Motor)]

[モーター]コンストレイントにより、2つの実体の間で移動や回転が発生します。2つのオブジェクトをくっつかせたり、一定の距離を離すようにも駆動できます。単純な回転、または回転と移動を駆動出来ます(ただし、移動は回転を妨げずに他の物理学によってブロックされるため、ねじのようには拘束されません)。

回転軸は、コンストレイントをホストしているオブジェクトのX軸です。これは、Z軸を使用してる[ヒンジ]とは対照的です。

[モーター]は、対応する[ヒンジ]コンストレイントが無いと混乱が生じやすいため(?)、軸の位置を合わせには特別に注意を払う必要があります。適切に調整しないと、[モーター]は効果が出ていないように見えます([ヒンジ]が[モーター]の動きを妨げているため)。

[モーター]

[モーター(Motor)]

[角度(Angular)]

角度モーターを有効/無効にします。

[ターゲット速度(Target Velocity)]

ターゲットの角度モーター速度。

[最大力積(Max Impulse)]

角度モーターの最大力積。

[リニア(Linear)]

線形モーターを有効/無効にします。

[ターゲット速度(Target Velocity)]

ターゲットの線形モーター速度。

[最大力積(Max Impulse)]

線形モーターの最大力積。

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

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

Blender Note
モバイルバージョンを終了