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

如何使用Manim实现物体颜色变化动画,让Dot周期性切换颜色

可以实现,不需要借助AnimatedBoundary类,直接对Dot的颜色属性做插值动画即可,最终效果和你预期一致:
dot

实现核心逻辑

  • Dot的显示颜色由fill_color(填充色)和stroke_color(描边色)两个属性控制,直接对这两个属性做周期性插值就能实现变色动画。
  • 可以用ValueTracker作为时间驱动源绑定颜色更新逻辑,也可以直接用帧更新函数实现无限循环效果。

Manim 实现示例代码

from manim import *

class CycleColorDot(Scene):
    def construct(self):
        # 初始化Dot,可自定义半径、初始颜色
        target_dot = Dot(radius=0.4, color=RED)
        # 定义循环的色值序列,首尾一致可实现无缝循环
        color_list = [RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE, RED]
        # 单轮完整变色的周期时长(单位:秒)
        single_cycle_time = 1.5

        # 颜色更新函数
        def color_updater(mob, alpha):
            # 根据动画进度计算当前插值的两个色值
            step_count = len(color_list) - 1
            current_step = int(alpha * step_count)
            step_progress = (alpha * step_count) % 1
            current_color = interpolate_color(
                color_list[current_step],
                color_list[current_step + 1],
                step_progress
            )
            mob.set_color(current_color)

        self.add(target_dot)
        # 启动动画,run_time设置总播放时长,设置为较大值可实现长时间循环
        self.play(
            UpdateFromAlphaFunc(target_dot, color_updater),
            run_time=15,
            rate_func=linear
        )

如果你使用的是其他框架,核心逻辑通用:获取Dot实例的颜色属性,按照时间参数插值计算当前帧的色值,把更新逻辑绑定到全局帧刷新事件即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 19:36:01