【问题标题】:How to animate object color changing with Manim?如何使用 Manim 为对象颜色变化设置动画?
【发布时间】:2021-05-25 18:19:22
【问题描述】:

我想为 Dot 对象设置动画以定期更改其颜色。
像这样的:

我只找到了AnimatedBoundary 类,但它只改变了对象的边界(正如名字所说的 ofc)。

有没有什么方法可以使用现有的工具来实现?

【问题讨论】:

    标签: python colors manim


    【解决方案1】:

    也许这样的东西对你有用

    class ColoredDot(Scene):
        def construct(self):
        
            tracker = ValueTracker(0)
        
            def update_color(obj):
                T=tracker.get_value()
                rgbcolor=[1,1-T,0+T]
                m_color=rgb_to_color(rgbcolor)
                upd_dot=Dot(color=m_color)
                obj.become(upd_dot)
            
            dot=Dot()
            dot.add_updater(update_color)
            self.add(dot)
        
            self.play(tracker.set_value,1,run_time=5)
            self.wait()
    

    具体的颜色选择由行给出

    rgbcolor=[1,1-T,0+T]
    

    参数T的取值范围是0到1。 这为您提供了取决于该参数 T 的 rgb 颜色值。 您可以将其更改为您喜欢的任何 T 函数,从而为您提供所需的任何颜色更改。如果您想要定期更改,请使用 np.sin(T) 之类的东西并将 T 的范围更改为 (0,2*pi),此时我还将 rate_func 设置为线性。

    【讨论】:

    • 谢谢您的回答!我会检查一下并在下周回复。
    • 您好!我试过这个并收到一条错误消息:“不再支持将 Mobject 方法传递给 Scene.play。请改用 Mobject.animate。”有关如何解决此问题的任何想法?
    • 哎呀,我忘了我用的是旧版本,这应该适合你:self.play(tracker.animate.set_value(1))
    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多