깊이로 나누기 하나로 3D 그래픽 구현

Key Point
3D 게임이나 그래픽 프로그래밍에서 '카메라'가 동작하는 수학적 기초를 명확히 이해하면, 고수준 엔진 없이도 저수준에서 직접 3D 투영을 구현하고 응용할 수 있다.
핵심 요약
- 3D 좌표(x, y, z)를 2D 평면에 투영하는 핵심은 x와 y를 깊이 z로 나누는 단순한 공식이다.
- 깊이가 증가하면 투영된 위치는 소실점(0,0)으로 수렴하며, 이 원리로 깊이에 따라 움직이고 크기 변하는 객체를 표현할 수 있다.
- 실제 게임 엔진에선 FOV, 종횡비, 클리핑 평면을 매개변수화한 관점 투영 행렬(Perspective Projection Matrix)을 사용한다.
- 투영 행렬의 초점 거리는 수직 FOV 각도에서 유도되고, 깊이 매핑은 근거리·원거리 클리핑 평면으로 정의되어 화면 밖 기하학을 효율적으로 제거할 수 있다.
- 카메라 위치, 향하는 방향, FOV 등을 포함한 복잡한 3D 작업은 투영 행렬 방식이 일일이 수작업 조정하는 것보다 훨씬 실용적이고 효율적이다.