2

OpenGLを使用して、特定の平面で回転対称のオブジェクトのモデルをレンダリングしています。ユーザーがモデルをスクロールして(おそらく回転、ズームなどの後で)、どのワールド座標座標を決定できるかを確認したいと思います。マウスが現在指しているモデル。

対称性について言及した理由は、使いやすさのために、個々のコンポーネントのVBOを使用してモデルを構築しているためです。私がやっていることとの類似点は自転車のホイールです-スポーク用に1つ、ハブ用に1つ、ホイール/タイヤ用に1つあり、スポークVBOを何度も再利用します(後適切な翻訳と回転)。私の最初の質問は、この配置が私がやろうとしている種類のピッキングに役立つかどうかです。たとえば、結果のモデルで個々のスポークを「選択可能」にしたいと思います。私がやろうとしている種類の選択を行うために、メッシュ内のクワッド/トライアングルごとに個別のVBOが必要ですか?そうでないことを本当に願っています...

また、使用するのに最適なピッキングアルゴリズムは何でしょうか?OpenGLの組み込みの選択モードについて否定的なことしか聞いたことがありません。前もって感謝します!

4

1 に答える 1

3

VBOについての質問に関しては、VBOを少なくして再利用することに何の問題もありません。実際、すべてを1つのVBOに入れて、インデックスを作成することしかできません。自転車の車輪の例として、スポークの頂点の後にタイヤの頂点を続けることができます。また、スポークの頂点を数回描画した後(インスタンス化を使用する場合もあります。を参照glMultiDrawElements)、同じVBOから描画しますが、異なるインデックスから開始します。 、タイヤ。

選択の質問に関して、マウスの下にあるモデル上のポイントのワールド座標を取得する簡単な方法の1つは、深度値を読み戻すことです(glReadPixels1x1の長方形で、できれば最後のフレームのデータにピクセルバッファーオブジェクトを使用して)。転送待ち時間を非表示にします)。次に、を呼び出しgluUnprojectて世界座標を取得します。

于 2011-04-04T20:47:07.990 に答える