0

私は OpenGL (webgl) で 3D 透視投影を行っており、均一なマトリックスを使用して自分で行っています。すべてが正常に機能していますが、アスペクト比が 3:2 (600px x 400px) であり、レンダリングされたすべてのジオメトリが歪んでいます。

2D では、x と y をそれぞれ 1/幅と 1/高さで割ることにより、モデル マトリックスでこれを修正していました。

今、私も心配する必要があります.Zをどのように/どこで変換して、3:2のアスペクト比で歪まないようにするかはまったくわかりません.

モデルマトリックスはこれを行う機会を提供していないようで、射影マトリックスでどこで何をすべきかわかりません。

編集:射影行列:

@_pMatrix = [  
  1, 0.0, 0.0, 0.0,  
  0.0, 1, 0.0, 0.0,  
  0.0, 0.0, -(f + n) / (f - n), -1,  
  0.0, 0.0, -2.0 * n * f / (f - n), 0.0  
]  

列の主な順序

編集 2: n < 1 の奇妙な歪み 画像

4

1 に答える 1

1

*left*, *right*, *top*, *bottom*射影行列にがありません。

 2*n      
-----     0       0        0
 r-l

         2*n
  0     -----     0        0
         t-b

 r+l     t+b    -(f+n)
-----   -----   ------    -1
 r-l     t-b     f-n

                -2*f*n     0
  0       0     ------
                 f-n

(r-l)/(t-b) = 3/2ビュー ボリュームがモデルに適したサイズになるように定義すると、設定が完了します。

さまざまな射影行列とその導出方法を説明するいくつかのスライドを次に示します: http://www.cs.unm.edu/~angel/CS433/LECTURES/CS433_17.pdf

それらは、私がこのマトリックスを入手したInteractive Computer Graphicsの著者である Edward Angel によるものです。残念ながら、OpenGL Red Book は数学的にまったく機能していないようです。

于 2014-11-04T18:15:08.743 に答える