[3D] 카메라 범위외의 Z버퍼값

큐브작성시 카메라를 지나친 오브젝트 구분을 투영행열후에
나온 Z값을 사용했었습니다. 이것에 대해 다시 정리해봅니다.

일단 투영 연산후 나온 Z값은 Z버퍼값으로 0~1의 범위를 가지게 됩니다.
1에 가까울수록 카메라에서 멀어지며, 더 낮은 해상도를 가지고 있습니다.
반대로 0으로 갈수록 카메라에 가까워지며 높은 해상도를 가지고 있습니다.

Z버퍼에 관한거야 책을 보면 자세히 나오니 넘어가고요.
카메라 뒤쪽과 카메라의 가시영역 밖에 있는 버텍스를
투영했을때, Z값이 어떻냐에 대해 알아봤습니다.

카메라에 가까울수록 0에 가까워지고, 멀수록 1에 가까워지니
단순히 생각하면 카메라의 뒤쪽은 음수가 되고 카메라 범위밖이면 1이상이
될것이라 짐작했으나, 결과는 전혀 틀리게 나오더군요.


왼손좌표계로 카메라와 투영행열을 생성후 사용했습니다.
카메라영역 내에선 Z버퍼값의 특성에 맞게 동작합니다.
카메라로부터 순서대로 배치한 InCamera 1~3의 Z값은 0.909... - 0.942... - 0.959이 나왔습니다.
그러나 카메라의 아주 뒤쪽에 있는 값은 1.01이 나왔으며
카메라의 아주 앞쪽에 있는 값은 1.01이 나왔습니다.
보시다시피 전혀 반대편에 위치한 버택스임에도 둘다 1이상의 값을 가지고 있습니다.

결국 Z버퍼값은 0~1이상의 값을 가진다는 뜻이겠죠...
이것은 반대로 오른손좌표계(RH계열 함수사용)에서도 동일한 결과를 가져왔습니다.
단순히 투영행열의 3열의 행렬식의 특성이겠죠.(Z값과 곱해지는 부분이니;;)

사실 Z버퍼값에서 1이상의 값은 원래 용도외이긴 하지만 잘 이용하면
여러모로 써먹을수 있지 않을까 싶습니다.

by hellz | 2009/04/03 01:40 | Programming | 트랙백 | 덧글(0)

트랙백 주소 : http://hellzblog.egloos.com/tb/2338017
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶