私は最近OpenGLを学び始め、GLとシェーダーとのコミュニケーションに関しては、十分な能力を身に付けましたが、座標系については少しわかりません。
私はOpenGLES2.0を使用しているので、すべてのマトリックス管理を自分で行う必要があります。私は次のことを理解するようになりました:
正しい結果を観察するには、行列をモデル*ビュー*射影として乗算します(行列の乗算は可換ではないため、これは完全に理にかなっています)。
モデル行列は、描画プリミティブの縮尺、回転、平行移動などを表します。3D空間でプリミティブを移動するには、この行列に変換を適用する必要があります。
ビューマトリックスは、多くの人が参照している「カメラ」を表しています。オブジェクトとビューアの間の距離、およびオブジェクトの周りの目の回転は、このマトリックスへの変換から生じます。
最後に、遠近法マトリックスは、シーンが存在する3D空間を表します。視野とアスペクト比を使用した遠近法を主に使用するいくつかの例を以下に示します。これが私の混乱の始まりです。
プリミティブの座標は、区間+-[0、1]のfloatとして与えられます。しかし、遠近法行列は、near-zからfar-zまでの3D空間を表します(それぞれ0と100であることがわかりました)。プリミティブの座標がこの空間にどのようにマッピングされるかについて、私は混乱しています。明らかに、私の線形代数のスキルは、この場合に望んでいるほど強力ではありません。これらの点がこの空間にどのようにマッピングされているかを誰かが明確にできますか?
たとえば、多くの例では、立方体を+-(。5、.5、.5)に定義しています。IIは、near-z = 0、far-z = 100、およびディスプレイ全体のアスペクト比のパースペクティブマートリックスを使用します。これは、立方体がこれらの各次元の0.5に常にあることを意味しますか?つまり、遠近法の行列がx=-5からx=5になるように機能する場合、x座標は最終的に.5(-5)= -2.5になりますか?