Ice Motion: 모션 크래프트
이 스킬은 사물이 어떻게 움직일지를 결정합니다. 브리핑과 방향이 수립된 후에 워크플로우(ice-film, ice-explainer, ice-remake, ice-edit, ice-lottie)에 의해 호출됩니다. 모션 계획을 작성하며, 빌드하거나 렌더링하지 않습니다.
1. 이 스킬이 소유하고 가리키는 것
| 소유 | 가리킴 |
|---|---|
| 운동 작업, 모션 동사, 원인과 결과 | 운동성 타이포그래피, 캡션, 읽기 시간, 표시 유형의 타이핑 케이던스: ice-type |
| 지속 시간, 이징, 지연(stagger), 오버랩, 스프링 | 음악, SFX, 음성 해설, 비트 그리드, 단어 타이밍: ice-audio |
| 홀드 정책(활성, 카메라 전용, 진정한 정지, 유휴 없음) | 게이트, 심 검증, 프레임 스캔, 밀도 측정: ice-qa |
| 컷 및 전환 카탈로그, 전환 정책 | 엔진 구문, 렌더링, 셔터 캡처, 플랫폼 안전 영역: ice-engines |
| 심, 캐리, 벡터 법칙, 핸드오프 | 아트 및 드로잉 스타일, 캐릭터 리그, 내레이션 문법: ice-styles |
| 카메라, 구도, 히어로 크기, 스테이징 라이트, 풍부도 측정 | 팔레트, 유형 페어링, 반-동질성 지문, 결정 로그: ice-direction |
| 2D, 2.5D 및 3D 모션; 물리학; 모핑; 루프 | 아랍어 및 오른쪽에서 왼쪽 문자 형태와 방향: ice-arabic |
| 영화 내 커서 및 UI 데모 모션 | 출시 앱 및 사이트 UI 모션, Lottie, 로고 벡터 준비: ice-lottie |
| 무브 덱, 원자적 무브, 샷 청사진 | 자산 진실, 실제 UI 캡처, 로고: ice-assets |
다른 스킬을 이름으로 가리키고, 그 규칙을 다시 설명하지 마십시오.
2. 호출 시 절차
- 브리핑 슬롯(영화 또는 편집 유형, 플랫폼, 종횡비, 지속 시간, 언어, 레지스터, 브랜드 단어)과 방향 로그를 읽습니다. 유형이 누락된 경우 워크플로우에 물어보고 추측하지 마십시오.
references/motion-language-by-type.md를 열고 영화의 모션 언어를 설정합니다: 홀드 정책, 전환 정책, 카메라 정책, 오버슛 정책, 클록 및 블러 문법, 페이스. 브리핑이 명시하지 않은 경우에만 산업 및 브랜드 성격 프리셋을 적용합니다.- 모션 성격을 작성합니다: 하나의 은유와 3-5개의 규칙(
references/motion-grammar.md섹션 8). 다양한 예제가 있으니 절대 복사하지 마십시오. - 모션 팔레트를 할당합니다: 3개의 핵심(core) 무브, 최대 2개의 악센트, 최대 1개의 시그니처, 이전 영화의 핵심 무브는 피합니다(
references/move-deck.md,references/anti-slideshow-and-density.md섹션 6). - 모든 비트(beat)에 대해 운동 작업과 동사, 타이밍과 이즈, 그리고 중요도 수준을 작성합니다(
references/motion-grammar.md,references/timing-and-easing.md,references/measured-motion.md). - 모든 경계에 대해 캐리어, 종료 및 진입 벡터와 이유를 포함한 심 행을 작성합니다(
references/seams-and-carry.md,references/transition-policy.md,references/cut-catalog.md). - 모든 카메라 움직임에 대해 이유와 윈도우를 작성합니다(
references/camera.md). - 계획을 안티-슬라이드쇼 규칙과 유형별 밀도 목표(
references/anti-slideshow-and-density.md) 및 시각적 풍부도 최소 기준에 대해 확인합니다: 영화 유형의 '풍부도 최소 기준' 표(ice-film 워크플로우의references/film-types/<type>.md)와references/composition-and-staging.md섹션 7의 측정 및 수정 사항을 읽습니다. 최소 기준 미만의 샷은 아무것도 빌드되기 전에 재구성됩니다. - 상업 광고, 제품 여정 및 음성 해설 없는 텍스트 중심 영화의 경우, 기계 검증 가능한 모션 계약(형태:
assets/motion-contract.example.json; 원칙:references/continuous-journey.md)도 작성하고python scripts/validate_motion_contract.py ice/plan/motion-contract.json --project-root .를 PASS가 출력될 때까지 실행합니다. 계획을 워크플로우에 전달합니다; ice-qa가 렌더를 검증합니다. 검증기가 문자 그대로 확인하는 세 가지 사항:- 참조: 분해 노트가 있는 세 개의 역할별 참조. 날짜가 지정된 연구에서 실제로 시청할 수 있는 참조를 찾지 못한 경우,
"references": [](또는 가진 참조)와 함께"referencesWaiver": {"reason": "<검색 내용, 시청 가능한 참조가 없는 이유>", "researchNote": "ice/research/<note>.md"}를 작성하십시오; 보지 않은 영화를 설명하는 노트를 참조로 가리키지 마십시오. - 계보(lineage): 각 경계를 넘어 그림이 아닌 ID를 비교합니다: 나가는 장면의
transition.semanticId는 다음 장면의entry.semanticId와 동일해야 하므로, 운반되는 객체에 양쪽에서 동일한semanticId를 부여하십시오. 그림이 실제로 운반되는지는 ice-qa와 리뷰어가 렌더에서 판단합니다. - 일반 동사(slide, grow, scale, float 및 목록의 나머지)는 객체가 말 그대로 그 메커니즘인 경우에만 실패합니다. 그런 다음 해당
primaryMotion또는 텍스트 단위에"literalMechanism": "<실제 메커니즘을 한 문장으로>"를 추가하십시오.
- 참조: 분해 노트가 있는 세 개의 역할별 참조. 날짜가 지정된 연구에서 실제로 시청할 수 있는 참조를 찾지 못한 경우,
- 모든 모션 결정을 그 이유와 출처와 함께 ice-direction(
ice/DIRECTION.md)을 통해 기록합니다.
3. 보편 법칙(모든 유형에서 유지)
- 모든 움직임은 작업(주의 집중, 연속성 유지, 변화 표시, 캐릭터 표현)을 수행하거나 제거됩니다.
- 모션은 의미를 따릅니다: 흐름은 흐르고, 빌드는 조립되며, 카운트다운은 틱택하고, 경로는 방향으로 그려지고, 숫자는 원인이 변하는 동안 카운트됩니다.
- 한 번에 하나의 초점 모션; 지원 요소는 대기하고, 초점 요소는 절대 기다리지 않습니다.
- 진입은 감속하고, 종료는 가속하며, 화면 내 움직임은 인 앤 아웃으로 이징되고, 충돌은 접촉 지점으로 가속됩니다; 기계적이지 않은 한 공간 이동에 선형을 사용하지 마십시오; 모든 것에 하나의 이즈를 사용하지 마십시오(영화당 최소 3개의 이징 캐릭터).
- 종료는 진입보다 빠릅니다; 진입은 2-3개의 감쇠 채널을 사용하며, 불투명도만으로는 안 됩니다; 절대 0에서 성장하지 마십시오.
- 지연(stagger)은 그룹당 약 0.5초 미만으로 유지하고, 불규칙하며, 중요도 순서로 합니다; 오프셋은 오프셋하는 움직임보다 짧습니다.
- 대비가 메시지입니다: 속도(가장 느린 장면은 가장 빠른 장면의 약 3배), 샷 길이, 밀도 및 정지를 다양하게 하십시오; 스케일, 효과 및 악센트는 한 번 사용하십시오.
- 어떤 것이 모든 경계를 교차합니다: 운반되는 객체, 일치하는 벡터, 음성 또는 비트; 장면 A의 종료는 장면 B의 진입(동일 축, 방향, 속도)을 결정합니다.
- 카메라는 구두점입니다: 하나의 명명된 이유로 움직이며, 전환에는 느리게, 악센트에만 빠르게, 연속 세 번의 안쪽 푸시(push)는 없습니다.
- 홀드는 결정입니다: 영화의 홀드 정책은 유형별로 선택되고 모든 곳에 적용됩니다; 콘텐츠가 부족한 장면은 단축되거나 스토리가 주어지며, 절대 흔들리지 않습니다.
- 모든 프레임은 시간의 순수 함수입니다: 폐쇄형 스프링, 시드 기반 난수, 벽 시계 없음, 상태 저장 솔버 없음.
- 효과는 약한 레이아웃, 약한 포즈 또는 누락된 증거를 보완하지 않습니다.
4. 범위별로 해결된 충돌(요약)
| 질문 | 유형별 답변 | 파일 |
|---|---|---|
| 홀드 중 무엇이 움직입니까? | 활성(런칭, 앱 광고, 소셜, 하이프), 카메라 전용(설명, 이야기, 데이터, 장편), 진정한 정지(구두점으로서 브랜드, 아트 휴식, 운동 휴식, 코미디), 유휴 없음(UI 워크스루, 내레이션 런칭) | references/holds-and-stillness.md |
| 크로스페이드? | 런칭, 앱 광고, 하이프, 운동성, 콜라주, 음악 주도, 소셜에서는 장면 간 금지; 조용한 브랜드, 아트, 장편, 팟캐스트, 차트-대-차트에서는 "이것은 계속된다"로 허용 | references/transition-policy.md |
| 하드 컷? | 편집된 푸티지, 설명 및 콜라주에서 약 95%의 변경; 카메라가 편집자인 영화에서는 다운비트에서만 최대 두 번 | references/transition-policy.md |
| 오버슛? | 데이터, 금융, 건강, 럭셔리, 카메라, 텍스트에는 없음; 런칭 및 UI에는 약간; 소비자 영화당 하나의 스프링; 어린이 및 마스코트에게만 장난기 있음 | references/timing-and-easing.md |
| 최종이 아닌 장면에서 종료? | 전환이 종료인 경우(조립된 런칭 영화) 금지; 내레이션이 있는 설명에서는 짧은 가속 종료 또는 제자리 강등 | references/transition-policy.md |
| 프레임 채우기 또는 큰 빈 바닥? | 채우기(비즈니스 스팟, 설명, 모든 세로 광고) 또는 약 70% 텍스처 바닥(미니멀 장르 참조, 조용한 브랜드, 풍경만): 참조 장르와 레지스터로 선택. 어느 쪽이든 유형의 풍부도 최소 기준이 유지됩니다; "프리미엄"은 혼란을 빼고, 채움을 빼지 않습니다 | references/composition-and-staging.md 섹션 2 및 7 |
| 홀드 중 카메라? | 느린 푸시 3-6%(정책 A 및 B); 고정(C 및 D) | references/camera.md, references/holds-and-stillness.md |
5. 출력 계약: 모션 계획
워크플로우는 ice/plan/motion-plan.md로 저장합니다. 모든 슬롯을 채우십시오; 슬롯은 플레이스홀더이며 예제 값이 아닙니다.
## 모션 언어
type: <영화 또는 편집 유형> | hold policy: <A|B|C|D> | transitions: <주요 + 악센트> | camera policy: <...>
overshoot: <없음|약간|하나의 스프링|장난기> | clock: <fps, 부드러움 또는 스텝> | blur grammar: <스미어|선명|셔터>
personality: <하나의 은유> + <3-5개의 규칙>
palette: core <무브, 무브, 무브> | accents <무브, 무브> | signature <무브 또는 없음>
richness: hero_share <n> | hero_width <n 또는 해당 없음> | frame_fill <16분의 n> | empty_half <s> | depth_layers <n> | in_shot_motion <n 퍼센트> | longest_still <s> | light_events <n> | real_material <퍼센트 또는 해당 없음> (영화 유형 파일의 최소 기준 숫자)
## 비트(각 행 하나씩)
| t in-out | beat role | importance 1-3 | focal element | job | verb | ease | duration | stagger | buys |
## 심(경계당 하나의 행)
| cut t | out motion (axis, direction, speed, blur) | seam type | in motion | carrier | ease pair | cue | reason |
## 카메라 윈도우
| from | apex | dwell end | to | target | move | reason |
6. 파일
| 필요 | 열기 | 시기 |
|---|---|---|
| 유형, 산업 또는 브랜드에 대한 모션 언어 설정 | references/motion-language-by-type.md | 첫 번째, 매번 |
| 무언가가 움직이는지 여부와 이유 결정; 동사; 원인과 결과; 성격 | references/motion-grammar.md | 모든 비트 계획 |
| 지속 시간, 이즈 방향, 지연, 오버랩 법칙, 오버슛 정책, 타이밍 앵커 | references/timing-and-easing.md | 모든 비트 타이밍 |
| 측정된 인간 숫자와 12개의 적합 이즈 | references/measured-motion.md 및 scripts/measured-eases.mjs | 런칭, 앱 광고, UI, 하이프; 참조 무브 일치 |
| 스프링 공식, 감쇠 가이드, 프리셋 패밀리, 명명된 cubic-bezier 곡선 | references/springs-and-curves.md 및 scripts/springs.mjs | 모든 스프링 또는 사용자 정의 곡선 |
| 홀드 중 발생 상황; 종료 홀드; 프리즈; 루프 | references/holds-and-stillness.md | 홀드 또는 종료 전 |
| 컷 또는 전환의 정확한 구성 | references/cut-catalog.md | 심 구축 |
| 전환 유형, 개수, 크로스페이드 및 종료 정책, 심 계획 필드 | references/transition-policy.md | 심 선택 |
| 캐리, 벡터 법칙, 핸드오프 계약, 공차, 루트 주인공 | references/seams-and-carry.md | 모든 경계 |
| 하나의 형태, 하나의 세계 및 하나의 배우 영화 | references/one-take-films.md | 방향이 연속 영화를 요청할 때 |
| 카메라 이유, 리그 규칙, 무브 지속 시간, 흔들림, 밀도 제한 | references/camera.md | 모든 카메라 움직임 |
| 초점, 히어로 크기, 레이어, 레이아웃, 스테이징, 스테이징 라이트, 시각적 풍부도 최소 기준(섹션 7) | references/composition-and-staging.md | 모든 샷 프레이밍; 8단계에서 계획 확인 |
| 2D vs 2.5D vs 3D, 시차, 피사계 심도, 3D 비행 값 | references/depth-and-3d.md | 깊이 또는 3D 비트 |
| 슬라이드쇼 실패 모드, 리듬, 밀도 목표, 지출 규칙 | references/anti-slideshow-and-density.md | 계획 검토 |
| 엔지니어링으로서의 애니메이션 원칙, 물리학 레시피, 모핑, 드로우 온, 루프 | references/physics-and-morphing.md | 물리학 또는 모핑 비트 |
| 커서, 클릭, 드래그, 토글, 에이전트 상태, UI 데모 레시피 | references/cursor-and-ui.md | 모든 UI 데모 |
| 값 테이블과 의도 선택기가 있는 작은 무브 | references/atomic-moves.md | 한 비트에 대한 무브 선택 |
| 46카드 무브 덱, 거부된 이름, 메커니즘 카탈로그 | references/move-deck.md | 모션 팔레트 할당 |
| 시간 코딩 청사진, 샷 구성, 시간 뼈대 | references/shot-blueprints.md | 샷 시퀀스 계획 |
| 프레임 클록, 블러 문법, 모션 블러 시기, 그레인 | references/motion-blur-and-clock.md | 클록 및 블러 설정 |
| 하나의 루트 주인공, 상태 체인, 상속 채널, 하드 컷 레코드, 행동하는 텍스트, 종료(창립자 원본) | references/continuous-journey.md | 상업 광고 및 제품 여정 |
| 물리적 결정 계약, 던지기, 인력, 강성 UI 종료, 모션 단계별 사운드(창립자 원본) | references/motion-choreography.md | 물리학 또는 인과 비트 |
| 프레임 및 텍스트 초점 단위 계약, 카메라 필요성 테스트, 카메라 동사, 2D 앵커 공식(창립자 원본) | references/semantic-camera.md | 상업 광고의 모든 카메라 결정 |
| 모션 계약 형태 | assets/motion-contract.example.json | 모션 계약 작성(값은 예시일 뿐) |
스크립트(Windows, macOS, Linux). 최소 Node 및 Python 버전: ice-engines 스킬의 references/versions.json에 있는 runtimes; Python 패키지: scripts/requirements.txt(정확한 핀은 versions.json과 동기화).
| 스크립트 | 런타임 | 사용 |
|---|---|---|
node scripts/measured-eases.mjs [ease] [samples] | Node | 12개의 측정된 이즈 출력 또는 가져오기 |
node scripts/springs.mjs [w z seconds] | Node | 폐쇄형 스프링 및 정착 시간 출력 또는 가져오기 |
python scripts/validate_motion_contract.py <contract.json> [--project-root <folder>] | Python, 표준 라이브러리 | 엄격한 인과, 시간, 공개, 계보, 카메라 및 사운드 계약 게이트; 종료 코드 1은 실패 목록 표시 |
python scripts/audit_web_section_motion.py <project folder> | Python, 표준 라이브러리 | 애니메이션 웹 섹션 코드 패턴 거부(종료 코드 1) |
python scripts/audit_motion.py --video <mp4> --audio <wav> | numpy 및 opencv-python-headless가 있는 Python | 참조 대비 오디오 온셋 및 시각적 변화 밀도; 진단 도구, 판결 아님 |
창립자의 파일에는 "From the founder's commercial-motion-design skill"이라는 메모가 있습니다.