사용 방법
개별 규칙 파일에서 자세한 설명과 코드 예제를 확인하세요.
핵심 개념
- rules/scenes.md - InteractiveScene, Scene 유형 및 construct 메서드
- rules/mobjects.md - Mobject 유형, VMobject, Groups 및 위치 지정
- rules/animations.md - 애니메이션 클래스, 애니메이션 실행 및 타이밍
생성 및 변환
- rules/creation-animations.md - ShowCreation, Write, FadeIn, DrawBorderThenFill
- rules/transform-animations.md - Transform, ReplacementTransform, TransformMatchingTex
- rules/animation-groups.md - LaggedStart, Succession, AnimationGroup
텍스트 및 수식
- 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(), 카메라 애니메이션
인터랙티브 개발
- rules/interactive.md -
-se플래그를 이용한 인터랙티브 모드, checkpoint_paste() - rules/frame.md - self.frame, 카메라 제어, 재배치 및 확대/축소
- rules/embedding.md - IPython 디버깅을 위한 self.embed(), touch() 모드
설정 및 CLI
- rules/cli.md - manimgl 명령어, 플래그 (-w, -o, -se, -l, -h), 렌더링 옵션
- rules/config.md - custom_config.yml, 디렉터리, 카메라 설정, 품질 프리셋
실제 예제
일반적인 패턴을 보여주는 완전하고 테스트된 예제 파일:
- examples/basic_animations.py - 기본 도형, 텍스트 및 애니메이션
- examples/math_visualization.py - LaTeX 방정식 및 수학 콘텐츠
- examples/graph_plotting.py - 축, 함수 및 그래프 그리기
- examples/3d_visualization.py - 카메라 제어 및 표면이 포함된 3D 씬
- examples/updater_patterns.py - 업데이터를 사용한 동적 애니메이션
씬 템플릿
새 프로젝트를 시작하려면 이 템플릿을 복사하여 수정하세요.
- templates/basic_scene.py - 표준 2D 씬 템플릿
- templates/interactive_scene.py - self.embed()를 사용한 InteractiveScene
- templates/3d_scene.py - frame.reorient()을 사용한 3D 씬
- templates/math_scene.py - 수학적 유도 및 방정식
빠른 참조
기본 씬 구조
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 * |
| CLI | manimgl | manim |
| 수식 텍스트 | Tex(R"\pi") | MathTex(r"\pi") |
| 씬 | InteractiveScene | Scene |
| 생성 애니메이션 | ShowCreation | Create |
| 카메라 | self.frame | self.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
피해야 할 일반적인 실수
- 버전 혼동 -
manim(커뮤니티 버전)이 아닌manimgl을 사용해야 합니다. - ShowCreation vs Create - ManimGL은
Create가 아닌ShowCreation을 사용합니다. - Tex vs MathTex - ManimGL은 대문자 R raw 문자열과 함께
Tex를 사용합니다. - self.frame vs self.camera.frame - ManimGL은
self.frame을 직접 사용합니다. - fix_in_frame() - 씬이 아닌 mobject에 대해 호출합니다.
- 인터랙티브 모드 - 인터랙티브 개발을 위해
-se플래그를 사용합니다.
라이선스 및 저작권 표시
이 스킬에는 Grant Sanderson의 3Blue1Brown 영상 저장소에서 가져온 예제 코드가 포함되어 있습니다.
라이선스: CC BY-NC-SA 4.0
- 저작자 표시 필요 - 3Blue1Brown과 각색자를 모두 표시해야 합니다.
- 비상업적 - 상업적 용도로 사용할 수 없습니다.
- 동일조건변경허락 - 파생물은 동일한 라이선스를 사용해야 합니다.
자세한 내용은 LICENSE.txt를 참조하세요.