Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Animation OpenGL中骨骼动画背后的逻辑_Animation - Fatal编程技术网

Animation OpenGL中骨骼动画背后的逻辑

Animation OpenGL中骨骼动画背后的逻辑,animation,Animation,骨重量、骨影响、关节、偏移和局部矩阵用于什么?互联网上没有哪篇文章能很好地解释这一逻辑。我仍然不知道是否每个骨骼都有一个不同的模型,稍后再与其他模型组合。或者如何处理这些矩阵,如何设置骨骼,组合和蒙皮它们。。。如果您能在opengl中分享关于骨骼动画的任何文章或知识,我将非常高兴 这些术语中的一些在不同的实现中会有所不同。与其尝试提供具体的定义,我更愿意对蒙皮的工作原理给出一个非常粗略的概述,因为我认为这就是您要问的 此外,这不是特别特定于德国劳埃德船级社的 其主要思想是获取多边形模型并将其附着

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

这些术语中的一些在不同的实现中会有所不同。与其尝试提供具体的定义,我更愿意对蒙皮的工作原理给出一个非常粗略的概述,因为我认为这就是您要问的

此外,这不是特别特定于德国劳埃德船级社的

其主要思想是获取多边形模型并将其附着到骨架。模型中的每个顶点都指定给一个或多个骨骼。在此上下文中,骨骼实际上只是一个变换,尽管它们通常被视为骨架,因为骨骼通常是在层次结构中编写的,自然会类似于实际骨架

“关节”可能只是指“骨头”,或者在其他上下文中,实际上可能指两块骨头是如何连接和铰接的

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

将顶点指定给骨骼是使用权重完成的。每个顶点的权重加起来通常为1。权重可以通过接近骨骼自动指定,但通常由艺术家手动调整。通常,它们是使用艺术包中的工具“绘制”到3D模型上的

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

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


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

感谢您的回答,很抱歉我的答复太晚。我有一个关于这些局部和绝对变换矩阵的问题,它们是否与我们在opengl中自定义生成的相同,就像在这个链接中:(opengl变换矩阵)?