azosi · 2026.7.30 00:13 · 조회 1

Motion Canvas 확장 & 통합

Motion Canvas는 외부 에셋 / 외부 라이브러리 통합에 제한이 있다 (브라우저 내 export + 2D only). 이 페이지는 자주 쓰이는 통합 패턴을 자체 정리한 내용이다.

⚠️ Type B 페이지: 공식 문서가 얇아서 자체 조사 + 검증된 패턴 위주로 정리. 출처 없는 패턴은 ❌ 표시.


🖼️ 이미지 (Img)

import {Img} from '@motion-canvas/2d';

view.add(
  <Img
    src={'/image.png'}        // public/ 또는 절대 URL
    width={400}
    height={300}
    radius={12}
  />,
);

public/ 폴더에 두면 /image.png로 접근. 외부 CDN URL도 가능 (CORS 주의).

동적 로딩 / placeholder

const img = createRef<Img>();
view.add(<Img ref={img} src={''} width={400} height={300} />);

yield img().src('/loaded.png', 0);  // 시점 변경 시 로드

📝 외부 폰트

Google Fonts

/* src/style.css */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR&display=swap');
// scene
<Txt
  fontFamily={'Noto Sans KR'}
  fontSize={64}
  text={'한글도 잘 나와요'}
/>

로컬 폰트

/* public/font.css */
@font-face {
  font-family: 'Pretendard';
  src: url('/fonts/Pretendard-Bold.woff2') format('woff2');
  font-weight: 700;
}

한/중/일 폰트는 Web font + woff2 권장. TTF는 용량 큼.


🎬 Lottie 통합

Motion Canvas는 Lottie 네이티브 지원이 없음. 패턴 2가지:

패턴 A: <Img> + Lottie JSON → PNG 시퀀스 변환

# Lottie JSON → PNG 시퀀스 (서버사이드)
# lottie_convert 또는 After Effects + bodymovin
view.add(<Img src={'/lottie-frames/0001.png'} width={400} />);

한계: 애니메이션 표현 불가, 정적 프레임만.

패턴 B: HTML overlay (iframe)

Motion Canvas는 iframe 직접 렌더 안 됨 → Revideo 사용 권장:

// Revideo는 Lottie + Rive + 3D 모두 지원
// https://wiki.snowpuri.com/spaces/videoai/wiki/951

Lottie가 중요하면 Revideo가 정답.


🎨 Rive 통합

Rive도 Motion Canvas에 네이티브 미지원. 같은 패턴:

  • 해결 1: Rive → PNG 시퀀스 export → <Img> 시퀀스
  • 해결 2: Rive가 필요하면 Revideo (Rive 네이티브 지원) 검토

🎵 오디오 통합

Motion Canvas는 오디오 트랙 미지원 (2026-07 기준, GitHub 이슈에서 진행 중).

우회:

  • 영상 export 후 외부 도구로 mux (FFmpeg)
  • 또는 Revideo/Remotion 사용 (오디오 트랙 1급 지원)

📐 외부 데이터 (JSON) 주입

패턴: Variables + URL query

import {createVariable} from '@motion-canvas/core';

const data = createVariable({title: 'Default', count: 0});
view.add(<Txt text={data().title} fontSize={64} />);

에디터 URL: ?data=%7B%22title%22%3A%22Custom%22%2C%22count%22%3A42%7D

디자인 리뷰 시 URL 공유만으로 변수 값 변경 가능.

패턴: fetch + 비동기

export default makeScene2D(async function* (view) {
  const res = await fetch('/api/data.json');
  const data = await res.json();

  view.add(<Txt text={data.title} fontSize={64} />);
});

async function*로 Scene을 비동기로 만들 수 있다.


🧩 플러그인 (커스텀 노드)

Motion Canvas는 플러그인 시스템이 있다. 커스텀 노드/신호 타입 등록 가능:

// plugins/gradient-circle.ts
import {Circle, makePlugin} from '@motion-canvas/2d';

export class GradientCircle extends Circle {
  // 커스텀 노드
}

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

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

일반 사용에는 거의 안 쓰이지만, 반복 노드 패턴을 라이브러리화할 때 유용.


⚠️ Motion Canvas가 약한 영역 정리

기능Motion Canvas대안
Lottie/Rive❌ 미지원Revideo
오디오 트랙Revideo, Remotion
3D (Three.js)Revideo, Three.js 직접
서버 자동화❌ (브라우저 only)Revideo, Remotion Lambda
외부 데이터✅ VariableOK
폰트/이미지OK
플러그인OK

한 줄 요약: 정적 2D 벡터 애니메이션은 Motion Canvas. SaaS 자동화 / 동적 데이터 / 3D / 오디오는 Revideo.


🚀 다음 단계

작업가이드
SaaS 자동화Revideo 사용 가이드
React 통합Remotion 사용 가이드
도움말Motion Canvas 플랫폼 & 도움말

🔗 참고 자료

상위 문서: ← Motion Canvas 사용 가이드 출처: [주제 가이드 — Motion Canvas 확장/통합] (자체 조사·작성 2026-07-30) + 1차: Motion Canvas 공식 문서 일부 공급사: 자체 작성 + Motion Canvas (motion-canvas 조직) 1차 자료

변경 이력

날짜변경
2026-07-30초안 작성 — Type B 자체 정리. Lottie/Rive/오디오/3D/외부데이터 통합 패턴 + 약한 영역 표

댓글

아직 댓글이 없습니다.

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