OpenGL中Skeletal Animation背后的逻辑

时间:2013-02-23 07:37:01

标签: animation

骨骼重量,骨骼影响,关节,偏移和局部矩阵用于什么?互联网上没有一篇文章可以很好地解释逻辑。我仍然不知道每个骨骼是否有一个不同的模型,后来与其他模型相结合。或者如何处理这些矩阵,如何设置骨骼,组合和修饰它们......如果你能在opengl中分享任何关于骨骼动画的文章或知识,我将很高兴。

1 个答案:

答案 0 :(得分:6)

这些术语中的一些在实现之间会有所不同。我不想尝试提供具体的定义,而是希望对皮肤如何工作进行非常粗略的概述,因为我认为这就是你所要求的。

此外,这不是特定于GL的......

主要思想是你采用多边形模型并将其附加到骨架上。模型中的每个顶点都分配给一个或多个骨骼。在这种情况下,骨骼实际上只是一种变换,尽管它们通常被视为骨架,因为骨骼通常是在层次结构中创作的,并且自然会像实际骨架一样。

“关节”可能仅仅意味着“骨骼”,或者在其他情况下可能实际上指的是两块骨骼是如何连接和铰接的......

由于骨骼是分层的,它们将具有“局部”变换,描述它们相对于父亲的变换。在运行时,变换通常会连接起来,使它们都在同一个空间中。

使用权重将顶点分配给骨骼。对于每个顶点,权重通常加起来为1。重量可以通过靠近骨骼自动分配,但通常由艺术家手动调整。通常使用艺术包中的工具将它们“涂抹”到3D模型上。

在运行时,顶点由受其影响的每个骨骼进行变换,最终顶点位置是这些不同变换的结果的加权平均值。如何计算加权平均值可能会有所不同,但这是一般方法。

然而,对于运行时应用程序,通常重要的是将影响顶点的不同骨骼的数量保持为最小,并且可能存在相对小的上限; 4,也许吧。因此,不是为每个顶点提供骨架中每个骨骼的权重,而是通常提供固定数量的关节索引,并具有相应的权重。

请注意,在蒙皮时,您通常不会对纹理坐标执行任何操作,但几乎肯定会重新计算法线和可能的切线向量。同样,如何做到这一点可能因实现而异。

相关问题