CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender3.0】リジッドボディ(剛体)を使ってみよう!【物理演算】
はじめに
こんにちは!
今回は、Blenderで使える物理演算機能のひとつ「リジッドボディ」(剛体)の使い方・シミュレーションがうまくいかないときの対処法を紹介したいと思います。
また、リジッドボディを適用したオブジェクト同士を拘束できる、「リジッドボディコンストレイント」の設定方法についても紹介します。
リジッドボディとは?
リジッドボディを直訳すると「剛体」です。
「剛体(ごうたい)」とはその他の通り、「非常にかたくて、つぶしても引っ張ったり曲げたりしても全く変形しない、仮想的な物体」のことです。
力学用語の「剛体」について、詳しくはWikipediaなどを参照ください。
リジッドボディは、剛体を使ったシミュレーションの機能です。
固いものの運動(落とす、転がす、滑らせる、重ねる、ぶつける…など)を表現するのにピッタリです。
「リジッドボディ」と対照的に、柔らかくて変形しやすいもののシミュレーションに適した「ソフトボディ」の物理演算機能もあります。
こちらについては、近いうちに別記事で紹介しますので少々お待ちください。
リジッドボディの使用例
リジッドボディを使うことで、さまざまな「固いものの動き」を表現できます。
例えば、こちらのようにリンゴを坂道に落下させて転がすことができます。
また、破壊を表現できるアドオン「Cell Fracture」と組み合わせることで、こちらのように落下させて壊すこともできます。
割れた後の破片が飛び散る様子も、リアルに表現できます。
Blenderの標準搭載アドオン「Cell Fracture」の使用例については、こちらも併せて参照ください。
リジッドボディの適用方法
リジッドボディを適用する方法は2つあります。
流体やクロスシミュレーションなど他のシミュレーションと同様に、こちらのように「物理演算プロパティ」から「リジッドボディ」を選択することで適用できます。
選択すると、こちらのような設定画面が出てきますが、内容についてはあとで説明します。
「リジッドボディ」以外にもBlenderにはさまざまな物理演算機能があります。
詳しくはこちらの記事を参照ください。
また、こちらのようにオブジェクトを追加した状態で、画面左上の「オブジェクト→リジッドボディ」からも追加できます。
ちなみに、同じリジッドボディの設定を複数オブジェクトに適用する場合は、以下の動画のように「オブジェクト→リジッドボディ→アクティブからコピー」を使うと便利です。
動画で示した手順はこちらです。
- 複数のオブジェクトの1つにリジッドボディを設定する。
- 残りのオブジェクトを「Shift+左クリック」で選択する。
- 「Shift」を押したまま、先ほどリジッドボディを設定したオブジェクトを最後に選択する。
- 「オブジェクト→リジッドボディ→アクティブからコピー」を選択する。
- →残りのオブジェクトにリジッドボディが設定される。
リジッドボディの主な設定項目
実際にリジッドボディを使う上で覚えておきたい、主な設定項目を説明します。
タイプ~アクティブとパッシブ
リジッドボディには「アクティブ」と「パッシブ」の2種類があります。
- アクティブ:重力や、他のリジッドボディとの衝突などの影響を受けて動く。
- パッシブ:自分自身は動かないが、他のリジッドボディの運動に影響を与える。
基本的に、リジッドボディを使うアニメーションでは、「アクティブ」と「パッシブ」の2つを組み合わせて物体の動きを表現します。
先ほどの例を挙げると、リンゴには「アクティブ」、坂道には「パッシブ」を設定しています。
坂道に「パッシブ」を設定しないと、こちらのようにリンゴは坂道をすり抜けてそのまま落下し続けてしまいます。
ぜひ「リジッドボディ」は「アクティブ」と「パッシブ」の2つを組み合わせて使う、ということを意識してみてください。
設定
こちらの項目では、以下の3つを設定できます。
重さ
文字通り、物体の「重さ」を設定できます。
こちらのように、転がす物体を重くすることで、他のオブジェクトにぶつかったときの衝撃が大きくなります。
ダイナミック
チェックを入れている間は、リジッドボディとして振舞います。
使用例としては、こちらのようにダイナミックのON/OFFにキーフレームを挿入することで、リンゴが落ち始めるフレーム数を1個1個変えることができます。
アニメ
「アニメ」にチェックを入れている間は、オブジェクトにはリジッドボディが適用されません。
その代わりに、「位置」「回転」などにキーフレームを追加して動かすことができます。
使用例として、「アニメ」を使うことでオブジェクトに初速を与えることができます。
こちらのように、「アニメ」をONにした状態で1&5フレームで「位置」にキーフレームを追加して立方体を動かし、そのあと6フレーム目から「アニメ」をOFFにします。
すると、立方体が上に放り投げられるような動きを表現できます。
コリジョン
衝突判定に使う形状を設定します。
「シェイプ」の項目で、メッシュを覆う衝突判定の形状を設定します。
「ボックス」や「球」など単純な形状や、メッシュを覆う多面体の「凸包」、メッシュ形状をそのまま衝突判定に使う「メッシュ」が選択できます。
基本的にはデフォルトの「凸包」で問題ありませんが、たとえば箱など凹んでいる形状の場合は「メッシュ」にする必要があります。
ただし「メッシュ」にすると多少計算が重くなります。
表面の反応
弾性係数と摩擦係数を変更できます。
「摩擦」を大きくすると滑りにくくなります。
「弾性」はデフォルトでは0になっていますが、1に近い値に設定するとボールのように弾むようになります。
力学処理(アクティブのみ)
「アクティブ」については、こちらの項目を調節できます。
移動・回転の減速
リジッドボディで動く物体は、「移動・回転の減速」の影響を受けて、(力がかかっていない状態では)次第に減速します。
しかし、こちらのように「移動(回転)の減速」を0に設定すると、たとえばこちらのように延々とバウンドし続けるようになります。
非アクティブ化
こちらにチェックすることで、他のリジッドボディと衝突するまでは固定し、ぶつかったあとで「アクティブ」リジッドボディとして振舞うようになります。
リジッドボディの設定の詳細については、こちらの記事を参考にしてください。
重力・リジッドボディワールドの設定
重力など、「ワールド内に存在するすべてのリジッドボディ」に適用されるプロパティは「シーンプロパティ」で設定することができます。
重力
重力の有無・方向・値を調節できます(デフォルトは地上と同じZ=-9.8m/s^2)。
リジッドボディワールド
シミュレーション上の時間経過の速度や、重力を含めたフォースフィールドの影響などを調節できます。
「リジッドボディワールド」の詳しい説明については、こちらの記事を参照ください。
リジッドボディがうまくいかないときは?
リジッドボディがうまくいかないときの対処方法を紹介します。
オブジェクトが吹っ飛ぶ
リジッドボディシミュレーションでよくあるのが「オブジェクトが吹っ飛ぶ」というトラブルです。
その場合、こちらのようにリジッドボディ同士が重なって(貫通して)いることが考えられます。
オブジェクト同士が重ならないよう、少し隙間をあけてあげるとうまくいきます。
また、凹んだ形状で「コリジョン」を「凸包」に設定している場合は、「メッシュ」に変えることで直ります。
貫通する・すり抜ける
さきほど「リジッドボディの主な設定項目」で説明したように、対象となるオブジェクトにリジッドボディ(パッシブ)が設定してあるか確認してみてください。
動かない
「リジッドボディ(アクティブ)」オブジェクトの、ダイナミックのチェックが外れていないか、「アニメ」にチェックが入っていないか確認してみてください。
また、「落下しない」場合は重力がゼロになっている可能性があります。
先ほど紹介した「シーンプロパティ」→「重力」にチェックが入っているか、あるいは「リジッドボディワールド」を確認してみてください。
リジッドボディコンストレイント~リジッドボディの動きを制限
Blenderには、「リジッドボディコンストレイント」という、リジッドボディ同士を拘束するための物理演算機能があります。
リジッドボディコンストレイントについても紹介します。
リジッドボディコンストレイントとは?
リジッドボディ同士を関連付けて、リジッドボディの動きを拘束することができます。
リジッドボディコンストレイントを付けると、こちらのようにリジッドボディを水車やばねのように動かすことができます。
リジッドボディコンストレイントの種類と設定方法
リジッドボディコンストレイントは、こちらのように物理演算プロパティから追加します。
リジッドボディを設定してないと、リジッドボディコンストレイントは有効になりません。
リジッドボディコンストレイントは、こちらのように8タイプあります。
固定
2つ以上のリジッドボディの位置関係が回転も含めて完全に固定されます。
例えば、こちらのように球と円錐をくっつけると、円錐は傾くことなく転がります。
ポイント
2つ以上のリジッドボディが、中点間の位置関係を保つように固定されます。
ただし、「固定」と違って回転は拘束されません。
ヒンジ
オブジェクト座標系のZ軸回りに回転するようになります。
オブジェクトの座標軸の表示の仕方、回転方法はこちらを参照ください。
スライダー
オブジェクトのX軸方向にのみ動くようになります。
X軸回りの回転も拘束されます。
ピストン
オブジェクトのX軸方向のみ動くようになりますが、「スライダー」と違ってX軸回りの回転は拘束されません。
汎用
「スライダー」と「ピストン」ではオブジェクトのY,Z方向の動きが拘束されるのに対して、「汎用」は拘束する方向を自由に設定できるようにしたものです。
汎用ばね
「汎用」に、ばねの要素を追加したものです。
上のようにオブジェクトX方向に振動させたい場合は、こちらのように「リミット」のY,Z方向にチェックを入れて制限値を設定し、「ばね」のX方向にチェックを入れます。
「ばね」の「剛性」「減衰」の値を調整することで、ばねの強さや減衰を操作できます。
モーター
文字通り、モーターのように回転、またはリニアモーターのように直線運動するようになります。
モーターの応用ですが、「ヒンジ」と組み合わせることで、プロペラを回転させることができます。
↑の作り方は、こちらのチュートリアル動画(英語)を参照ください。
リジッドボディコンストレイントは1オブジェクトにつき1個しか設定できませんが、こちらの動画のように「エンプティオブジェクト」を利用することで、2個以上設定することが可能になります。
まとめ
「リジッドボディ」について紹介しましたが、いかがだったでしょうか?
リジッドボディを使うことで、より表現の幅が広がりますので、ぜひこちらの記事を参考に試してみていただければと思います。
最後に、今回のまとめです。
- リジッドボディとは?…剛体を使ったシミュレーションの機能で、固いものの運動を表現できる。
- リジッドボディの主な設定項目
- タイプ~アクティブ、パッシブ
- 設定~重さ・ダイナミック、アニメ
- コリジョン:衝突判定の形状
- 力学処理(アクティブのみ)~移動・回転の減速、非アクティブ化
- 重力・リジッドボディワールドの設定
- リジッドボディがうまくいかないときは?
- オブジェクトが吹っ飛ぶ
- オブジェクト同士が重ならないよう少し隙間を空ける
- コリジョンを凸包→メッシュに変更
- 貫通する・すり抜ける・動かない→リジッドボディの設定を確認
- リジッドボディコンストレイント
- リジッドボディコンストレイントとは?:リジッドボディ同士を関連付けて、リジッドボディの動きを拘束する機能。
- リジッドボディコンストレイントの種類と設定方法
- 固定・ポイント
- ヒンジ
- スライダー・ピストン・汎用・汎用ばね
- モーター
- 「ヒンジ」「エンプティ」と組み合わせることでプロペラを回転させられる。