2

モデルをロードしてOpenGLでテクスチャリングできる基本的な.objメッシュローダーを作成しました。しかし、私の質問は、それらにバウンディングボックスを配置するための最良の解決策は何でしょうか。たとえば、円であるモデルをロードする場合、その周りにAABBを配置することは、ひどい解決策になりますか?

私の考えは、オブジェクトにグローバルAABBボックスを持たせ、モデルにさらに完全なバウンディングボックスのリストを持たせることです。

私の質問は、このより完璧なバウンディングボックスのリストを作成するために何を使用すればよいですか?

4

1 に答える 1

1

衝突検出のための「より完璧なバウンディングボックス」について心配する必要はありません。それは彼らのポイントではありません。必要なのは境界要素(場合によってはそれらの階層)です。これにより、交差を簡単にテストし、基本交差テストを実行する必要のないポリゴン/要素の大規模なセットを拒否できます。

まず、AABB(または、単純にするために境界球)から始めます。そして、トップダウンまたはボトムアップ(適切なヒューリスティックを使用)のいずれかで、それらからツリーを構築します。トップノードには、モデル全体に​​適合する大きなAABBがあります。また、各ブランチ(AABBを含む)には、メッシュのさらに小さなサブセットが含まれています。最終的なツリーのバランスをとる必要があります。

AABBが問題を引き起こしていることに気付いた場合(おそらく十分なパフォーマンスがない場合など)、いつでも他の境界要素を選択できます。おそらくOBBまたはk-DOP。たとえば、私たちの衣服シミュレーションコードでは、k-DOPが適切であることが示されています。

いずれにせよ、「リアルタイム衝突検出」という本を調べてみてください。このトピックについて詳しく説明しているので、このようなトピックに興味がある場合は、IMHOの優れたリソースです。ただし、最初は単純にしてください。それらを機能させてから、最適化について心配してください。

于 2011-12-08T10:04:54.713 に答える