[과제] 3주차) ThorVG 활용사례 조사 채다희 #135
chae-dahee
started this conversation in
Blog
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Lottie Creator
2025 오픈소스 페스타의 ThorVG 발표에서 소개된 활용 사례인 Lottie Creator를 조사한다.
LottieFiles에서 제공하는 웹 기반 애니메이션 편집 도구
공식 Lottie Creator 문서
여기에서 ThorVG는 Lottie Creator의 벡터 그래픽 출력을 처리하는 엔진으로 사용된다.
Canvas engine: 편집 화면의 벡터 그래픽 렌더링을 담당한다.Artboard output: Artboard에 표시되는 벡터 그래픽을 화면에 출력한다.이를 설명하는 공식자료는 아래와 같다.
ThorVG v1.0: What This Release Means for Developers, Teams & the Products They Build - LottieFiles blog
ThorVG 가 모션 디자인에 필요한 이유
Lottie Creator에는 편집 내용을 실시간으로 화면에 표시할 수 있는 벡터 그래픽 엔진이 필요하다.
벡터 기반 디자인(도형, 경로, 텍스트, 애니메이션)을 화면상의 픽셀로 변환하는 시스템
LottieFiles는 ThorVG가 다양한 하드웨어 환경에서 렌더링 정확성과 시각적 일관성을 제공한다고 설명한다. 이러한 특성은 실시간 편집과 크로스 플랫폼 출력을 요구하는 Lottie Creator에 적합하다.
브라우저에서 관찰한 배포 구조
Lottie Creator의 내부 소스 코드는 공개되어 있지 않다.
따라서 브라우저 개발자 도구를 이용해 실제로 내려받고 실행하는 리소스를 확인했다.
1. ThorVG WebAssembly
Network 탭에서 WASM 파일을 확인했다.
2. dotLottie Player
브라우저에서
@lottiefiles/dotlottie-web패키지의dotlottie-player.wasm도 확인했다.cdn.jsdelivr.net/npm/@lottiefiles/dotlottie-web@0.78.2/dist/dotlottie-player.wasm
Lottie Creator는 미리보기와 재생을 위해
dotlottie-player.wasm도 별도로 로드한다. dotLottie Web 역시 ThorVG를 렌더러로 사용하지만, 편집 Canvas에서 확인한thorvg_bg-*.wasm과는 별개의 실행 모듈이다.3. Canvas 요소
Console에서 Canvas 요소를 조회했다.
[...document.querySelectorAll('canvas')] canvas#canvas.relative canvas#snap-canvas.absolute.inset-0.pointer-events-nonecanvas#canvas는 주 편집 화면,canvas#snap-canvas는 스냅 가이드와 같은 편집 보조 출력을 위한 Canvas로 추정된다.4. 렌더링 백엔드
주 편집 Canvas의 렌더링 컨텍스트를 확인했다.
실행 결과
webgl2에서WebGL2RenderingContext가 반환되었으며 나머지 컨텍스트는null이었다.이를 통해 현재 브라우저 환경에서 Lottie Creator의 주 편집 Canvas가 WebGL2를 렌더링 백엔드로 사용한다는 사실을 확인했다.
관찰 결과를 바탕으로 예상한 구조
브라우저에서 확인한 리소스를 기준으로 구조를 단순화하면 다음과 같다.
Lottie Creator │ │ JavaScript에서 WebAssembly 모듈 로드 ▼ ThorVG WASM │ ▼ ThorVG 렌더링 엔진 │ │ WebGL2 백엔드 사용 ▼ WebGL2RenderingContext │ ▼ canvas#canvas → 주 그래픽·Artboard 렌더링 영역 canvas#snap-canvas → 스냅 가이드 등의 편집 보조 오버레이로 추정확인하지 못한 부분
브라우저 관찰만으로는 다음 내용을 확인하지 못했다.
thorvg.web또는@thorvg/webcanvas패키지의 직접 사용 여부JavaScript 기반 편집 계층과 ThorVG WASM 사이에 데이터 전달 과정이 존재한다고 판단할 수 있다. 다만 정확한 API와 내부 데이터 구조는 확인하지 못했으므로 위 구조는 관찰 결과를 바탕으로 단순화한 예상이다.
All reactions