共计 1181 个字符,预计需要花费 3 分钟才能阅读完成。
问题背景
Rigify 是 Blender 中一个强大的骨骼绑定插件,它提供了一套标准的人形骨骼系统。但在实际项目中,我们经常需要为基础骨骼添加自定义结构,比如在 Spine 处添加尾巴骨骼。Rigify 的基础骨骼模型并没有预置尾巴骨骼,这给需要制作带有尾巴角色的用户带来了挑战。

技术方案
1. 骨骼层级设置
- 在编辑模式下选中 Spine 骨骼末端(通常是 spine.006)
- 按 Shift+ E 添加新骨骼,作为尾巴的起始骨骼
- 继续延伸骨骼链,按 E 键挤出后续骨骼
- 确保所有新骨骼的父子关系正确连接
2. 命名规范
- 主骨骼命名为 tail.00
- 后续骨骼依次命名为 tail.01、tail.02 等
- 末端骨骼建议添加_end 后缀
3. 约束添加
- 为 tail.00 添加 Copy Rotation 约束,目标设为 spine.006
- 适当调整约束的影响系数
- 考虑添加 Stretch To 约束以获得更自然的弯曲效果
代码示例
import bpy
# 进入编辑模式
bpy.ops.object.mode_set(mode='EDIT')
# 获取 spine 末端骨骼
armature = bpy.context.object.data
spine_end = armature.edit_bones['spine.006']
# 创建 tail 骨骼链
tail_bones = []
for i in range(5):
bone = armature.edit_bones.new(f'tail.{i:02d}')
bone.head = spine_end.tail if i == 0 else tail_bones[-1].tail
bone.tail = bone.head + (0, 0, -0.1)
bone.parent = spine_end if i == 0 else tail_bones[-1]
tail_bones.append(bone)
# 返回物体模式
bpy.ops.object.mode_set(mode='OBJECT')
权重绘制
- 进入权重绘制模式
- 使用渐变工具从 tail.00 到 tail.04 逐步减少权重影响
- 特别注意 spine 和 tail 连接处的权重过渡
- 使用平滑笔刷消除不自然的权重突变
避坑指南
-
问题:动画时尾巴与身体分离
解决:检查骨骼父子关系是否正确,确认权重绘制完整 -
问题:尾巴弯曲不自然
解决:调整骨骼约束的影响系数,增加中间骨骼数量 -
问题:变形时出现撕裂
解决:重新检查权重分配,确保每个顶点至少有两个骨骼影响 -
问题:IK 控制失效
解决:确认没有在错误模式下添加约束,检查约束目标设置 -
问题:导出后骨骼失效
解决:检查骨骼命名是否符合目标引擎规范
性能考量
- 每增加一个骨骼会增加约 5% 的动画计算开销
- 保持骨骼数量在合理范围内 (建议尾巴不超过 8 节)
- 复杂的弯曲效果建议使用曲线变形替代额外骨骼
延伸思考
- 尝试在 Rigify 骨骼上添加翅膀骨骼结构
- 研究如何为多足生物创建可扩展的腿部骨骼系统
- 探索使用自定义属性控制骨骼变形的高级技巧
正文完
