 让终端落进画面、改动实时可见)
Manim 场景嵌入交互式开发完整指南self.embed() 让终端落进画面、改动实时可见【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manim改动画时把旋转角从 90° 调到 60°却要等前几幕重新渲染完才能看到结果。Manim 的场景嵌入功能就是干这个的self.embed() 让终端落进运行中的场景改动立即反映到窗口不再重渲染。上图是 Manim 的预览窗口也就是场景嵌入后的工作现场动画在窗口里照常播放终端同时开着你在终端敲的每一行代码都会立刻重绘到画面上而不是排队等渲染。 三行代码进入交互模式写一个七行的场景把 self.embed() 放在 construct 结尾class SquareSpin(Scene): def construct(self): square Square() self.add(square) self.play(Rotate(square, TAU / 4)) self.embed()manimgl square_spin.py SquareSpin运行后你会看到正方形转 90° 停住终端直接落在 self.embed() 那一行——从此敲什么窗口就画什么。️ 免重渲染的四种改法在场景任意一行落下终端self.embed() 本质是个断点可以插在两条动画中间窗口会在该状态处停下并打开终端不必等场景播完。self.embed()适用场景只想微调第二幕播完、第三幕还没播时的画面状态。不关窗口重跑整个场景场景播到结尾时状态往往不是你想要的起点。在终端敲 reload()它按初始 manimgl 参数把源文件整个重跑一遍窗口保持打开。reload()适用场景改了源码想回到片头重看。reload() 重跑前会先用 compile() 做语法检查有语法错误直接取消避免半坏代码把窗口搞乱。粘贴执行、再粘贴还原状态这个能力最反直觉在编辑器里选中一段代码复制比如搭坐标系的十行然后执行checkpoint_paste()第一次执行会把剪贴板代码块的首行注释当作 key记下执行前状态之后每次粘贴都先还原状态再执行怎么试状态都不漂移。适用场景反复调试同一块 setup 代码不再叠在旧状态上。实现见 CheckpointManager。在预览窗口里直接摆对象选中对象按住 s 拖框或轻点 s 选中光标下的对象后按住 g 平移、t 缩放、c 唤出调色板点色箭头键逐格微调shift 加箭头键大步挪。快捷键总表在 default_config.yml。上图是同一渲染引擎产出的画面效果。调布局时用眼睛摆比心算坐标快得多比如把公式往右挪 0.1 单位。⚠️ 交互式开发前该绕开的三个坑reload() 没反应终端只冒一行错误源文件有语法错误重跑前的语法校验没通过直接取消了。看终端报错行号修好再敲 reload()。checkpoint_paste() 不还原、对象越叠越多粘贴的代码块首行不是注释就没有 key等于每次都是全新执行。给复制的代码块首行加一行注释如# setup axes再粘贴。改了源文件终端里还是旧逻辑embed 终端复用的是进入时加载的模块命名空间默认不监听文件变化。要么敲 reload() 重跑场景要么启动时加 --autoreload让每个 cell 执行前自动重载模块。 交互模式快捷键速查表功能命令或快捷键一句话说明进入交互模式self.embed()在场景当前行落下 IPython 终端重跑场景reload()重执行源文件窗口不关闭粘贴代码块checkpoint_paste()重执行选中代码再粘贴还原到执行前抓拽对象按住g/h/v选中对象整体 / x 向 / y 向拖动十字光标k显示或隐藏十字线精确对位一敲即见这就是交互式开发的价值。给最长的那个场景加上 self.embed()用 manimgl 跑起来。【免费下载链接】manimAnimation engine for explanatory math videos项目地址: https://gitcode.com/GitHub_Trending/ma/manim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考