OpenGLの研究ノート、「6」の座標系

  前記事では、頂点が-1.0と1.0の間(正規化デバイス座標)NDCの間である必要OpenGLを調整することを学びました。このような内部オブジェクトの座標の様々な構成要素間の関係を記述し、オブジェクト自体のための座標系のセットと異なる座標系、様々な構造を有することができるが、我々は調整するために毎日使用します。物体と物体座標系との間に設定され、座標は、オブジェクトなどとの間の関係を記述する。特定の座標変換に基づいて、異なる状況に対して異なる座標系を提供し、およびOpenGLは異なる正規化装置座標(NDC)に座標系を変換します。

  

 

 

   この画像は、上記の、我々は主に使用される座標系と、座標系のOpenGLに変換する方法が記載されています。

ローカル空間、モデルマトリクス

  ローカル空間は、物体の内部座標系で記述されています。例えば、画像、我々は、左下隅にデフォルト座標の原点(0、0)、画像長さ1の場合、我々は(1,1)と右上隅を発現します。モデル行列(モデル行列)、操作スケーリングオブジェクト、回転を含む変位変換行列モデルによる座標変換のワールド空間座標にローカル空間。

WORDL SPACE、ビュー行列

  世界空間、(0,0,0)の座標、オブジェクトAのように、物体と物体の座標との間の関係を記述するオブジェクトBの座標(2,0,0)、オブジェクトBを描画する際にはオブジェクトAの左側になり、二つのユニット間。オブジェクトのワールド座標を設定していない場合は世界座標(0,0,0)内の各オブジェクトのデフォルト値は、その後の効果は、すべてのオブジェクトが一緒に積層されたレンダリングすることです。ワールド空間座標は、オブジェクトの説明は、私たちの目の前に置かれるべき対象物に相当するビュースペース、カメラに、変位算出回転一連の主として、空間座標を表示するビュー行列(ビュー行列)によってビュー行列を変換することができます。前に適切な位置。

  宇宙の観点から、後述するカメラのコンセプトは、我々はこのような動きなど、さまざまなカメラ操作、回転させるだけでなく、異なるビュー行列(ビュー行列)を生成します

ビュー空間、投影行列

  空間のビューは、空間はまた、カメラ又は視覚空間と呼ぶことができ、ユーザの眼によって生成された座標の間の角度の関係に基づいて記載されています。つまり、オブジェクトを記述するために、私たちの目から、ある右、左、私たちの目の前にいるのですか?ビュー空間(ビュー空間)も、宇宙のカメラと同等です。空間座標のビューは空間座標をクリップする射影行列(射影行列)によって変換することができ、突起(1(NDC)、さらに正射影投影の異なる実施形態に応じて分割することができる-1のビュー行列標準デバイス座標に座標正射投影)と透視投影(透視投影)。ビジュアル・パフォーマンス、世界を見るために私たちの目に記述透視投影の場合:我々の最近のから小さく見える遠く離れた私たちから、大きく見える;および正投影は直接マッピングオブジェクトを座標、距離に差はありません画面上のそれへ。

クリップ空間

  クリップ空間座標系が記載されている-1 1に、この範囲内のオブジェクトがレンダリングされる、それは除外されません。また、この空間内に、オブジェクトの座標は、最終的に正規化装置座標(NDC)に変換されます。ビュー空間を切断すると、画面空間座標に対してインストール空間座標(NDC)をクリッピング、座標変換。

画面スペース

  スクリーン空間、我々は、対応する座標系を定義glViewportによって、すなわち幅および画面の高さ。

  OpenGLは座標系のさまざまなを提供していますが、また、私たちはさまざまなシナリオの下で適切な座標系を持って支援するために、さまざまなシナリオの下で変換する便利な方法があります。そして、の組み合わせのために設置スペースをクリップするオブジェクト空間から、ある変換、の私たちは、多くの場合、MVP。私たちのMVP変換が頂点シェーダで処理されるように加えて、我々はまた、約前に知り、頂点シェーダは主に、オブジェクトの頂点座標を取り上げました。

  一例として、従来の透視投影では、被験者の右に3つの単位、MVPマトリクス変換ユニットの前に目を記述します

// モデル行列 
GLM :: MAT4モデル= GLM :: MAT4(1.0F )。
モデル = GLM ::変換(モデル、GLM :: vec3(1.0Fは0.0fは0.0f );
 // ビューマトリックス 
GLM :: MAT4ビュー= GLM :: MAT4(1.0F ); 
ビュー = GLMは::翻訳を(ビュー、GLM :: vec3(は0.0fは0.0f、 - 3.0F );
 // 投影行列 
GLM :: MAT4投影= GLM ::視点(GLM ::ラジアン(45.0f)、800.0f / 600.0f0.1F100.0f );
 //传递给シェーダ
 // u_model =モデル。u_view =図です。u_projection =投影; 
... 
...頂点シェーダ
均一MAT4のu_model。
均一なMAT4のu_view。
均一なMAT4のu_projection。
ボイドメイン(){ 
    gl_Position = u_projection * u_view * u_model * vec4(APOS、1.0F )。  
}

  我々のモデルマトリクス前記目的の平行移動、回転、拡大縮小変換操作は、カメラのビュー行列我々はより複雑な効果発現の概念を導入することができ、マトリックス比較的固定された突起、幅および画面の高さに設定されている突起部を、距離パラメータ設定。

  

 

おすすめ

転載: www.cnblogs.com/zhong-dev/p/11672551.html