こんにちは、カバゴトです!今回はUnityアセット「Obi Rope」について解説したいと思います!
Obi Ropeとは
Obi Ropeについて、
Obi は、変形可能なさまざまなマテリアルの動作をシミュレートできる、粒子ベースの高度な物理エンジンです。
Burst がコンパイルできるすべてのプラットフォームとの互換性のために、Burst、Jobs、Collections、および Mathematics パッケージに依存します。これらのパッケージがなくても実行できますが、Windows、Mac、Linux、iOS、Android でのみ実行できます。
Obi Rope では、形状や動作を完全に制御することで、数秒でロープとロッドを作成できます。配向粒子テクノロジーにより、ロッドがトルジョン / ツイスト効果を提供できます。ロープがより軽量で、カット / サイズ変更できます。両方が環境と、そしてお互いに衝突し、剛体に接続できます。
このシステムは、他のロープソリューションとは異なり、剛体や関節に基づいていません。これは XPBD 粒子に基づいているため、より軽量で細かく、無条件に安定します。
引用元:公式サイト
引用元:公式サイトYoutbe
このロープアセットと特徴として、
- 粒子ベースの技術を使用しており、これにより非常に詳細でリアルな物理挙動を再現
- XPBD粒子技術の活用(XPBD:Position-Based Dynamics(PBD)の拡張版であり、物理シミュレーションにおける粒子ベースの手法)
- ねじれ、サイズ変更、物理的相互作用・切断等の調整が可能
- ロープやロッドの形状や挙動の調整が可能
などが挙げられます。
この記事は、2024年6月現在のアセットバージョン6.5.4を使用しています。今後、バージョンアップに伴い一部変更があるかもしれません。
ロープの作り方
Obi Rope | 物理エンジン | Unity Asset Store Get the Obi Rope package from Virtual Method and speed up your game development process. Find this & other 物理エンジン options on the Unity Asset Store.
まず、Asset Storeの「Obi Rope」にアクセスし、Unity上でインポートします。
「Game Object」→「3D Object」→「Obi」→「Obi Rope」で生成します。この段階ではまだロープは本体は見えません。
次にインスペクタービューの「Blue Script」→「Chain」を選択します。ここで、紐の種類を選択することができます。(今回はchainを作っています)
「Mesh Renderer」内の「Materials」→「要素」でロープの色を選択します。
これでロープを生成することができます。
ロープの編集
ロープの位置、大きさの編集
インスペクタービューの「Edit path」と書かれたアイコンを選択すると、ロープ専用のエディターが出現します。このエディター内で、ロープ内の点を移動させたり、ロープの長さを変更することができます。
Path editorにおける各アイコンについて、左3つのアイコンはUnityの3Dオブジェクトのアイコン同様、ロープ内の点の「移動」、「回転」、「大きさ」を編集できます。
obi公式サイトより
その他、アイコンは上のようになります。
Add control point tool :ロープ内の点を追加
Remove control points tool :ロープ内の点を削除
Open close path :ロープの端と端をつなぐ
Toggle tangent handles :接線表示のON/OFF
Toggle thickness handles :厚さ表示のON/OFF
他にも、「thickness」でロープ内の厚さ、「Name」でロープ内の点の名前を編集することができます。
ロープの性質の編集
インスペクター内の「Collision material」で摩擦力等の編集ができます。例えば、「High Friction」を選択すると、摩擦力が高くなり、平面に置いても滑らなくなります。
Obi Solverの編集
これまで「Obi Rope」内の編集を行ってきましたが、「Obi Solver」でも編集することができ、「Obi Rope」よりも細かい部分を変更することができます。
Obi Ropeの当たり判定
Obi Ropeは通常、普通の「Collider」では当たり判定を取得できず、3Dオブジェクトを通過してしまいます。(左側のロープ)
当たり判定を用いる場合、インスペクタービューの「コンポーネントの追加」→「Obi Collider」でObi Rope専用のコライダーを追加します。(右側のロープ)
Obi Ropeと他のオブジェクトをくっつける
下準備として、「Obi Solver」の中の「Obi Rope」を複製し、右側のインスペクタービューの「Blue Script」を「Very long cable」にします。また、「Game Object」→「3DObject」で何かしらのオブジェクト(今回はキューブ)を準備します。配置は好きなようにしてもらって構いません。
今回は分かりやすくするため、まっすぐなロープ(Very long cable)を用いました。他のBlueScriptを用いても実装可能です。
インスペクタービューで「Add Component」から「Obi Particle Attachment」を追加します。また、インスペクタービューの「Edit Pass」をクリックし、くっつけたい個所の粒子の名前(今回は”end”)を確認します。
「Obi Particle Attachment」の「Target」をくっつけたい対象のオブジェクト、「Particle group」を先ほど確認した粒子の名前(end)、「Type」は静的(Static)にします。
Static(静的)→ロープ内の粒子をオブジェクトに完全に固定する(粒子をオブジェクトにペアレント化)
使用用途
・ロープの一端を壁や天井に固定する場合
・旗のポールに旗の端を固定する場合
Daynamic(動的)→粒子を他のオブジェクトに動的に固定し、そのオブジェクトの動きに追従する。
使用用途
・ロープの一端をキャラクターの手に固定し、キャラクターが動くとロープも一緒に動く場合
・ロープの滑らかさ(ObiPathSmoother)
以上です。
シーンビューで動かすとロープが付いてきます。
終わりに
最後まで読んでくださりありがとうございます!今回は、Obi Ropeアセットの使い方について解説しました。もし、うまくいない場合や意見等あればコメントの方をよろしくお願いします!
私自身このアセットについてまだ知らないことが多いのでこれから学習していくつもりです!
この記事が参考になれば幸いです。また、次回のブログでお会いしましょう!
コメント