앞 글 「카메라는 왜 Target을 가질까?」에서는 Orbit Camera가 Target과의 거리를 이용해 가까이 가거나 멀어지는 방법을 살펴봤다. 마우스 휠을 굴리면 대상이 커지거나 작아지므로 흔히 이 동작을 Zoom이라고 부른다.
그런데 카메라를 대상 쪽으로 옮기는 것과, 제자리에 둔 채 시야각(Field of View, FOV)을 바꾸는 것은 같은 동작일까? 화면에서는 둘 다 확대처럼 보이지만, 카메라와 공간의 관계는 다르다.
물체를 크게 보는 두 가지 방법
첫 번째 방법: 카메라를 대상에 가까이 옮기기
첫 번째 방법은 카메라를 대상에 가까이 옮기는 것이다. 촬영 용어로는 Dolly라고 한다. FOV를 그대로 둔 채 카메라 위치를 움직인다.
Position += Forward * Delta;
Orbit Camera라면 Target과의 거리를 줄이고, 그 거리와 방향으로 위치를 다시 구한다.
Distance = Clamp(Distance - ZoomDelta, MinDistance, MaxDistance);
Position = Target - Forward * Distance;
두 번째 방법: 카메라 위치를 고정하고 FOV 좁히기
두 번째 방법은 카메라 위치를 유지하면서 FOV를 좁히는 것이다. 장면에서 더 좁은 각도 범위만 화면에 투영하기 때문에 물체가 크게 보인다. 실제 카메라의 렌즈 Zoom에 대응하는 방식이며, 그래픽스에서는 보통 FOV를 직접 바꾼다.
FOV 감소 → 화면에 담기는 범위 감소 → 물체가 크게 보임
FOV 증가 → 화면에 담기는 범위 증가 → 물체가 작게 보임

위쪽은 렌즈 Zoom이다. 카메라 위치는 그대로 두고 렌즈 초점거리를 35 mm에서 200 mm로 바꾼다. 아래쪽은 Dolly다. 초점거리를 35 mm로 유지한 채 카메라를 대상 쪽으로 4 m에서 72 cm까지 이동한다. 두 방법 모두 가운데 피사체를 크게 만들지만, 장면을 확대하는 방식은 다르다.
렌즈 Zoom은 같은 시점에서 찍은 화면을 확대한다. 가까운 물체와 먼 물체의 상대적인 크기, 소실점과 원근감은 거의 그대로고, 화면에 보이는 범위가 좁아진다. Dolly는 카메라 시점 자체를 옮긴다. 그 결과 가까운 피사체는 배경보다 더 크게 변하고, 주변 기둥과 바닥 선의 간격과 각도도 달라져 깊이감이 변한다.
아래는 GIF에서 뽑은 시작·끝 장면이다. 행은 렌즈 Zoom과 Dolly, 열은 각각의 시작과 끝이다. 끝 장면에서 피사체 크기는 비슷하지만 배경의 원근 표현이 달라진다.
| 시작 | 끝 | |
|---|---|---|
| 렌즈 Zoom | ![]() |
![]() |
| Dolly | ![]() |
![]() |
| Dolly | FOV Zoom | |
|---|---|---|
| 카메라 위치 | 바뀜 | 유지 |
| FOV | 유지 | 바뀜 |
| 그래픽스에서 바뀌는 행렬 | View Matrix | Projection Matrix |
| 가까운 물체와 먼 물체의 상대 관계 | 카메라 이동에 따라 달라짐 | 유지됨 |
FOV를 줄이면 왜 확대될까?
Perspective Projection에서 물체의 화면상 크기는 대략 초점거리와 비례하고, 카메라까지의 거리와 반비례한다.
$$ \text{화면 크기} \propto \frac{f}{z} $$
여기서 $f$는 초점거리와 관련된 값이고 $z$는 카메라에서 물체까지의 거리다. 물체를 크게 보려면 카메라를 가까이 옮겨 $z$를 줄이거나, 초점거리를 키울 수 있다.
실시간 그래픽스에서는 센서 크기에 해당하는 화면 크기를 고정해 두고 FOV를 지정하는 일이 많다. 이때 초점거리와 FOV는 반대 방향으로 변한다.
$$ f \propto \frac{1}{\tan(FOV/2)} $$
따라서 FOV를 좁히면 초점거리가 길어진 것과 같은 확대 효과를 얻는다.
Perspective는 카메라 위치에 따라 달라진다
가까운 물체 A와 그 뒤에 있는 물체 B를 보자. 처음에 A까지 10m, B까지 20m라면 거리 비율은 2:1이다. 카메라를 A 쪽으로 8m 옮기면 각 물체까지의 거리는 2m와 12m가 되고, 비율은 6:1이 된다. 카메라 위치가 바뀌면서 두 물체의 상대적인 거리 관계도 달라졌다.
반면 카메라를 그대로 두고 FOV만 좁히면 A와 B까지의 거리 비율은 여전히 2:1이다. 둘 다 화면에서 커지지만 가까운 물체와 먼 물체가 맺는 원근 관계는 그대로다. 정확히 말하면 Perspective(원근 투영의 상대적 관계)는 카메라 위치가 정하고, FOV는 그 투영에서 화면에 담을 범위와 배율을 정한다.
그래서 사진에서 흔히 “망원 렌즈가 배경을 압축한다”고 말하는 현상도 렌즈만으로 생기는 것은 아니다. 같은 크기로 인물을 담기 위해 망원 렌즈를 쓰면서 카메라가 뒤로 물러나면, 바뀐 카메라 위치가 전경과 배경 사이의 Perspective를 바꾼다. 같은 위치에서 FOV만 좁히면 사진은 확대되지만 원근 관계는 유지된다.
Dolly Zoom은 두 동작을 함께 쓴다
Dolly와 FOV 변경을 동시에 조합할 수도 있다. 카메라가 피사체에 가까워지는 동안 FOV를 넓혀 피사체의 화면 크기를 거의 유지하면, 배경은 늘어나거나 압축되는 듯 보인다. 이 효과가 Dolly Zoom, 또는 영화 《현기증(Vertigo)》에서 이름을 딴 Vertigo Effect다.

카메라 이동과 Zoom을 함께 적용해 피사체 크기를 거의 유지하면서 배경의 Perspective를 바꾸는 예시.
카메라를 피사체 쪽으로 옮기면 피사체는 커지려 한다. FOV를 넓히면 화면에서 작아지려 한다. 두 변화를 맞추면 피사체 크기는 비슷하게 유지되지만, 카메라 위치가 바뀌었으므로 배경과의 원근 관계는 변한다.
그래픽스 파이프라인에서는 View와 Projection의 차이다
카메라를 Dolly하면 카메라 Transform이 변한다. 그 Transform의 역관계로 만들어지는 View Matrix가 달라지고, FOV를 그대로 뒀다면 Projection Matrix는 그대로다.
반대로 FOV Zoom은 카메라 위치와 방향을 유지한다. FOV로부터 만들어지는 Projection Matrix가 바뀌고 View Matrix는 그대로다.
Dolly: 카메라 위치 변경 → View Matrix 변경
FOV Zoom: FOV 변경 → Projection Matrix 변경
이 구분은 조작 방식에도 도움이 된다. Target을 중심으로 도는 Orbit Camera는 Target과의 거리가 상태에 있으므로 거리를 줄이는 Dolly 방식이 자연스럽다. FPS 조준은 플레이어의 시점 위치를 적 쪽으로 옮기면 안 되므로, 위치를 고정하고 FOV를 줄이는 방식이 흔하다.
정리
화면에서 물체가 커지는 동작은 카메라 이동일 수도 있고 FOV 변경일 수도 있다. Orbit Camera에서 보통 Zoom이라 부르는 동작은 Target과의 거리를 줄이는 Dolly에 가깝다. FOV Zoom은 카메라를 같은 자리에 두고 더 좁은 시야를 화면에 투영한다.
둘을 구분할 때는 “무엇이 바뀌었나?”를 보면 된다.
카메라 위치가 바뀌었다 → View Matrix와 Perspective가 달라진다.
FOV가 바뀌었다 → Projection Matrix와 화면 배율이 달라진다.
둘을 함께 쓰면 Dolly Zoom처럼 피사체 크기는 유지하면서 배경의 원근감을 바꾸는 연출도 만들 수 있다.
References
- Pat Hanrahan, Virtual and Digital Cameras, Stanford CS148, Lecture 14. 가상 카메라, FOV와 Perspective Projection을 정리한 강의 자료.
- Viewing II: The Mathematics of Perspective, Stanford CS248. FOV를 바꾸는 Zoom과 장면까지의 거리를 바꾸는 Dolly를 직접 비교한다.
- Thorsten Thormählen, Cameras: Perspective Projection, Philipps-Universität Marburg, Graphics Programming, Part 6, Chapter 1 (2024). Perspective Projection, 초점거리와 카메라 투영을 수식과 도식으로 설명한다.



