You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Manim中SurroundingRectangle提前反向擦除的实现方法

实现方法

不需要叠加额外的黑色描边矩形模拟效果,直接通过动画组的时间偏移配置,让矩形的创建动画未播放完成时就启动反向擦除动画即可,全程只需要一个SurroundingRectangle对象,不会引入额外遮挡元素。

核心逻辑是利用AnimationGroup的lag_ratio参数控制两个动画的启动间隔:lag_ratio代表前一个动画播放到对应比例的进度时,后一个动画自动启动。只要把这个值设为小于1,就能实现创建、擦除动画的时间重叠,达到「描边刚绘制到一半就反向擦除」的效果。

可直接运行的代码

class Test(Scene):
    def construct(self):
        contfrac = MathTex("[2;4,1,2]")
        surrect1 = SurroundingRectangle(contfrac[0][1], buff=0.05, stroke_width=2.5)

        self.play(Write(contfrac))
        # 调整lag_ratio数值可以控制擦除启动的时机:
        # 数值越小,擦除启动越早,矩形露出的完整度越低
        # 要对齐之前叠黑边的效果,直接把lag_ratio设为0.15即可
        self.play(
            AnimationGroup(
                Create(surrect1),
                Uncreate(surrect1),
                lag_ratio=0.15,
                run_time=1.15 # 和原方案两个动画叠加的总时长对齐
            )
        )
        self.wait()

方案优势

  • 不需要额外创建第二个同尺寸矩形,场景里没有多余Mobject
  • 不存在黑边遮挡其他元素、背景非纯黑时穿帮的问题
  • 效果和之前模拟的视觉表现完全一致,参数调整更直观:直接改lag_ratio就能控制擦除时机,改run_time就能控制动画总速度。

内容的提问来源于stack exchange,提问作者Mihail Hurmuzov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:24:29