演示视频参考连接:Blender骨骼绑定教程3:清除绑定 & Deform & 权重修改_哔哩哔哩_bilibili
对给定人体Mesh建立骨骼的操作步骤:
- 在Blender中打开人体Mesh模型,并确保该模型处于object模式。
- 或者使用快捷键“Shift + A”并选择“骨骼”。
- 在添加骨骼的窗口中,选择“自定义”选项卡,并设置骨骼的名称、长度、形状等属性。
- 将骨骼拖动到人体Mesh模型上,并将其放置在需要添加骨骼的位置。
- 重复上述步骤,直到人体Mesh模型上添加了足够的骨骼。
- 1. 在“对象”模式下,选择“网格”对象,然后按住 Shift 键并选择“骨架”对象,然后按 Ctrl-P 并选择“具有自动权重的父级”12。 这将在网格对象的“对象数据”面板中创建与骨骼同名的顶点组。
2. 在编辑模式下,选择网格对象并进入权重绘制模式。 您可以使用画笔工具在网格上绘制或擦除权重³。 不同的颜色代表不同的权重值,红色为1,蓝色为0。您还可以在编辑模式下使用权重工具面板来调整权重⁴。
3. 如果您遇到自动称重的任何错误或问题,例如“骨热称重:无法找到一根或多根骨头的解决方案”,您可能需要检查以下事项:
- 确保您的网格是封闭体积的单个连接网格。 如果您有多个网格,则可以使用 Ctrl-J 将它们连接起来,并使用 M > 按距离按距离合并顶点。
- 确保您的骨骼位于网格内部并对周围的顶点有足够的影响。 您可以在编辑模式下使用 Alt-S 调整骨骼包络大小。
- 使用 Ctrl-A > 应用所有变换确保网格和骨架已应用缩放和旋转。
- 确保您的网格和骨架没有任何会干扰父子关系过程的修改器。
注意:
- 按"E"键可以挤出新骨骼。这将从选定骨骼的末端创建一个子骨骼。
这是在Blender中创建新骨骼的一种方法。按"E"键可以选择一个骨骼,然后在其末端创建一个新的子骨骼。这个新的子骨骼将作为原来骨骼的子级,并且它们将保持连接状态。
- 按"Alt + P"键后选择"断开骨骼"选项可以断开骨骼。这将断开新挤出的子骨骼与其父级的联系,使其成为独立骨骼。
这是在Blender中断开骨骼连接的方法。通过按"Alt + P"键,可以选择"断开骨骼"选项,这将断开新创建的子骨骼与其父级骨骼的连接,使子骨骼成为独立的骨骼。
需要注意的是,使用"E"键挤出新骨骼时,默认情况下,Blender会将新的子骨骼的根部(基部)定位在父骨骼的末端。这意味着它会继承父骨骼的所有变换。所以,当您按"Alt + P" => "断开骨骼"将它们断开后,子骨骼的根部将保留在父骨骼的末端的相同位置和变换。
这意味着,在断开骨骼连接后,子骨骼的位置和变换将仍然受到其父骨骼的位置和变换的影响,因为它们在断开连接之前是相互关联的。因此,如果您想对子骨骼进行不同的变换,您需要手动调整子骨骼的位置和变换,以使其独立于父骨骼。
技术原理:
Blender mesh 到 骨骼自动权重蒙皮用的是"LBS(线性Jt混合)"²。这种方法使用了骨骼的包围体(Envelope)来计算网格顶点和骨骼之间的权重值,然后使用线性混合蒙皮来变换网格顶点的位置。
1. 每个网格点都由多个骨骼影响。Blender根据点与各个骨骼的距离自动计算每个骨骼对这个点的权重。2. 这些权重值的总和加起来等于1。3. 当骨骼移动时,每个点会根据各骨骼对它的权重进行平移。这导致网格产生变形效果。4. 权重值更高的骨骼对点的影响更大。当多个骨骼同时影响一个点时,它会向这些骨骼的加权平均位置移动。所以,基本上,LBS算法通过自动计算网格点与骨骼的权重关系,并使用这些权重驱动点向骨骼空间的加权平均移动,来实现网格的变形和蒙皮效果。
缺点:
而作为权重蒙皮最简单的实现方式,LBS也存在一些问题:
- 皮肤塌陷(网格点被拉向骨骼中心)
- 糖纸效应(网格部分明显绕骨骼旋转)
- 单独变形(网格局部与整体不协调)
- 体积变化(无法妥善保留体积)
效果参考图: