CN115690279A - 虚拟对象关节旋转角度的获取方法、装置、设备及介质 - Google Patents
虚拟对象关节旋转角度的获取方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115690279A CN115690279A CN202211424831.2A CN202211424831A CN115690279A CN 115690279 A CN115690279 A CN 115690279A CN 202211424831 A CN202211424831 A CN 202211424831A CN 115690279 A CN115690279 A CN 115690279A
- Authority
- CN
- China
- Prior art keywords
- joint
- position coordinates
- virtual object
- tail end
- rotation angle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请提供的一种虚拟对象关节旋转角度的获取方法、装置、设备及介质,应用于动作捕捉技术领域,所述方法包括:获取人类肢体上依次连接的基点关节、中间关节、末端关节的初始位置坐标,其中所述基点关节是所述人类肢体上与人类躯干连接的关节;根据所述初始位置坐标判断所述人类肢体是否趋于伸直;在确认所述人类肢体伸直时,将所述末端关节的初始位置坐标修正为目标位置坐标,所述目标位置坐标是所述末端关节的可活动位置范围内与所述基点关节和中间关节处于同一直线的位置坐标;将所述末端关节的目标位置坐标以及所述基点关节、所述中间关节的初始位置坐标,动作迁移到所述虚拟对象的关节上,得到所述虚拟对象关节的旋转角度。
Description
技术领域
本申请属于动作捕捉技术领域,特别是涉及一种虚拟对象关节旋转角度的获取方法、装置、设备及介质。
背景技术
运动学(Kinematics)是在给定所有关节角度的情况下计算连接结构(如一节人体的关节)的末端的空间位置的过程。这个过程比较简单,且是具有唯一解的。反向运动学(Inverse Kinematics,简称IK)则相反,它是在给定末端的空间位置的前提下,求解关节需要成多少角度,这个过程就较为困难。
相关技术中通常是通过利用对真人肢体关节进行采集来得到动作捕捉数据,然后利用反向运动学算法基于动作捕捉数据计算得到虚拟对象的各关节点坐标,从而实现动作捕捉数据到虚拟对象的动作迁移。
但是当肢体趋近于伸直状态时,由于虚拟对象的肢体的中间关节无法伸直后继续旋转,若末端关节的所在位置会带动中间关节旋转后继续伸直,此处动作迁移程序会将虚拟对象的肢体进行翻转来使得末端关节可以达到所需达到的位置,从而出现所生成的虚拟对象的肢体在趋近于伸直时发生翻转,使得虚拟对象的肢体基于肢体基点跳动,严重地影响了所生成虚拟对象图像的连续性。
发明内容
有鉴于此,本申请提供一种虚拟对象关节旋转角度的获取方法、装置、设备及介质,以解决相关技术中在动作迁移时,若肢体趋近于伸直状态,会出现所生成的虚拟对象的肢体发生旋转,使得虚拟对象的肢体基于肢体基点发生跳动,严重地影响了所生成虚拟对象图像的连续性的技术问题。
本申请提供一种虚拟对象关节旋转角度的获取方法,包括:
获取人类肢体上依次连接的基点关节、中间关节、末端关节的初始位置坐标,其中所述基点关节是所述人类肢体上与人类躯干连接的关节;
根据所述初始位置坐标判断所述人类肢体是否趋于伸直;
在确认所述人类肢体伸直时,将所述末端关节的初始位置坐标修正为目标位置坐标,所述目标位置坐标是所述末端关节的可活动位置范围内与所述基点关节和中间关节处于同一直线的位置坐标;
将所述末端关节的目标位置坐标以及所述基点关节、所述中间关节的初始位置坐标,动作迁移到所述虚拟对象的关节上,得到所述虚拟对象关节的旋转角度。
可选地,所述根据所述初始位置坐标判断所述人类肢体是否趋于伸直,包括:
根据所述初始位置坐标获取所述基点关节、所述中间关节、所述末端关节所构成三角形中,所述中间关节所在顶角的初始旋转角度;
根据所述初始旋转角度与预设伸直旋转角度之间的角度差距值,判断所述人类肢体是否趋于伸直。
可选地,所述根据所述初始旋转角度与预设伸直旋转角度之间的角度差距值,判断所述人类肢体是否趋于伸直,包括:
计算所述初始旋转角度与预设伸直旋转角度之间的绝对差作为角度差距值;
在所述角度差距值小于角度差距阈值时,确认所述人类肢体伸直。
可选地,所述将所述末端关节的目标位置坐标以及所述基点关节、所述中间关节的初始位置坐标,动作迁移到所述虚拟对象的关节上,得到所述虚拟对象关节的旋转角度,包括:
获取所述虚拟对象处于上一历史姿态时所述基点关节、所述中间关节、所述末端关节的历史位置坐标;
根据所述基点关节、所述中间关节、所述末端关节的历史位置坐标,以及所述目标位置坐标和所述基点关节、所述中间关节的初始位置坐标,分别计算所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵;
根据所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵获取所述虚拟对象从所述历史姿态运动到目标姿态的所述虚拟对象关节的旋转角度。
可选地,所述中间关节的旋转矩阵通过以下步骤得到:
根据所述中间关节和所述基点关节的历史位置坐标以及所述末端关节的目标位置坐标,计算得到所述中间关节的旋转矩阵。
可选地,所述基点关节的旋转矩阵通过以下步骤得到:
获取所述基点关节、所述中间关节、所述末端关节的历史位置坐标所构成的三角形的第一坐标系,并获取所述末端关节的目标位置坐标、所述基点关节、所述中间关节的初始位置坐标所构成三角的第二坐标系;
将所述第一坐标系向所述第二坐标系的变换矩阵,作为所述基点关节的旋转矩阵。
可选地,所述末端节点的旋转矩阵通过以下步骤得到:
根据所述基点关节、所述中间关节的初始位置坐标和所述末端关节的目标位置坐标,构建人类肢体处于目标位置时的目标位置旋转矩阵;
利用所述目标位置旋转矩阵除以所述中间关节和所述基点关节的旋转矩阵,得到所述末端节点的旋转矩阵。
本申请提供一种虚拟对象关节旋转角度的获取装置,包括:
获取模块,用于获取人类肢体上依次连接的基点关节、中间关节、末端关节的初始位置坐标,其中所述基点关节是所述人类肢体上与人类躯干连接的关节;
处理模块,用于根据所述初始位置坐标判断所述人类肢体是否趋于伸直;
在确认所述人类肢体伸直时,将所述末端关节的初始位置坐标修正为目标位置坐标,所述目标位置坐标是所述末端关节的可活动位置范围内与所述基点关节和中间关节处于同一直线的位置坐标;
生成模块,用于将所述末端关节的目标位置坐标以及所述基点关节、所述中间关节的初始位置坐标,动作迁移到所述虚拟对象的关节上,得到所述虚拟对象关节的旋转角度。
可选地,所述处理模块,还用于:
根据所述初始位置坐标获取所述基点关节、所述中间关节、所述末端关节所构成三角形中,所述中间关节所在顶角的初始旋转角度;
根据所述初始旋转角度与预设伸直旋转角度之间的角度差距值,判断所述人类肢体是否趋于伸直。
可选地,所述处理模块,还用于:
计算所述初始旋转角度与预设伸直旋转角度之间的绝对差作为角度差距值;
在所述角度差距值小于角度差距阈值时,确认所述人类肢体伸直。
可选地,所述生成模块,还用于:
获取所述虚拟对象处于上一历史姿态时所述基点关节、所述中间关节、所述末端关节的历史位置坐标;
根据所述基点关节、所述中间关节、所述末端关节的历史位置坐标,以及所述目标位置坐标和所述基点关节、所述中间关节的初始位置坐标,分别计算所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵;
根据所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵获取所述虚拟对象从所述历史姿态运动到目标姿态的所述虚拟对象关节的旋转角度。
可选地,所述生成模块,还用于:
根据所述中间关节和所述基点关节的历史位置坐标以及所述末端关节的目标位置坐标,计算得到所述中间关节的旋转矩阵。
可选地,所述生成模块,还用于:
获取所述基点关节、所述中间关节、所述末端关节的历史位置坐标所构成的三角形的第一坐标系,并获取所述末端关节的目标位置坐标、所述基点关节、所述中间关节的初始位置坐标所构成三角的第二坐标系;
将所述第一坐标系向所述第二坐标系的变换矩阵,作为所述基点关节的旋转矩阵。
可选地,所述生成模块,还用于:
根据所述基点关节、所述中间关节的初始位置坐标和所述末端关节的目标位置坐标,构建人类肢体处于目标位置时的目标位置旋转矩阵;
利用所述目标位置旋转矩阵除以所述中间关节和所述基点关节的旋转矩阵,得到所述末端节点的旋转矩阵。
本申请提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的虚拟对象关节旋转角度的获取方法。
本申请提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述的虚拟对象关节旋转角度的获取方法。
针对相关技术,本申请具备如下优点:
本申请提供的一种虚拟对象关节旋转角度的获取方法、装置、设备及介质,通过在获取到人类肢体上各关节的位置坐标后,基于各关节的位置坐标评估人类肢体的是否趋于伸直,从而在肢体趋于伸直时对末端关节的位置坐标进行修正后,再利用基点关节、中间关节和修正后末端关节的位置坐标生成虚拟对象的图像,从而避免人类肢体在趋近于伸直时所生成的虚拟对象的图像出现跳动翻转的情况出现,使得虚拟对象图像中肢体运动保持连续。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本申请实施例提供的一种虚拟对象关节旋转角度的获取方法的步骤流程图;
图2是本申请实施例提供的一种虚拟对象关节旋转角度的获取方法的原理示意图之一;
图3是本申请实施例提供的一种虚拟对象关节旋转角度的获取方法的原理示意图之二;
图4是本申请实施例提供的另一种虚拟对象关节旋转角度的获取方法的步骤流程图;
图5是本申请实施例提供的再一种虚拟对象关节旋转角度的获取方法的步骤流程图;
图6是本申请实施例提供的一种虚拟对象关节旋转角度的获取方法的原理示意图之三;
图7是本申请实施例提供的一种虚拟对象关节旋转角度的获取方法的原理示意图之四;
图8是本申请实施例提供的一种虚拟对象关节旋转角度的获取方法的原理示意图之五;
图9是本申请实施例提供的一种虚拟对象关节旋转角度的获取装置的结构框图;
图10是本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整地传达给本领域的技术人员。
图1是本申请实施例提供的一种虚拟对象关节旋转角度的获取方法的步骤流程图,包括:
步骤101,获取人类肢体上依次连接的基点关节、中间关节、末端关节的初始位置坐标,其中所述基点关节是所述人类肢体上与人类躯干连接的关节。
需要说明的是,参照图2,以其中人物的手臂为例,基点关节是该手臂与人类躯干连接的关节,也就是人类的肩部的关节,中间关节是手臂上的肘部的关节,末端关节则是手腕处的关节,当然此处仅是示例性描述,该人类肢体还可以是人类的腿部,此时基点关节是指腿部与躯干连接的关节,中间关节则是膝盖处的关节,末端关节则是脚腕处的关节。
在本申请实施例中,人类肢体上的各个关节的初始位置坐标是通过动作捕捉设备对正在运动的人类肢体的位置数据进行采集,以获得在人类在不同时间节点时各关节的初始位置坐标。其中,动作捕捉设备可以是在人类的关节部位设置的跟踪器,可以由动作捕捉系统捕捉跟踪器的位置,再经过计算机处理后得到三维空间的位置坐标,当然此处仅是示例性描述,具体可以根据实际需求设置,此处不做限定。
步骤102,根据所述初始位置坐标判断所述人类肢体是否趋于伸直。
在本申请实施例中,参照图3,其中S为基点关节、E为中间关节、W为末端关节,人类肢体的中间关节通常是具有1个自由度,也就是中间关节可在基点关节、中间关节、末端关节所在平面中进行旋转,并且由于人体关节的构造限制,中间关节的旋转角度通常无法超过180°。
因此,例如图3中W2为末端关节的初始位置,W2’为末端关节的目标位置,W1为人类肢体伸直时末端关节的伸直位置,S1为基点关节的初始位置,E2为中间关节的初始位置,E2’为中间关节的目标位置,E1为人类肢体伸直时中间关节的伸直位置。其中,W2和W2’也是无限接近W1的,理论上S1E2W2和S1E2’W2’的旋转角度应该是连续的,但是在这里计算出来的末端关节的旋转角度受限于人体构造中肢体无法伸直后继续旋转的限制,导致计算引擎可能会认定末端关节是从原本旋转方向的反方向进行旋转过来得到的,从而保证末端关节旋转不超过180度,这就会使得两种旋转方向计算得到的旋转角度相差180度,导致肢体会发生旋转,这显然是违背人类肢体正常运动的。故在目标位置接近完全伸直状态时候,为了避免这种违背自然规律的情况出现,本申请实施例在依据人体肢体上各关节的初始位置坐标来确定人类肢体的是否趋于伸直来评估是否会出现图像中虚拟对象的肢体出现翻转的情况。
步骤103,在确认所述人类肢体伸直时,将所述末端关节的初始位置坐标修正为目标位置坐标,所述目标位置坐标是所述末端关节的可活动位置范围内与所述基点关节和中间关节处于同一直线的位置坐标。
在本申请实施例中,为了避免在人类肢体趋于伸直时出现肢体翻转跳动的情况,在所确定人类肢体伸直时,参照图3,将目标位置W2调整到S1W1所在的直线上的目标位置坐标,从而避免在生成虚拟对象的连续图像帧时,发生末端关节的旋转角度跳动导致人类肢体出现对称翻转的情况。
步骤104,将所述末端关节的目标位置坐标以及所述基点关节、所述中间关节的初始位置坐标,动作迁移到所述虚拟对象的关节上,得到所述虚拟对象关节的旋转角度。
在本申请实施例中,在对末端关节的位置坐标进行修正后,在人类肢体的伸直程度趋近于完全伸直时,末端关节的位置坐标将始终处于目标坐标位置,从而可以避免由于中间关节的旋转角度过大使得所生成虚拟对象的肢体出现对称翻转的情况。动作迁移是一种将人类肢体的关键部位数据转移到虚拟对象上的技术,具体可以参照相关技术,动作迁移技术并不是本申请关注的重点,只要可以实现基于人类肢体的坐标位置生成虚拟对象的图像即可适用于本申请实施例,此处对其不加以限定。
本申请实施例通过在获取到人类肢体上各关节的位置坐标后,基于各关节的位置坐标评估人类肢体的是否趋于伸直,从而在肢体趋于伸直时对末端关节的位置坐标进行修正后,再利用基点关节、中间关节和修正后末端关节的位置坐标生成虚拟对象的图像,从而避免人类肢体在趋近于伸直时所生成的虚拟对象的图像出现跳动翻转的情况出现,使得虚拟对象图像中肢体运动保持连续。
可选地,参照图4,所述步骤102,包括:
步骤1021,根据所述初始位置坐标获取所述基点关节、所述中间关节、所述末端关节所构成三角形中,所述中间关节所在顶角的初始旋转角度。
步骤1022,根据所述初始旋转角度与预设伸直旋转角度之间的角度差距值,判断所述人类肢体是否趋于伸直。
在本申请实施例中,参照图3,其中S为基点关节,E为中间关节,W为末端关节,这三个关节点组成的三角形为△SEW,其中∠SEW的角度为初始旋转角度,预设伸直旋转角度是指人类肢体在伸直状态下该∠SEW的旋转角度,可通过实际测量得到,也可以是用户预先设置的。具体的,初始旋转角度和预设伸直旋转角度之间的角度差距值越小,人类肢体越趋于伸直,当然若差距为零,则表明人类肢体完全伸直。值得说明的是,衡量人类肢体是否趋于伸直的方式可以是依据角度差距值是否出入某一取值范围来确定,若处于该取值范围则确定趋于伸直,若不处于该取值范围则确定未趋于伸直。当然还可以依据角度差距值小于阈值来确定,若小于该阈值则确定趋于伸直,若大于或等于该阈值则确定未趋于伸直。当然此处仅是示例性说明,具体可以根据实际需求设置,此处不做限定。
本申请实施例依据人类肢体中间关节的初始旋转角度和伸直旋转角度之间的比对结果来衡量伸直程度,提高了判断人类肢体是否伸直的效率。
可选地,所述步骤1022,包括:
S1,计算所述初始旋转角度与预设伸直旋转角度之间的绝对差作为角度差距值;
S2,在所述角度差距值小于角度差距阈值时,确认所述人类肢体伸直。
在本申请实施例中,预设伸直旋转角度可以是180°、179°、175°等人类肢体趋近于伸直时中基点关节、中间关节、末端关节所构成的夹角的角度,可以是用于自行设置的,也可以是系统默认设置的。
此处以预设伸直旋转角度为180°为例,可设置中间关节的初始旋转角度为theta4,则可将初始旋转角度与预设伸直旋转角度的绝对差,即|theta4-180°|作为角度差距值。在|theta4-180°|<角度差距阈值时,则可确认人类肢体伸直,其中角度差距阈值可以是完全伸直角度的1%、2%等等,则角度差距阈值可以是180°*1%=1.8°,或者是180°*2%=3.6°,具体可以根据实际需求设置,此处不做限定。
本申请实施例依据初始旋转角度和预设伸直旋转角度之间的绝对差的数值大小来判断人类肢体是否伸直,使得人类肢体的伸直程度可以被量化分析,提高了判断人类肢体是否伸直的效率。
可选地,参照图5,所述步骤104,包括:
步骤1041,获取所述虚拟对象处于上一历史姿态时所述基点关节、所述中间关节、所述末端关节的历史位置坐标。
在本申请实施例中,历史姿态是指从人体采集在上一采集时间节点采集到的动作捕捉数据所对应的人体姿态,可以理解由于虚拟对象的运动过程是连续的,因此可以通过在连续的时间节点分别采集人体的动作捕捉数据,并迁移到虚拟对象上,使得虚拟对象在不同时间节点呈现连续的运动动作。系统内置有反向运动学控制器,这是一种计算虚拟对象旋转角度的程序,用于基于输入的人类肢体的动作捕捉数据,也就是肢体上各个关节的位置坐标来计算得到虚拟对象的旋转角度,然后若要生成图像还需采用动画软件,比如maya等。反向运动学是计算从T-pose到目标姿态,所以每次都是计算从T-pose到目标姿态的旋转角度,T-pose是一种三维模型骨骼中一种预设姿态,可以理解成基关节,中间关节和末端关节的旋转角度都为0。因此在绘制虚拟对象的图像帧时首先需获取虚拟对象处于上一历史姿态时各关节的历史位置坐标,该历史位置坐标是已知的,可通过查询历史绘制记录直接获取。
步骤1042,根据所述基点关节、所述中间关节、所述末端关节的历史位置坐标,以及所述目标位置坐标和所述基点关节、所述中间关节的初始位置坐标,分别计算所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵。
在本申请实施例中,可通过上述实施例获取虚拟对象活动到目标姿态时,基点关节、中间关节的初始位置坐标,而末端关节的坐标位置由于进行了修正,因此采用末端关节的目标位置坐标。通过依据虚拟对象的历史姿态和目标姿态的位置坐标即可计算得到在本次运动过程成各关节的相对应的旋转矩阵,以供后续生成虚拟对象图像使用。
步骤1043,根据所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵获取所述虚拟对象从所述历史姿态运动到目标姿态的所述虚拟对象关节的旋转角度。
在本申请实施例中,通过3D绘制动画程序依据计算所得到的各关节的旋转矩阵即可完成对于虚拟对象图像的生成过程,3D绘制动画程序具体可以参照相关技术,此处不再赘述。
可选地,所述中间关节的旋转矩阵通过以下步骤得到:根据所述中间关节和所述基点关节的历史位置坐标以及所述末端关节的目标位置坐标,计算得到所述中间关节的旋转矩阵。
在本申请实施例中,参照图6,其中S1是基点关节,E1是中间关节初始位置,E2是中间关节的目标位置,W1是末端关节的初始位置,W2是末端关节的目标位置。基点关节的旋转矩阵是T1,中间关节的旋转矩阵是Ty,末端关节的旋转矩阵是T2。
参照图7,假设中间关节的旋转角度Ty为∠theta4,且∠theta4=∠S1EgWg,此时S1和Eg分别是基点关节和中间关节的初始位置坐标,而Wg则为修正后的末端关节的目标位置坐标。在已知△S1EgWg的三条边,可以计算∠S1EgWg,从而计算出Ty旋转矩阵。由于中间关节的轨迹Eg将在一个圆中运动,因此可通过如下公式(1)计算得到中间关节的旋转矩阵:
本申请实施例通过依据修正后的末端关节的目标位置坐标和中间关节、基点关节的初始位置坐标计算得到中间关节的旋转矩阵,避免了由于末端关节的坐标位置不准确导致所得到中间关节的旋转矩阵使得虚拟对象的肢体出现翻转跳动的情况出现。
可选地,所述基点关节的旋转矩阵通过以下步骤得到:
A1、获取所述基点关节、所述中间关节、所述末端关节的历史位置坐标所构成的三角形的第一坐标系,并获取所述末端关节的目标位置坐标、所述基点关节、所述中间关节的初始位置坐标所构成三角的第二坐标系;
A2、基于所述第一坐标系和所述第二坐标系的变换矩阵,作为所述基点关节的旋转矩阵。
在本申请实施例中,参照图8,其中S1表示基点关节的位置坐标,E1表示中间关节的初始位置坐标,W1表示末端关节的初始位置坐标,Eg表示中间关节的目标位置坐标,Wg表示末端关节的目标位置坐标,W1’为W1到S1和E1所在直线的垂点。在已知∠theta4和△S1EgWg的基础上,可通过坐标系的旋转算法计算出△S1E1W1到△S1EgWg的旋转矩阵,从而可以计算出旋转矩阵T1。
具体的,首先建立以基点关节的初始位置S1为原点,以S1E1为x轴,W1’W1为y轴的右手坐标系,假设e=S1E1,w=E1W1,则△S1E1W1的坐标系C1的三个轴上的向量如下公式(2):
同理可以计算得到△S1EgWg坐标系C2;
则基点关节的旋转矩阵可通过如下公式(3)计算得到:
本申请实施例通过依据修正后的末端关节的目标位置坐标参与计算得到基点关节的旋转矩阵,避免了由于末端关节的坐标位置不准确导致所得到中间关节的旋转矩阵使得虚拟对象的肢体出现翻转跳动的情况出现。
可选地,所述末端节点的旋转矩阵通过以下步骤得到:
B1、根据所述基点关节、所述中间关节的初始位置坐标和所述末端关节的目标位置坐标,构建人类肢体处于目标位置时的目标位置旋转矩阵;
B2、利用所述目标位置旋转矩阵除以所述中间关节和所述基点关节的旋转矩阵,得到所述末端节点的旋转矩阵。
在本申请实施例中,在上述已经计算得到中间关节的旋转矩阵Ty,基点关节的旋转矩阵T1的基础上,,A表示S1E1向量的旋转矩阵,B表示E1W1向量的旋转矩阵,G是给定的目标位置的旋转矩阵,通过下述公式(4)即可计算得到末端关节的旋转矩阵T2:
T1*A*Ty*B*T2=G (4)
本申请实施例通过依据修正后的末端关节的目标位置坐标参与计算得到末端关节的旋转矩阵,避免了由于末端关节的坐标位置不准确导致所得到中间关节的旋转矩阵使得虚拟对象的肢体出现翻转跳动的情况出现。
图9是本申请实施例提供的一种虚拟对象关节旋转角度的获取装置20的结构框图,包括:
获取模块201,用于获取人类肢体上依次连接的基点关节、中间关节、末端关节的初始位置坐标,其中所述基点关节是所述人类肢体上与人类躯干连接的关节;
处理模块202,用于根据所述初始位置坐标判断所述人类肢体是否趋于伸直;
在确认所述人类肢体伸直时,将所述末端关节的初始位置坐标修正为目标位置坐标,所述目标位置坐标是所述末端关节的可活动位置范围内与所述基点关节和中间关节处于同一直线的位置坐标;
生成模块203,用于将所述末端关节的目标位置坐标以及所述基点关节、所述中间关节的初始位置坐标,动作迁移到所述虚拟对象的关节上,得到所述虚拟对象关节的旋转角度。
可选地,所述处理模块202,还用于:
根据所述初始位置坐标获取所述基点关节、所述中间关节、所述末端关节所构成三角形中,所述中间关节所在顶角的初始旋转角度;
根据所述初始旋转角度与预设伸直旋转角度之间的角度差距值,判断所述人类肢体是否趋于伸直。
可选地,所述处理模块202,还用于:
计算所述初始旋转角度与预设伸直旋转角度之间的绝对差作为角度差距值;
在所述角度差距值小于角度差距阈值时,确认所述人类肢体伸直。
可选地,所述生成模块203,还用于:
获取所述虚拟对象处于上一历史姿态时所述基点关节、所述中间关节、所述末端关节的历史位置坐标;
根据所述基点关节、所述中间关节、所述末端关节的历史位置坐标,以及所述目标位置坐标和所述基点关节、所述中间关节的初始位置坐标,分别计算所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵;
根据所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵获取所述虚拟对象从所述历史姿态运动到目标姿态的所述虚拟对象关节的旋转角度。
可选地,所述生成模块203,还用于:
根据所述中间关节和所述基点关节的历史位置坐标以及所述末端关节的目标位置坐标,计算得到所述中间关节的旋转矩阵。
可选地,所述生成模块203,还用于:
获取所述基点关节、所述中间关节、所述末端关节的历史位置坐标所构成的三角形的第一坐标系,并获取所述末端关节的目标位置坐标、所述基点关节、所述中间关节的初始位置坐标所构成三角的第二坐标系;
将所述第一坐标系向所述第二坐标系的变换矩阵,作为所述基点关节的旋转矩阵。
可选地,所述生成模块203,还用于:
根据所述基点关节、所述中间关节的初始位置坐标和所述末端关节的目标位置坐标,构建人类肢体处于目标位置时的目标位置旋转矩阵;
利用所述目标位置旋转矩阵除以所述中间关节和所述基点关节的旋转矩阵,得到所述末端节点的旋转矩阵。
本申请实施例通过在获取到人类肢体上各关节的位置坐标后,基于各关节的位置坐标评估人类肢体的是否趋于伸直,从而在肢体趋于伸直时对末端关节的位置坐标进行修正后,再利用基点关节、中间关节和修正后末端关节的位置坐标生成虚拟对象的图像,从而避免人类肢体在趋近于伸直时所生成的虚拟对象的图像出现跳动翻转的情况出现,使得虚拟对象图像中肢体运动保持连续。
对于上述服务器的实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,如图10所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信,
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,实现上述任一虚拟对象关节旋转角度的获取方法的步骤。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(RandomAccess Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable GateArray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的虚拟对象关节旋转角度的获取方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的虚拟对象关节旋转角度的获取方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (10)
1.一种虚拟对象关节旋转角度的获取方法,其特征在于,包括:
获取人类肢体上依次连接的基点关节、中间关节、末端关节的初始位置坐标,其中所述基点关节是所述人类肢体上与人类躯干连接的关节;
根据所述初始位置坐标判断所述人类肢体是否趋于伸直;
在确认所述人类肢体伸直时,将所述末端关节的初始位置坐标修正为目标位置坐标,所述目标位置坐标是所述末端关节的可活动位置范围内与所述基点关节和中间关节处于同一直线的位置坐标;
将所述末端关节的目标位置坐标以及所述基点关节、所述中间关节的初始位置坐标,动作迁移到所述虚拟对象的关节上,得到所述虚拟对象关节的旋转角度。
2.根据权利要求1所述的方法,其特征在于,所述根据所述初始位置坐标判断所述人类肢体是否趋于伸直,包括:
根据所述初始位置坐标获取所述基点关节、所述中间关节、所述末端关节所构成三角形中,所述中间关节所在顶角的初始旋转角度;
根据所述初始旋转角度与预设伸直旋转角度之间的角度差距值,判断所述人类肢体是否趋于伸直。
3.根据权利要求2所述的方法,其特征在于,所述根据所述初始旋转角度与预设伸直旋转角度之间的角度差距值,判断所述人类肢体是否趋于伸直,包括:
计算所述初始旋转角度与预设伸直旋转角度之间的绝对差作为角度差距值;
在所述角度差距值小于角度差距阈值时,确认所述人类肢体伸直。
4.根据权利要求1所述的方法,其特征在于,所述将所述末端关节的目标位置坐标以及所述基点关节、所述中间关节的初始位置坐标,动作迁移到所述虚拟对象的关节上,得到所述虚拟对象关节的旋转角度,包括:
获取所述虚拟对象处于上一历史姿态时所述基点关节、所述中间关节、所述末端关节的历史位置坐标;
根据所述基点关节、所述中间关节、所述末端关节的历史位置坐标,以及所述目标位置坐标和所述基点关节、所述中间关节的初始位置坐标,分别计算所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵;
根据所述基点关节、所述中间关节、所述末端关节分别相对应的旋转矩阵获取所述虚拟对象从所述历史姿态运动到目标姿态的所述虚拟对象关节的旋转角度。
5.根据权利要求4所述的方法,其特征在于,所述中间关节的旋转矩阵通过以下步骤得到:
根据所述中间关节和所述基点关节的历史位置坐标以及所述末端关节的目标位置坐标,计算得到所述中间关节的旋转矩阵。
6.根据权利要求5所述的方法,其特征在于,所述基点关节的旋转矩阵通过以下步骤得到:
获取所述基点关节、所述中间关节、所述末端关节的历史位置坐标所构成的三角形的第一坐标系,并获取所述末端关节的目标位置坐标、所述基点关节、所述中间关节的初始位置坐标所构成三角的第二坐标系;
将所述第一坐标系向所述第二坐标系的变换矩阵,作为所述基点关节的旋转矩阵。
7.根据权利要求6所述的方法,其特征在于,所述末端节点的旋转矩阵通过以下步骤得到:
根据所述基点关节、所述中间关节的初始位置坐标和所述末端关节的目标位置坐标,构建人类肢体处于目标位置时的目标位置旋转矩阵;
利用所述目标位置旋转矩阵除以所述中间关节和所述基点关节的旋转矩阵,得到所述末端节点的旋转矩阵。
8.一种虚拟对象关节旋转角度的获取装置,其特征在于,包括:
获取模块,用于获取人类肢体上依次连接的基点关节、中间关节、末端关节的初始位置坐标,其中所述基点关节是所述人类肢体上与人类躯干连接的关节;
处理模块,用于根据所述初始位置坐标判断所述人类肢体是否趋于伸直;
在确认所述人类肢体伸直时,将所述末端关节的初始位置坐标修正为目标位置坐标,所述目标位置坐标是所述末端关节的可活动位置范围内与所述基点关节和中间关节处于同一直线的位置坐标;
生成模块,用于将所述末端关节的目标位置坐标以及所述基点关节、所述中间关节的初始位置坐标,动作迁移到所述虚拟对象的关节上,得到所述虚拟对象关节的旋转角度。
9.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7中任一所述的虚拟对象关节旋转角度的获取方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现权利要求1至7中任一所述的虚拟对象关节旋转角度的获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211424831.2A CN115690279A (zh) | 2022-11-14 | 2022-11-14 | 虚拟对象关节旋转角度的获取方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211424831.2A CN115690279A (zh) | 2022-11-14 | 2022-11-14 | 虚拟对象关节旋转角度的获取方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115690279A true CN115690279A (zh) | 2023-02-03 |
Family
ID=85052293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211424831.2A Pending CN115690279A (zh) | 2022-11-14 | 2022-11-14 | 虚拟对象关节旋转角度的获取方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115690279A (zh) |
-
2022
- 2022-11-14 CN CN202211424831.2A patent/CN115690279A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021169839A1 (zh) | 一种基于骨骼关键点的动作还原方法以及装置 | |
CN109676606B (zh) | 一种计算机械臂臂角范围的方法、机械臂及机器人 | |
CN109719725B (zh) | 一种机械臂运动规划的方法、机械臂及机器人 | |
CN113119098B (zh) | 机械臂控制方法、机械臂控制装置及终端设备 | |
CN110989585B (zh) | 避奇异的步态规划方法、装置、可读存储介质及机器人 | |
CN113119104B (zh) | 机械臂控制方法、机械臂控制装置、计算设备及系统 | |
CN108693958B (zh) | 一种手势识别方法、装置及系统 | |
CN114800534B (zh) | 一种机械臂控制方法及装置 | |
CN112720479B (zh) | 一种机器人姿态控制方法、装置及机器人 | |
CN111113429B (zh) | 一种动作模仿方法、动作模仿装置及终端设备 | |
CN111113428B (zh) | 机器人控制方法、机器人控制装置及终端设备 | |
Zeng et al. | PE-DLS: A novel method for performing real-time full-body motion reconstruction in VR based on Vive trackers | |
CN113084791B (zh) | 机械臂控制方法、机械臂控制装置及终端设备 | |
CN113070877B (zh) | 一种面向七轴机械臂视觉示教的可变姿态映射方法 | |
CN115690279A (zh) | 虚拟对象关节旋转角度的获取方法、装置、设备及介质 | |
CN113001537B (zh) | 机械臂控制方法、机械臂控制装置及终端设备 | |
US20210200224A1 (en) | Method for controlling a robot and its end-portions and device thereof | |
CN112712030A (zh) | 三维姿态信息还原方法及装置 | |
CN113246124A (zh) | 机器人控制方法、装置、计算机可读存储介质及机器人 | |
CN113204892A (zh) | 质心轨迹生成方法、装置、计算机可读存储介质及机器人 | |
CN114290331B (zh) | 机器人运动控制方法、机器人及计算机可读存储装置 | |
CN112562071A (zh) | 一种动作差异度计算方法、装置、设备及存储介质 | |
CN117464667B (zh) | 七轴机械臂的运动规划方法、装置及机械臂 | |
CN112652042A (zh) | 一种人体模型穿模检测方法、装置、电子设备及存储介质 | |
CN114821009A (zh) | 一种虚拟人物穿模调整方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |