3D 원근 투영 행렬 계산기
시야각(FOV)·종횡비·근평면·원평면을 넣으면 4×4 원근 투영 행렬을 표준 공식대로 채웁니다. 근평면·원평면이 정규화 장치 좌표(NDC) −1과 1로 정확히 눌리는지도 확인할 수 있습니다.
예: 16:9 화면이면 1.778
f_scale = 1/tan(FOV/2)
1.7321
x축은 이 값을 종횡비로 나눠 씁니다
| 0.9743 | 0 | 0 | 0 |
| 0 | 1.7321 | 0 | 0 |
| 0 | 0 | -1.002 | -0.2002 |
| 0 | 0 | -1 | 0 |
사용 방법
- 1수직 시야각(FOV)을 도(°) 단위로 입력합니다.
- 2화면 종횡비(가로/세로)를 입력합니다.
- 3근평면·원평면 거리를 입력합니다.
- 4완성된 4×4 투영 행렬과, 근평면·원평면이 NDC −1·1로 눌리는지 확인합니다.
자주 묻는 질문
카메라가 보는 절두체(가까운 면은 좁고 먼 면은 넓은 각뿔대 모양의 시야 영역)를 정규화 장치 좌표(NDC, x·y·z 모두 −1~1)라는 정육면체 공간으로 눌러 담는 4×4 행렬입니다. 이 변환 덕분에 화면에 그릴 때 멀리 있는 물체가 작게, 가까운 물체가 크게 보입니다.
동차좌표에 이 행렬을 곱한 뒤 w로 나누는 원근 나눗셈을 거치면, z=−근평면일 때와 z=−원평면일 때의 결과가 정확히 −1과 1이 되도록 행렬의 각 성분이 설계되어 있습니다. 직접 대입해 계산하면 확인할 수 있고, 이 계산기의 검증 과정이기도 합니다.
f_scale = 1/tan(시야각/2) 값이 커집니다. 시야각이 좁을수록 f_scale(확대율)이 커져 같은 물체가 화면에 더 크게(더 확대되어) 보입니다 — 망원 렌즈로 좁게 확대해서 보는 것과 같은 효과입니다.
이 행렬은 수직 시야각(fovY)을 기준으로 만들어지고, 수평 시야각은 종횡비만큼 자동으로 넓어집니다(tan(수평시야각/2) = 종횡비 × tan(수직시야각/2)). 그래서 x축의 확대율(f_scale/종횡비)만 종횡비로 나눠 수평·수직 방향의 화면 비율을 맞춥니다.
그래픽스 파이프라인에서 회전과 투영은 서로 다른 단계입니다. quaternion-euler는 물체의 회전을 표현하는 방식을 다루고, 이 계산기는 카메라가 본 3D 장면을 화면에 투영하는 마지막 단계의 행렬을 다룹니다.
알아두면 좋은 점
- 오른손 좌표계(카메라가 −z 방향을 본다)를 쓰는 OpenGL 계열의 관례를 따릅니다. DirectX 등 다른 그래픽스 API는 좌표계·부호가 다를 수 있습니다.
- 근평면·원평면 거리는 모두 양수(카메라로부터의 거리)로 입력합니다. 원평면은 반드시 근평면보다 커야 합니다.
- 시야각은 0°와 180° 사이여야 계산할 수 있습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 3일 · 결과는 참고용 추정치입니다.