5

3D シーン (OpenGL を使用した OpenSceneGraph) のナビゲーション手法を実装しようとしています。とりわけ、ユーザーは画面上のシーン オブジェクトをクリックしてそこに向かって移動できる必要があります。

ナビゲーション テクニックは、頂点シェーダーを使用してシーン ジオメトリにグローバルな変形を適用する別のプロジェクトに統合する必要があります。ここに問題があります。ジオメトリは頂点シェーダーを使用して変形されるため、マウス カーソルの位置を、ユーザーが実際に選択したスポットのワールド座標に非投影にするのは簡単ではありません。しかし、ナビゲーション技術で適切なカメラの動きを実行するには、これらの座標が必要です。

この非投影を実行する 1 つの方法は、頂点シェーダー (変形に使用される) を変更して、頂点の元の位置と法線を別々のテクスチャに保存できるようにすることです。その後、マウス位置でこれらのテクスチャを読み取って、目的の値を取得できます。

今、私が言ったように、頂点シェーダーは私が実際に触れたくない別のプロジェクトに属しています。私のナビゲーション手法の目標の 1 つは、他のプロジェクトにも簡単に統合できるように、できるだけ汎用的なものにすることです。

ここで質問です。OpenSceneGraph または OpenGL に、これまで考慮していなかった機能はありますか? 頂点シェーダー コーダーとは無関係に、フラグメントのワールド座標を取得できるものはありますか?

4

1 に答える 1

0

まあ、いつでも OpenGL 選択操作を行うことができます: http://www.glprogramming.com/red/chapter13.html

または、ユーザーがクリックした非常に小さな (1px*1px) フレームバッファにラスタライズし、Z バッファを読み戻して、取得した Z 値をワールド空間に投影解除することもできます。

于 2013-01-06T23:46:56.723 に答える