MC Toolkit

가이드 / 명령어 및 데이터

모드 없이 만드는 카메라 컷신: 키프레임, 보간, 그리고 관전자 모드 활용법

바닐라에서 카메라는 단 한 가지 방식으로만 움직입니다 — 매 틱마다 텔레포트를 실행하는 함수죠. 그리고 타임라인 레지스트리가 그 주변의 분위기를 잡아줍니다. 각각이 어떤 용도에 적합한지, 그리고 로봇처럼 보이지 않게 해주는 부드러운 보간 기법을 알아봅니다.

바닐라에는 카메라 오브젝트 자체가 없기 때문에, 컷신은 텔레포트로 만들어내는 일종의 착시이며, 그 주변의 세계를 바꿔줄 타임라인이 함께 필요합니다.

방법 1: 매 틱마다 플레이어를 텔레포트하기

가장 오래되고 보편적인 방식입니다. 플레이어를 관전자 모드로 전환한 뒤 경로를 따라 이동시킵니다:

gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0

함수 체인에서 매 틱마다 tp 하나씩 실행합니다. 모든 버전에서 작동하며 특별한 것도 필요 없습니다. 문제는 전부 부드러움에 관한 것이죠:

  • 초당 20개의 키프레임. 10초짜리 장면이면 tp 줄이 200개입니다.
  • 선형 스텝은 기계처럼 보입니다. 실제 카메라 움직임은 시작과 끝에서 속도가 붙었다 줄어듭니다.
  • 회전이 엉뚱하게 감깁니다. 요(yaw) 170에서 -170으로 가는 건 20도 회전이지만, 순진한 보간은 반대 방향으로 340도를 돌아버립니다. 스텝을 밟기 전에 각도 차이를 -180…180 범위로 정규화하세요.

이런 줄들을 생성하는 것이 바로 키프레임 도구의 역할입니다 — 위치 몇 개만 찍으면 이징(easing)이 적용된 틱당 함수를 뽑아줍니다.

이징

아마추어와 볼만한 것의 차이는 보간 곡선입니다. 두 키프레임 사이에서, t가 0에서 1로 갈 때:

linear      t
ease-in-out t < 0.5 ? 2t²  :  1 − 2(1−t)²
smoothstep  t² × (3 − 2t)

smoothstep가 안전한 기본값입니다. 위치와 회전에 함께 적용하세요. 그렇지 않으면 카메라가 회전을 마치기도 전에 도착해버립니다.

방법 2: 카메라를 제외한 모든 것을 위한 타임라인

최근 버전에서 timeline 레지스트리가 추가되었는데, 이걸 카메라 트랙으로 읽고 싶은 유혹이 듭니다:

data/<namespace>/timeline/intro.json

하지만 그렇지 않습니다. 타임라인은 월드 시계에 맞춰 돌아가며 환경 속성 — 하늘과 안개 색상, 주변음과 음악, 빛 — 에 키프레임을 찍고 네이티브 보간을 적용합니다. 플레이어를 움직일 수는 없으므로 카메라 자체는 여전히 방법 1입니다. 타임라인이 잘하는 것은 컷신의 분위기입니다: 하늘을 페이드하고, 안개를 바꾸고, 음악을 텔레포트에 맞춰 교체하는 것을 틱당 명령어 없이 해냅니다.

단점은 최근 버전에서만 존재한다는 것이므로, 구버전 클라이언트를 대상으로 하는 맵은 /time와 /weather로 분위기를 흉내 내야 합니다.

플레이어를 제자리에 붙잡아두기

텔레포트 경로는 두 가지와 싸웁니다:

  • 플레이어 입력. 관전자 모드에서는 플레이어가 장면 도중에 날아가버릴 수 있습니다. 매 틱마다 다시 텔레포트하면 이를 덮어쓰는데, 이것이 무식한 방법이 계속 살아남는 이유 중 하나입니다.
  • 청크 로딩. 로드되지 않은 곳으로 카메라가 날아가면 공허만 보입니다. 촬영 전에 경로를 /forceload하고, 끝난 뒤 제거하세요.

HUD 숨기기

관전자 모드와 F1으로 대부분 해결됩니다. 완벽하게 깔끔한 화면을 원한다면, HUD 스프라이트를 비워버리는 리소스 팩이 플레이어가 아무 키도 누르지 않고 십자선과 핫바를 제거해줍니다 — HUD 가이드를 참고하세요.

경로 위에 키프레임을 찍고 틱당 함수를 내보낸 다음, 그 주변의 장면을 잡아줄 타임라인을 만들면 됩니다. 컷신 & 타임라인 빌더를 참고하세요.

컷신·타임라인 빌더 →

더 많은 가이드

모두 보기 →