动画类拼图参考 - Soft8Soft
Description: 如何使用Verge3D拼图编辑器来控制动画。

# 动画和约束 | Animation and Constraint

此类拼图用于对动画片断进行操作，做程序化的动画，以及限制对象的运动。

## 内容

- 动画拼图参考
  - play animation(播放动画)
  - stop animation(停止动画)
  - pause animation(暂停动画)
  - resume animation(恢复动画)
  - set animation frame(设置动画帧)
  - get animation frame(获取动画帧)
  - is animation playing(动画正在播放)
  - set animation speed(设置动画速度)
  - get animation speed(获取动画速度)
  - on animation frame do(在动画的第...帧执行)
  - get animation of(获取动画)
  - assign animation(分配动画)
  - clone animation(克隆动画)
  - animate param(动画参数)
  - updated value(更新值)
  - stop animate param(停止动画参数)
- 约束类拼图参考
  - limit transform(限制变换)
  - copy transform(复制变换)
  - remove / mute / unmute constraint(删除/静音/取消静音约束)

#

## 动画拼图参考

#

### play animation(播放动画)

播放一个动画片段。动画片段的名称对应于在Blender、3ds Max或Maya中被指定动画的对象（每个对象只能指定一个动画片段）。使用 animation selector(动画选择器) 拼图为这个拼图提供一个动画片段。下拉菜单可用于更改动画模式 — auto 允许使用三维软件中指定的动画模式，而其他模式则会覆盖 Blender、3ds Max 或 Maya 中的设置。如果动画已经在播放，此拼图不会产生任何效果。

此拼图支持通过齿轮图标激活的附加选项。使用 from 和 to 字段来指定帧范围。使用 speed 字段来指定播放速度。reversed 复选框启用倒放。

动画完成后，when finished do 插槽中的拼图将被执行（这仅对 once 动画模式有效）。

此拼图也适用于动画片段列表。

#

### stop animation(停止动画)

停止播放一个动画片段，并将当前帧重置为零。也适用于动画片段列表。

它不会触发 play animation(播放动画) 拼图中 when finished do 插槽内的任何拼图。

#

### pause animation(暂停动画)

暂停一个动画片断的播放，以便以后可以从暂停的那一帧开始继续播放。也适用于动画片段列表。

#

### resume animation(恢复动画)

恢复之前暂停的动画片断。也适用于动画片段列表。

#

### set animation frame(设置动画帧)

设置一个动画片段到指定的帧。也适用于动画片段列表。

如果动画片段正在运行，此拼图会将其暂停。使用 resume animation(恢复动画) 拼图来恢复它。

#

### get animation frame(获取动画帧)

获取一个动画片段的当前帧。

#

### is animation playing(动画正在播放)

检查一个动画片断（或列表中的任一动画）是否正在播放。

#

### set animation speed(设置动画速度)

改变动画播放速度。动画不会在速度变化时重新播放。reversed 复选框可反转动画速度（即速度乘以-1）。也适用于动画剪辑列表。

#

### get animation speed(获取动画速度)

获取动画播放的速度。

#

### on animation frame do(在动画的第...帧执行)

在动画帧时执行 do 插槽中指定的拼图。

#

### get animation of(获取动画)

检索一个指定对象的动画片段。也适用于对象列表，组（或者组的列表）以及 all objects(所有对象) 拼图。返回值始终是一个动画片段列表（即使只有一个动画片段）。

基本用法示例：

齿轮弹窗中的 return unique animation id(s) 复选框可用于检索唯一的动画ID而非名称：

此选项在仅有名称不够的情况下非常重要 — 即当动画从另一个glTF文件动态追加并恰好具有相同名称时。

您可以使用此拼图获取的ID（看起来像这样：5c464bf0-043a-40ee-b864-5c026436d7de）将它们传递给其他动画拼图。

#

### assign animation(分配动画)

将指定的动画片段应用到不同的对象，并返回生成的动画片段名称。

此拼图支持整体对象、形态键、材质和灯光强度动画。不支持蒙皮动画。

如果目标对象已经分配了某些动画，它将被新动画替换。

#

### clone animation(克隆动画)

在指定的范围内（两端包含）克隆一个动画片段（或动画列表）。

#

### animate param(动画参数)

在用 duration 指定（以秒为单位）的时间内，将在 from 和 to 之间的数字参数（或列表中的所有参数，或 字典）动画化。easing 下拉菜单允许您指定动画模式（见下文）。

repeat 字段指定了第一个动画完成后的重复次数。yoyo 复选框可以实现往复运动（当 repeat > 1 时有效）。

在 on update do 插槽中的拼图在参数被动画化时，每一个渲染帧都会被触发。在 when finished do 插槽中的拼图会在动画结束后被触发。

此拼图封装了 Tween.js 库，暴露了其所有的 31种缓动模式（如图），持续时间、重复和yoyo设置，以及更新与完成回调。

中间值可以用一个 updated value(更新值) 拼图来检索，通常放在 on update do 插槽内。

#

### updated value(更新值)

返回由 animate param(动画参数) 拼图生成的中间值。根据动画参数的类型，可以是一个数字，一个列表或者一个 字典。

此拼图可以放在场景中的任何地方，但通常放在 animate param(动画参数) 拼图的 on update do 插槽中工作，在这里它每一帧都会更新。

#

### stop animate param(停止动画参数)

停止由 animate param(动画参数) 拼图产生的动画。

#

## 约束类拼图参考

如果一个对象不属于另一个对象的父对象，那么约束就会在世界空间中发挥作用。否则，它们将在父对象的空间中工作——您可以在Blender、3ds Max或Maya中选择父对象来显示坐标轴。

#

### limit transform(限制变换)

创建一个约束，以限制对象沿选定轴的位置、旋转或缩放。约束的 id 应该是唯一的，否则将会替换现有相同id的约束。min 和 max 插槽指定允许移动的范围。约束可以限制两个对象之间的距离，因此 distance 插槽指定距离限制，即约束球体的半径，equal、max、min 模式分别约束 在球面上、在球内、在球外。

#

### copy transform(复制变换)

创建一个约束，从另一个对象复制对象的位置、旋转、缩放或所有变换。约束的 id 应该是唯一的，否则将会替换现有相同id的约束。

#

### remove / mute / unmute constraint(删除/静音/取消静音约束)

将对象上指定的约束删除、静音或取消静音。如果对象上指定有其他约束，将保持不变。

## 在使用拼图时遇到困难？

欢迎您随时在 论坛上提问！您还可以加入中文用户社区QQ群(171678760)，在线寻求帮助。