azosi · 2026.7.29 03:32 · 조회 1

Motion Canvas 사용 가이드

Motion Canvas는 TypeScript 제너레이터 함수로 벡터 애니메이션을 정의하고, 실시간 미리보기 에디터에서 즉시 확인·렌더링할 수 있는 오픈소스 애니메이션 라이브러리다. Revideo와 Remotion 모두 이 Motion Canvas 생태계/사상을 계승한 프레임워크다.

📌 프로젝트 상태 (2026-07 기준)

Motion Canvas는 활발히 유지보수 중 (Revideo와 달리 메인테이너가 본 프로젝트를 지속). 정보 전달용·교육용 애니메이션의 사실상 표준 도구로 자리잡음. 단, 서버less 렌더 API는 없어 SaaS용 백엔드 자동화에는 Revideo가 더 적합.


🧩 핵심 컴포넌트

Motion Canvas는 두 부분으로 나뉜다:

컴포넌트역할
TypeScript 라이브러리제너레이터 함수 기반 애니메이션 정의 (makeScene2D, 노드, signal, tween 등)
에디터 (Vite dev server)실시간 미리보기 + 변수 슬라이더 + 렌더 트리거 + 프레임 단위 디버깅

핵심 아이디어: 함수 = 애니메이션. yield*로 시간 흐름을 제어하고, 한 함수 안에서 모든 장면·전환을 표현한다.


🆚 Revideo / Remotion과의 비교

항목Motion CanvasRevideoRemotion
언어TypeScript 제너레이터TypeScript 제너레이터React + JSX
대상정보 전달·교육 영상SaaS 자동화 영상React 개발자 영상
렌더링브라우저에서 export (이미지 시퀀스 / mp4)헤드리스 API + 서버lessNode + Puppeteer/Chrome
실시간 미리보기✅ 강력 (에디터 자체)✅ Studio (Revideo Player)✅ Remotion Studio
서버 렌더❌ 미지원renderVideo()✅ CLI / Lambda
3D / 외부 라이브러리⚠️ 제한적✅ Rive, Three.js, Lottie⚠️ React 한정
상태🟢 활발🟡 Midrender 흡수🟢 활발
GitHub stars4.5k+2k+ (Revideo)21k+

선택 가이드:

  • 교육/설명 영상, 발표 자료 → Motion Canvas
  • SaaS 자동화, 다량 영상, 서버less → Revideo
  • React 팀, JSX 선호 → Remotion

📂 이 가이드의 구성 (6 children 영역)

Motion Canvas 생태계도 hub + children 구조로 정리한다. 각 영역은 독립 페이지로 확장 예정:

영역다루는 내용상태
시작하기설치, Quickstart, 프로젝트 구조📝 작성 예정
애니메이션 & 디자인Scenes, 노드 트리, signal, tween, layout📝 작성 예정
렌더링이미지 시퀀스 / mp4 / 슬라이드쇼 export📝 작성 예정
에디터 워크플로우변수 슬라이더, 프레임 디버깅, Vite 설정📝 작성 예정
확장 & 통합Lottie, Rive, 외부 에셋, Font📝 작성 예정
플랫폼 & 도움말Discord, GitHub Discussions, 트러블슈팅📝 작성 예정

각 children은 본 가이드의 표준 형식 (한글화 + 코드 예시 + 표)을 따라 작성된다.


🚀 Quickstart (5분)

1) 새 프로젝트 생성

npm init motion-canvas@latest
# 또는 직접
mkdir my-project && cd my-project
npm init -y
npm install @motion-canvas/core @motion-canvas/2d

2) Vite 설정

// vite.config.ts
import {defineConfig} from 'vite';
import motionCanvas from '@motion-canvas/vite-plugin';

export default defineConfig({
  plugins: [motionCanvas()],
});

3) 첫 Scene 작성

// src/scenes/example.tsx
import {makeScene2D, Circle} from '@motion-canvas/2d';

export default makeScene2D(function* (view) {
  view.add(<Circle size={320} fill={'#3b82f6'} />);
});

4) 프로젝트 진입점

// src/project.ts
import {makeProject} from '@motion-canvas/core';
import example from './scenes/example?scene';

export default makeProject({
  scenes: [example],
});

5) 에디터 실행

npm run start
# http://localhost:9013

에디터에서 변수 슬라이더 / 타임라인 / 프레임 점프 사용 가능. Ctrl+S로 변경사항 즉시 반영.


🎬 렌더링 — 3가지 export 모드

모드결과용도
이미지 시퀀스 (기본)PNG 프레임 폴더 (/output/)고품질, 후처리 가능
비디오mp4일반 공유
슬라이드쇼PNG 묶음프레젠테이션

⚠️ 렌더는 브라우저 안에서 일어남. 헤드리스 서버/CLI로 자동화하려면 Playwright/Puppeteer로 에디터를 띄우고 RENDER 버튼을 자동 클릭하는 패턴이 필요 (Revideo 대비 큰 약점).


🧠 Motion Canvas의 사고방식

함수가 곧 애니메이션

yield* circle().fill('#ef4444', 1);   // 1초 동안 빨간색으로 보간
yield* circle().position.x(300, 0.5); // 0.5초 동안 x 이동
yield* waitFor(0.3);                   // 0.3초 대기

Signal = 시간에 따라 변하는 값

const opacity = createSignal(0);
view.add(<Circle opacity={opacity} />);
yield* opacity(1, 1);

노드 = JSX 트리

Motion Canvas의 JSX는 React와 비슷하지만 시간/시각 속성에 최적화된 노드 시스템:

<Layout direction={'column'} gap={20} alignItems={'center'}>
  <Txt text={'Hello'} fontSize={64} />
  <Rect width={400} height={200} fill={'#1e40af'} radius={20} />
</Layout>

🚀 다음 단계

작업가이드
설치 + 첫 SceneQuickstart (공식)
Scene 구조 깊이Project Structure (공식)
Revideo와 차이Revideo 사용 가이드
Remotion과 차이Remotion 사용 가이드

🔗 공식 리소스

상위 문서: 없음 (Root hub) 출처: Motion Canvas 공식 문서 — Introduction + Quickstart 한글화 (2026-07-29) 공급사: Motion Canvas (motion-canvas 조직)

변경 이력

날짜변경
2026-07-29초안 작성 — Motion Canvas 사용 가이드 hub 본문 + 6 children 영역 구분 + Quickstart

댓글

아직 댓글이 없습니다.

댓글을 작성하려면 로그인이 필요합니다.