关于 3d-spatial
这是一份将 Disney 的 12 条动画原则应用于 3D、VR/AR 和空间计算的实用指南,面向动画师与开发者。内容涵盖绑定、节奏、舒适度和性能等方面。
主要功能
- 0112 条动画原则的 3D 实践
- 02Blender 和 Unity 技巧示例
- 03VR/AR 舒适度与交互建议
- 04空间动画性能提示
适用场景
- 01规划 3D 软件中的角色动画
- 02调整 VR/AR 动作以提升舒适度
- 03优化动画场景性能
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dylantarre/ animation-principles --skill 3d-spatial安装后在 Claude Code 中输入/3d-spatial确认已加载。
详细介绍
3D 空间动画
将迪士尼的 12 条动画原则应用于 3D 软件、VR/AR 和空间计算环境。
快速参考
| 原则 | 3D/空间实现方式 |
|---|---|
| 挤压与拉伸 | 晶格变形器、混合形状 |
| 预备动作 | IK/FK 预备动作、摄像机预运动 |
| 演出布局 | 摄像机角度、灯光、景深 |
| 直线动画 / 姿势到姿势 | 分层动画与关键姿势布局 |
| 跟随动作 / 重叠动作 | 骨骼链、物理模拟 |
| 慢入 / 慢出 | F 曲线编辑、动画曲线 |
| 弧线 | IK 控制柄、3D 空间中的运动路径 |
| 次要动作 | 布料模拟、粒子系统、环境 |
| 节奏 | 帧节奏、VR 90fps 要求 |
| 夸张 | 风格化变形、强化姿势 |
| 扎实绘制 | 体积保持、轮廓 |
| 吸引力 | 角色设计、令人满意的动作 |
原则应用
挤压与拉伸:使用晶格或网格变形器实现自然的挤压效果。使用混合形状进行面部变形。在骨骼层级中缩放骨骼。始终保持体积——如果 Y 轴压缩,X/Z 轴就应扩张。
预备动作:为角色动画使用 IK 绑定预备动作。摄像机在推进前先后拉。物体在释放前先蓄势。在 VR 中:清晰地预示动作,让用户感到舒适。
演出布局:摄像机角度能强化动作表现。三点布光可引导注意力。景深可突出主体。在 VR 中,使用空间音频和灯光引导注意力。
直线动画与姿势到姿势:先设置关键姿势(姿势到姿势),再进行细化(样条曲线)。使用分层动画——先制作身体,再添加重叠元素。程序化次要动作属于直线动画。
跟随动作与重叠动作:使用骨骼链制作尾巴、头发和斗篷。使用物理模拟制作布料和粒子。让子骨骼的动作滞后于父骨骼。使用抖动变形器实现自然的跟随动作。
慢入 / 慢出:F 曲线(Blender)、Animation Curves(Unity)、Graph Editor(Maya)。切线控制柄控制缓动。切线平缓 = 慢,切线陡峭 = 快。不要让曲线保持线性。
弧线:显示 3D 空间中的运动路径。IK 控制柄可以自然地形成弧线。从多个摄像机角度检查弧线。FK 旋转会在层级结构中自然形成弧线。
次要动作:布料模拟会响应主要动作。碰撞时发射粒子。环境物体会对角色做出反应。面部动画应配合身体动作。
节奏:电影:24fps,带运动模糊。游戏:至少 60fps。VR:需要 90fps(72-120fps)。帧节奏会影响感知到的重量——重的 = 慢,轻的 = 快。
夸张:为形成风格,将姿势强化到超出解剖限制。快速运动时使用拖影帧。夸张预备动作和跟随动作。在 VR 中:谨慎使用——夸张可能引发不适。
扎实绘制:从各个角度检查轮廓。变形时保持体积。强有力的姿势从侧面看也应清晰易辨。避免相互穿插和几何体破损。
吸引力:角色设计应服务于动画需求。重量和平衡要可信。动作要有个性。在 VR 中,临场感和舒适度至关重要。
软件技巧
Blender
# Add follow-through with driver
# On child bone, add driver to rotation
driver.expression = "var * 0.3"
driver.variables["var"].source = parent_bone.rotation
# Physics-based secondary
bpy.ops.object.modifier_add(type='CLOTH')
bpy.context.object.modifiers["Cloth"].settings.quality = 10
Unity
// Spring-based follow through
public class SpringFollow : MonoBehaviour {
public Transform target;
public float springStrength = 10f;
public float damping = 0.5f;
private Vector3 velocity;
void Update() {
Vector3 delta = target.position - transform.position;
velocity += delta * springStrength * Time.deltaTime;
velocity *= 1f - damping * Time.deltaTime;
transform.position += velocity * Time.deltaTime;
}
}
VR/AR 注意事项
| 方面 | 要求 |
|---|---|
| 帧率 | 最低 90fps,首选 120fps |
| 运动 | 避免摄像机动画——视角由用户控制 |
| 舒适度 | 加速度逐渐变化,避免突然运动 |
| 尺度 | 动画必须适用于世界尺度 |
| 交互 | 对手部/控制器输入提供清晰反馈 |
性能说明
- 对远距离动画使用 LOD(细节层次)
- 尽可能烘焙复杂模拟
- 对角色网格使用 GPU 蒙皮
- 剔除视锥外的动画
- VR:优先确保帧率