Rive Animations

dylantarre/animation-principles/skills/09-by-tool-framework/rive-animations

作者 dylantarre83597134ba8f无许可证99 个星标收录于 2026年10月8日更新于 2026年10月8日仓库9个月前更新

Use when implementing Disney's 12 animation principles with Rive interactive animations

仅含说明Design & Creative
AI 生成的概览

指导如何在 Rive 交互动画中通过状态机和运行时代码实现迪士尼十二动画原则。

功能
该技能讲解如何借助 Rive 编辑器功能与运行时 API 应用迪士尼十二动画原则。内容涵盖挤压拉伸、预备动作、舞台调度、时间节奏、跟随与重叠动作、弧线、夸张和吸引力,并给出状态机设置、缓动建议以及 JavaScript 或 React 代码片段。它产出的是实现指导,而非文件或脚本。
适用场景
在制作 Rive 交互动画并希望应用经典动画原则时使用。适用于涉及 Rive 状态机、输入、触发器以及网页或 React 项目中运行时播放控制的工作。
运行要求
需要熟悉 Rive 编辑器及其运行时 API;React 示例假定使用 @rive-app/react-canvas 包。该技能不附带任何脚本。

Rive Animation Principles

Implement all 12 Disney animation principles using Rive's state machine and interactive animations.

1. Squash and Stretch

In Rive Editor:

  • Create shape with bones
  • Animate scale X/Y with inverse relationship
  • Key: scaleX: 1.2 when scaleY: 0.8
javascript
// Trigger from coderive.play('squash_stretch');

2. Anticipation

State Machine Setup:

  1. Create "Idle" state
  2. Create "Anticipate" state (wind-up pose)
  3. Create "Action" state
  4. Connect: Idle → Anticipate → Action
javascript
const inputs = rive.stateMachineInputs('State Machine');const trigger = inputs.find(i => i.name === 'jump');trigger.fire(); // Plays anticipate → action sequence

3. Staging

In Rive:

  • Use artboard layers for depth
  • Apply blur/opacity to background layers
  • Use nested artboards for complex scenes
javascript
// Control visibilityconst bgOpacity = inputs.find(i => i.name === 'bgOpacity');bgOpacity.value = 0.6;

4. Straight Ahead / Pose to Pose

Pose to Pose in Rive:

  • Set key poses on timeline
  • Rive interpolates between
  • Use easing curves in Graph Editor

5. Follow Through and Overlapping Action

In Rive Editor:

  • Use bone hierarchy with constraints
  • Apply "delay" or "lag" to child bones
  • Or offset keyframes by 2-4 frames
  • Use spring constraints for natural follow-through

6. Slow In and Slow Out

In Rive Graph Editor:

  • Select keyframes
  • Apply easing: Cubic, Quad, Bounce
  • Adjust bezier handles for custom curves
javascript
// Runtime speed controlrive.play('animation', { speed: 0.5 });

7. Arc

In Rive:

  • Use IK (Inverse Kinematics) for natural arcs
  • Apply path constraints
  • Animate position with curved interpolation

8. Secondary Action

State Machine approach:

javascript
// Listen for state changesrive.on('statechange', (event) => {  if (event.data.includes('button_press')) {    // Secondary animations auto-trigger via state machine  }});
// Or blend multiple animationsrive.play(['main_action', 'secondary_particles']);

9. Timing

javascript
// Fast - snappy feedbackrive.play('click', { speed: 1.5 });
// Normalrive.play('hover');
// Slow - dramatic revealrive.play('reveal', { speed: 0.5 });

In Rive Editor:

  • Adjust animation duration
  • Use work area to fine-tune timing
  • Graph Editor for precise control

10. Exaggeration

In Rive:

  • Push bone rotations beyond natural limits
  • Exaggerate scale transformations
  • Use elastic/bounce interpolation
  • Overshoot in Graph Editor curves

11. Solid Drawing

In Rive:

  • Use multiple bones for volume preservation
  • Apply constraints to maintain form
  • Use clipping for depth illusion
  • Layer shapes for 3D effect

12. Appeal

Design in Rive:

  • Smooth bezier curves on shapes
  • Consistent stroke weights
  • Pleasing color palette
  • Clean bone structure
javascript
// Smooth hover interactionsconst hover = inputs.find(i => i.name === 'isHovering');element.addEventListener('mouseenter', () => hover.value = true);element.addEventListener('mouseleave', () => hover.value = false);

React Implementation

jsx
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}    />  );}

Key Rive Features

  • State Machines - Logic-driven animation flow
  • Inputs - Boolean, Number, Trigger types
  • Blend States - Mix multiple animations
  • Listeners - Pointer events in editor
  • Constraints - IK, path, distance, rotation
  • Bones & Meshes - Skeletal animation
  • Runtime API - Full control from code
  • Tiny file size - Optimized binary format

来源与署名

来源:dylantarre/animation-principles位于skills/09-by-tool-framework/rive-animations提交8359713

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架