基于虚拟引擎的手臂运动模拟还原方法、存储介质与流程

文档序号:17259471发布日期:2019-03-30 09:33阅读:522来源:国知局
基于虚拟引擎的手臂运动模拟还原方法、存储介质与流程

本发明涉及vr游戏技术领域,具体说的是一种基于虚拟引擎的手臂运动模拟还原方法、存储介质。



背景技术:

vr游戏中,我们使用vr头盔和vr手柄作为数据传入\传出的设备。正常情况下一套vr设备包括了一对基站,一个头盔和两只手柄。在游戏中,我们要让游戏角色的手臂动画实时的模拟玩家真实的手臂运动,只能通过两只手柄的位置和旋转值来大致模拟还原,由于所能获取的数据严重不足,无法直接获取到玩家的肩膀和手肘的位置,也就无法还原玩家的手臂动作。

对于数据不足问题常见的解决方案是增加数据游戏设备,如:再加入四只游戏手柄分别绑在玩家手肘和肩膀的位置。这样一来不但增加了设备成本,还造成玩家穿戴设备麻烦,活动不方便,严重影响玩家的游戏体验。

fullbodyikplugin(全身反向骨骼插件)是将全身骨骼链配置为明确的骨骼之间的关系,在使用ik的时候加一个执行器组件,指明控制的是哪根骨骼,比如手腕这个骨骼,然后再添加一个pole(复分析)组件作为这个执行器的子组件,通过调整这个复分析组件的位置坐标至一个比较合适的位置,实现动作还原。这样的做法在完成一些既定的动画时,比如一些ai的行为动画,表现上完全没有问题的。然而在我们的vr游戏中,玩家持手柄随意挥动,不同的玩家身高和手臂长度都不一样,我们无法预估这个合适的位置。

另外,使用现有技术中的3dmax或者maya等软件的动画系统ik解算器是可以很完美的制作出一些动画,然而还是无法满足我们实时模拟玩家动作的要求。我们无法仅仅通过两只手柄的位置来判断玩家当前的动作,就无法让角色播放相对应的动作资源;再者,就算我们可以判断并播放正确的动作,不同的玩家性格、习惯不一样,那么需要的动画师制作出相应的动作工作量非常巨大,资源量也会非常巨大,程序在调用动画时候的算法消耗也会是非常巨大。所以即使3dmax或者maya等软件的ik解算器可以做出多么完美的动作资源在vr游戏中还是不适用。



技术实现要素:

本发明所要解决的技术问题是:提供一种基于虚拟引擎的手臂运动模拟还原方法、存储介质,能基于现有的vr设备实现实时、真实地模拟玩家动作。

为了解决上述技术问题,本发明采用的技术方案为:

基于虚拟引擎的手臂运动模拟还原方法,包括:

获取用户手持vr手柄,在重心不动、手臂伸直状态下完成四个指定动作后得到的四个的腕关节的位置坐标;

依据所述四个的腕关节的位置坐标计算获取肩关节的位置坐标;

依据所述四个的腕关节的位置坐标以及所述肩关节的位置坐标,计算得到手臂长度;

依据所述手臂长度,以预设比例获取上下手臂长度;

依据所述肩关节的位置坐标、手臂长度以及上下手臂长度,计算得到腕关节与肘关节的位置关系。

本发明提供的另一个技术方案为:

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:

获取用户手持vr手柄,在重心不动、手臂伸直状态下完成四个指定动作后得到的四个的腕关节的位置坐标;

依据所述四个的腕关节的位置坐标计算获取肩关节的位置坐标;

依据所述四个的腕关节的位置坐标以及所述肩关节的位置坐标,计算得到手臂长度;

依据所述手臂长度,以预设比例获取上下手臂长度;

依据所述肩关节的位置坐标、手臂长度以及上下手臂长度,计算得到腕关节与肘关节的位置关系。

本发明的有益效果在于:区别于现有技术的手臂运动模拟还原方法成本高、体验差,以及无法做到即时同步还原的不足,本发明通过依次计算获取准确的肩关节位置、手臂长度以及上下手臂长度,进而计算得到腕关节与肘关节的位置关系,获取由腕关节、肘关节以及肩关节组成的关节链条。本发明能仅依赖现有vr设备,实现用户在vr游戏体验过程中依据实时获取的手柄位置,即时、接近完美的在vr场景中模拟还原出手臂运动,具有成本低、用户体验佳、算法消耗低、3d效果接近完美等优点。

附图说明

图1为本发明基于虚拟引擎的手臂运动模拟还原方法的流程示意图;

图2为本发明实施例一的虚拟引擎的手臂运动模拟还原方法的流程示意图;

图3为本发明实施例一中四个指定动作的示意图;

图4为本发明实施例一中求取肩关节位置的原理示意图;

图5为本发明实施例一中关节链条的示意图;

图6为本发明实施例一中请求肘关节与腕关节的位置关系的原理示意图;

图7为本发明实施例一中舍弃两个圆其中一相交点的原理示意图;

图8为本发明实施例一的效果比较中采用现有技术实现的手臂运动效果示意图;

图9为采用实施例一的方法实现的的手臂运动效果示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:依据vr手柄的位置,计算得到腕关节与肘关节的位置关系,获取由腕关节,肘关节,肩关节组成的骨骼链条,从而推算出骨骼运动。

请参照图1,本发明提供基于虚拟引擎的手臂运动模拟还原方法,包括:

获取用户手持vr手柄,在重心不动、手臂伸直状态下完成四个指定动作后得到的四个的腕关节的位置坐标;

依据所述四个的腕关节的位置坐标计算获取肩关节的位置坐标;

依据所述四个的腕关节的位置坐标以及所述肩关节的位置坐标,计算得到手臂长度;

依据所述手臂长度,以预设比例获取上下手臂长度;

依据所述肩关节的位置坐标、手臂长度以及上下手臂长度,计算得到腕关节与肘关节的位置关系。

从上述描述可知,本发明的有益效果在于:本发明只需利用现有的vr设备的游戏手柄获取手柄位置坐标,便可计算得到腕关节与肘关节的位置关系,不用增加游戏设备,也不会给用户带来穿戴麻烦,影响游戏体验,具有成本低、体验好的优点;同时,在计算得到腕关节与肘关节的位置关系后,便能依据实时获取的腕关节的坐标位置,得到由腕关节,肘关节,肩关节组成的骨骼链条,不需要投入巨大工作量和资源量,从而实现即时、真实的还原模拟出玩家的手臂运动,具有高效、算法消耗低、真实性高、即时的优点。

进一步的,还包括:

获取用户当前腕关节的位置坐标,依据所述位置关系计算得到对应的肘关节的三维坐标。

由上述描述可知,能依据实时获取的腕关节位置,高效率地获取对应的肘关节的位置,即时性高。

进一步的,还包括:

将实时获取的用户的腕关节的位置坐标和肘关节的三维坐标使用逆运动解析器模拟获取用户手臂运动。

由上述描述可知,能够直接利用现有的虚幻引擎逆运动解析器依据由腕关节,肘关节,肩关节组成的骨骼链条,结合游戏手柄的位置运动,推算出骨骼的运动,实现即时、真实、高效的模拟还原得到vr场景中玩家的手臂运动,提高用户体验。

进一步的,所述依据所述四个的腕关节的位置坐标计算获取肩关节的位置坐标,具体为:

依据三维空间中不共面的所述四个的腕关节的位置坐标,计算求取位于球心的肩关节的位置坐标。

由上述描述可知,能直接依据vr手柄获取的腕关节的位置坐标,利用三维空间中点、线的关系特性,快速计算得到肩关节的位置,且数据准确度高。

进一步的,所述依据所述肩关节的位置坐标、手臂长度以及上下手臂长度,计算得到腕关节与肘关节的位置关系,具体为:

以所述肩关节的位置坐标为原点,手臂伸直状态下肩关节到腕关节的水平方向为x轴,vr手柄的朝向为y轴构建直角坐标系;

分别以原点为圆心,上手臂长度为半径画圆,以腕关节的位置为圆心,下手臂长度为半径画圆,得到位于x轴下方的两个圆的相交点;

依据勾股定理计算得到所述相交点的坐标方程。

由上述描述可知,利用腕关节、肘关节和肩关节在不共线的情况下可以确定一个平面,以及已知的肩关节的位置坐标、手臂长度以及上下手臂长度,将求取肘关节位置的问题转化为在平面上三角形已知两个顶点坐标,和三边长度求第三个点坐标的问题,计算得到腕关节与肘关节的位置关系,从而简单、快速的计算得到所需的位置关系。

本发明提供的另一个技术方案为:

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:

获取用户手持vr手柄,在重心不动、手臂伸直状态下完成四个指定动作后得到的四个的腕关节的位置坐标;

依据所述四个的腕关节的位置坐标计算获取肩关节的位置坐标;

依据所述四个的腕关节的位置坐标以及所述肩关节的位置坐标,计算得到手臂长度;

依据所述手臂长度,以预设比例获取上下手臂长度;

依据所述肩关节的位置坐标、手臂长度以及上下手臂长度,计算得到腕关节与肘关节的位置关系。

进一步的,该程序被处理器执行时还实现以下步骤:

获取用户当前腕关节的位置坐标,依据所述位置关系计算得到对应的肘关节的三维坐标。

进一步的,该程序被处理器执行时还实现以下步骤:

将实时获取的用户的腕关节的位置坐标和肘关节的三维坐标使用逆运动解析器模拟获取用户手臂运动。

进一步的,所述依据所述四个的腕关节的位置坐标计算获取肩关节的位置坐标步骤,具体为:

依据三维空间中不共面的所述四个的腕关节的位置坐标,计算求取位于球心的肩关节的位置坐标。

进一步的,所述依据所述肩关节的位置坐标、手臂长度以及上下手臂长度,计算得到腕关节与肘关节的位置关系步骤,具体为:

以所述肩关节的位置坐标为原点,手臂伸直状态下肩关节到腕关节的水平方向为x轴,vr手柄的朝向为y轴构建直角坐标系;

分别以原点为圆心,上手臂长度为半径画圆,以腕关节的位置为圆心,下手臂长度为半径画圆,得到位于x轴下方的两个圆的相交点;

依据勾股定理计算得到所述相交点的坐标方程。

实施例一

请参照图2至图9,本实施例提供一种基于虚拟引擎的手臂运动模拟还原方法,适用于vr虚拟技术,能基于用户手持的vr手柄以及虚拟引擎,在保证即时性以及真实性的前提下,兼具低成本、低运算量、低占用资源、最佳体验效果的优点。

如图2所示,本实施例的方法包括:

s1:获取肩关节的位置坐标。

具体可以以下子步骤:

s01:让手持vr手柄的用户在保持重心不移动,手臂伸直的情况下,完成四个的指定动作,得到对应的四个的vr手柄的位置坐标。四个指定动作分别对应的四个vr手柄的位置不同,即保证四个位置点不共面。优选的,如图3所示,四个指定动作分别为:与肩同高的位于身体两侧、位于身体前方,以及贴合置于身体两侧、垂直地面向上。

s02:依据所述四个的腕关节的位置坐标计算获取肩关节的位置坐标。

由于个体之间手握vr手柄的位置与腕关节的距离差异不大,因此容易推算得到腕关节的位置坐标。同时,由于在s01过程中用户重心不变,且手臂长度固定,因此,可以认为得到的四个腕关节的位置坐标到肩关节的距离相等。

如图4所示,利用三维空间中不共面的四个点的坐标能求出球心坐标的原理(如图4中的a、b、c和d点),即可求取该用户肩关节的位置。具体根据得到的四个腕关节的位置坐标列出四个三元二次方程组,化简整理成一个线性非其次方程组,最后利用行列式表达式表示,并运用克拉默法则求出球心的位置,得到用户肩关节的位置坐标。

s2:获取手臂长度、上下手臂长度。

具体的,首先,依据四个的腕关节的位置坐标和所述肩关节的位置坐标,计算得到手臂长度。可以根据四个的腕关节的位置坐标和肩关节的位置坐标相减求得平均值,即为手臂长度;也可以先求取腕关节的平均值位置坐标,然后直接相减。然后,依据求取的手臂长度,以预设比例获取上下手臂长度,即肩关节到肘关节的距离长度和肘关节到腕关节的距离长度。优选以4:6的黄金比例来取上下手臂的长度。

s3:获取肘关节与腕关节的位置关系。

如图5所示,为腕关节、肘关节以及肩关节组成的关节链条,可知只要腕关节到肩膀的位置改变,肘关节的位置就必然发生改变,且由腕关节、肘关节以及,肩关节在不共线的情况下可以确定一个平面。那么在已知上下手臂的长度、腕关节的位置坐标以及肩关节的位置坐标的情况下,且腕关节到肩关节的距离也是可求的,在此便可以把找肘关节的位置转化成求平面上的三角形,已知两个顶点坐标,和三边长度求第三个点坐标的问题。

具体的,请参阅图6,首先,设上手臂长度为a,下手臂长度为b,肩关节到腕关节的距离长度为c,即上述的手臂长度为c;以肩关节的位置为坐标原点o,肩关节和腕关节(r点)所在水平方向为x轴,虎口朝向为y轴正方向(即手握手柄的朝向)构建直角坐标系。以原点为圆心,a为半径画圆;以r为圆心,b为半径画圆,两圆交于两点s和t,舍弃点t,s点即为肘关节的位置。

请参阅图7,t点舍弃的原因为:当腕关节的位置(包括坐标和方向)唯一确定时,手肘位置高于手腕位置的这个动作,正常情况下,一般是做不到的,于是舍弃点t。

然后,取s点作为唯一解,记s点坐标为(d,e),构建直角三角形ods和rds。由勾股定理可得:

e^2+d^2=a^2;

(c-d)^2+e^2=b^2;

联合上述两个方程式可得:

d=(c+(a^2-b^2)/c)/2;

由此计算得到肘关节位置和腕关节位置的关系,即可在每次更新中根据腕关节到肩关节的距离得到肘关节的位置。

s4:获取用户当前腕关节的位置坐标,依据s3获取的肘关节位置和腕关节位置的关系计算得到对应的肘关节的三维坐标。平移调整vr场景中腕关节的三维坐标。

s5:使用虚拟引擎逆运动解析器将由腕关节,肘关节,肩关节组成的骨骼链条,根据玩家手持vr手柄的位置运动,推算出对应vr场景中角色的骨骼的运动。

具体的,玩家手持vr手柄,依据vr场景的动效变化,随意挥动手臂控制角色进行配合。vr设备处理器实时获取的玩家的腕关节的位置坐标,高效计算得到对应的肘关节的三维坐标,然后使用逆运动解析器模拟还原出角色在vr场景中与玩家动作相对应的手臂运动。

采用本实施例的手臂运动模拟还原方法与现有技术的模拟还原方法的效果比较如下:

请参阅图8和图9,在编辑器中拉动目标关节位置至一个比较合适的位置,在游戏中效果如图8所示;使用本实施例的方法实时计算肘关节的位置,然后更新目标关节位置,在游戏中摆出同样的姿势,效果如图9所示;显然,图8的表现效果很怪异,图9的表现接近完美的还原了测试动作。

实施例二

本实施例对应实施例一,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:

获取用户手持vr手柄,在重心不动、手臂伸直状态下完成四个指定动作后得到的四个的腕关节的位置坐标;

依据所述四个的腕关节的位置坐标计算获取肩关节的位置坐标;具体依据三维空间中不共面的所述四个的腕关节的位置坐标,计算求取位于球心的肩关节的位置坐标。

依据所述四个的腕关节的位置坐标以及所述肩关节的位置坐标,计算得到手臂长度;

依据所述手臂长度,以预设比例获取上下手臂长度;

依据所述肩关节的位置坐标、手臂长度以及上下手臂长度,计算得到腕关节与肘关节的位置关系。具体包括:以所述肩关节的位置坐标为原点,手臂伸直状态下肩关节到腕关节的水平方向为x轴,vr手柄的朝向为y轴构建直角坐标系;分别以原点为圆心,上手臂长度为半径画圆,以腕关节的位置为圆心,下手臂长度为半径画圆,得到位于x轴下方的两个圆的相交点;依据勾股定理计算得到所述相交点的坐标方程。

获取用户当前腕关节的位置坐标,依据所述位置关系计算得到对应的肘关节的三维坐标。

将实时获取的用户的腕关节的位置坐标和肘关节的三维坐标使用逆运动解析器模拟获取用户手臂运动。

综上所述,本发明提供的基于虚拟引擎的手臂运动模拟还原方法、存储介质,不仅不用增加游戏设备,也不会给用户带来穿戴麻烦,影响游戏体验,具有成本低、体验好的优点;而且不需要投入巨大工作量和资源量,从而实现即时、真实的还原模拟出玩家的手臂运动,具有高效、算法消耗低、真实性高、即时的优点;从而实现即时、真实、高效的模拟还原得到vr场景中玩家的手臂运动,提高用户体验。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1