manim_zh_doc
  • 如何安装manim
  • 快速使用
  • 最佳实践
    • Basic Concepts
      • ManimCELogo
      • BraceAnnotation
      • VectorArrow
      • GradientImageFromArray
      • BooleanOperations
    • Animations
      • PointMovingOnShapes
      • MovingAround
      • MovingAngle
      • MovingDots
      • MovingGroupToDestination
      • MovingFrameBox
      • RotationUpdater
      • PointWithTrace
    • Plotting
      • SinAndCosFunctionPlot
      • ArgMinExample
      • GraphAreaPlot
      • PolygonOnAxes
      • HeatDiagramPlot
  • 教程 And 指导
    • 快速使用
      • 概述
      • 新建Project
      • 制作动画
      • 解释
      • 正方形转换圆
      • 定位Mobject
      • 使用.animate语法进行动画处理
      • Transform与ReplacementTransform
    • 输出设置
      • Manim 输出文件夹
      • 章节
      • 命令行标志
    • Manim 的构建块
      • Mobjects
        • 创建和显示 mobjects
        • 放置 mobjects
        • 设置 mobject 的样式
        • Mobject 屏幕顺序
      • 动画
        • 制作方法动画
        • 动画运行时间
        • 创建自定义动画
        • 使用 mobject 的坐标
        • 将 mobject 转换为其他 mobject
      • 场景
  • 进阶指南
    • 配置
      • 命令行参数
        • 高级示例
        • 所有 CLI 标志的列表
      • ManimConfig 类
      • 配置文件
    • 深入了解 Manim 的内部结构
      • 介绍
      • 概述
      • Page
Powered by GitBook
On this page
  1. 进阶指南
  2. 深入了解 Manim 的内部结构

介绍

Previous深入了解 Manim 的内部结构Next概述

Last updated 22 days ago

Manim 可以是一个很棒的库,如果它的行为符合你的预期,或你期望的方式。不幸的是,情况并非总是如此(如果你自己已经玩过一些 manimations,你可能知道)。要了解哪里出了问题,挖掘库的源代码有时是唯一的选择——但为了做到这一点,你需要知道哪里开始挖掘。

本文旨在作为渲染过程中的某种生命线。我们的目标是提供适当的细节来描述Manim 读取您的场景代码并生成相应的动画时会发生什么。 整个 本文,我们将重点介绍以下玩具示例:

from manim import *

class ToyExample(Scene):
    def construct(self):
        orange_square = Square(color=ORANGE, fill_opacity=0.5)
        blue_circle = Circle(color=BLUE, fill_opacity=0.5)
        self.add(orange_square)
        self.play(ReplacementTransform(orange_square, blue_circle, run_time=3))
        small_dot = Dot()
        small_dot.add_updater(lambda mob: mob.next_to(blue_circle, DOWN))
        self.play(Create(small_dot))
        self.play(blue_circle.animate.shift(RIGHT))
        self.wait()
        self.play(FadeOut(blue_circle, small_dot))

在我们详细介绍甚至查看此场景的渲染输出之前,让我们首先口头描述此 manimation 中发生的事情。在construct第一个初始化方法的三行,然后将正方形添加到场景中。因此,rendered 输出的第一帧应显示一个橙色正方形。

然后,实际的动画发生:正方形首先变换成一个圆,然后创建一个dot(当它第一次被添加到场景中时,您猜点位于何处?要回答这个问题已经需要详细的有关渲染过程的知识。点附加了一个更新器,并且当圆圈向右移动时,点也会随之移动。最后,所有 mobject 都淡出。

对于此示例,输出(幸运的是)与我们的预期一致。

43KB
ToyExample.mp4
ToyExample