使用的骨骼重量、骨骼影响、关节、偏移和局部矩阵是什么?互联网上没有特定的文章可以很好地解释逻辑。我仍然不知道是否每根骨头都有不同的模型,以后会与其他模型结合起来。或者如何处理这些矩阵,如何设置骨骼,组合和蒙皮......如果你能分享任何文章或你在 opengl 中关于骨骼动画的知识,我会很高兴。
1 回答
其中一些术语在实现之间会有所不同。与其尝试提供具体的定义,我更愿意对蒙皮的工作原理进行一个非常粗略的概述,因为我认为这就是您要问的。
此外,这不是特别 GL 特定的......
主要思想是您采用多边形模型并将其附加到骨架上。模型中的每个顶点都分配给一个或多个骨骼。在这种情况下,骨骼实际上只是一种转换,尽管它们通常被可视化为骨架,因为骨骼通常是在层次结构中创作的,并且自然会类似于实际的骨架。
“关节”可能只是意味着“骨头”,或者在其他情况下实际上可能指的是两个骨头如何连接和关节......
由于骨骼是分层的,它们将具有描述它们相对于父级的变换的“局部”变换。在运行时,转换通常会被连接起来,以便它们都在同一个空间中。
将顶点分配给骨骼是使用权重完成的。每个顶点的权重通常加起来为 1。权重可以通过靠近骨骼自动分配,但通常由艺术家手动调整。通常使用艺术包中的工具将它们“绘制”到 3D 模型上。
在运行时,顶点由它们所影响的每个骨骼进行变换,最终顶点位置是这些不同变换结果的加权平均值。加权平均值的计算方式可能会有所不同,但这是一般方法。
然而,对于运行时应用程序,将影响顶点的不同骨骼的数量保持在最低限度通常很重要,并且可能有一个相对较小的上限;4,也许。因此,不是为骨架中的每个骨骼提供每个顶点的权重,而是提供固定数量的关节索引和相应的权重。
请注意,在蒙皮时通常不会对纹理坐标进行任何操作,但几乎可以肯定,您必须重新计算法线和可能的切线向量。同样,如何做到这一点可能因实现而异。