CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender2.9】コリジョンでオブジェクト同士の衝突判定を追加できる!
こんにちは!
Blenderの使い方や機能、ノウハウについてまとめているUEDAです。
自分のためのアウトプットの意味合いもありますが、読んだ方の参考になれば嬉しいです。
今回はクロスやソフトボディを使う上で欠かすことのできない〔コリジョン〕についてまとめていきます。
合わせて以下の記事もぜひ読んでみてください!
他の物理演算についてもまとめているので、ぜひ読んでみてください。
コリジョンとは?
コリジョンとは、衝突判定をオブジェクトに追加するための物理演算です。
壁や机、床などのオブジェクトに追加することで、他の物体が物理的に接触する様子を再現することができます。
例えばコリジョンがないと、自由落下した球体が床をすり抜けるなんてことになってしまいます。
コリジョンを追加したオブジェクトの衝突対象は、パーティクルとソフトボディ、クロスを追加したオブジェクトになります。
追加方法
コリジョンの追加方法は以下の2種類があります。
- 物理演算プロパティ
- モディファイアープロパティ
どちらでも一緒なので、好きな方から追加してもらえればよいです。
ここで大事なのは、「コリジョン = モディファイアー」ということです。
順番によって他のモディファイアーの影響を受けることがあるので気を付けましょう。
これはモディファイアーの基本になるので、詳しくはコチラから確認してください!
物理演算プロパティ
画面右側の〔物理演算プロパティ〕を開くと、物理演算が一覧で表示されます。
この中から〔コリジョン〕を選択することで、選択オブジェクトにコリジョンを追加することができます。
この後の調整などの基本操作も、このプロパティから行うことができます。
モディファイアープロパティ
他のモディファイアーと同様に、モディファイアーの一覧から追加することができます。
先ほども書きましたが、〔物理演算プロパティ〕から基本操作を行います。
なのでモディファイアーで追加した場合は、下記のボタンから移動することができます。
設定
コリジョンの設定は、衝突対象によって別になります。
- フィールドの吸収
- パーティクル
- ソフトボディとクロス
それでは1つずつ見ていきましょう。
フィールドの吸収
まず1つ目は〔フィールドの吸収〕です。
この値を上げていくことで、フォースフィールドの強さを抑えることができます。
この機能に関しては、動画での比較が見やすく非常に分かりやすいです。
ぜひ読んでみてください。
パーティクル
2つ目は〔パーティクル〕です。
コリジョンを追加したオブジェクト(以下より”X”)に、パーティクルが衝突した時に与える様々な影響を調整できます。
〔透過度〕は、パーティクルがXに衝突後にどの程度透過するか設定できます。
値が”1.00”に近くなるほど、パーティクルを透過させる割合が高くなります。
〔付着度〕は、パーティクルがXの表面にどの程度くっつくか設定できます。
ある値を越すと全く跳ねずに、吸着します。
〔パーティクル消滅〕は、オンにすることでパーティクルがXに接触すると消えるようにできます。
以下の動画では〔付着度〕を最大値にしています。
〔減衰〕は、パーティクルがXに接触すると速度が遅くなります。
最大値にしても速度が”0”になるわけではありません。
以下の動画では〔透過度〕を最大値にしています。
下部の〔ランダム化〕の値を上げていくと、それぞれのパーティクルへの〔減衰〕の影響にバリエーションが加えられます。
〔摩擦〕は、パーティクルがXの表面上で移動する時の摩擦力を設定できます。
摩擦力が大きくなると、パーティクルが摩擦力によって移動しづらくなります。
以下の動画では〔付着度〕を最大値にしています。
下部の〔ランダム化〕は、先ほどの〔減衰〕の〔ランダム化〕と同じです。
摩擦で設定した影響力にバリエーションが加えられます。
ソフトボディとクロス
3つ目は〔ソフトボディ〕と〔クロス〕です。
コリジョンを追加したオブジェクト(以下より”Y”)に、ソフトボディもしくはクロスが衝突した時に与える様々な影響を調整できます。
〔減衰〕は、Yに接触した時のソフトボディ・クロスの弾性を押さえることができます。
”0.00”が最大の跳ね返りで、”1.00”に近づくほど小さくなっていきます。
〔外側・内側の厚さ〕は、ソフトボディ・クロスのYに接触する頂点の外側・内側に遊びを作ることができます。
下記の画像は公式のもので、青い矢印が法線になります。
オブジェクトの法線によって方向が定義されて、外側・内側に遊びができる感じですね。
出典:Collision — Blender Manual https://docs.blender.org/manual/fr/2.93/physics/collision.html
後ほども触れますが、貫通する場合に〔外側の厚さ〕を調整してみてもよいかもしれません。
また法線に関してはコチラの記事でまとめているので、ぜひ読んでみてください。
〔摩擦〕は、クロスがYの表面上で移動する時の摩擦力を設定できます。
値を大きくすると、表面上で全く滑らなくなります。
〔片面〕は、簡単に言うとクロスとYのめり込みを防止する機能です。
公式には以下の様に記載されていました。
有効にすると、コライダは薄いサーフェスではなくソリッドオブジェクトの境界を表すと見なされ、交差するクロスを法線の方向に排出します。
出典:Collision — Blender Manual https://docs.blender.org/manual/fr/2.93/physics/collision.html
デフォルトでオンになっているので、そのままで問題なさそうです。
めり込みに関する不具合が出てきたら、ここをオフにするのを試してみてもよいかもです。
〔法線をオーバーライド〕は、Yの法線方向に接触時のクロスの力が作用します。
以下の動画【No.4の事例】で取り扱っています。
突起物に対しても綺麗にシュミレートすることが可能になるようです。
オブジェクトの鋭い部分が貫通してしまうようであれば試してみてください。
また公式ではいくつかのケースで有効とあるので、貫通してしまった場合は試してみてもよさそうな機能ですね。
削除
追加したコリジョンを削除したい場合は、〔物理演算プロパティ〕から行う必要があります。
他のモディファイアーの様に、モディファイアーのスタックから削除することはできません。
コチラのバツ印から削除することができます。
右側の目のマークを押してグレーにすると、コリジョンを無効にすることもできます。
貫通・すり抜ける
物理演算のシュミレーションで遭遇する貫通・すり抜けについてまとめていきます。
まずコリジョンで調整できる機能については以下の2種類になります。
外側・内側の厚さ | 衝突対象と距離を作ることで貫通を回避(外側が基本) |
法線をオーバーライド | 突起がある場合に有効(他の場合でも有効かもしれない) |
〔法線をオーバーライド〕はコリジョン特有の機能なので、貫通に試してみるのはアリですね。
如何せん、使うタイミングがあまり分かっていなくて使いづらさはありますが。
〔外側・内側の厚さ〕に関しては、衝突対象のオブジェクトにも同じような機能があります。
例として〔クロス〕は、コリジョンという項目内に〔オブジェクトのコリジョン〕→〔距離〕とあります。
この〔距離〕がコリジョンとの衝突判定を行う距離になるので、貫通が起こる場合は数値を上げることで回避することができます。
下部の〔セルフコリジョン〕に関しては、クロスがクロス自身と貫通してしまっている場合に有効です。
これをオンにすると頂点数が多い場合はかなり重くなるので注意です。。
これらは他の物理演算にもあるので確認してみてください。
他にも有効な〔品質のステップ数〕という機能があります。
この数値を上げると1フレーム当たりのシュミレーションステップ数を上げて、品質を向上させることができます。
先ほどは物理的に貫通を防ぐ方法でしたが、こちらはパソコンのスペックを頼りに貫通をなくす方法になります。
10~12位にはいつも上げているので、自身のパソコンと相談してあげるのがよいでしょう。
後は〔Blender 2.73〕時代のことのようですが、あまりにもオブジェクトの大きさが小さいと上手い事処理が行えない事例もある用でした。
全体のスケール比率を変えずに大きくすることでも回避できる可能性があるので、頭に入れておくとよいでしょう。
まとめ
物理演算を使用する場合のお供として欠かすことのできない機能ですね。
普段使っていると細かい機能はよく分かっていなかったので、これで貫通への対処の引き出しを増やすことができました。