我的代码和巴比伦之间的动画差异,为什么?
Animation differences between my code and babylon, why?
我正在尝试渲染 glTF RiggedSimple 示例模型。
这是我的代码的结果:
这是巴比伦的:
如您所见,在我的模型中模型变形了,但在巴比伦中它仍然相当坚硬。
在我的例子中,我没有做任何花哨的事情,我将 gltf 中定义的皮肤矩阵直接推到 GPU,所以没有四元数皮肤或类似技术,只是纯粹的线性代数。
我应该用常规矩阵期待这个结果吗?还是由于我的实现错误导致呈现差异?
由于我的才华,我在调试时注释掉了动画中的翻译并忘记启用它们。对于这个模型,动画指定了一个不可忽略的垂直平移。因此,结果不同也就不足为奇了。
这是在 Blender 视口中呈现的 RiggedSimple 的正确行为。
父骨骼的原点位于底部中心,子骨骼的原点位于模型的中部(在本例中以橙色圆点显示)。当顶部的顶点移动时,它们仅因旋转而移动。旋转中心始终是关联骨骼的原点。
请注意中间带周围的顶点几乎没有移动,但它们确实有一点点移动。它们也部分受到子骨骼的影响,因此它们的运动是围绕橙色点的轨道。父骨骼对它们的抓地力很好,所以它们不会移动太远。
这是在 Blender 中可视化的关节权重。在左侧,父骨骼在底部处于最大强度(红色),在顶部没有影响(蓝色)。此骨骼不会移动,并且在顶点的中央带上具有相当不错的权重。
在右侧,子骨骼可视化。这是一个有旋转动画的。角色大多是颠倒的,因为它在顶部具有完整的强度而在底部具有零强度。它对中心顶点的影响非常微弱。
要进入此模式,首先 select 蒙皮网格,然后切换到“权重绘制”模式。使用 select 骨骼右侧显示的“顶点组”选择器来查看或编辑其权重。在 glTF 中,建议不要超过 4 个单独的骨骼对同一顶点产生任何影响,否则实时渲染器可能会出现问题或不支持它。此外,重要的是骨骼对每个顶点的影响总和恰好为 1.0(每个顶点的总重量为 100%,不多也不少)。否则可能会出现问题,例如,如果两个骨骼在一个顶点上都处于 100% 并且它们的顶点总和为 200%,那么重新定位整个骨架会使该顶点移动两倍远,事情会变得很糟糕迅速地。我认为 Blender glTF 导出器可能会自动处理其中的一些问题。
我正在尝试渲染 glTF RiggedSimple 示例模型。
这是我的代码的结果:
这是巴比伦的:
如您所见,在我的模型中模型变形了,但在巴比伦中它仍然相当坚硬。
在我的例子中,我没有做任何花哨的事情,我将 gltf 中定义的皮肤矩阵直接推到 GPU,所以没有四元数皮肤或类似技术,只是纯粹的线性代数。
我应该用常规矩阵期待这个结果吗?还是由于我的实现错误导致呈现差异?
由于我的才华,我在调试时注释掉了动画中的翻译并忘记启用它们。对于这个模型,动画指定了一个不可忽略的垂直平移。因此,结果不同也就不足为奇了。
这是在 Blender 视口中呈现的 RiggedSimple 的正确行为。
父骨骼的原点位于底部中心,子骨骼的原点位于模型的中部(在本例中以橙色圆点显示)。当顶部的顶点移动时,它们仅因旋转而移动。旋转中心始终是关联骨骼的原点。
请注意中间带周围的顶点几乎没有移动,但它们确实有一点点移动。它们也部分受到子骨骼的影响,因此它们的运动是围绕橙色点的轨道。父骨骼对它们的抓地力很好,所以它们不会移动太远。
这是在 Blender 中可视化的关节权重。在左侧,父骨骼在底部处于最大强度(红色),在顶部没有影响(蓝色)。此骨骼不会移动,并且在顶点的中央带上具有相当不错的权重。
在右侧,子骨骼可视化。这是一个有旋转动画的。角色大多是颠倒的,因为它在顶部具有完整的强度而在底部具有零强度。它对中心顶点的影响非常微弱。
要进入此模式,首先 select 蒙皮网格,然后切换到“权重绘制”模式。使用 select 骨骼右侧显示的“顶点组”选择器来查看或编辑其权重。在 glTF 中,建议不要超过 4 个单独的骨骼对同一顶点产生任何影响,否则实时渲染器可能会出现问题或不支持它。此外,重要的是骨骼对每个顶点的影响总和恰好为 1.0(每个顶点的总重量为 100%,不多也不少)。否则可能会出现问题,例如,如果两个骨骼在一个顶点上都处于 100% 并且它们的顶点总和为 200%,那么重新定位整个骨架会使该顶点移动两倍远,事情会变得很糟糕迅速地。我认为 Blender glTF 导出器可能会自动处理其中的一些问题。