iOS 5 설명서는 GLKMatrix4MakeLookAt
이 gluLookAt
과 동일하게 작동 함을 나타냅니다.iOS : GLKMatrix4MakeLookAt 결과 내의 카메라 정보에 대한 질문
정의는 여기에 제공됩니다
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;
}
나는이에서 카메라 정보를 추출하기 위해 노력하고있어 :
:
1. Read the camera position GLKVector3 cPos = GLKVector3Make(mx.m30, mx.m31, mx.m32); 2. Read the camera right vector as `u` in the above GLKVector3 cRight = GLKVector3Make(mx.m00, mx.m10, mx.m20); 3. Read the camera up vector as `u` in the above GLKVector3 cUp = GLKVector3Make(mx.m01, mx.m11, mx.m21); 4. Read the camera look-at vector as `n` in the above GLKVector3 cLookAt = GLKVector3Make(mx.m02, mx.m12, mx.m22);
이 두 가지 질문이 있습니다 Look-At Vector는 무효로 보인다. d가
(center - eye)
이 아닌(eye - center)
을 수행하기 때문에 정의한대로. 사실, 카메라 위치가(0,0,-10)
이고 중심이(0,0,1)
인GLKMatrix4MakeLookAt
으로 전화를하면 추출 된 모양은 입니다. 즉, 내가 예상 한 것보다 부정적인 것입니다. 내가 추출한 것을 부정해야합니까?카메라 위치 I 추출은 뷰 회전 행렬을 미리 곱한 뷰 변환 행렬의 결과이므로, 정의에서 점 제품을 나타냅니다. 나는 이것이 틀렸다는 것을 믿는다 - 누군가는 나가 그 위치를 계산해야하는 다른 방법을 제안 할 수 있는가? 시간에 대한
많은 감사합니다.
나는'm' 정의에서 부정을 발견하지 못했습니다. 나머지는 자세히 설명해 주셔서 감사 드리며 현재 진행 상황을 완전히 이해하고 있습니다. 많은 정말로 감사합니다 :) – KomodoDave
링크가 끊어졌습니다. – aledalgrande