2013-03-11 4 views
0

(x,y,z) 좌표를 원근감 피라미드 내부에서 변환하는 방법은 (x',y',z') 원근감 큐브 내부 좌표로? (오른쪽 좌표계에서)원근감 변환을 관리하는 방법은 무엇입니까?

이 원근 행렬에 (x,y,z) 벡터를 곱하려고 시도했지만 결과가 예상 한 것과 다릅니다.

projection matrix

내가 그것을 시도 : FOV = 70 °, 측면 = 3분의 4 근처 = 100까지 = 100; x = 100, y = 100, z = -300;

이 결과

내가 원하는 (158.28, 211.05, -344.44)이있다 하였다 사시도 매트릭스는 일반적으로 공간 변환 비록 사전

plan

감사

+0

거의 같은 값으로 설정 한 경우 0으로 나눕니다. 그건 오타예요? –

답변

2

원하는 절두체가 매핑되도록 정규 볼륨 (단위 큐브 일 수도 있지만 모든 그래픽 파이프 라인이 동일하지는 않습니다. 예를 들어 D3D는 OpenGL과 다릅니다),이 볼륨은 동종 (프로젝트 ive) 좌표. 이는 실제 투영법이 비선형 변환이기 때문에 가능하지만 투영 좌표계를 사용하면 대량의 파이프 라인에 선형 변환을 사용할 수 있습니다.

3D (또는 2D) 공간에 점을 원한다면 여전히 투영을 수행해야합니다.

이것은 단순히 나누기입니다.

점 (x, y, z, 1)에 원근감 행렬을 곱하면 벡터 -4 (x ', y', z ', w')가됩니다. 투영을하려면 x ', y', z '를 w로 나눌 필요가 있습니다.

관련 문제