Sticky Walls
古いシステムの不運な問題は、大きな衝撃でマシンがウォール内部にスタックしてしまうことでした。巧みな修正を繰り返したにもかかわらず、我々はそれを完全になくすことはできませんでした。それは別の領域にありました。
新しいシステムでも、ペナルティメソッドのアプローチに由来する同様の問題があります。ペナルティメソッドでは、コリジョンシェイプを重ねられるようにする必要があります。その重なり度合が、妥当なコリジョンフォースを決定するのに使われます。残念ながら柔らかいオブジェクトや非常に目まぐるしく動くオブジェクトについては、このアプローチは破綻します。いくつかのシェイプがウォールを越えて誤った方に転じたら、マシン全体がスタックしてしまいます。
この問題は、特にボディパネルやフードなどの古いスフィアモデルよりも薄いパーツのシェイプでよく見られました。
この問題は部分的には、ミドルウェアが一般的に衝突/コリジョンを瞬間的にモデル化してしまうことが原因です。そうすることでシェイプが長時間重なったときに生じる問題を回避できるからです。
このトリッキーな問題を解決するために、色々と異なるメソッドを試しました。問題を予測して瞬間的な衝突/コリジョンの衝撃に戻そうとしましたが、結果は完璧とはならず、動きは納得のいくものではありませんでした。
これは困難な問題で、決して解決できないようにも思われましたが、しかし最終的に我々は独自アプローチを考案し、ペナルティメソッドの好ましい属性を維持したまま、コリジョンシェイプがウォールを通り抜けないようにすることを実現しました。
我々のアプローチは各コリジョンシェイプに個別のスフィアを配置することです。コアスフィアは対応するコリジョンシェイプでカプセル化するのに十分小さいものです。ほとんどの場合この二つのシェイプはくっついて移動しますが、コアシェイプはコリジョン環境物を通り抜けられないようにしています。
深い衝突/コリジョンでは、コアシェイプとコリジョンシェイプが分離します。コリジョンシェイプの衝突深度が深まる間、コアスフィアは表面またはその近くにとどまり、コリジョンシェイプが跳ね返るまでシェイプ表面を認識し続けることができます。このアプローチにより、一般的な落とし穴を回避しながらペナルティメソッドを使えるようになりました。
Tweaking Properties
新しいコリジョンシェイプを構築してダメージマウントを配置・接続しましたが、まだそれらに関連する全ての属性/プロパティをチューニングする必要があります。
コリジョンシェイプのプロパティは、mass(重量), material(素材), stiffness(剛性), damping(減衰), friction(抵抗)などです。ダメージを受けるマウントには、material(素材), yield limits(降伏限界), break limits(破壊限界)、といった属性/プロパティがあります。マウントのスプリング作用にはさらに多くの属性/プロパティがあります。
これらの属性/プロパティすべて、全てのマシンに対して注意深い調査と試験が必要です。これは巨大な仕事で、熱心な車両ダイナミクスエンジニアに任されることとなります。
ワークフローを向上して長期のプロセスを加速させるために、我々は「Tweaker」と名付けたライブエディットインターフェースを開発しました。Tweakerを使えば、シミュレーション実行中のマシンのすべての属性/プロパティを調整や、コリジョンシェイプやマウント位置の検査を行うことができます。
Tweakerはよく知られた Dear ImGui ライブラリを使って構築されており、エンジニアが新しいより早い作業方法を発見するために必要に応じてインターフェースをすばやく調整できるようになりました。
Tweaker使用中の画面例を紹介します。
Comments