Communitygithub.com

manimgl-best-practices

ManimGL(3b1b 버전)을 사용하여 수학 애니메이션을 제작하기 위한 모범 사례, API 차이점, 인터랙티브 개발 워크플로우를 제공합니다.

manimgl-best-practices란 무엇인가요?

이 스킬은 3Blue1Brown이 주로 사용하는 ManimGL(3b1b 브랜치) 라이브러리로 수학 애니메이션을 만들기 위한 포괄적인 레퍼런스와 모범 사례를 제공합니다. 사용자는 씬(Scene)과 mobject 생성, 애니메이션 적용, LaTeX 수식 조작, 3D 시각화, 카메라 제어 등 핵심 개념을 학습할 수 있습니다. 특히 Manim Community Edition(ManimCE)과의 주요 차이점(예: 'ShowCreation' vs 'Create', 'Tex' vs 'MathTex', 'self.frame' vs 'self.camera.frame')이 상세히 설명되어 있어, 사용자가 실수 없이 올바른 API를 사용하도록 돕습니다. 또한 '-se' 플래그를 통한 인터랙티브 모드, 'self.embed()'를 통한 디버깅, 'checkpoint_paste()'를 통한 코드 재실행 등 ManimGL의 강력한 대화형 개발 기능을 활용하는 방법을 예제와 함께 제시합니다. 이 스킬은 Claude Code, Cursor, Codex와 같은 AI 에이전트 환경에서 사용자가 ManimGL 기반 수학 애니메이션을 효율적으로 개발하도록 돕는 것을 목표로 합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/adithya-s-k/manim_skill/tree/main/skills/manimgl-best-practices

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

사용 방법

개별 규칙 파일에서 자세한 설명과 코드 예제를 확인하세요.

핵심 개념

생성 및 변환

텍스트 및 수식

  • rules/tex.md - Tex 클래스, raw 문자열 R"..." 및 LaTeX 렌더링
  • rules/text.md - 텍스트 mobject, 글꼴 및 스타일링
  • rules/t2c.md - tex_to_color_map (t2c)을 사용한 수식 색상 지정

스타일 및 외관

  • rules/colors.md - 색상 상수, 그라데이션, RGB, 16진수, GLSL 색상
  • rules/styling.md - 채우기, 선, 불투명도, 백스트로크, 광택, 그림자

3D 및 카메라

  • rules/3d.md - 3D 객체, 표면, Sphere, Torus, 파라메트릭 표면, 조명
  • rules/camera.md - frame.reorient(), 오일러 각, fix_in_frame(), 카메라 애니메이션

인터랙티브 개발

설정 및 CLI

  • rules/cli.md - manimgl 명령어, 플래그 (-w, -o, -se, -l, -h), 렌더링 옵션
  • rules/config.md - custom_config.yml, 디렉터리, 카메라 설정, 품질 프리셋

실제 예제

일반적인 패턴을 보여주는 완전하고 테스트된 예제 파일:

씬 템플릿

새 프로젝트를 시작하려면 이 템플릿을 복사하여 수정하세요.

빠른 참조

기본 씬 구조

from manimlib import *

class MyScene(InteractiveScene):
    def construct(self):
        # mobject 생성
        circle = Circle()

        # 씬에 추가 (정적)
        self.add(circle)

        # 또는 애니메이션
        self.play(ShowCreation(circle))  # 참고: Create가 아닌 ShowCreation

        # 대기
        self.wait(1)

렌더 명령어

# 렌더링 및 미리보기
manimgl scene.py MyScene

# 인터랙티브 모드 - 15번 줄에서 셸 진입
manimgl scene.py MyScene -se 15

# 파일로 저장
manimgl scene.py MyScene -w

# 테스트용 저품질
manimgl scene.py MyScene -l

ManimCE와의 주요 차이점

기능ManimGL (3b1b)Manim Community
임포트from manimlib import *from manim import *
CLImanimglmanim
수식 텍스트Tex(R"\pi")MathTex(r"\pi")
씬InteractiveSceneScene
생성 애니메이션ShowCreationCreate
카메라self.frameself.camera.frame
프레임 고정mob.fix_in_frame()self.add_fixed_in_frame_mobjects(mob)
패키지manimgl (PyPI)manim (PyPI)

인터랙티브 개발 워크플로우

ManimGL의 핵심 기능은 인터랙티브 개발입니다.

# 20번 줄부터 상태를 유지하며 시작
manimgl scene.py MyScene -se 20

인터랙티브 모드에서:

# 코드를 클립보드에 복사한 후 실행:
checkpoint_paste()           # 애니메이션과 함께 실행
checkpoint_paste(skip=True)  # 즉시 실행 (애니메이션 없음)
checkpoint_paste(record=True) # 실행과 동시에 녹화

카메라 제어 (self.frame)

# 카메라 프레임 가져오기
frame = self.frame

# 3D에서 재배치 (phi, theta, gamma, center, height)
frame.reorient(45, -30, 0, ORIGIN, 8)

# 카메라 움직임 애니메이션
self.play(frame.animate.reorient(60, -45, 0))

# 3D 이동 중에도 mobject가 화면 공간에 고정되도록
title.fix_in_frame()

Tex 클래스를 사용한 LaTeX

# 대문자 R을 사용한 raw 문자열
formula = Tex(R"\int_0^1 x^2 \, dx = \frac{1}{3}")

# t2c를 사용한 색상 매핑
eqation = Tex(
    R"E = mc^2",
    t2c={"E": BLUE, "m": GREEN, "c": YELLOW}
)

# 애니메이션을 위한 부분 문자열 분리
formula = Tex(R"\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}")
formula.set_color_by_tex("n", BLUE)

일반적인 패턴

디버깅을 위한 임베딩

def construct(self):
    circle = Circle()
    self.play(ShowCreation(circle))
    self.embed()  # 여기서 IPython 셸로 진입

3D를 위한 바닥 평면 설정

self.set_floor_plane("xz")  # xy 평면을 뷰 평면으로 설정

텍스트 가독성을 위한 백스트로크

text = Text("레이블")
text.set_backstroke(BLACK, 5)  # 텍스트 뒤에 검은색 외곽선

설치

# ManimGL 설치
pip install manimgl

# 설치 확인
manimgl --version

피해야 할 일반적인 실수

  1. 버전 혼동 - manim (커뮤니티 버전)이 아닌 manimgl을 사용해야 합니다.
  2. ShowCreation vs Create - ManimGL은 Create가 아닌 ShowCreation을 사용합니다.
  3. Tex vs MathTex - ManimGL은 대문자 R raw 문자열과 함께 Tex를 사용합니다.
  4. self.frame vs self.camera.frame - ManimGL은 self.frame을 직접 사용합니다.
  5. fix_in_frame() - 씬이 아닌 mobject에 대해 호출합니다.
  6. 인터랙티브 모드 - 인터랙티브 개발을 위해 -se 플래그를 사용합니다.

라이선스 및 저작권 표시

이 스킬에는 Grant Sanderson의 3Blue1Brown 영상 저장소에서 가져온 예제 코드가 포함되어 있습니다.

라이선스: CC BY-NC-SA 4.0

  • 저작자 표시 필요 - 3Blue1Brown과 각색자를 모두 표시해야 합니다.
  • 비상업적 - 상업적 용도로 사용할 수 없습니다.
  • 동일조건변경허락 - 파생물은 동일한 라이선스를 사용해야 합니다.

자세한 내용은 LICENSE.txt를 참조하세요.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

관련 스킬