前のページがあります

GJK Collision Shapes

コリジョンシェイプを向上するために、熟成して効率のよかったスフィアとプレーンによるモデルから、凸形状を使った新しいシステムに置き換えることを決断しました。

効率良く処理することができるという点で凸形状は良い選択であり、それらを結合することでマシン形状に近づけることができます。

凸形状をサポートするために、GJKアルゴリズムを実装しました。これによってタイヤのシェイプ追加も簡単になります。GJKアルゴリズムの詳細は置いておいて、新しいシェイプを見てみましょう。

これはGJKシェイプで定義されたマシンの画像です。

新しいアプローチで、シェイプ集団同士を衝突させることができるようになりました。どちらのマシンも同じシェイプなら、非対称性の問題は解決するし、一貫性のある結果が得られます。

古いスフィアでは、ダメージエフェクトの表現として、それらを移動させることもできていました。マシンが曲がったり潰れたりしたときには、各スフィアが内側へ移動してしまうこともありました。

凸形状なら、これも向上させることができます。ダメージによって凸形状シェイプを変形させることができます。もっと言えば、各シェイプがダメージ部分からのみ変形作用を受けるよう、スフィアよりも細かく制御することができます。

この凸形状シェイプはアートチームには大規模な仕事でした。どのマシンも適切なシェイプを作り上げるためにどのように構成されているのか正確に再検討する必要があります。シャシーの下回り、ボディパネル、ウイングなどの他すべての形状をモデル化する必要があるので、マシンにフィットしたり適切な位置で取り外せる必要があります。多くの場合、マシンが実際にどのように組み上げられているかを正確に理解するためには、参考資料に戻る必要があります。

Contact Manifolds

凸形状シェイプの接触フィジクスは、スフィアとプレーンのモデルのようにシンプルではありません。

従来のシステムでは、スフィア/プレーンの接点を減らして、衝突/コリジョンとフリクションフォースを計算するという一点にすることができました。

これはシンプルでしたが、それをコーンは地面に置くためにそのベース板の角すべてで少なくとも 4つのスフィアを必要とし、これにより多くのオブジェクトでさらに多くのスフィアが追加されることとなりました。

他方、凸形状では、コーンのシェイプを 2つの凸形状シェイプだけで表すことができます: (ベース板を表すボックスとその上のピラミッド)。

しかし地面上のコーンを静止させるために、路面に接したコーンを支えるフォースを決定する必要があります。

コーンのシェイプをスフィアモデルのように分割するのではなく、地上にベースが静止する方法を決定したい。

これはコンタクト(接点)マニホールドと呼ばれることもあります。マニホールドは数フレームにわたる接点の集合を保持します。接点が保持されるので、コーンを支える端点の安定集合を構築することができます。

以下の図はコーンとそれを支える接点マニホールドを示しています。マシンが地表やウォールと接するとき、また同様に他のマシンやオブジェクトと接するときも、マシンの重要なパーツにこれと同じアプローチが使われます。

次のページがあります