라떼군 이야기


4 / 10강

카메라의 좌표로 바라보기

같은 의자라도 방 안의 어디에 두었는지, 어느 자리에서 바라보는지에 따라 화면에서의 위치가 달라집니다. 좌표는 어떤 기준에서 잰 값인지 함께 알아야 의미가 있습니다.

세 가지 공간

열벡터 관례에서 p_view = V M p_model로 적습니다. M은 물체를 장면에 놓는 모델 변환, V는 장면을 카메라 기준으로 바꾸는 뷰 변환입니다.

카메라가 오른쪽으로 가면

카메라가 회전하지 않고 x=3으로 이동했다고 합시다. 월드의 x=5에 있는 점은 카메라 기준으로 x=2에 있습니다.

world_point = (5, 1, 4)
camera_position = (3, 0, 0)
view_point = tuple(p - c for p, c in zip(world_point, camera_position))
print(view_point)

출력은 (2, 1, 4)입니다. 카메라가 오른쪽으로 움직이면 화면 속 장면은 반대쪽으로 이동하는 효과가 납니다. 카메라의 위치를 더하는 대신 빼는 이유입니다.

카메라가 회전했다면 위치를 빼는 것만으로 부족합니다. 카메라의 회전도 거꾸로 적용해야 합니다. 뷰 변환은 카메라를 월드에 놓은 변환의 역변환입니다.

확인 문제

카메라와 물체를 같은 방향으로 같은 거리만큼 옮겼습니다. 둘 사이의 상대 위치는 변할까요?

해설 보기

회전과 다른 조건이 같다면 변하지 않습니다. 두 위치의 차이가 그대로이기 때문입니다. 물체가 화면에 안 보일 때는 먼저 카메라 기준으로 어느 쪽에 있는지 살펴보세요.

제품 기획, 개발 파트너 찾으시나요? 개인, 팀, 기업 모두 환영. 문제 정의부터 출시까지 함께합니다.