关于 rive-animations
rive-animations 是面向使用 Rive 的设计师与开发者的动画指南,讲解如何借助状态机和交互动画实践迪士尼 12 项原则。还涵盖输入、约束和运行时控制。
主要功能
- 01用状态机组织动画流程
- 02设置布尔值、数值和触发器输入
- 03使用骨骼、网格与运动约束
- 04通过运行时 API 控制动画
适用场景
- 01构建由状态驱动的交互动画
- 02为角色动作添加跟随与弧线路径
- 03从代码触发悬停或点击动画
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dylantarre/ animation-principles --skill rive-animations安装后在 Claude Code 中输入/rive-animations确认已加载。
详细介绍
Rive 动画原理
使用 Rive 的状态机和交互式动画实现迪士尼动画的全部 12 条原则。
1. 挤压与拉伸
在 Rive Editor 中:
- 创建带骨骼的形状
- 以反向关系对 X/Y 轴缩放进行动画处理
- 关键点:当
scaleY: 0.8时,scaleX: 1.2
// Trigger from code
rive.play('squash_stretch');
2. 预备动作
状态机设置:
- 创建“Idle”状态
- 创建“Anticipate”状态(预备姿势)
- 创建“Action”状态
- 连接:Idle → Anticipate → Action
const inputs = rive.stateMachineInputs('State Machine');
const trigger = inputs.find(i => i.name === 'jump');
trigger.fire(); // Plays anticipate → action sequence
3. 演出布局
在 Rive 中:
- 使用画板图层营造深度
- 对背景图层应用模糊/不透明度
- 使用嵌套画板构建复杂场景
// Control visibility
const bgOpacity = inputs.find(i => i.name === 'bgOpacity');
bgOpacity.value = 0.6;
4. 逐帧动画 / 姿势到姿势
在 Rive 中制作姿势到姿势动画:
- 在时间轴上设置关键姿势
- Rive 会在姿势之间进行插值
- 在 Graph Editor 中使用缓动曲线
5. 跟随动作与重叠动作
在 Rive Editor 中:
- 使用带约束的骨骼层级
- 为子骨骼应用“delay”或“lag”
- 或将关键帧错开 2-4 帧
- 使用弹簧约束实现自然的跟随动作
6. 慢入与慢出
在 Rive Graph Editor 中:
- 选择关键帧
- 应用缓动:Cubic、Quad、Bounce
- 调整贝塞尔控制柄以自定义曲线
// Runtime speed control
rive.play('animation', { speed: 0.5 });
7. 弧线运动
在 Rive 中:
- 使用 IK(反向运动学)实现自然的弧线运动
- 应用路径约束
- 使用曲线插值对位置进行动画处理
8. 次要动作
状态机方法:
// Listen for state changes
rive.on('statechange', (event) => {
if (event.data.includes('button_press')) {
// Secondary animations auto-trigger via state machine
}
});
// Or blend multiple animations
rive.play(['main_action', 'secondary_particles']);
9. 时间掌控
// Fast - snappy feedback
rive.play('click', { speed: 1.5 });
// Normal
rive.play('hover');
// Slow - dramatic reveal
rive.play('reveal', { speed: 0.5 });
在 Rive Editor 中:
- 调整动画时长
- 使用工作区域微调时间
- 使用 Graph Editor 进行精确控制
10. 夸张
在 Rive 中:
- 将骨骼旋转幅度推至超出自然范围
- 夸大缩放变换
- 使用弹性/弹跳插值
- 在 Graph Editor 曲线中添加过冲
11. 扎实绘图
在 Rive 中:
- 使用多个骨骼保持体积
- 应用约束以保持形态
- 使用剪裁营造深度错觉
- 通过形状分层实现 3D 效果
12. 吸引力
在 Rive 中设计:
- 为形状使用平滑的贝塞尔曲线
- 保持描边宽度一致
- 选择协调的配色方案
- 保持骨骼结构简洁
// Smooth hover interactions
const hover = inputs.find(i => i.name === 'isHovering');
element.addEventListener('mouseenter', () => hover.value = true);
element.addEventListener('mouseleave', () => hover.value = false);
React 实现
import { useRive, useStateMachineInput } from '@rive-app/react-canvas';
function AnimatedButton() {
const { rive, RiveComponent } = useRive({
src: 'button.riv',
stateMachines: 'Button',
autoplay: true
});
const hoverInput = useStateMachineInput(rive, 'Button', 'isHovering');
return (
<RiveComponent
onMouseEnter={() => hoverInput.value = true}
onMouseLeave={() => hoverInput.value = false}
/>
);
}
Rive 主要功能
- 状态机 - 由逻辑驱动的动画流程
- 输入 - 布尔值、数字、触发器类型
- 混合状态 - 混合多个动画
- 监听器 - 编辑器中的指针事件
- 约束 - IK、路径、距离、旋转
- 骨骼与网格 - 骨骼动画
- 运行时 API - 通过代码全面控制
- 文件体积小 - 经过优化的二进制格式
评论
支持 Markdown