깊이로 나누기 하나로 3D 그래픽 구현
원제 Divide by depth for instant 3D
116 포인트댓글 22

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