2012-01-20 3 views
1

은 다음과 같은 행렬 좌표계를 넘겨 왼쪽에하자 (열 전공) 수학 연산이 정확하다고 가정 할 수 있습니다투영 뷰 매트릭스, opengl. 아이폰 OS

것은 내가 사과의 GLKMatrix4x4 구조체와 함수를 사용하고 있습니다.

다음이 올바른 행렬을 생성 할 것으로 기대합니다.

projectionViewModel = camera.projection * camera.view * model.view 

그러나 카메라의 변환 오프셋에 대한 모델 회전이 시작되기 때문에 정확하지 않습니다.

하지만 다음을 수행하면 결과가 정확합니다.

projectionViewModel = camera.projection * camera.inverseView * model.view 

제 질문은 어디까지 했습니까? 또는 projectionViewModel 행렬을 생성하는 올바른 방법입니까?

GLKMatrix4 modelView = GLKMatrix4Multiply(*[_scene.camera inverseView],*[_frame worldMatrix]); 

GLKMatrix4 projectionViewModel = GLKMatrix4Multiply(*[_scene.camera proj],modelView); 

답변

2

카메라에 직접 배치 된 물체에 대해 어떤 상황이 발생하는지 생각해보십시오. 그래서 camera.view = model.view가 있습니다. 이 경우 실제로 원하는 것은 카메라가 무엇을하던간에 모델이 무엇이든간에 곱셈을 통해 단위 행렬을 만드는 것입니다. 왜냐하면 투영 전에 변형을 적용하지 않기를 원하기 때문입니다.

따라서 카메라를 설정할 때 위치 지정에 사용하는 것과 반대의 것을 사용하십시오. 역으로 정의하면 원본과 곱해질 때 신원을 제공하기 때문입니다.

그래서 두 번째 수식을 사용하면 올바른 결과를 얻을 수 있습니다.

+0

직접 두 번 추측하기 – Nico