기본 패턴
text
world -> view -> projection -> depth test설명
- 카메라는 단순히 화면을 비추는 개념이 아니라, 월드를 camera 기준 공간으로 바꾸는 view transform입니다. 그래서 카메라를 앞으로 움직인다는 것은 수학적으로는 세상을 뒤로 옮기는 쪽에 가깝습니다.
- projection은 3D 공간을 2D 화면으로 보이게 만드는 규칙입니다. perspective는 멀수록 작아 보여 깊이감을 만들고, orthographic은 크기 왜곡 없이 설계적 정렬과 UI/2D 작업에 유리합니다.
- depth buffer는 "무엇이 앞에 보이는가"를 픽셀 단위로 판정합니다. 깊이 테스트가 없으면 뒤에 있어야 할 삼각형이 앞에 그려질 수 있고, near/far plane 설정이 나쁘면 precision 문제로 z-fighting이 보일 수 있습니다.
- 카메라 문제는 종종 이동 로직 문제와 projection 문제, depth precision 문제가 섞여 보입니다. 그래서 먼저 "시점 변환", "투영 방식", "깊이 판정"을 분리해 보는 습관이 중요합니다.
- 이 카드를 이해하면 3인칭 카메라, minimap camera, orthographic 2D camera, shadow camera 같은 다양한 카메라 문제를 같은 틀로 읽을 수 있게 됩니다.
짧은 예제
text
2D UI/타일맵: orthographic가 자연스럽다
3D 탐험 게임: perspective가 자연스럽다
원거리 z-fighting: near/far plane 설정부터 점검한다빠른 정리
| 개념 | 핵심 포인트 |
|---|---|
| view | 카메라 기준으로 월드를 본다 |
| perspective projection | 멀수록 작게 보인다 |
| orthographic projection | 거리와 무관하게 크기를 유지한다 |
| depth buffer | 앞뒤 가림을 픽셀 단위로 판정한다 |
| z-fighting | depth precision이 부족할 때 보이는 깜빡임 |
주의할 점
카메라 clipping 문제를 오브젝트 로직 문제로 착각하거나, z-fighting을 셰이더 버그로 오해하는 경우가 많습니다. 카메라 문제는 이동, projection, depth precision을 분리해서 점검하는 편이 빠릅니다.
참고 링크
2 sources