第11章:骨骼绑定系统
章节大纲
11.1 引言与基础概念
- 骨骼绑定的作用与重要性
- 从 CAD 装配到角色绑定的思维转换
- Blender 骨骼系统架构
11.2 骨架创建与编辑
- Armature 对象基础
- 骨骼的添加、删除与连接
- 骨骼命名规范与镜像
- 骨骼层级关系
- Edit Mode vs Pose Mode
11.3 IK/FK 系统详解
- 正向运动学(FK)原理
- 反向运动学(IK)原理
- IK 链的设置与调试
- IK/FK 切换系统
- 极向目标(Pole Target)
11.4 约束系统深入
- 常用约束类型详解
- 约束堆栈与优先级
- 驱动器(Drivers)基础
- 自定义属性与控制器
11.5 权重绘制技巧
- 自动权重 vs 手动权重
- 权重绘制工具详解
- 权重传递与镜像
- 变形问题诊断与修复
11.6 本章小结
11.7 练习题
11.8 常见陷阱与错误
11.9 最佳实践检查清单
11.1 引言与基础概念
骨骼绑定是将 3D 模型转化为可动角色的关键技术。如果说建模赋予了角色形体,那么骨骼绑定则赋予了角色生命。本章将深入探讨 Blender 的骨骼系统,从基础的骨架创建到复杂的 IK/FK 系统,再到精细的权重调整,帮助您掌握专业级的角色绑定技术。
对于有 CAD 背景的学习者,可以将骨骼绑定理解为一种特殊的”装配系统”。与 CAD 中的装配约束类似,骨骼系统通过父子关系、约束和驱动器来控制模型的运动。但与机械装配不同的是,角色绑定需要考虑有机体的柔性变形,这就是权重系统发挥作用的地方。
骨骼绑定的核心组件
[控制器层]
|
[骨骼层]
|
[权重层]
|
[网格层]
- Armature(骨架):包含所有骨骼的容器对象
- Bone(骨骼):构成骨架的基本单元
- Constraint(约束):控制骨骼运动的规则
- Weight(权重):定义网格顶点受骨骼影响的程度
工作模式概览
Blender 的骨骼系统有三种主要工作模式:
- Edit Mode(编辑模式):创建和修改骨骼结构
- Pose Mode(姿态模式):设置骨骼姿态和动画
- Weight Paint Mode(权重绘制模式):调整骨骼对网格的影响
11.2 骨架创建与编辑
Armature 对象基础
在 Blender 中创建骨架的第一步是添加 Armature 对象。与网格对象不同,Armature 是一种特殊的对象类型,专门用于容纳和管理骨骼。
创建流程:
Shift+A → Armature → Single Bone
基础骨骼结构:
Head(头部)
|
[骨骼体]
|
Tail(尾部)
骨骼的基本操作
添加骨骼
- 在 Edit Mode 下,使用 E 键挤出新骨骼
- Shift+A 添加独立骨骼
- 细分骨骼:选中骨骼后按 W → Subdivide
连接与断开
- Alt+P:清除父子关系
- Ctrl+P:建立父子关系
- Connected(连接):子骨骼头部与父骨骼尾部相连
- Keep Offset(保持偏移):保持相对位置的父子关系
骨骼命名规范
良好的命名规范对于复杂绑定至关重要:
标准命名格式:
[部位]_[功能]_[方向]
示例:
arm_upper_L (左上臂)
leg_IK_R (右腿IK控制器)
spine_01 (脊椎第一节)
骨骼镜像与对称
Blender 提供了强大的镜像功能,可以大大提高绑定效率:
- X-Axis Mirror:在编辑模式下启用,自动镜像操作
- 命名自动识别:使用 .L/.R 或 _L/_R 后缀
- Symmetrize:将一侧骨骼镜像到另一侧
镜像工作流:
1. 创建左侧骨骼链
2. 添加 .L 后缀
3. 选中所有左侧骨骼
4. Armature → Symmetrize
骨骼显示选项
不同的显示方式适用于不同的工作场景:
- Octahedral(八面体):默认显示,清晰展示方向
- Stick(棍状):简洁显示,适合复杂骨架
- B-Bone(贝塞尔骨骼):可弯曲骨骼,适合脊椎等部位
- Envelope(包络):显示骨骼影响范围
- Wire(线框):最简显示,减少视觉干扰
骨骼层级关系
合理的层级结构是高效绑定的基础:
典型人体骨骼层级:
Root
├── Pelvis
│ ├── Spine_01
│ │ ├── Spine_02
│ │ │ ├── Spine_03
│ │ │ │ ├── Neck
│ │ │ │ │ └── Head
│ │ │ │ ├── Shoulder_L
│ │ │ │ │ └── Arm_Upper_L
│ │ │ │ │ └── Arm_Lower_L
│ │ │ │ │ └── Hand_L
│ │ │ │ └── Shoulder_R
│ │ │ │ └── Arm_Upper_R
│ │ │ │ └── Arm_Lower_R
│ │ │ │ └── Hand_R
│ ├── Leg_Upper_L
│ │ └── Leg_Lower_L
│ │ └── Foot_L
│ └── Leg_Upper_R
│ └── Leg_Lower_R
│ └── Foot_R
骨骼组与层
Blender 提供 32 个骨骼层和无限的骨骼组,用于组织复杂骨架:
骨骼层分配建议:
- Layer 1:主要变形骨骼
- Layer 2:IK 控制器
- Layer 3:FK 控制器
- Layer 4:辅助骨骼
- Layer 5:面部骨骼
骨骼组(Bone Groups):
- 用于视觉区分和批量选择
- 可自定义颜色主题
- 常见分组:IK控制、FK控制、变形骨骼、辅助骨骼
11.3 IK/FK 系统详解
正向运动学(FK)原理
FK 是最直观的动画方式,通过逐级旋转父骨骼来控制子骨骼的位置。这种方式类似于真实的关节运动。
FK 链示例(手臂):
肩膀旋转 → 影响整条手臂
↓
上臂旋转 → 影响前臂和手
↓
前臂旋转 → 只影响手
↓
手部旋转 → 独立运动
FK 的优势:
- 精确的弧线运动控制
- 适合摆臂、挥手等动作
- 不会产生意外的求解结果
FK 的劣势:
- 定位末端需要调整多个关节
- 难以保持接触点固定(如手扶墙)
反向运动学(IK)原理
IK 通过指定末端位置,自动计算中间关节的旋转角度。这在制作接触性动作时特别有用。
IK 链设置(腿部):
1. 创建 IK 目标骨骼(通常独立于主骨架)
2. 为小腿骨骼添加 IK 约束
3. 设置链长(Chain Length)= 2
4. 添加极向目标控制膝盖朝向
IK 求解器类型:
- Standard:默认求解器,适合大多数情况
- iTaSC:高级求解器,提供更多控制选项
- Spline IK:适合脊椎、尾巴等连续弯曲
IK 链的设置与调试
基础 IK 设置步骤:
- 准备骨骼链
大腿骨骼 (thigh)
↓
小腿骨骼 (shin) ← 添加 IK 约束
↓
脚部骨骼 (foot)
- 创建控制器
- IK 目标骨骼(IK_foot)
- 极向目标骨骼(Pole_knee)
- 约束参数调整
- Chain Length:IK 链长度(通常为 2)
- Pole Angle:极向旋转偏移
- Iterations:求解迭代次数(默认 500)
- Influence:约束影响权重
极向目标(Pole Target)详解
极向目标控制 IK 链的弯曲方向,对于膝盖、手肘等关节至关重要。
极向目标位置计算:
膝盖
/\
/ \
大腿/ \小腿
/ \
/ ←d→ \
髋 踝
极向目标应放置在距离 d 的位置
通常 d = 大腿长度
极向目标调试技巧:
- 使用骨骼的自定义形状提高可见性
- 为极向目标添加限制约束,防止异常位置
- 使用 “Pole Angle” 修正初始偏移
IK/FK 切换系统
专业绑定通常需要 IK 和 FK 可以灵活切换,以适应不同的动画需求。
实现 IK/FK 切换的方法:
- 双骨骼链方案
变形骨骼链(DEF)
├── FK 控制链
└── IK 控制链
使用 Copy Rotation 约束混合两种控制
- 约束影响权重方案
- 使用自定义属性控制 IK 约束的 Influence
- 0 = 纯 FK,1 = 纯 IK
- 驱动器自动切换
# 驱动器表达式示例
var * ik_influence + (1-var) * fk_influence
IK 拉伸(Stretch)
IK 拉伸允许骨骼链超出原始长度,创造夸张的卡通效果。
设置 IK 拉伸:
- 在 IK 约束中启用 “Stretch”
- 调整骨骼的 IK Stretch 属性
- 使用 “Lock IK X/Y/Z” 限制特定轴向
Spline IK 详解
Spline IK 适合创建柔性的连续弯曲,如脊椎、触手、绳索等。
Spline IK 工作流:
1. 创建骨骼链(如 10 节脊椎)
2. 创建贝塞尔曲线作为引导
3. 为最后一节骨骼添加 Spline IK 约束
4. 使用曲线控制点调整形状
Spline IK 高级选项:
- Y Stretch:沿曲线拉伸骨骼
- Use Curve Radius:使用曲线半径缩放骨骼
- Offset:沿曲线偏移骨骼链起点
11.4 约束系统深入
约束是 Blender 骨骼系统的核心,它们定义了骨骼之间的关系和运动规则。理解并熟练运用约束系统是创建复杂绑定的关键。
常用约束类型详解
变换约束(Transform Constraints)
- Copy Location/Rotation/Scale
- 复制目标对象的变换
- 可选择特定轴向和空间
- 支持偏移和反向
- Limit Location/Rotation/Scale
- 限制骨骼的活动范围
- 创建关节限制(如肘关节只能向一个方向弯曲)
肘关节限制示例:
Limit Rotation:
X: Min -10° Max 150°
Y: 锁定
Z: 锁定
- Copy Transforms
跟踪约束(Tracking Constraints)
- Track To
- 使骨骼始终指向目标
- 用于眼睛跟踪、瞄准等效果
眼球跟踪设置:
Track Axis: -Z
Up Axis: Y
Target: Eye_Target
- Damped Track
- Track To 的简化版本
- 自动选择最短旋转路径
- 避免翻转问题
- Locked Track
关系约束(Relationship Constraints)
- Child Of
- 动态改变父子关系
- 支持动画切换父对象
- 用于拾取、放下物体
- Floor
- 防止骨骼穿透地面
- 自动碰撞检测
脚部地面约束:
Target: Ground_Plane
Sticky: 启用(脚不会滑动)
Use Rotation: 启用(适应斜坡)
- Shrinkwrap
约束堆栈与优先级
约束按照列表顺序依次计算,理解这个顺序对于复杂绑定至关重要。
约束计算顺序示例:
1. Limit Rotation(限制基础旋转)
↓
2. IK(计算 IK 解)
↓
3. Copy Rotation(叠加额外旋转)
↓
4. Limit Rotation(最终限制)
结果 = 每步约束的累积效果
约束空间(Space)选择:
- World Space:世界坐标系
- Local Space:骨骼自身坐标系
- Pose Space:考虑骨骼约束后的坐标系
- Local With Parent:相对父骨骼的局部空间
- Custom Space:自定义对象空间
驱动器(Drivers)基础
驱动器允许使用数学表达式或 Python 脚本控制属性。
创建驱动器的方法:
- 右键点击属性 → Add Driver
- 在 Graph Editor 中切换到 Drivers 模式
- 设置驱动器变量和表达式
驱动器变量类型:
- Transform Channel:读取对象变换值
- Single Property:读取任意属性
- Distance:计算两对象距离
- Rotational Difference:计算旋转差异
常用驱动器表达式:
线性映射:
var * 2 + 0.5
限制范围:
max(0, min(1, var))
条件切换:
1 if var > 0.5 else 0
正弦波动:
sin(var * 3.14159)
自定义属性与控制器
自定义属性让绑定更加用户友好,将复杂的控制集中到简单的滑块。
创建自定义属性:
- 在 Pose Mode 选择骨骼
- 在属性面板 → Custom Properties → New
- 设置类型、范围、默认值
常见自定义属性应用:
IK/FK 切换器:
Property: IK_FK_Switch
Type: Float
Min: 0, Max: 1
0 = FK, 1 = IK
手指卷曲控制:
Property: Finger_Curl
Type: Float
Min: 0, Max: 1
驱动所有手指关节旋转
面部表情滑块:
Property: Smile
Type: Float
Min: -1, Max: 1
驱动嘴角形变键
高级约束技巧
Action 约束
- 将属性值映射到动作
- 用于复杂的预设动画
- 实现姿态库功能
Transformation 约束
- 将一种变换映射到另一种
- 如:将位移转换为旋转
齿轮联动示例:
Source: Location X
Destination: Rotation Z
比例调整实现不同传动比
Armature 约束
- 使网格受多个骨架影响
- 用于模块化角色系统
- 实现衣物、配饰的独立绑定
11.5 权重绘制技巧
权重决定了网格顶点受骨骼影响的程度,是实现自然变形的关键。良好的权重分布能让角色动作流畅自然,而糟糕的权重会导致各种变形问题。
权重基础概念
权重值范围:0.0 - 1.0
0.0 = 不受影响(蓝色)
0.5 = 中等影响(绿色)
1.0 = 完全影响(红色)
权重归一化规则:
每个顶点的所有权重之和 = 1.0
自动权重 vs 手动权重
自动权重(Automatic Weights)
绑定网格的快速方法:
- 选择网格
- Shift 选择骨架
- Ctrl+P → With Automatic Weights
自动权重的优缺点:
- 优点:快速、适合初始设置
- 缺点:可能产生不理想的分布,特别是复杂几何体
常见自动权重问题:
- 骨骼热力图计算失败
- 权重溢出到不相关区域
- 关节处权重分布不均
权重绘制工具详解
进入 Weight Paint Mode 后,可以使用各种画笔工具调整权重。
基础画笔类型:
- Draw(绘制)
- 直接绘制权重值
- Mix 模式:混合现有权重
- Add 模式:增加权重
- Subtract 模式:减少权重
- Blur(模糊)
- Average(平均)
- Smear(涂抹)
画笔设置优化:
关节处理设置:
Radius: 50px
Strength: 0.2
Falloff: Smooth
大面积调整:
Radius: 200px
Strength: 1.0
Falloff: Constant
权重绘制工作流程
标准工作流程:
- 粗调阶段
```
- 使用自动权重作为基础
- 切换到 Weight Paint Mode
- 逐个检查主要骨骼
- 修复明显问题区域
```
- 精调阶段
```
- 专注关节区域
- 测试极限姿态
- 平滑权重过渡
- 消除权重孤岛
```
- 验证阶段
```
- 完整动作测试
- 检查权重归一化
- 清理零权重顶点
- 优化权重分布
```
关节权重处理技巧
关节是权重绘制的难点,需要特别关注。
肘关节/膝关节处理:
理想权重分布:
上臂/大腿
1.0
0.75 | 0.75
0.5 | 0.5
0.25 | 0.25
0.0
下臂/小腿
肩部权重处理:
- 肩胛骨区域需要额外骨骼
- 使用多层权重混合
- 考虑锁骨的影响
手指关节优化:
- 每个关节单独调整
- 保持权重对称
- 使用 “Limit Total” 防止超标
权重传递与镜像
权重传递(Transfer Weights):
用于将权重从一个网格复制到另一个:
- 选择源网格(已有权重)
- 选择目标网格
- Weight Paint → Weights → Transfer Weights
传递选项:
- Nearest Vertex:最近顶点
- Nearest Face:最近面
- Nearest Volume:体积映射
- Surface Mapping:表面映射
权重镜像:
对于对称模型,可以镜像权重:
- 确保顶点组命名正确(.L/.R)
- Weight Paint → Weights → Mirror
- 选择镜像轴和选项
权重层管理
Blender 支持多个权重层,用于不同用途:
顶点组操作:
- Assign:分配权重
- Remove:移除权重
- Select/Deselect:选择权重顶点
- Normalize:归一化权重
- Clean:清理小权重值
权重工具集:
Normalize All:
确保所有顶点权重和为 1.0
Clean:
删除低于阈值的权重
阈值通常设为 0.01
Limit Total:
限制每个顶点的骨骼影响数
游戏引擎通常限制为 4
变形问题诊断与修复
常见变形问题:
- 糖葫芦效应
- 现象:关节处出现尖锐突出
- 原因:权重过度集中
- 解决:平滑权重过渡
- 橡皮管效应
- 现象:弯曲时体积损失
- 原因:线性权重分布
- 解决:保留体积的权重分布
- 权重溢出
- 现象:不相关部位随之运动
- 原因:权重意外分配
- 解决:使用遮罩限制绘制区域
诊断工具:
显示选项:
[ ] Show Zero Weights(显示零权重)
[✓] Show Weight Contours(显示权重轮廓)
[ ] Use Multi-Paint(多骨骼绘制)
测试方法:
1. 极限旋转测试(180°弯曲)
2. 组合动作测试
3. 快速动作测试
高级权重技术
多分辨率权重:
使用 Multiresolution 修改器时的权重策略:
- 在低分辨率网格上设置权重
- 细分后自动插值
- 必要时在高分辨率微调
权重代理(Weight Proxy):
为复杂模型创建简化代理:
- 创建低面数代理网格
- 在代理上绘制权重
- 传递权重到高模
程序化权重:
使用 Python 脚本生成权重:
# 伪代码示例
for vertex in mesh.vertices:
distance = calculate_distance(vertex, bone)
weight = 1.0 / (1.0 + distance * falloff)
assign_weight(vertex, bone, weight)
11.6 本章小结
骨骼绑定系统是角色动画的基础设施,本章我们深入学习了从骨架创建到权重调整的完整工作流程。
核心概念回顾
- 骨骼系统架构
- Armature 作为骨骼容器
- 骨骼的父子层级关系
- Edit Mode、Pose Mode、Weight Paint Mode 的不同用途
- IK/FK 系统
- FK:自上而下的关节控制,适合弧线运动
- IK:自下而上的末端控制,适合接触性动作
- IK/FK 切换实现灵活的动画控制
- 约束系统
- 变换约束控制位置、旋转、缩放
- 跟踪约束实现自动朝向
- 关系约束定义复杂的骨骼关系
- 约束堆栈顺序决定最终效果
- 权重系统
- 权重值 0-1 定义骨骼影响程度
- 自动权重提供初始分布
- 手动绘制精细调整变形
- 权重归一化确保正确变形
关键技术要点
- 命名规范:使用 .L/.R 后缀实现自动镜像
- 骨骼组织:利用骨骼层和骨骼组管理复杂骨架
- 极向目标:控制 IK 链的弯曲方向
- 驱动器:使用表达式创建智能控制
- 自定义属性:简化复杂控制为用户友好界面
- 权重传递:在不同网格间共享权重数据
工作流程最佳实践
- 先规划骨骼结构,考虑动画需求
- 使用对称建模和镜像工具提高效率
- 为不同用途创建独立的控制器
- 逐步测试绑定,避免累积问题
- 保存多个版本,方便回退修改
11.7 练习题
基础题(理解概念)
练习 1:骨骼层级理解
创建一个简单的机械臂骨架,包含基座、大臂、小臂和夹爪。要求正确设置父子关系,使整个机械臂可以通过基座控制。
提示(Hint):思考真实机械臂的运动关系,基座是根骨骼。
参考答案
创建骨骼链:
1. 添加 Armature 对象
2. 在 Edit Mode 下创建骨骼:
- Base(基座)
- Upper_Arm(大臂)作为 Base 的子骨骼
- Lower_Arm(小臂)作为 Upper_Arm 的子骨骼
- Gripper(夹爪)作为 Lower_Arm 的子骨骼
3. 使用 Connected 选项保持骨骼连接
4. 在 Pose Mode 测试,旋转 Base 应带动整个机械臂
关键点:正确的父子关系确保了运动的传递性。
练习 2:IK 链设置
为人物腿部设置基础 IK 系统,包括大腿、小腿和脚部,能够通过移动脚部控制器来摆放腿部姿态。
提示(Hint):IK 约束应添加到小腿骨骼,链长为 2。
参考答案
设置步骤:
1. 创建腿部骨骼链:Thigh → Shin → Foot
2. 创建独立的 IK_Foot 控制器骨骼
3. 选择 Shin 骨骼,添加 IK 约束:
- Target: Armature
- Bone: IK_Foot
- Chain Length: 2
4. 创建 Pole_Knee 骨骼作为极向目标
5. 在 IK 约束中设置 Pole Target
测试:移动 IK_Foot 应该自动计算大腿和小腿的旋转。
练习 3:约束应用
创建一个眼球跟踪系统,使两个眼球始终看向一个目标对象。
提示(Hint):使用 Track To 或 Damped Track 约束。
参考答案
实现方法:
1. 创建两个眼球骨骼:Eye_L 和 Eye_R
2. 创建一个目标骨骼:Eye_Target
3. 为每个眼球骨骼添加 Damped Track 约束:
- Target: Armature
- Bone: Eye_Target
4. 调整 Track Axis 确保眼球朝向正确
优化:可以添加 Limit Rotation 约束限制眼球转动范围,避免不自然的极限角度。
练习 4:基础权重绘制
为一个简单的圆柱体模型(如手臂)设置两段骨骼并调整权重,实现平滑的弯曲效果。
提示(Hint):关注中间关节处的权重过渡。
参考答案
权重设置流程:
1. 创建圆柱体网格(细分足够)
2. 添加两段骨骼:Upper 和 Lower
3. 使用自动权重绑定
4. 进入 Weight Paint Mode:
- 选择 Upper 骨骼
- 在关节处使用 Blur 画笔平滑过渡
- 确保关节处权重约为 0.5
5. 对 Lower 骨骼重复上述过程
6. 测试弯曲,调整权重避免挤压变形
关键:关节处的权重应该是渐变的,避免硬边界。
挑战题(深入应用)
练习 5:IK/FK 切换系统
设计并实现一个手臂的 IK/FK 切换系统,通过一个自定义属性在两种控制模式间平滑切换。
提示(Hint):需要三条骨骼链:变形链、FK 控制链、IK 控制链。
参考答案
完整实现方案:
1. **创建三条骨骼链**:
- DEF_Upper_Arm, DEF_Lower_Arm, DEF_Hand(变形链)
- FK_Upper_Arm, FK_Lower_Arm, FK_Hand(FK 控制链)
- IK_Upper_Arm, IK_Lower_Arm, IK_Hand(IK 控制链)
2. **设置 IK 系统**:
- 为 IK_Lower_Arm 添加 IK 约束
- 创建 IK_Hand_Target 作为 IK 目标
3. **创建切换控制**:
- 在主控制器上添加自定义属性 "IK_FK_Switch"(0-1)
4. **设置约束混合**:
- DEF 骨骼添加两个 Copy Rotation 约束
- 第一个复制 FK 骨骼,第二个复制 IK 骨骼
- 使用驱动器控制约束影响:
- FK 约束:1 - IK_FK_Switch
- IK 约束:IK_FK_Switch
5. **位置匹配**(可选):
- 添加脚本实现 IK/FK 位置自动匹配
这个系统允许动画师根据需要选择最合适的控制方式。
练习 6:面部绑定基础
为一个简化的卡通脸部创建基础表情控制系统,包括眉毛、眼睛和嘴巴的基本控制。
提示(Hint):考虑使用骨骼配合形态键(Shape Keys)。
参考答案
面部绑定方案:
1. **骨骼布局**:
- 眉毛:每侧 2-3 个骨骼
- 眼皮:上下各 3-4 个骨骼
- 嘴巴:上唇 5 个,下唇 5 个,嘴角 2 个
2. **控制器设置**:
- 创建主面部控制器
- 添加自定义属性:
- Brow_Height(-1 到 1)
- Brow_Rotation(-1 到 1)
- Eye_Blink(0 到 1)
- Mouth_Smile(-1 到 1)
3. **驱动器连接**:
- Brow_Height 驱动眉毛骨骼的 Y 位置
- Eye_Blink 驱动眼皮骨骼旋转
- Mouth_Smile 驱动嘴角骨骼位置
4. **形态键辅助**(可选):
- 创建细微表情的形态键
- 用骨骼驱动形态键值
5. **约束优化**:
- 添加 Limit 约束防止过度变形
- 使用 Copy Location 保持对称
这个系统提供了基础的表情控制,可以进一步扩展。
练习 7:复杂约束链
创建一个坦克履带系统,履带板沿着路径移动并自动调整角度适应地形。
提示(Hint):结合 Follow Path、Array 修改器和约束系统。
参考答案
履带系统实现:
1. **基础设置**:
- 创建履带路径(贝塞尔曲线)
- 创建单个履带板模型
- 使用 Array 修改器沿曲线复制
2. **骨骼系统**:
- 为每个履带板创建骨骼
- 使用 Follow Path 约束沿路径移动
- 设置不同的 Offset 值分布履带板
3. **地形适应**:
- 添加 Shrinkwrap 约束投影到地面
- 使用 Floor 约束防止穿透
- Track To 约束保持履带板朝向
4. **驱动系统**:
- 创建主控制器
- 添加 "Speed" 自定义属性
- 用驱动器连接到 Follow Path 的 Offset
5. **优化**:
- 使用 Python 脚本批量设置约束
- 创建 LOD 系统优化性能
这个系统展示了多种约束的组合应用。
练习 8:高级权重问题解决
处理一个肩部区域的复杂权重问题,包括锁骨、肩胛骨和上臂的协调运动,避免常见的肩部变形问题。
提示(Hint):需要辅助骨骼和多层权重混合。
参考答案
肩部权重解决方案:
1. **骨骼结构**:
- Clavicle(锁骨)
- Scapula(肩胛骨)- 作为辅助骨骼
- Shoulder(肩关节)
- Upper_Arm(上臂)
2. **骨骼关系**:
- Clavicle 是 Spine 的子骨骼
- Shoulder 是 Clavicle 的子骨骼
- Upper_Arm 是 Shoulder 的子骨骼
- Scapula 通过约束跟随 Upper_Arm 旋转
3. **权重分配策略**:
- 锁骨区域:100% Clavicle
- 肩胛区域:70% Scapula,30% Spine
- 肩关节:渐变混合 Shoulder 和 Upper_Arm
- 腋下:特殊处理避免挤压
4. **辅助骨骼设置**:
- Scapula 使用 Copy Rotation 约束
- 只复制部分旋转(如 30%)
- 添加 Limit Rotation 防止过度
5. **权重绘制技巧**:
- 使用 Add 模式逐层构建
- 在极限姿势下测试
- 使用 Blur 平滑过渡区域
- 手动修正问题区域
6. **测试姿势**:
- T-Pose 到 A-Pose
- 手臂前伸、侧平举、上举
- 肩部环绕运动
这个方案解决了肩部的主要变形问题,创造自然的肩部运动。
11.8 常见陷阱与错误
骨骼创建阶段
- 错误的骨骼方向
- 问题:骨骼 Roll 值不正确导致奇怪的旋转
- 解决:使用 Ctrl+N 重新计算 Roll 值
- 断开的骨骼链
- 问题:忘记连接骨骼导致运动不连贯
- 解决:检查 Connected 选项或使用 Alt+P/Ctrl+P 重建关系
- 命名不规范
- 问题:无法使用自动镜像功能
- 解决:严格遵循 .L/.R 命名规范
IK 设置问题
- IK 链长度错误
- 问题:Chain Length 设置不当导致意外骨骼参与计算
- 解决:仔细计算需要的骨骼数量
- 极向翻转
- 问题:IK 链突然翻转到另一侧
- 解决:正确设置 Pole Target 和 Pole Angle
- IK 拉伸失控
- 问题:骨骼无限拉伸导致变形
- 解决:合理设置 IK Stretch 值或禁用
约束使用错误
- 约束顺序混乱
- 问题:约束执行顺序不当产生错误结果
- 解决:理解约束堆栈,调整顺序
- 空间设置错误
- 问题:Local/World Space 混淆导致异常行为
- 解决:根据需求选择正确的空间
- 循环依赖
- 问题:约束形成循环导致系统崩溃
- 解决:检查依赖关系,避免循环引用
权重问题
- 权重未归一化
- 问题:顶点权重总和不等于 1 导致变形异常
- 解决:使用 Normalize All 工具
- 权重孤岛
- 问题:孤立的高权重点造成尖刺
- 解决:使用 Smooth 或手动修正
- 过多骨骼影响
- 问题:游戏引擎限制每顶点骨骼数
- 解决:使用 Limit Total 限制为 4 或更少
11.9 最佳实践检查清单
规划阶段
骨骼创建
IK/FK 设置
约束配置
权重调整
控制器设计
测试验证
优化与完成
通过本章的学习,您已经掌握了 Blender 骨骼绑定系统的核心技术。骨骼绑定是一个需要大量实践的技能,建议您从简单的模型开始,逐步挑战更复杂的角色。下一章我们将学习如何使用这些绑定系统创建生动的角色动画。