私は、単純な画像が遺伝子改変フライに表示されている実験的セットアップを扱っています。その画像は、その飛行距離と一定の距離を置いてスクリーンに投影されます。OpenGLパースペクティブ補正を設定するには?
ここでは、水平方向のバーなどの表示された画像がフライの視点から遠いほうに表示されるように、パースペクティブ補正を設定します(experimental setup)。コードは次のようになります。
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(!USEFRUSTUM)
gluPerspective(90.0f, 2 * width/height, 0.1f, 100.0f);
else
glFrustum(92.3f, 2.3f, -25.0f, 65.0f, 50.0f, 1000.0f);
値は数年前に誰かによって入力されましたが、私たちはもう正確ではないと考えました。しかし、実験的な設定で見ることができるように、フライの視界は少し傾いているので、投影を適切にするために入力するか変更する値が混乱しています。
Iがこれらの値を考え:投影スクリーン
- しかしzNearは何ですか?フライから画面の上部または下部までの距離を測定する必要がありますか?私はなぜ誰かが0.1fに入った理由を知らない。
- zFarの値はどのように知ることができますか?それは、飛行するオブジェクトの最大距離ですか?
私はからglPerspectiveに私の情報を得た:私もSimplest way to set up a 3D OpenGL perspective projectionをチェックしますが、このポストは私の混乱の源である私の実験を、扱いませんhttps://www.ntu.edu.sg/home/ehchua/programming/opengl/CG_BasicsTheory.html 。
ありがとうございました!
ちょっとdatenwolf!ご回答どうもありがとうございました。今、私は、近所、下、左、右の測定方法と、私の場合の錐台がどのように見えるかを理解しました。私がまだ理解していないのは、倍率を決定する方法です。 「OpenGLプログラミングガイド:OpenGLの学習のための公式ガイド、バージョン3」(Googleの書籍)を読んで、私の測定値が一貫したユニットを使用している限り、私はそれらをスケーリングしないままにすることができます。深さの範囲は、フライの視野の深さに依存する可能性がありますか?私は、私の同僚と適切な価値について話し合うかもしれないと思う。 – TheCooocy
@TheCooocy:はい、あなたは完全に限り、あなたは、OpenGLで描画しているすべてのジオメトリが一致しているとして、 'S'(すなわちS = 1)を省略することができます。あなたは物理的なビーイング(動物)と対話しているので、それは多くの意味が投影システム「外」の中で測定される。ただし*近くにあなたが同じ物理単位でのOpenGLで描画するつもりジオメトリを定義可能*距離は、実際の画面までの距離ではなく、おそらくフライの目の前に少し小さな画面をイメージして、フライに近づくようにしてください。しかし、セットアップの物理的な制約のためには、その大きな画面を使用する必要があります。 – datenwolf
@TheCooocy:だからあなたが、その後どうなるのかN_/nはその要因 'と、右、下、上と左の近くに「仮想」の距離近く' n_'と実際の画面距離 'N'、とスケールの間の比を取ることです'。あなたがすべてをやっているならば、* mm *単位は、オブジェクトが突然消えるカットオフ距離になります。デプスバッファの解像度に関する実際的な理由から、* far *の値を小さく、* near *の値を可能な限り小さくして、描画したいジオメトリに対応する値を選択する必要があります。 – datenwolf