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

如何用Manim复现指定YouTube视频的片头曲线滑动动画?

Manim实现曲线滑动片头效果的方案

核心思路

目标效果的核心是一条动态曲线沿预设路径平滑滑动,同时伴随曲线自身形态的细微变化。我们可以通过Manim的参数化函数(ParametricFunction)结合路径动画(MoveAlongPath)来实现,无需完全复刻原视频的复杂细节,抓准“滑动+曲线形变”的核心即可。

完整可运行代码

from manim import *

class CurveSlideIntro(Scene):
    def construct(self):
        # 设置深色背景,贴近原视频风格
        self.camera.background_color = "#0a0a0a"

        # 定义滑动的路径(横向椭圆弧,可按需调整)
        slide_path = Ellipse(width=12, height=2).shift(UP*0.5)
        slide_path.set_opacity(0)  # 隐藏路径本身

        # 动态曲线生成函数:t为曲线参数,time为动画进度
        def dynamic_curve(t, time):
            # 带时间偏移的正弦波动
            wave = np.sin(8 * t + 4 * time) * 0.3
            # 随时间变化的纵向偏移
            y_offset = np.sin(time) * 0.2
            return np.array([
                t * 3 - 1.5,  # 横向范围控制
                wave + y_offset,
                0
            ])

        # 初始化曲线
        curve = ParametricFunction(
            lambda t: dynamic_curve(t, 0),
            t_range=[0, 1],
            color=BLUE,
            stroke_width=4
        )

        # 组合滑动动画与曲线形变
        self.play(
            MoveAlongPath(curve, slide_path),
            UpdateFromAlphaFunc(
                curve,
                lambda m, alpha: m.become(ParametricFunction(
                    lambda t: dynamic_curve(t, alpha),
                    t_range=[0, 1],
                    color=interpolate_color(BLUE, PURPLE, alpha),  # 颜色渐变
                    stroke_width=4
                ))
            ),
            run_time=6  # 动画时长,可按需调整
        )

        self.wait(0.5)

代码关键部分解释

  • 滑动路径:slide_path定义曲线移动的轨迹,这里用椭圆弧模拟横向滑动,你可以换成直线、贝塞尔曲线等任意路径,通过调整width/height或改用Line/CubicBezier修改轨迹。
  • 动态曲线:dynamic_curve通过参数t生成基础曲线形态,time参数控制随时间的波动偏移和纵向移动,实现曲线自身的形变效果。
  • 动画组合:MoveAlongPath负责曲线的整体滑动,UpdateFromAlphaFunc同步更新曲线的形态和颜色,两者结合实现“滑动+形变”的核心效果。
  • 风格适配:深色背景、渐变曲线颜色贴近原视频视觉风格,可修改stroke_width、颜色值调整细节。

扩展优化建议

  • 若要实现多曲线效果,可复制多条曲线,设置不同初始偏移和颜色,同步播放动画。
  • 修改dynamic_curve中的正弦参数(如8*t的系数)可调整曲线波动频率,0.3控制波动幅度。
  • 如需曲线滑动时变长/变短,可在UpdateFromAlphaFunc中动态调整t_range的范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:35:16