기타 Hacker News · 2026-09-21

복잡해 보이는 3D 그래픽스 카메라, 사실 '깊이로 나누기' 하나로 시작된다?

핵심 요약
  • 3D 좌표 (x, y, z)를 2D 화면에 원근감 있게 투영하는 가장 기초적인 원리는 단순히 x와 y 좌표를 깊이 z로 나누는 나눗셈에 있습니다.
  • 이 간단한 깊이 나눗셈 공식만으로도 셰이더 상에서 공의 크기 변화나 3D 큐브 와이어프레임 회전을 평면에 입체감 있게 렌더링할 수 있습니다.
  • 실제 게임 환경에서는 화각(FOV), 종횡비, 클리핑 평면을 반영하여 시야 밖 렌더링을 최적화하는 '원근 투영 행렬'을 통해 이를 체계적으로 구현합니다.
요약 3D 그래픽스나 게임 개발을 처음 시작할 때 많은 입문자들은 상위 프레임워크가 기본 제공하는 카메라 컴포넌트를 사용하곤 합니다. 하지만 좀 더 창의적인 비주얼 테크닉을 구현하거나 로우레벨 그래픽스 코드를 직접 다루려 할 때 기술적인 장벽에 부딪히기 쉽습니다. 한 개발자가 정리한 3D 그래픽스의 핵심 원리에 따르면, 복잡해 보이는 3D 카메라 투영은 사실 매우 단순한 수학 공식에서 출발합니다. 3D 공간의 좌푯값 (x, y, z)에서 z축이 전방(깊이)이고 y축이 상단이라고 할 때, 2D 화면 좌표 (x', y')로 변환하는 가장 기초적인 공식은 단순히 x와 y를 깊이값인 z로 나누는 것입니다(x' = x/z, y' = y/z). 실제로 x와 y 좌표가 같더라도 깊이 z가 2, 4, 8로 점차 커질수록 화면 중심의 소실점 (0,0)에 가까워지며 원근감이 만들어집니다. 이 간단한 나눗셈 원리만으로도 궤도를 도는 구체나 8개 꼭짓점과 12개 모서리로 이루어진 큐브 와이어프레임 같은 3D 도형을 셰이더 상에서 2D 평면에 투영해 그릴 수 있습니다. 다만 실제 게임이나 복잡한 3D 렌더링 환경에서는 카메라가 바라보는 시선 방향, 위치, 화각(FOV, Field of View), 화면 비율(Aspect Ratio) 등을 종합적으로 제어해야 하므로 매번 수동으로 계산하는 방식은 한계가 있습니다. 이를 체계적으로 해결해 주는 핵심 기술이 바로 '원근 투영 행렬(Perspective Projection Matrix)'입니다. 원근 투영 행렬은 수직 화각 각도와 종횡비로 초점 비율(focal scale)을 계산하고, 카메라가 렌더링할 앞쪽 및 뒤쪽 한계 거리인 근평면(near clip)과 원평면(far clip)을 설정하여 4x4 행렬 구조로 변환합니다. 이를 통해 화면 밖의 오브젝트를 제외하는 컬링(culling) 처리가 쉬워져 렌더링 최적화와 성능 확보가 가능해지며, 이것이 바로 게임 엔진 카메라 뒤에 숨겨진 수학적 마법입니다.
Sponsored · 광고