Runway Gen-4 멀티 모션 브러시 사용법: 정밀 캐릭터 애니메이션 가이드
Runway Gen-4 멀티 모션 브러시로 정밀 캐릭터 애니메이션 만들기
Runway Gen-4의 멀티 모션 브러시(Multi Motion Brush)는 하나의 생성 과정에서 개별 영역에 서로 다른 움직임 방향과 속도를 지정할 수 있는 강력한 도구입니다. 이 가이드에서는 움직임 영역 분리, 방향 벡터 설정, 카메라 모션과 피사체 모션 결합까지 실전 워크플로우를 단계별로 안내합니다.
사전 준비 및 환경 설정
1단계: Runway 계정 및 API 설정
멀티 모션 브러시를 사용하려면 Runway Pro 이상의 플랜이 필요합니다. API를 통한 자동화 워크플로우를 구축하려면 다음과 같이 설정합니다.
# Runway Python SDK 설치
pip install runwayml
환경 변수로 API 키 설정
export RUNWAY_API_KEY=“YOUR_API_KEY”
# Python에서 클라이언트 초기화 from runwayml import RunwayMLclient = RunwayML(api_key=“YOUR_API_KEY”)
Gen-4 모델로 이미지-투-비디오 태스크 생성
task = client.image_to_video.create( model=“gen4”, prompt_image=“https://your-storage.com/character_pose.png”, prompt_text=“A dancer gracefully moving her arms upward while standing still”, duration=5, ratio=“1280:768” ) print(f”Task ID: {task.id}“)
2단계: 태스크 상태 확인 및 결과 다운로드
import time
# 폴링으로 태스크 완료 대기
while True:
task_status = client.tasks.retrieve(id=task.id)
if task_status.status == "SUCCEEDED":
print(f"결과 URL: {task_status.output[0]}")
break
elif task_status.status == "FAILED":
print(f"실패 사유: {task_status.failure}")
break
time.sleep(10)
멀티 모션 브러시 핵심 워크플로우
3단계: 움직임 영역(Zone) 분리하기
멀티 모션 브러시의 핵심은 독립적인 모션 영역을 정확하게 지정하는 것입니다. Runway 웹 인터페이스에서 다음 순서로 진행합니다. - **소스 이미지 업로드** — Gen-4 에디터에서 기준이 되는 정지 이미지를 불러옵니다.- **Motion Brush 도구 선택** — 하단 도구 모음에서 Motion Brush 아이콘을 클릭합니다.- **브러시 1 (Brush 1) 지정** — 첫 번째 색상의 브러시로 움직일 영역(예: 캐릭터의 오른팔)을 칠합니다. 브러시 크기는 [ ] 키로 조절할 수 있습니다.- **브러시 2~5 추가** — 상단의 브러시 번호(최대 5개)를 선택하여 다른 영역(왼팔, 머리, 하체 등)을 각각 분리하여 칠합니다.- **Ambient 영역** — 브러시로 칠하지 않은 영역은 Ambient Motion(배경 미세 움직임)으로 처리됩니다. ### 4단계: 방향 벡터(Directional Vector) 설정 각 브러시 영역에 화살표를 드래그하여 움직임의 방향과 강도를 설정합니다.
| 파라미터 | 설명 | 권장값 |
|---|---|---|
| 화살표 방향 | 드래그 시작점에서 끝점 방향으로 이동 | 자연스러운 관절 움직임 방향 |
| 화살표 길이 | 길수록 이동 속도·거리 증가 | 짧게(1/4 프레임 이내) 시작 후 조절 |
| Proximity 값 | 브러시 경계의 부드러움 정도 | 0.3~0.5 (자연스러운 블렌딩) |
| Ambient Motion | 비지정 영역의 미세 움직임 | Low~Medium |
# API로 카메라 모션 + 피사체 모션 결합 예시
task = client.image_to_video.create(
model="gen4",
prompt_image="https://your-storage.com/scene.png",
prompt_text="Camera slowly dollies in while the character raises both arms above their head, wind blowing hair to the right",
duration=5,
ratio="1280:768"
)
print(f"Combined motion task: {task.id}")
## Pro Tips: 파워 유저를 위한 고급 기법
- **레이어 분리 전략** — 복잡한 장면에서는 전경 캐릭터와 배경 오브젝트를 별도 브러시로 분리하면 움직임 간섭을 최소화할 수 있습니다.- **화살표 대칭 기법** — 걷기 애니메이션에서 왼팔과 오른팔에 반대 방향 벡터를 적용하면 자연스러운 보행 모션이 생성됩니다.- **Seed 고정 활용** — 동일 장면에서 모션 벡터만 변경하며 비교할 때는 Seed 값을 고정하세요. API에서는 seed 파라미터로 지정합니다.- **프레임 익스텐드** — 5초 생성 후 마지막 프레임을 다시 소스로 사용하면 더 긴 시퀀스를 연결할 수 있습니다.- **Ambient Motion 최소화** — 정적 배경이 필요한 장면에서는 Ambient를 None으로 설정하고 피사체 영역만 브러시로 활성화하세요.
## Troubleshooting: 자주 발생하는 문제 해결
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| 브러시 영역이 무시됨 | 브러시 크기가 너무 작거나 영역이 부정확 | 브러시 크기를 키우고 대상 영역을 정밀하게 재칠합니다 |
| 움직임이 부자연스러움 | 화살표 벡터가 너무 길거나 방향이 비현실적 | 벡터 길이를 줄이고 관절 가동 범위에 맞는 방향으로 수정합니다 |
| 카메라와 피사체 모션 충돌 | 카메라 강도가 피사체 모션과 상충 | 카메라 강도를 3 이하로 낮추거나 프롬프트에서 우선순위를 명시합니다 |
| API 401 Unauthorized 오류 | API 키 만료 또는 잘못된 키 | Runway 대시보드에서 API 키를 재생성하고 환경 변수를 업데이트합니다 |
| 생성 시간이 지나치게 김 | 서버 부하 또는 고해상도 설정 | 해상도를 낮추거나 비피크 시간대에 재시도합니다 |
# cURL로 직접 API 호출하는 배치 스크립트 예시
curl -X POST "https://api.dev.runwayml.com/v1/image_to_video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gen4",
"promptImage": "https://your-storage.com/frame_001.png",
"promptText": "Subtle head turn to the left with hair flowing",
"duration": 5,
"ratio": "1280:768"
}'
## 자주 묻는 질문 (FAQ)
Q1: 멀티 모션 브러시는 최대 몇 개까지 사용할 수 있나요?
Gen-4에서는 최대 5개의 독립 모션 브러시를 동시에 사용할 수 있습니다. 각 브러시는 서로 다른 색상으로 구분되며, 개별적으로 방향 벡터와 강도를 설정할 수 있습니다. 복잡한 캐릭터 애니메이션(양팔, 양다리, 머리)을 각각 독립적으로 제어하기에 충분한 수입니다.
Q2: 모션 브러시와 텍스트 프롬프트가 충돌하면 어떻게 되나요?
모션 브러시의 방향 벡터와 텍스트 프롬프트의 지시가 상충할 경우, 일반적으로 모션 브러시의 물리적 방향이 우선합니다. 최적의 결과를 위해서는 텍스트 프롬프트에 브러시로 지정한 움직임과 일치하는 설명을 작성하는 것이 중요합니다. 예를 들어 오른팔을 위로 올리는 브러시를 그렸다면 프롬프트에도 해당 동작을 명시하세요.
Q3: API로 모션 브러시 영역을 프로그래밍 방식으로 지정할 수 있나요?
현재 멀티 모션 브러시의 영역 지정 및 벡터 설정은 Runway 웹 인터페이스에서만 가능합니다. API는 텍스트 프롬프트와 소스 이미지 기반의 생성을 지원합니다. 다만 웹에서 모션 브러시를 설정한 뒤 저장된 프리셋을 API 워크플로우에 연결하여 배치 처리에 활용할 수 있습니다. 향후 SDK 업데이트에서 마스크 기반 모션 제어 API가 추가될 가능성이 있으므로 공식 문서를 확인하세요.