모드 없이 카메라 컷신 만들기: 키프레임, 보간, 관전자 모드 활용 팁
바닐라 마인크래프트에서 카메라를 움직이는 두 가지 방법 — 매 틱 텔레포트 함수와 타임라인 레지스트리. 각 방법의 장단점과 부자연스러움을 없애는 부드러운 움직임에 대해 알아봅니다.
바닐라 마인크래프트에는 카메라 객체가 없으므로, 컷신은 두 가지 환상 중 하나로 구현됩니다.
방법 1: 매 틱 플레이어 텔레포트하기
오래되고 보편적인 방법입니다. 플레이어를 관전자 모드에 넣은 다음, 경로를 따라 이동시킵니다.
gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0
함수 체인에서 매 틱마다 tp를 한 번씩 실행합니다. 모든 버전에서 작동하며 특별한 것이 필요하지 않습니다. 문제는 모두 부드러움에 관한 것입니다.
- 초당 20개의 키프레임. 10초짜리 장면은 200줄의
tp코드가 필요합니다. - 선형적인 움직임은 기계적으로 보입니다. 실제 카메라 움직임은 부드럽게 시작하고 끝납니다.
- 회전이 제대로 감기지 않습니다. 요(yaw) 170도에서 -170도로 가는 것은 20도 회전이지만, 단순한 보간은 엉뚱하게 340도 회전합니다. 각도 차이를 -180…180 범위로 정규화한 다음 단계별로 적용해야 합니다.
이러한 줄을 생성하는 것이 키프레임 도구의 역할입니다. 몇 개의 위치를 지정하면 이징(easing)이 적용된 틱별 함수를 생성합니다.
이징(Easing)
아마추어와 볼만한 것의 차이는 보간 곡선에 있습니다. 두 키프레임 사이에서 t가 0에서 1까지 변할 때:
linear t
ease-in-out t < 0.5 ? 2t² : 1 − 2(1−t)²
smoothstep t² × (3 − 2t)
smoothstep는 안전한 기본값입니다. 위치와 회전에 함께 적용해야 카메라가 회전을 마치기 전에 도착하는 것을 방지할 수 있습니다.
방법 2: 타임라인 레지스트리
최신 버전에서는 수백 개의 텔레포트 대신 전체 장면을 데이터로 설명하는 타임라인 형식이 추가되었습니다.
data/<namespace>/timeline/intro.json
시간과 보간 모드가 있는 키프레임을 단일 명령으로 재생합니다. 장점:
- 훨씬 작습니다. 200개의 텔레포트 대신 6개의 키프레임만 있으면 됩니다.
- 보간이 기본적으로 지원되므로 수동으로 이징을 계산할 필요가 없습니다.
- 프레임 속도에 독립적입니다. 로드된 서버에서 틱별 텔레포트처럼 끊기지 않습니다.
단점은 최신 버전에서만 존재하므로, 이전 클라이언트를 대상으로 하는 지도(Map)는 여전히 방법 1이 필요합니다.
플레이어 고정하기
두 가지 방법 모두 두 가지 문제와 씨름합니다.
- 플레이어 입력. 관전자 모드에서는 플레이어가 장면 중간에 날아가 버릴 수 있습니다. 매 틱마다 다시 텔레포트하는 것이 이를 무시하며, 이것이 무차별 대입 방식이 계속 사용되는 한 가지 이유입니다.
- 청크 로딩. 로드되지 않은 곳으로 날아가는 카메라는 빈 공간을 보여줍니다. 장면 전에 경로를
/forceload하고 장면 후에 제거하세요.
HUD 숨기기
/gamerule doImmediateRespawn, 관전자 모드, F1 키를 누르면 대부분의 HUD를 숨길 수 있습니다. 깔끔한 화면을 위해 HUD 스프라이트를 비우는 리소스 팩을 사용하면 플레이어가 아무것도 누르지 않고도 조준선과 핫바를 제거할 수 있습니다. HUD 가이드를 참조하세요.
컷신 및 타임라인 빌더(Cutscene & Timeline Builders)를 사용하여 경로에 키프레임을 배치하고 틱별 함수 또는 타임라인 JSON으로 내보낼 수 있습니다.