关于 explainer-motion
Explainer Motion 汇集了用于制作清晰讲解动画的运动设计原则和节拍方案,面向使用 Psychopomp 的动画创作者,强调因果动作、局部照明和确定性时序。
主要功能
- 01按能量源、路径与落点设计动作
- 02发送、连接、撞击和摧毁节拍指南
- 03物理缓动与镜头运动规则
- 04由时钟推导的确定性动画
- 05缩略图尺寸下的焦点检查
适用场景
- 01规划讲解动画中的动作节拍
- 02表现数据包在组件间传递
- 03展示系统错误及其解决过程
- 04检查接触帧与镜头连续性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ kitlangton/ psychopomp --skill explainer-motion安装后在 Claude Code 中输入/explainer-motion确认已加载。
附带文件TECHNIQUES.md
详细介绍
解释性动画
能量有其来源
每个节拍都会将能量从一个特定点传到另一个点。能量在源头聚集,随后传递,并在落点被吸收,留下逐渐冷却的光。任何发光、闪烁或移动,都必须有一个观众能指出的原因。当某个节拍显得平淡或嘈杂时,想想它的能量从何而来,又流向何处。
规则
- 静止时保持安静。 闲置的连线和画面应保持静止、哑光。运动和光意味着有事情正在发生。
- 一个焦点动作。 展示源头,跟随信号,然后呈现结果。旁白期间停止背景流动。在缩略图尺寸下,活动信号应比主体对象的纹理和所有画面边框都更醒目。
- 光线仅在局部生效。 光来自移动的事物,并随距离衰减:数据包只照亮其附近的边框。到达时,卡片从插口处开始着色,绝不能让整张卡片泛光。
- 接收端不会缩放。 到达时只出现一个小光环、从插口涌出的光,以及墨迹般的闪光。几何形状只在入场(平稳就位)和精心设计的实体装置中移动,不会因受到信号而移动。
- 辉光只用于有生命的事物:数据包头部和主体对象。边框、泛光和轨迹应低于辉光阈值,以保持清晰锐利。
- 颜色具有含义。 信号近乎白色,其色调体现在轨迹和反射中;红色表示故障;一个强调色用于标示需要跟随的对象。
- 符合物理规律的缓动。
- 数据包传递:使用最小加加速度五次曲线(
smootherstep),进入静止状态时保持速度和加速度连续。三次缓入缓出曲线在中点存在加速度不连续;不要习惯性地使用它。 - 摄像机移动:尝试使用临界阻尼弹簧,以获得重量感和自然的余动。最小加加速度滑动适合在静止状态之间进行精确计时的移动;如果固定时长曲线显得僵硬,就不要强迫每个摄像机动作都套用这种曲线。
- 绘制动画:使用
cubic-bezier(.45, 0, .2, 1),既不会突然从端口弹出,也不会在插口处停滞。 - 刚性面板入场:位移要小,并使用阻尼弹簧;让内容比主体晚约 60 ms 跟随。先调整振幅,再添加弹跳。
- 闪光:瞬时增强,随后凸形衰减(先快后慢,留下长尾)。
- 受到撞击的物体会振动:缆线在欠阻尼弹簧作用下弹响。
- 数据包传递:使用最小加加速度五次曲线(
- 反应应在接触之后发生。 检查因果关系时,应考虑聚集/预备动作:请求尚未到达时,回复甚至不应开始准备。撞击应果断启动;从静止状态缓慢弹起的弹簧会让动作显得自发。
- 时间的纯函数。 无论以何种顺序渲染,任意一帧都应完全一致。根据一个时钟(事件的持续时间)推导事件的各个阶段,在重新设定目标时延续速度,绝不要用分步数值假装缓动(这会造成顿挫),并渲染运动模糊。
- 连续性。 事物应变形过渡,而不是直接切换:摄像机飞入卡片,再由卡片展开成代码;同一个对象应贯穿多个节拍。
- 实体隐喻。 让机制具体可见:被终止的服务会碎裂,掉落的错误会下坠,超时表现为一个逐渐闭合的环,数据沿连线流动。
- 摄像机。 开场时推近,向正在说话的角色缓缓移动,将焦点拉到关键平面,拉远以展现后果,并在解决问题时推近。只在撞击时抖动。只有当消息的旅程就是故事本身时才跟随它;环绕是为了展现景深,而非装饰。
- 节奏。 入场动作之间错开约 120 ms;撞击应与说出的词同步,并配以轻柔的声音。要展示修复过程,先清晰地倒带(重新组装、重新连接),再重放同一时刻,让结果变得不同。
节拍
每种节拍的常量和公式见 TECHNIQUES.md。
- 发送:光线在端口处聚集(340 ms),一个实心光点带着逐渐冷却的尾迹飞出,并以一个小型开放光环落下(720 ms)。反射光沿着附近的边缘伴随光点移动;光点离开处留下一点余烬,光线则涌入它抵达的位置。
- 连接:端口柔和地显现,连线以
cubic-bezier(.45, 0, .2, 1)绘制出来,然后静静停留。只有当节拍需要冲击或主动流量时,才明确编写surge、twang、land或flow。 - 进入状态:刚性面板缓缓移入位置,并进行轻微的缩放校正;其内容随后跟进并变得清晰。保持底层背景暗淡。Stage 和源图示的精确校准方式在 TECHNIQUES.md 中有区分。
- 撞击:闪光、脉冲、震动或抖动;瞬间发作,凸形衰减。球体在表面承受接触:局部凹陷、表面波,然后光线冷却。在可见轮廓交叉处触发,而不是在隐藏端点触发,也不要在中心触发无关脉冲。
- 摧毁:短暂向内压缩 → 炽热释放 → 压力波 → 冷却的烟雾和坠落的余烬。让炽热阶段相对于安静场景显得非同寻常。波浪弯曲已有像素;烟雾起遮挡作用,而非发光。所有阶段由一个可逆时钟控制。详见 TECHNIQUES.md 中的体积效果配方。
设计节拍
- 对每个节拍,指出能量的来源、路径和汇点。完成标准:没有节拍会在缺少这三者任一项的情况下发光、闪烁或移动。
- 暂停相互竞争的运动,搭建清晰易读的姿势。采用 TECHNIQUES.md 中对应的节拍;匹配目标对象的材质和亮度,不要盲目照搬源对象的 alpha 或弹跳效果。完成标准:焦点动作在缩略图尺寸下仍清晰可辨,且所有保留的对象都适合每种镜头构图。
- 将其构建为由时钟推导的确定性运动。在 Psychopomp 中,使用
StageActor节拍(send、send_arriving、connect、connect_contacting、settle_in、hit、twang、land、orb_in、glitch、rewind、swap_status、halo、ring_timer、disconnect)、stage::reply_after设置回复的最早启动时间、author::stagger处理涟漪,并使用psychopomp::math;psychopomp技能涵盖影片的工作流。 - 在制作完整影片前,先渲染正常速度的短片段进行研究(在 Psychopomp 中,在前台运行
plan render <plan> out.mp4 --range a..b)。与之前的处理方案进行比较,然后以 40 ms 或更短的间隔检查接触帧。分别检查主体、内容、端口和镜头。完成标准:运动过程清晰易读,每道光都有可见来源,安静的停留仍保持安静,接触时接收对象及其连接线绝不会瞬移。说明实际检查了哪些播放或帧证据;仅凭起始和结束的静帧无法证明运动平滑。
评论
支持 Markdown