ジャンル雑多なゲーム・ゲーム制作関連の色々な情報を取り扱っているブログ。最近はBlenderについてが中心。
[Blender 2.8] 剛体の衝突や破壊表現 [リジッドボディ]

[Blender 2.8] 剛体の衝突や破壊表現 [リジッドボディ]

[Blender 2.8] メッシュオブジェクト専用、アニメーションシステムとの連携も出来る『リジッドボディシミュレーション』の、機能と使い方のご紹介

今回の記事は、Blenderでの『物理シミュレーション』の1つ、『リジッドボディ』についてです。

破壊の表現や、固体同士の衝突表現によく使われるシミュレーションです。

Blender リジッドボディ 物理シミュレーション 3DCG モデリング メッシュ パズル ピース 無地
『リジッドボディシミュレーション』を使ったバラバラに散らばるパズルの表現

「リジッドボディ」とは「剛体」という意味です。『リジッドボディシミュレーション』を使用して、ソリッドオブジェクト(固体のオブジェクト)のモーションをシミュレートできます。 オブジェクトの位置と方向に影響し、オブジェクト自体に変形は加えません。

Blenderにある他のシミュレーションとは異なり、リジッドボディは、通常のオブジェクトのように、親子関係、アニメーションコンストレイントや、ドライバーを扱う事ができ、『アニメーションシステム』と密接に連携する関係にあります。

※2020年6月12日 タイトルの変更・加筆修正を行いました。
※2020年6月23日 タイトルの変更、加筆修正、アイキャッチ画像の変更、記事の一部を他の記事へ移行しました。

目次

リジッドボディの基本的な使い方

リジッドボディの作成方法

前提として、現在、リジッドボディシミュレーションに加える事ができるのは、『メッシュ』オブジェクトのみです。

リジッドボディを作成するには、[プロパティエディタ]>[物理演算プロパティ]タブにある[リジッドボディ]ボタンをクリックするか、ツールバーの[オブジェクト]メニュー>[リジッドボディ]>[アクティブ追加]または、[パッシブ追加]を使用します。

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算
[プロパティエディタ]>[物理演算プロパティ]タブ>[リジッドボディ]
Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算
[オブジェクト]メニュー>[リジッドボディ]>[アクティブ追加]と[パッシブ追加]

リジッドボディのタイプ

リジッドボディには、[アクティブ]と[パッシブ]の2つのタイプがあります。

  • [アクティブ(Active)]ボディ …動的にシミュレーションされます。
  • [パッシブ(Passive)]ボディ …静的なままです。

[アニメ(Animated)]オプションを使用すると、どちらのタイプもアニメーションシステムによって駆動できます。

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算
『リジッドボディ』の「タイプ」
Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算
[リジッドボディ]>[アニメ]

リジッドボディのトンランスフォーム

シミュレーション中、リジッドボディシステムはダイナミック(動的)リジッドボディオブジェクトの位置と方向をオーバーライドします。ただし、オブジェクトの位置と回転は変更されないため、リジッドボディのシミュレーションは『コンストレイント』と同様に機能します。

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算
『リジッドボディシミュレーション』で、オブジェクトのトランスフォームは変更されない。

リジッドボディのトランスフォームを適用するには、[オブジェクト]メニュー>[リジッドボディ]>[トランスフォームを適用(Apply Transformation)]から適用できます。

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算
[オブジェクト]メニュー>[リジッドボディ]>[トランスフォームを適用]

リジッドボディオブジェクトのスケールもシミュレーションに影響しますが、スケールの場合は、常にアニメーションシステムによって制御されます。

リジッドボディの削除方法

オブジェクトのリジッドボディの物理シミュレーションは、[プロパティエディター]>[物理演算プロパティ]タブからか、または[オブジェクト]メニュー>[リジッドボディ]>[削除(Remove)]ボタンで削除できます。

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算
Blender オブジェクトメニュー リジッドボディ 物理シミュレーション 3DCG モデリング

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

[タイプ(Type)]

シミュレーションにおける剛体の役割。

[アクティブ]のオブジェクトは動的にシミュレーションでき、[パッシブ]のオブジェクトは静的なままになります。

  • [アクティブ(Active)] …オブジェクトがシミュレーション結果によって直接制御されます。こちらを選択する場合は、ツールバーの[オブジェクト]>[リジッドボディ]>[アクティブ追加(Add Active)]ボタンからでも設定出来ます。
  • [パッシブ(Passive)] …オブジェクトがアニメーションシステムによって直接制御されます。したがって、このタイプは[力学処理]では制御できません。こちらを選択する場合は、ツールバーの[オブジェクト]>[リジッドボディ]>[パッシブ追加(Add Passive)]ボタンからでも利用できます。
Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算

[設定(Settings)]

[重さ(Mass)]

重力に関係ないオブジェクトの重さと「重量」を指定します。 ツールバーの[オブジェクト]>[リジッドボディ]>[質量を計算(Calculate Mass)]で利用できる定義済みの『材質のプリセット』があります。

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算
[オブジェクト]>[リジッドボディ]>[質量を計算(Calculate Mass)]で表示される『質量プリセット』一覧
memo:『材質のプリセット』の[カスタム]について

[重さ]のボリュームに基づいてリジッドボディオブジェクトの質量値を自動的に計算します。メニューから利用可能な多くの便利な『材質のプリセット』があり、実世界のオブジェクトがリストとして並べられています。

また、[カスタム](『材質のプリセット』の一番下)選択後に表示される[オペレータパネル]から[密度]値(kg / m³)を設定することで、[カスタム]の材質タイプを設定することもできます。

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算

[ダイナミック(Dynamic)]

オブジェクトのリジッドボディシミュレーションの「有効」、「無効」を切り替えます。

ちなみに、「ダイナミック」とは「動的」の意味です。

動的【ダイナミック】dynamic

動的とは、状態や構成が状況に応じて変化したり、状況に合わせて選択できたりする柔軟性を持っていること。対義語は「静的」「スタティック」(static)。

引用元: 動的(ダイナミック)とは – IT用語辞典 e-Words

この項目にチェックが入っていないと、シミュレーションが動きませんので、ご注意ください。

[アニメ(Animated)]

リジッドボディシミュレーションの上で更に、アニメーションシステムで制御できます。

この項目を有効にしていると、『アニメーションシステム』によって制御される為、『リジッドボディシミュレーション』が効きませんので、「再生させてもリジッドボディを付与しているはずのオブジェクトが動かない!」と言った場合、気付かずにこの項目を有効にしてしまっている可能性がありますので、一度確認してみてください。

例えば、↓のように、途中まで[アニメ]を有効にしておいて、「[位置/回転]のキーフレーム挿入をして花一纏まりで動かす、シミュレーションを使わないアニメーション」→途中から[アニメ]を無効にして、「リジッドボディシミュレーションで花弁を散らすアニメーション」、といった操作が可能です。※[ダイナミック]を有効にするのを忘れずに

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 花 花弁 flower
[アニメ]を途中で切り替えでアニメーション

[コリジョン(Collisions)]

「コリジョン」とは、「衝突、激突、対立」といった意味を持つ英単語ですが、CG用語としては「衝突判定」という意味で使われるのが一般的です。

コリジョン

衝突判定ともよぶ。物理シミュレーションの一種で、モデル同士が衝突した際の挙動をシミュレーションする機能。ほかのモデルとの衝突時の反発の度合い(弾性)や、摩擦の度合いといった制約を設定し、ソフトウェアに自動計算させる。物体のリアルな動きを表現できるため、クロス(布や洋服の)シミュレーションなどで多用されている。

引用元: コリジョン|CG用語辞典|CGWORLD Entry.jp

[シェイプ(Shape)]

[シェイプ]では、オブジェクトのコリジョンに使用する形状を決定します。

既定の形状を使う「プリミティブシェイプ」タイプと、メッシュに自動的にフィットする「メッシュベースシェイプ」タイプ、大きく分けるとこの2種類になります。

プリミティブシェイプ

これらの[シェイプ]はメモリやパフォーマンスの点で最適ですが、必ずしもオブジェクトの実際のシェイプを反映しているわけではありません。 現時点では、重心は常に中央に位置します。

  • [ボックス(Box)] …平面(例:地面)を含むボックスのようなシェイプ(例:立方体)。 軸あたりのサイズは、『バウンディングボックス』から計算されます。
  • [球(Sphere)] …球のようなシェイプ。半径は、『バウンディングボックス』の最大軸です。
  • [カプセル(Capsule)] …Z軸を指すシェイプ。
  • [円柱(Cylinder)] …Z軸を指すシェイプ。高さはZ軸から取得されますが、半径はXまたはY軸の大きい方です。
  • [円錐(Cone)] …Z軸を指すシェイプ。高さはZ軸から取得されますが、半径はXまたはY軸の大きい方です。

『円柱』のメッシュオブジェクトでそれぞれの[シェイプ]を試したものが↓になります。

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算 コリジョン
[ボックス]

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算 コリジョン
[球]

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算 コリジョン
[カプセル]

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算 コリジョン
[円柱]

Blender リジッドボディ 物理シミュレーション 3DCG モデリング 物理演算 コリジョン
[円錐]

ちなみに、「プリミティブ」とは、「原始的な物、根源的な物」という意味がある英語ですが、3DCGでの用語では以下のような意味があります。

プリミティブ

3次元グラフィックスで、複雑な図形のモデリングを行なう際に構成要素として利用できる単純な図形のことをプリミティブという。ソフトウェアによって利用できる図形の種類は異なるが、立方体や直方体、球、円柱、円錐、トーラス(ドーナツ型)などが用意されていることが多い。

引用元: プリミティブとは – IT用語辞典 e-Words
メッシュベースのシェイプ

これらの[シェイプ]はオブジェクトのジオメトリに基づいて計算されるため、オブジェクトのより適切な表現になります。これらのシェイプの重心はオブジェクトの原点です。

  • [凸包(Convex Hull)] …すべての頂点を囲むメッシュのようなサーフェス(シュリンクラップ以上にフィットするような、頂点が少ない最良の結果)。 オブジェクトの凸近似は、優れたパフォーマンスと安定性を備えています。
  • [メッシュ(Mesh)] …三角形のみで構成されるメッシュ。[凸包]よりも詳細な相互作用が可能です。 凹面のオブジェクトはシミュレートできますが、かなり遅く、不安定です。

こちらの2つの[シェイプ]のタイプの違いは、例えば、箱型を1つのメッシュで構成されている箱に、ボール型のメッシュオブジェクトを収納したい場合、

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
箱型のメッシュといくつかのボール型のメッシュ

[凸包]では、くぼんでいる部分は無視されてしまうので、中に入っているボールがはじき出されてしまいますが、[メッシュ]では、メッシュの形状をそのままコリジョンとしての判定に使われるので、中に入っているボールはそのまま箱の底に収まります。

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[シェイプ: 凸包]
Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[シェイプ: メッシュ]
memo: オブジェクトの実際のシェイプについて

オブジェクトの実際のシェイプは、オブジェクトの『バウンディングボックス』に基づいて計算されます。[プロパティエディター]>[オブジェクトプロパティ]>[ビューポート表示]パネル>[バウンス]を有効にすると、ビューポートに表示できます。

Blender プリミティブシェイプ  バウンディングボックス 3DCG モデリング
『プリミティブシェイプ』を表す『バウンディングボックス』の表示・非表示切り替え

[ソース(Source)]

[シェイプ]で『メッシュベースのシェイプ(つまりは[凸包]か[メッシュ])』を選択すると、メッシュソースを指定できるようになります。以下の項目を選択できます。

  • [ベース(Base)] …オブジェクトのベースのメッシュ。
  • [変形(Deform)] …メッシュに追加された変形(『シェイプキー』、変形系の『モディファイアー』)を含みます。
    • [変形を考慮(Deforming)] …[シェイプ: メッシュ]を選択し、[ソース: 変形]を選択した場合、この項目が表示されます。有効にすると、シミュレーション中に変形する可能性があります。
  • [最終結果(Final)] …すべての変形と『モディファイアー』を含みます。

[表面の反応(Surface Response)]

[摩擦(Friction)]

移動に対するオブジェクトの抵抗。オブジェクトが互いに衝突した時の失速する速度を指定します。

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[摩擦: 0]
Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[摩擦: 1]
[弾性(Bounciness)]

オブジェクトが他のオブジェクトと衝突した後に跳ねる傾向を”0~1″の範囲で設定します(“0″で剛体、”1″で完全に弾性)。衝突後の弾みの度合いを指定します。

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[弾性: 0]
Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[弾性: 1]

[感度(Sensitivity)]

[衝突マージン(Collision Margin)]

カスタムの衝突マージンを使用します(シェイプによっては見た目に違和感が生じます)。

[余白(Margin)]

衝突判定が考慮されている表面付近の距離のしきい値(“0″以外の場合、その最良の結果)。

『衝突マージン』は、リジッドボディのパフォーマンスと安定性を向上させるために使用され、シェイプによって動作が異なります。一部のシェイプはそれを埋め込んでいますが、それ以外のシェイプは周囲に目に見えるギャップがあります。
そういったギャップのあるシェイプの場合、『マージン(余白)』が埋め込まれます。

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 モンキー スザンヌ
[衝突マージン]の有無で比較
  • マージンが埋め込まれるタイプ:
    • ボックス
    • カプセル
    • 円柱
    • 凸包:埋め込み時にのみ均一なスケーリングが可能です。
  • マージンは埋め込まれていないタイプ:
    • 円錐
    • アクティブな三角面メッシュ
    • パッシブな三角面メッシュ:ほとんどの場合、”0″に設定できます。

[コレクション(Collections)]

リジッドボディのコリジョンが異なるグループに割り当てられるようにします(最大20)。

異なるグループに属するリジッドボディオブジェクト同士はスルーされます。

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[コリジョン]

[力学処理(Dynamics)]

リジッドボディシミュレーションの物理を制御するために使用されます。 このパネルは、[アクティブ]タイプのリジッドボディでのみ使用できます。

[移動の減速(Damping Translation)]

時間の経過とともに失われる線速度の量。

デフォルトでは、”0.04″となっているのですが、”1″にしてみると↓のようになります。動きが凄くスローになります。

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[移動の減速: 1]

[回転(Rotation)]

時間の経過とともに失われる角速度の量。

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[回転: 0]
Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[回転: 1]

少し分かりにくかったので、同じフレームのコマの画像を重ねて比較してみました。

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 箱
[回転]の”0″と”1″の着地点の比較

[非アクティブ化(Deactivation)]

静止しているリジッドボディの非アクティブ化を有効にします。

シミュレーション中にオブジェクトを非アクティブ化できます(パフォーマンスと安定性は向上しますが、不具合が発生する可能性があります)。

[開始時に非アクティブ化(Start Deactivated)]

非アクティブ化されたオブジェクトのシミュレーションを開始します。他のオブジェクトとの衝突時にアクティブになります。

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 ボール 花 花弁 flower
[開始時に非アクティブ化]で、他のオブジェクトと接触時にアクティブ化する花弁オブジェクト
[線形速度(Velocity Linear)]

リジッドボディが非アクティブ化され、オブジェクトのシミュレーションを停止する線速度のしきい値。ここで指定した未満の線速度だと、オブジェクトを非アクティブ化します。

[角度(Angular)]

リジッドボディが非アクティブ化され、オブジェクトのシミュレーションを停止する角速度のしきい値。ここで指定した未満の角速度だと、オブジェクトを非アクティブ化の角速度を指定します。

『リジッドボディワールド』と『リジッドボディコンストレイント』

Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 リジッドボディワールド
『リジッドボディワールド』の[分離の衝撃]の例
Blender リジッドボディ リジッドボディワールド 物理シミュレーション 3DCG モデリング 物理演算 リジッドボディワールド
『リジッドボディコンストレイント』の例

別の記事へ移行しました。

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

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

Pocket