アップ ベクトルは、目と gluLookAt に供給される中心ベクトルの間の外積を作成するために使用されます。
iOS の GLKit ヘッダーから、実装を次のように確認できます。
static __inline__ GLKMatrix4 GLKMatrix4MakeLookAt(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ)
{
GLKVector3 ev = { eyeX, eyeY, eyeZ };
GLKVector3 cv = { centerX, centerY, centerZ };
GLKVector3 uv = { upX, upY, upZ };
GLKVector3 n = GLKVector3Normalize(GLKVector3Add(ev, GLKVector3Negate(cv)));
GLKVector3 u = GLKVector3Normalize(GLKVector3CrossProduct(uv, n));
GLKVector3 v = GLKVector3CrossProduct(n, u);
GLKMatrix4 m = { u.v[0], v.v[0], n.v[0], 0.0f,
u.v[1], v.v[1], n.v[1], 0.0f,
u.v[2], v.v[2], n.v[2], 0.0f,
GLKVector3DotProduct(GLKVector3Negate(u), ev),
GLKVector3DotProduct(GLKVector3Negate(v), ev),
GLKVector3DotProduct(GLKVector3Negate(n), ev),
1.0f };
return m;
}
この質問で受け入れられた回答How do I use gluLookAt適切? アップ ベクトルが実際に何に影響を与えるかについての適切な説明を提供します。
(gluLookAt の「上」ベクトルの背後にある直感は単純です。何かを見てください。今度は頭を 90 度傾けます。自分のいる場所、見ている方向は変わっていませんが、あなたの画像は網膜には明らかにあります.違いは何ですか?頭のてっぺんが指している場所.それがアップベクトルです.)