2016-05-28 28 views
1

私は、近くに、遠いクリッピング面を持つ投影についていくつかのパズルを持っています。
正面のブルーを+ z軸に、背面を赤色の-z軸に、キューブの一辺の長さを0.5としたキューブを作成しました。
モデルを作成し、行列の単位行列を表示し、正射影を例として取ります。 近くと遠く平面負の値をcliping設定すると、結果の顔は、次のように示した:OpenGLカメラが視錐台内にあるときの投影方法

orthogonal projection


私を困惑何:
1. OpenGL Projection Matrixは、近い面が投影面で、宣言するそれは正しい? OpenGLの実際の投影面は何ですか? glOrthoか何か同様のAPI使用
2:ニアクリッピング面が常にinterpet として -nearVal、およびファークリッピング平面のように解釈され

glOrtho(GLdouble left, GLdouble right, 
    GLdouble bottom, GLdouble top, 
    GLdouble nearVal, GLdouble farVal); 

-farVal .ITはとは何の関係もありませんカメラの視点方向はカメラの位置と方向がビューマトリックスに影響するため、ビュー変換後、OpenGLのカメラは常に-Z軸を指していると言うことができます。そのためnearValとfarValを上記のように解釈します。

3.上記の画像では、カメラが視錐台内にあるとき、どのように近くの平面に投影するのですか?結果を説明するのを助けてください。

答えて

2

OpenGLの実際の投影面は何ですか?

ありません。 OpenGLは数学だけです。あなたが使用する投影法は、あなたが提供する数学、したがってあなたが提供する投影行列に依存します。

私は正しいですか?

大部分です。ポストプロジェクションZは、「近いもの」とは何かを解釈する方法は、多くのことに依存します。それはあなたの投影行列に依存します。しかし、それはあなたのglDepthRange settingにも依存します。デフォルトでは、near planeを0、far planeを1にマッピングします。次に、depth testの設定があります。デフォルトはGL_LESSです。

深度範囲と深度テストのデフォルト値を使用する場合は、正しいと言います。

上記の写真では、カメラが視錐台内にあるとき、どのように近くの平面に投影するのですか?結果を説明するのを助けてください。

投影は常に近平面の方向に進みます。つまり、近い面に近いオブジェクトは、それよりも深い値が小さくなります(デフォルトのglDepthRangeと仮定します)。したがって、2つの平面の方向を逆にすると、どのオブジェクトが「近い」かが逆転します。したがって

:デプステスト無し

  1. レンダリングオブジェクトが「近い」であるので、両者の間に変化しないが、に使用されません。デプステストがなければ、というものだけがレンダリングの順番です。

  2. デプステストによるレンダリングとは、どのオブジェクトが近いかを意味します。したがって、重なりがある場合、最も遠いオブジェクトは表示されません。

  3. フェースカリングは、投影後のウィンドウスペースのオブジェクトの頂点の見かけのwinding orderに基づいています。近平面/遠平面の次数を変更すると、ウィンドウ空間座標のZが効果的に反転します。しかし、ウィンドーオーダーは、ウィンドウスペースZに基づいてではなく、です。それは座標の2次元投影を見るだけです。したがって、Zを反転しても巻線順序には影響しません。

    これは、青いオブジェクトが3番目のテストで勝った理由です。

    スペースを180度回転させると、スペースがのように反転します。は反転します。後者は-1のスケールに相当します。それはスペースの利便性の変化を表しています。あなたは厳密にローテーションすることによってそれを行うことはできません。あなたがここで行うようにZを否定することによって、あなたはその空間を反転させます。

"カメラの原点"は、正射影の投影には関係がありません。三角形がカメラの背後にあるという事実は投影法の計算とは無関係です。投影領域内にある限り、可視になります。

+0

ご返信ありがとうございます。今私はそれをはるかに良く理解しています。ステップバイステップのチュートリアルに続く初心者は簡単ですが、いくつかの実験だけでは難しくなります。質問に答えるスタイルは、初心者が学習を続けさせることを本当に奨励しています。あなたの本 "学習現代3Dグラフィックスプログラミング"は本当に素晴らしいです、私はまだそれを読んで終わっていません。ちょうどあなたが本のサイトのアドレスを更新した後、誰かがそれを見つけられないかもしれないことを知らせてください。 – wangdq

関連する問題