'3D'에 해당되는 글 1건
- 2010.04.07 3D에서의 동차좌표계
동차좌표계란?
3D에서는 기본적으로 3차원좌표계이지만 어떤 목적에 의해 4차원으로 확장할 수 있는데, 이것이 동차좌표계다. 기본적인 성분 x, y, z에 w가 추가된 것으로 3D상에서는 x/w, y/w, z/w로 나타낸다.
동차좌표계가 있음으로 오브젝트의 이동을 행렬간 곱셈으로 표현할 수도 있으며, 포인트(w=1)와 벡터(w=0)를 가늠할 수 있는 기준이 되기도 한다.
동차좌표계가 있음으로 오브젝트의 이동을 행렬간 곱셈으로 표현할 수도 있으며, 포인트(w=1)와 벡터(w=0)를 가늠할 수 있는 기준이 되기도 한다.
동차좌표계 변환과정
동차좌표계상 변환된 좌표 = p * 월드행렬 * 뷰행렬 * 투영행렬
투영행렬에서, 카메라공간상에 존재하는 점과 카메라 위치 사이의 깊이(z)를 최종 결과점의 x, y, z에 각각 곱해지고, w에 저장되는데 바로 이 과정이 동차좌표계를 위한 과정이다. 1
해당 좌표공간(카메라공간, 투영공간, 월드공간 등등)에서의 3D좌표를 얻어내려면 w로 나눠내면 된다.
여기서 월드공간, 카메라공간에서는 w값이 항상 1이기 때문에 아무런 변화가 없지만, 투영공간에서는 w값이 카메라공간에서의 카메라의 위치에서부터 정점사이의 거리이기 때문에 z값에 따라 정점의 위치와 크기가 변환되는 것임을 짐작할 수 있다.
따라서, 셰이더에서 다른 공간은 별로 상관없지만, 투영공간상에 존재하는 좌표를 다룰 경우 동차좌표계상에 존재하기 때문에 w성분으로 나누어 줘야한다.
- 3D 게임 프로그래밍, 김용준 - 4.4 렌더링 파이프라인 참조 [본문으로]