Runway Gen-4 모션 브러시 사용법: AI 영상 카메라·피사체 움직임 정밀 제어 가이드

Runway Gen-4 모션 브러시란?

Runway Gen-4의 모션 브러시(Motion Brush)는 AI 영상 생성 시 특정 영역의 움직임 방향과 강도를 직접 지정할 수 있는 고급 제어 도구입니다. 기존 텍스트 프롬프트만으로는 불가능했던 정밀한 카메라 워크와 피사체별 개별 모션 제어를 시각적 인터페이스로 구현합니다.

사전 준비 및 환경 설정

1단계: Runway 계정 및 API 설정

  • Runway 계정 생성: runwayml.com에서 Pro 또는 Unlimited 플랜에 가입합니다. 모션 브러시는 유료 플랜 전용 기능입니다.- API 키 발급: 대시보드 → Settings → API Keys에서 키를 생성합니다.- Python SDK 설치:pip install runwayml pip install runwayml —upgrade # 최신 버전 유지 권장

2단계: API 인증 구성

import runwayml

client = runwayml.RunwayML(
    api_key="YOUR_API_KEY"
)

# 연결 테스트
print(client.account.retrieve())

환경 변수로 관리하려면:

# .env 파일 RUNWAYML_API_SECRET=YOUR_API_KEY

import os
from dotenv import load_dotenv
import runwayml

load_dotenv() client = runwayml.RunwayML( api_key=os.environ[“RUNWAYML_API_SECRET”] )

모션 브러시 핵심 워크플로우

3단계: 기본 영상 생성 요청

모션 브러시를 사용하기 전, 먼저 기본 이미지-투-비디오 태스크를 생성합니다. task = client.image_to_video.create( model="gen4", prompt_image="https://your-storage.com/scene.png", prompt_text="cinematic ocean sunset with gentle waves", duration=10, ratio="1280:768" ) print(f"Task ID: {task.id}") ### 4단계: 모션 브러시 영역 정의

모션 브러시는 JSON 형식의 영역(region) 배열로 움직임을 지정합니다. 각 영역은 마스크 좌표, 방향 벡터, 강도를 포함합니다. motion_config = { "regions": [ { "mask": { "type": "bbox", "x": 0.1, "y": 0.3, "width": 0.25, "height": 0.4 }, "direction": {"x": 0.8, "y": -0.2}, "intensity": 0.7, "label": "subject_person" }, { "mask": { "type": "bbox", "x": 0.5, "y": 0.0, "width": 0.5, "height": 1.0 }, "direction": {"x": -0.3, "y": 0.0}, "intensity": 0.4, "label": "background_clouds" } ] }

task = client.image_to_video.create( model=“gen4”, prompt_image=“https://your-storage.com/scene.png”, prompt_text=“person walking through field, clouds drifting”, duration=10, ratio=“1280:768”, motion_brush=motion_config )

5단계: 카메라 모션 제어

카메라 움직임은 별도의 camera_motion 파라미터로 모션 브러시와 결합할 수 있습니다. task = client.image_to_video.create( model="gen4", prompt_image="https://your-storage.com/cityscape.png", prompt_text="busy city street at golden hour", duration=10, ratio="1280:768", camera_motion={ "type": "combined", "pan": {"x": 0.3, "y": 0.0}, "zoom": 0.15, "tilt": -0.05 }, motion_brush=motion_config ) ### 모션 파라미터 참조 테이블

파라미터범위설명
direction.x-1.0 ~ 1.0수평 이동 (양수: 오른쪽, 음수: 왼쪽)
direction.y-1.0 ~ 1.0수직 이동 (양수: 아래, 음수: 위)
intensity0.0 ~ 1.0움직임 강도 (0.3~0.7 권장)
camera_motion.pan-1.0 ~ 1.0카메라 수평/수직 패닝
camera_motion.zoom-1.0 ~ 1.0줌 인(양수) / 줌 아웃(음수)
camera_motion.tilt-1.0 ~ 1.0카메라 틸트 각도
### 6단계: 결과 확인 및 다운로드
import time

while True: status = client.tasks.retrieve(task.id) if status.status == “SUCCEEDED”: print(f”영상 URL: {status.output[0]}”) break elif status.status == “FAILED”: print(f”오류: {status.failure}”) break time.sleep(5)

Pro Tips: 파워 유저를 위한 고급 기법

  • 다중 레이어 모션: 최대 5개 영역을 겹쳐 사용하면 전경·중경·배경의 시차(parallax) 효과를 만들 수 있습니다. 전경 intensity: 0.8, 배경 intensity: 0.2로 설정하세요.- 정지 영역 고정: 움직이지 않아야 할 영역에 intensity: 0.0을 지정하면 AI가 해당 부분을 자동으로 왜곡하는 것을 방지합니다.- 프롬프트-모션 일관성: 텍스트 프롬프트의 움직임 묘사와 모션 브러시 방향이 일치해야 자연스러운 결과를 얻습니다. 상충하면 아티팩트가 발생합니다.- 시드 고정으로 반복 테스트: seed 파라미터를 고정하고 모션 값만 변경하면 움직임 차이를 정확히 비교할 수 있습니다.- 배치 자동화: 여러 모션 구성을 배열로 만들어 반복문으로 대량 생성하면 최적 설정을 빠르게 탐색할 수 있습니다.
    configs = [
    {“intensity”: 0.3, “direction”: {“x”: 0.5, “y”: 0.0}},
    {“intensity”: 0.6, “direction”: {“x”: 0.5, “y”: 0.0}},
    {“intensity”: 0.9, “direction”: {“x”: 0.5, “y”: 0.0}},
    ]

task_ids = [] for cfg in configs: motion = {“regions”: [{“mask”: {“type”: “bbox”, “x”: 0.2, “y”: 0.2, “width”: 0.3, “height”: 0.5}, **cfg}]} t = client.image_to_video.create( model=“gen4”, prompt_image=“https://your-storage.com/test.png”, prompt_text=“dancer spinning slowly”, duration=5, motion_brush=motion, seed=42 ) task_ids.append(t.id)

print(f”생성된 태스크 {len(task_ids)}개: {task_ids}“)

Troubleshooting: 자주 발생하는 오류 해결

오류 메시지원인해결 방법
INVALID_MOTION_REGION마스크 좌표가 0~1 범위를 초과모든 좌표값이 0.0~1.0 사이인지 확인
RATE_LIMIT_EXCEEDED분당 API 요청 한도 초과요청 간 time.sleep(10) 추가 또는 플랜 업그레이드
MOTION_CONFLICT카메라 모션과 브러시 방향 충돌카메라 pan 방향과 피사체 모션 방향의 정합성 확인
결과 영상 떨림(jitter)intensity 값이 너무 높음0.3~0.6 범위로 낮추고 재생성
피사체 형태 왜곡영역 마스크가 너무 작거나 부정확마스크를 피사체보다 10~15% 크게 설정
## 자주 묻는 질문 (FAQ)

Q1: 모션 브러시는 무료 플랜에서도 사용할 수 있나요?

아니요. 모션 브러시는 Runway Pro 플랜 이상에서만 사용 가능합니다. Standard 플랜에서는 기본 카메라 모션만 지원되며, 영역별 개별 제어는 Pro 또는 Unlimited 플랜이 필요합니다.

Q2: 모션 브러시 영역은 최대 몇 개까지 설정할 수 있나요?

현재 Gen-4에서는 한 영상당 최대 5개의 모션 브러시 영역을 동시에 적용할 수 있습니다. 영역이 많아질수록 GPU 처리 시간이 증가하므로, 핵심 피사체 2~3개에 집중하는 것이 품질과 속도 면에서 최적입니다.

Q3: 웹 UI의 모션 브러시와 API 모션 브러시는 동일한 결과를 내나요?

기본적으로 동일한 엔진을 사용하지만, 웹 UI에서는 브러시 스트로크 형태의 자유 곡선 마스크를 지원하는 반면 API에서는 bbox(사각형) 기반 영역 지정이 기본입니다. 복잡한 형태의 마스크가 필요하면 웹 UI에서 먼저 테스트한 후 API로 자동화하는 하이브리드 접근을 권장합니다.

다른 도구 둘러보기

Antigravity AI 콘텐츠 파이프라인 자동화 가이드: Google Docs에서 WordPress 퍼블리싱까지 가이드 Bolt.new 사례 연구: 마케팅 에이전시가 하루 만에 클라이언트 대시보드 5개 구축 사례 Bolt.new 베스트 프랙티스: 자연어 프롬프트로 풀스택 앱 빠르게 생성하기 모범사례 ChatGPT 고급 데이터 분석(코드 인터프리터) 완벽 가이드: 업로드부터 시각화까지 가이드 ChatGPT Custom GPTs 고급 가이드: Actions, API 통합, 지식 베이스 설정 가이드 ChatGPT 음성 모드 가이드: 음성 중심 고객 서비스와 내부 워크플로우 구축 가이드 Claude API 프로덕션 챗봇 가이드: 안정적인 AI 어시스턴트를 위한 시스템 프롬프트 아키텍처 가이드 Claude Artifacts 활용 베스트 프랙티스: 인터랙티브 대시보드, 문서, 코드 미리보기 만들기 모범사례 Claude Code Hooks 가이드: Pre/Post 실행 훅으로 커스텀 워크플로우 자동화하기 가이드 Claude MCP 서버 설정 가이드: Claude Code와 Desktop을 위한 커스텀 도구 통합 가이드 Cursor 사례 연구: 1인 창업자가 AI 코딩으로 2주 만에 Next.js SaaS MVP 구축 사례 Cursor Composer 완벽 가이드: 멀티 파일 편집, 인라인 Diff, 에이전트 모드 가이드 Cursor Rules 고급 가이드: 프로젝트별 AI 설정과 팀 코딩 표준 가이드 Devin AI 팀 워크플로우 통합 베스트 프랙티스: Slack, GitHub, 코드 리뷰 자동화 모범사례 Devin 사례 연구: 500개 패키지 Python 모노레포 의존성 자동 업그레이드 사례 ElevenLabs 사례 연구: 에드테크 스타트업이 6주 만에 200시간 강의를 8개 언어로 현지화 사례 ElevenLabs 다국어 더빙 가이드: 글로벌 콘텐츠를 위한 자동화된 영상 현지화 워크플로우 가이드 ElevenLabs Voice Design 완벽 가이드: 게임, 팟캐스트, 앱을 위한 일관된 캐릭터 음성 만들기 가이드 Gemini 2.5 Pro vs Claude Sonnet 4 vs GPT-4o: AI 코드 생성 비교 2026 비교 Gemini API 멀티모달 개발자 가이드: 이미지, 비디오, 문서 분석 코드 예제 가이드