编写动画库(IK和FK)的必要知识是什么?[关闭]


9

我找不到任何好的动画库,发现的库确实很老而且已经停产,但是我注意到这些库相对较小,因此我正在考虑自己编写一个库:我应该从哪里开始?有哪些基本知识?有关于这本书吗?

高度赞赏有关动画的良好文件格式的一些其他说明。

我正在使用C ++。

Answers:



7

通常,正向运动学只是逆向运动学的前提。

对于正向运动学,您必须具有一些变换链的知识(例如,场景图的含义)。例如,Denavit-Hartenberg公约是一个很好的起点。对于逆运动学,研究 循环坐标下降(CCD),Jacobian逆,Jacobian换位和伪逆解。这些概念和算法为您提供了有关该领域的数学以及部分物理知识的详尽概述。如果您还想了解魔术背后发生的事情,则库,编程语言或文件格式从来都不是关键要素。

如果您需要快速解决方案或正在处理的某些应用程序的组件,则请查看此处其他答案中提供的一些库。如果您喜欢机器人技术,那么OpenRAVE就是一个值得一提的怪兽。此外,还有一个Matlab机器人工具箱(前提是您要从事这种工程方面的工作)。

所有这些概念都会在您最喜欢的搜索引擎上产生大量相关结果,因此对于未发布太多指向精美材料的链接感到抱歉。


1

原始文章:关于逆运动学,我需要了解什么?

您可能听说过反向运动学。IK是Unity和计算机图形学中的一种流行工具,但是如果这是您首次尝试创建或使用Inverse Kinematics系统,则可能需要更多详细信息。我将解释IK是什么,定义词汇表,并复习用法。理解IK所需的词汇是什么?

在进入IK的核心之前,我们需要定义一些与IK相关的词汇。IK是一种应用于关节体的方法。什么是关节体?

铰接式车身

铰接的物体可以代表大多数动画物体,例如具有骨骼的人和动物。简而言之,一个铰接的身体是一棵链环相连的树。链接的链条由关节和链节组成,其中链节是刚性圆柱体。

在此处输入图片说明

关节类型

至于关节,有两种类型。第一种关节是旋转关节。它连接到围绕它旋转的链接。

旋转关节很像时钟的中心销-以钟针为链接。

在此处输入图片说明

棱柱形接头是这样的接头,使得连接的连杆从接头平移以延伸/缩短连杆。

在此处输入图片说明

棱柱形接头的作用类似于延长/缩回行李箱上可伸缩手柄的长度。如果仔细观察,可伸缩的行李箱手柄有4个棱柱形接头。行李箱顶部向下有2个棱柱形接头,行李箱顶部一直有2个棱柱形接头。

如果您对棱柱关节感到困惑,请放心。在反向运动学中,它们并不经常使用,并且您可能会说,没有人有棱角关节,只有旋转关节。

层次结构

关节体具有根关节。根关节是结构的基础。类人动物的根关节通常位于臀部的中心。关节体由关节和链接的树开始,从根关节开始。新的关节和链接类似于树上的新分支。内侧链节/关节是在关节体的树层次结构中更靠近根关节的链节/关节,因为它与给定的关节/链节有关。外侧链接/关节是在关节体的树层次结构中距根关节较远的链接/关节。

末端执行器

末端执行器是最外侧连杆的最外侧位置。它是交替的关节和链接链的自由端。末端执行器不是关节。末端执行器仅是关节体末端的位置。铰接的主体可以具有多个末端执行器,就像二叉树可以具有多个叶子一样。

在此处输入图片说明

此处的末端执行器以绿色圆圈表示。

发音和姿势

铰接是关节的旋转/平移,该关节使连接的连杆运动。另一方面,姿势是一组关节关节,其导致对关节体的定位。换句话说,姿势是的矢量值,而不是标量值。

什么是正向运动学?

在了解什么是反向运动学之前,我们需要弄清楚什么是正向运动学。正向运动学功能/算法以姿势作为输入,并计算末端执行器的位置作为输出。正向运动学是逆运动学的逆函数。使用正向运动学,您需要定义关节身体的整个姿势,以便通过姿势输入提供功能/算法。这意味着您需要定义关节体内每个关节的关节。如果关节数量少,这可能很好,但是关节数量很多,这往往很乏味。

什么是逆运动学?

现在,想象一下您是否希望关节的末端执行器达到特定的目标位置。这意味着您知道要定位的末端执行器位置,但您不知道末端执行器达到该目标位置所需的关节体姿势。这就是逆运动学的闪光点!

在此处输入图片说明

逆运动学是正向运动学的逆函数/算法。正向运动学功能/算法将目标位置作为输入,并计算末端执行器达到目标位置所需的姿势-该姿势即为输出。

如您所见,输入和输出在FK和IK之间切换。使用Inverse Kinematics,您无需定义关节的整个姿势-这可以通过IK算法为您计算出来。使用IK,您只需要定义一个位置作为输入。

逆运动学负责计算姿势是所有具有挑战性的计算工作。在以前的状态中,有一个具有某些已知姿势的关节体。它定义了末端执行器尝试达到的目标位置。一旦将IK算法应用于关节体,我们便到达了After状态。After状态显示已经计算出一个新的姿势,这样末端执行器现在位于目标位置。

IK的用途是什么?

至此,我们知道将IK应用于铰接体,知道铰接体由什么构成,并且知道IK和FK之间的区别。到目前为止,我们对IK有了一个很好的概述,但让我们也以IK的一些好用例作一总结。如我们所见,IK可以用于人形手臂到达物体/目标。IK也可以用于脚踩,这样我们就可以告诉脚踩脚的位置,而IK可以弄清楚如何配置腿部关节。IK通常不用作动画本身(到达对象),而是用作动画工具。因此,如果要实施步行周期,则可以使用IK工具定位一些关键帧。

在此处输入图片说明

关于IK的另一个关键点是您的目标/目标不仅限于位置-您的目标可以定义为轮换。例如,如果您的脚需要根据不平坦的地形旋转,则可以基于地板的法线定义IK旋转目标。这样一来,您的脚就会沿着地板倾斜,例如当您向上倾斜时。请注意,您还可以使用IK使您的头部(甚至眼睛)朝某个方向看。如果希望头部跟随对象,则可以使用IK使头部跟随对象。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.