2026-06-05

귀여움은 모델이 아니라 모션에서 나온다

토끼 몸통을 구와 캡슐로 빚었지만, 가만히 있으면 그냥 장식이다.
키프레임 애니메이션 파일은 없으니 움직임도 전부 코드로 만들어야 했다. useFrame 안에서 매 프레임 변형을 직접 계산한다.

기본은 속도에 동기화된 호핑이다. Math.abs(Math.sin(...))으로 위아래 바운스를 만들고, 빨라질수록 호핑 주기를 당긴다.
착지 근처에서는 몸을 납작하게(squash), 공중에선 위아래로 늘인다(stretch).
회전할 때는 그 방향으로 살짝 기울이고(bank), 귀는 속도가 붙을수록 뒤로 눕다가 호핑에 맞춰 팔랑인다.
깜빡임도 3초쯤마다 한 번씩 눈 스케일을 눌러 넣었다.

백미는 "글랜스"다.
러너 카메라는 토끼 뒤에 있어서 플레이어에겐 뒤태만 보인다.
그대로 두면 공들인 얼굴을 아무도 못 본다.
그래서 5.2초 주기로 머리 그룹이 카메라 쪽을 슬쩍 돌아봤다가 부드럽게 제자리로 돌아오게 했다.

glanceTimer.current += dt;
if (glanceTimer.current > 5.2) glanceTimer.current = 0;
const gp = glanceTimer.current;
let glance = 0;
if (gp > 0.8 && gp < 2.6) glance = Math.sin(((gp - 0.8) / 1.8) * Math.PI);
if (head.current) head.current.rotation.y = glance * -1.6;

돌아보는 토끼의 뒤태

다 만들고 나서 분명해진 게 있다.
똑같은 구·캡슐 덩어리인데, 모션을 입히기 전과 후의 인상이 완전히 달랐다.
귀여움은 모델 디테일이 아니라 움직임에서 나온다.
정적인 스탠포드 버니보다 통통 튀는 구 덩어리가 훨씬 살아 있었다.

다음 편은 이 토끼와 터널을 황혼 톤으로 칠한 토온 셰이딩 이야기다.

다음 편: 토온 셰이딩 →