1

ユーザーの位置に応じて画面のコンテンツが変化する軸外投影効果を取得しようとしています。これは、このビデオで行われていることと似ています:
http://www.youtube.com/watch?feature=player_embedded&v=Jd3-eiid-Uw

上記の効果を達成するために軸外投影が適切な方法である理由がわかりません。1) glFrustum を使用する 2) lookAt() を使用
する 上記のアプリケーションでは、「カメラ」は基本的にユーザーの位置に従って移動します。透視投影の ( 、、、、 )のglFrustum座標は、ユーザーが移動したときに別の位置から表示されるように、画面上のオブジェクトを変更するために指定されています。leftrightbottomtopnearfar

同時に、これはカメラをユーザーの位置に変換し、カメラの中心に を与えることに非常に似ていると思いgluLookAt(centerPosition)ますlookAt。しかし、これでは必要な効果が得られず、なぜこれが起こっているのか知りたいと思っていました.

ここに画像の説明を入力

上記の2つの違いは何ですか?

軸外投影は、OpenGL で次のように実現されます。

glMatrixMode(GL_PROJECTION);  
    glLoadIdentity();            
    glFrustum(fNear*(-fFov * ratio + headX),  
              fNear*(fFov * ratio + headX),  
              fNear*(-fFov + headY),  
              fNear*(fFov + headY),  
              fNear, fFar);  
          
    glMatrixMode(GL_MODELVIEW);  
    glLoadIdentity();  
    gluLookAt(headX*headZ, headY*headZ, 0, headX*headZ, headY*headZ, -1, 0, 1, 0);
    glTranslatef(0.0,0.0,headZ);

上記のgluLookAt(...)のポイントは何ですか?カメラを使用しようとしていて、それをlookAt point画面の中心として与えていたときではありませんか?

4

1 に答える 1

5

上記の効果を達成するために軸外投影が適切な方法である理由がわかりません。

表示画面が錐台の近面に対応するためです。頭を動かすと、軸から外れた画面を見ることになります。このように、投影錐台で同じことを行うことにより、これを再現する必要があります。

ただし、lookAt を使用するとシーンが回転するため、ニア プレーンとスクリーン プレーンの対応が失われます。

于 2013-05-07T10:56:18.820 に答える