角色远离原点后出现抖动
在姿态模式下移动角色,使其远离世界原点后,播放动画时可能出现网格顶点局部抖动或形变。这通常是 Blender 在大坐标下浮点精度不足,误差经骨架与约束计算后显现的结果。抖动出现的距离取决于 Rig 结构与场景设置,没有适用于所有工程的统一阈值。
现象与测试结果
在 Blender 5.2.3 中,将角色的 c_pos 总控移至不同距离,播放同一段 24 帧测试动作,并统计头部、身体、面罩和结构网格共 67,395 个顶点相对原点位置的偏差:
| 距离原点 | RMS 偏差 | 最大偏差 |
|---|---|---|
| 100 米 | 0.018 毫米 | 0.182 毫米 |
| 500 米 | 0.071 毫米 | 0.683 毫米 |
| 1,000 米 | 0.145 毫米 | 1.403 毫米 |
| 2,000 米 | 0.288 毫米 | 2.020 毫米 |
| 5,000 米 | 1.069 毫米 | 11.699 毫米 |
| 10,000 米 | 2.321 毫米 | 34.669 毫米 |
偏差总体随距离增加,但会因姿态及约束计算而波动。以下视频分别展示灰模与材质渲染下,从原点至 10,000 米的对比:
姿态模式与物体模式对比
下方从左至右依次为原点基准、姿态总控移动至 10,000 米、骨架对象整体移动至 10,000 米。三组使用相同动作;物体模式组的姿态总控仅作小幅移动。该 Rig 在物体模式下整体移动后,误差有所减小,但仍未消除。
该角色的面部由独立骨架控制,并通过父子级骨骼约束跟随主骨架运动。额外的约束计算可能进一步累积浮点误差,使面部在远离原点时出现抖动。
处理建议
角色绑定与动画制作宜在世界原点附近进行。需要制作远距离场景时,尽量调整场景或采用浮动原点方式,使角色、骨架及约束目标保持在原点附近,避免在姿态模式下将整套 Rig 移至大坐标处继续制作动画。
原因
Blender 的变换计算采用有限精度浮点数。坐标绝对值增大时,可表示数值之间的间隔也随之增大。网格经过骨架、矩阵、IK 与约束等多级运算后,舍入误差可能累积,并使动画求值结果出现差异,最终表现为局部抖动或形变。
