今回は 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 を学習していくきっかけとなればと思います。
【参考文献】