mcpField
3
3d-spatial

3d-spatial

github.com/dylantarre创意与媒体132776 次安装43 周前更新
代码仓库

关于 3d-spatial

这是一份将 Disney 的 12 条动画原则应用于 3D、VR/AR 和空间计算的实用指南,面向动画师与开发者。内容涵盖绑定、节奏、舒适度和性能等方面。

主要功能

  1. 0112 条动画原则的 3D 实践
  2. 02Blender 和 Unity 技巧示例
  3. 03VR/AR 舒适度与交互建议
  4. 04空间动画性能提示

适用场景

  1. 01规划 3D 软件中的角色动画
  2. 02调整 VR/AR 动作以提升舒适度
  3. 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:优先确保帧率

评论

支持 Markdown