今回はKangaroo2を使用して衝突判定を行っていきたいと思います。下のGIF画像の様に、白い布の様なジオメトリに風荷重与え、球体に衝突させていこうと思います。kangaroo2はこちらからインストールできますので、インストールしてからチャレンジしてみてください。こちらのチュートリアルは動画化しております、動画の方がよい方は以下のリンクからどうぞ!

目次
概要

上画像がプログラムの全体像となっております。各ブロックごとに説明していこうと思います。
球体に衝突させるメッシュを作成

- RectangleコンポーネントでXZ平面に1辺100mmの正方形を作成します。
- Mesh Planeコンポーネントで作成した正方形を縦横それぞれ50要素としたメッシュにします

- Sphereコンポーネントで半径15mmの球を作成します。球の中心点は、Rhinocerosでポイント打って指定しています。布の中心から、若干手前の位置に設定しました。
ゴールオブジェクトの設定(show)

- 今回は、先ほど作成したメッシュの挙動を見たいので、Mesh Planeコンポーネントの出力端子をShowコンポーネントに接続します。
ゴールオブジェクトの設定(Edge Lengths)

- Edge Lengthコンポーネントでメッシュのエッジをスプリング化します。Length Factorは今回は1.0とし、最終的に等倍のエッジに変形させます。Strengthには10を入力しています。
ゴールオブジェクトの設定(Collider)

- 2種類のコライダーを設定していきます。Deconstruct Meshコンポーネントでメッシュの頂点を取得します。
- SphereColliderコンポーネントを用意します。こちらは、白い布が急に当たって変形した際に、布同士のメッシュが交わらないようにするために設定します。取得した頂点に指定した半径の今回は1.95mmの球が作成され、その旧同士が衝突していきます。こうすることで、作成したメッシュが布っぽい挙動をしてくれます。
- SolidPointCollideコンポーネントを用意します。Pointsに先ほど取得したメッシュの頂点を、Solidに作成した球を入力します。これでメッシュと球の衝突判定がされます。
ゴールオブジェクトの設定(wind)

- Windコンポーネントでメッシュに風荷重を与えて、球体の方に飛ばします。
Solverに接続

- Entwineコンポーネントにゴールオブジェクトをまとめます。Showコンポーネントのみ後で取り出しやすくするために最初のブランチに個別で格納します。
- Bouncy Solverコンポーネントに接続します。ButtonコンポーネントをReset端子に、ToggleコンポーネントをOn端子に接続します。
- ToggleをTrueにして演算を開始します。上画像の様に布が球体に衝突していればOKです
メッシュをサーフェイス化

- List Itemコンポーネントで0番目を取得することで、演算後のメッシュが取得できます。
- Deconstruct Meshコンポーネントで取得したメッシュの頂点を取得します。
- Surface From Pointsコンポーネントで取得した頂点からサーフェイスを作成します。Uカウントには最初にメッシュを分割した数+1を入力します。
- 最後にCustom PreviewコンポーネントとColour Swatchコンポーネントで球体と布の様なサーフェイスに色付けして完成です。
以上になります。非常に基本的な使用方法となります。Kangaroo2を学習していくきっかけとなればと思います。
【参考文献】
- AppliCraft : https://www.applicraft.com/ghcp_kangaroo2/