2012-05-02 12 views
2

2つのGLオブジェクト間の衝突を検出する簡単な方法はありますか?例:glutSolidCylinder & glutSolidTorus2つのGLオブジェクト間の衝突を検出する簡単な方法はありますか?例:glutSolidCylinder&glutSolidTorus

単純な方法がない場合は、このオブジェクトをその場所にどのように参照しますか?

私はその場所を持っている場合、何を考慮に入れるべきなのでしょうか?

+0

いいえ、既存のソリューション/エンジンを使用する以外は簡単な方法はありません(多数あります)。自分でやりたいのであれば、オブジェクトとその衝突プロパティをモデル化する必要があります。たとえば、myObject'には 'collisionVolume'というプロパティがあります。さらなる考察:ほとんどの(すべての)コリジョンアルゴリズムが凸ボリュームで動作するので、凸ボリュームの集合としての凹状衝突体積(トーラス)を表現する。がんばろう! – Torious

答えて

7

いいえ、簡単な方法はありません。これらはGLオブジェクトではありません。OpenGLはシーングラフやジオメトリライブラリではないため、オブジェクトを認識しません。三角形や点などのシンプルな図形を画面に描くだけで、それはまさにglutSolidTorusと友だちが行うことです。彼らは、位置などの性質を持つ抽象オブジェクトを構築しません。彼らは画面に三角形の束を描画し、現在の変換行列を使って頂点を変換します。

あなたが衝突検出や単純なオブジェクトやシーン管理のようなことをしようとしているときには、再び位置とジオメトリなどを使ってオブジェクトを管理することはありませんOpenGLのみ描画しますそれらが構成する可能性のある抽象的なオブジェクトの概念を持たない三角形

オブジェクトのジオメトリ(作成した三角形や頂点)を完全に制御できたら、それらを直接描画したり、衝突検出アルゴリズム/ライブラリにフィードしたりすることができます。球、円柱、またはトーリーのような数学的に記述可能なオブジェクトの場合、特殊なアルゴリズムもあります。しかし、心に留めておいてください。あなたが望む任意の抽象プロパティを持つオブジェクトとしてそれらのオブジェクトを管理するのはあなた次第です.OpenGLは単にそれらを描画し、それらのオブジェクトは単なるglBegin/glEndブロック以外の何も含まないヘプラー関数です。

1

衝突をチェックして管理するシステムが必要です。glutオブジェクトを使用することを主張する場合は、他のクラス/ジオメトリ表現で交差をチェックする必要があります。

いくつかの興味深いの読み取り/物理/衝突検出のリンクを:

www.realtimerendering.com/intersections.html

http://www.wildbunny.co.uk/blog/2011/04/20/collision-detection-for-dummies/ <彼はまた、他の記事が掲載されています、2Dのための原則は簡単に3まで拡張することができます寸法

http://www.dtecta.com/files/GDC2012_vandenBergen_Gino_Physics_Tut.pdf

編集、この本は良い芋です:http://www.amazon.co.uk/gp/product/1558607323/ref=wms_ohs_product

関連する問題