0

私はマルチエージェントアプリケーションに取り組んでいます。シミュレーション中、任意の時間ステップに存在するエージェントを表示します。このエージェントには固有の ID があります。

ピッキングを使用して、それらのオブジェクトを識別して操作したいと考えています。ピッキング方法は機能していますが、エージェントの ID を取得できません (エージェントの ID と相関していないジオメトリの ID しか取得できません)。そのため、新しく描画されたジオメトリに対応するエージェントの ID を割り当てる方法を見つける必要があります。

オブジェクトを描画するときにidを割り当てるopenglの方法はありますか(おそらくglBegin()とglEnd()の間)?

4

1 に答える 1

1

バックバッファ/FBOで各オブジェクトを異なる色にペイントし、ピックを行い、その時点でピクセルを読み取り、実際のフレームを人間が見るのに適切な色でレンダリングすることで、過去に成功しました。シェーダーを使用すると、両方を同時に行うことができます。

次に、テーブルで色を調べて、オブジェクトが何であるかを把握します。この方法は非常に遅いです。

より良い (より速い) 代替手段は、クリックした位置からレイをキャストして、シーン内のどのオブジェクトが交差するかを確認することです。潜在的なピッキング可能なオブジェクトのセットを減らすために、いくつかのプリミティブ錐台カリングを行うこともできます。

于 2012-11-14T02:56:22.133 に答える