虚拟现实中的虚拟对象控制方法及装置与流程

文档序号:15880717发布日期:2018-11-09 17:53阅读:323来源:国知局
虚拟现实中的虚拟对象控制方法及装置与流程

本发明涉及计算机领域,具体而言,涉及一种虚拟现实中的虚拟对象控制方法及装置。

背景技术

虚拟现实(virtualreality,简称vr)头显所拥有的超高视角(fieldofvision,简称fov),带来了高度的沉浸感,但同时也导致玩家更容易发生运动眩晕症。为了降低超高的沉浸感所产生的眩晕感,相关技术中的vr游戏多采用的是瞬移+仅房间内移动的方案,这种方式破坏沉浸感(突然的画面变化、瞬移与世界观的割裂)、破坏游戏世界观、破坏游戏性(一些传统移动方式抵达不了的地方可以轻易通过瞬移抵达,瞬移很难对移动速度进行限制,玩家可以轻易躲避攻击)等等;或者通过依赖外设(比如跑步机),这种方式会提高玩家的成本,并且需要消耗玩家的真实体力,难以长时间游玩,且对游戏设计产生了更多的限制。并且,通常虚拟现实中的虚拟角色被设置为不能穿透场景中的物体(例如墙体、山体、石块等模型),相关技术中的方案难以避免玩家将头伸进物体内部导致穿插的问题。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种虚拟现实中的虚拟对象控制方法及装置,以至少解决相关技术中的虚拟现实中采用瞬移和仅房间内移动的方式导致游戏的体验度较差的技术问题。

根据本发明实施例的一个方面,提供了一种虚拟现实中的虚拟对象控制方法,包括:获取指定对象在预设空间中的第一信息和基于指定对象作用于控制器的操作所产生的指令信息;其中,第一信息包括:指定对象的所穿戴的头戴式显示器的第一位置追踪信息和控制器的第二位置追踪信息;根据第一信息和指令信息确定虚拟现实场景中与指定对象对应的虚拟对象的第二信息;根据第二信息控制虚拟对象在虚拟现实场景中的移动。

根据本发明实施例的一个方面,提供了一种虚拟现实中的虚拟对象控制装置,包括:获取模块,用于获取指定对象在预设空间中的第一信息和基于指定对象作用于控制器的操作所产生的指令信息;其中,第一信息包括:指定对象所穿戴的头戴式显示器的第一位置追踪信息和控制器的第二位置追踪信息;确定模块,用于根据第一信息和指令信息确定虚拟现实场景中与指定对象对应的虚拟对象的第二信息;控制模块,用于根据第二信息控制虚拟对象在虚拟现实场景中的移动。

根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项中所述的方法。

根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项中所述的方法。

在本发明实施例中,采用头戴式显示器和控制器的位置追踪信息以及控制器产生的指令信息来确定用于控制虚拟现实场景中对应虚拟对象的移动的第二信息,进而实现控制虚拟对象在虚拟现实场景中的移动的方式,叠加了指定对象在预设空间中的真实移动和控制器的控制移动,从而实现了提高游戏体验度的技术效果,进而解决了相关技术中的虚拟现实中采用瞬移和仅房间内移动的方式导致游戏的体验度较差的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种虚拟现实中的虚拟对象控制方法的移动终端的硬件结构框图;

图2是根据本发明实施例提供的虚拟现实中的虚拟对象控制方法的流程示意图;

图3是根据本发明优选实施例提供的摄像机移动控制示意图;

图4是根据本发明实施例提供的虚拟现实中的虚拟对象控制装置的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本申请实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种虚拟现实中的虚拟对象控制方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的虚拟现实中的虚拟对象控制方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

根据本发明实施例,提供了一种虚拟现实中的虚拟对象控制的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图2是根据本发明实施例提供的虚拟现实中的虚拟对象控制方法的流程示意图,如图1所示,该方法包括如下步骤:

步骤s202,获取指定对象在预设空间中的第一信息和基于指定对象作用于控制器的操作所产生的指令信息;其中,第一信息包括:指定对象所穿戴的头戴式显示器的第一位置追踪信息和控制器的第二位置追踪信息;

步骤s204,根据第一信息和指令信息确定虚拟现实场景中与指定对象对应的虚拟对象的第二信息;

步骤s206,根据第二信息控制虚拟对象在虚拟现实场景中的移动。

通过上述步骤,采用头戴式显示器和控制器的位置追踪信息以及控制器产生的指令信息来确定用于控制虚拟现实场景中对应虚拟对象的移动的第二信息,进而实现控制虚拟对象在虚拟现实场景中的移动的方式,叠加了指定对象在预设空间中的真实移动和控制器的控制移动,从而实现了提高游戏体验度的技术效果,进而解决了相关技术中的虚拟现实中采用瞬移和仅房间内移动的方式导致游戏的体验度较差的技术问题。

需要说明的是,上述虚拟现实可以包括:vr游戏,ar游戏,但并不限于此。

需要说明的是,位置追踪信息可以包括:朝向信息和/或位置信息,但并不限于此,比如上述第一追踪信息可以包括:头戴式显示器的朝向信息和/或位置信息,上述第二追踪信息可以包括:控制器的朝向信息和/或位置信息。

需要说明的是,上述指定对象可以是真实世界玩游戏的人,即可以是玩家,但并不限于此,上述预设控制可以是真实世界中该玩家的游玩区域,可以称为“房间”,但并不限于此。

需要说明的是,上述控制器可以包括一个,也可以包括多个,比如两个,但并不限于此;可选地,上述控制器可以包括两个,比如左控制器,右控制器;但并不限于此。

需要说明的是,上述预设空间可以是摄像机,头戴式显示器,控制器的父节点;但并不限于此。本发明实施例所采用的3d引擎中的对象嵌套关系,即父节点的变换将被继承到子节点上,比如上述预设空间的变化可以被继承到摄像机,头戴式显示器,控制器上。

需要说明的是,上述指令信息可以是指定对象作用于控制器时控制器产生的信息。需要说明的是,上述指令信息可以用于指示上述虚拟对象进行移动。需要说明的是,上述控制器还可以包括按键,摇杆,触摸盘,滚轮等控制方式,以按键为例进行说明,上述指定对象按压上述控制器上的按键,上述控制器接收到该按压操作之后产生一个指令信息,通过该指令信息控制虚拟对象进行移动,但并不限于此。

需要说明的是,上述第二信息可以包括:虚拟对象的移动信息,比如虚拟对象的位置信息,虚拟对象的移动向量等,但并不限于此。

在本发明的一个实施例中,上述步骤s204可以表现为:根据第一信息和指令信息确定虚拟对象的速度信息和指定对象与虚拟对象的位置偏移;根据虚拟对象的速度信息和指定对象与所述虚拟对象的位置偏移确定第二信息。

需要说明的是,根据第一信息和指令信息确定虚拟对象的速度信息可以表现为:根据第一信息确定指定对象的第一朝向信息;将第一朝向信息确定为虚拟对象在虚拟现实场景中的朝向信息;根据第一信息和指令信息确定虚拟对象在虚拟现实场景中的移动方向;根据虚拟对象在虚拟现实场景中的朝向信息和移动方向确定虚拟对象的速度信息。即通过将指定对象的朝向信息直接映射到虚拟对象的朝向信息,通过头戴式显示器的朝向和控制器的指令信息确定移动方向,保证了虚拟对象的移动方向和虚拟对象的当前速度符合指定对象的心理预期,可以缓解玩家的眩晕等不适感。

需要说明的是,根据第一信息确定指定对象的第一朝向信息可以通过姿态估算算法来实现,比如反向动力学(inversekinematics,ik)算法,即通过将头戴式显示器和控制器的信息通过ik算法计算得到上述指定对象的第一朝向信息,但并不限于此。

需要说明的是,根据第一信息和指令信息确定虚拟对象在虚拟现实场景中的移动方向可以表现为:通过将头戴式显示器的朝向信息投影到水平面后得到朝向信息,将得到的朝向信息与上述指令信息进行指定运算得到上述移动方向。需要说明的是,上述指定运算可以是乘法运算,但并不限于此。

需要说明的是,头戴式显示器的朝向信息投影到水平面后得到的朝向信息可以认为是将原头戴式显示器的朝向信息仅保留绕指定方向旋转的信息,其中该指定方向为垂直于上述水平面的方向,但并不限于此。

需要说明的是,上述头戴式显示器的朝向信息和上述指令信息的表现方式可以有多种,比如可以通过向量表示,也可以通过矩阵表示,也可以通过四元数表示,但并不限于此。

在本发明的一个实施例中,根据虚拟对象在虚拟现实场景中的朝向信息和移动方向确定虚拟对象的速度信息可以表现为:根据虚拟对象在虚拟现实场景中的朝向信息确定虚拟对象的移动朝向状态;根据移动朝向状态获取与移动朝向状态对应的移动速度系数;根据移动速度系数和预设速度确定虚拟对象在该移动朝向状态下的最大速度;根据虚拟对象的第一速度、与移动朝向状态对应的加速度和最大速度确定速度信息。

需要说明的是,上述第一速度可以认为是虚拟对象更新前的速度(上一帧中虚拟对象的速度),上述确定的速度信息则认为是虚拟对象更新后的速度(本帧中虚拟对象的速度)。

需要说明的是,上述移动朝向状态可以包括但并不限于此,虚拟对象在前进,后退或者左右平移。需要说明的是,上述预设速度可以是为上述虚拟对象预先设置的最大速度,而对于不同的移动朝向状态上预先设置不同的移动速度系数,比如为了逃脱虚拟对象的敌人的追击,虚拟对象应该以较快的速度进行后退,而虚拟对象在前进过程中,能够尽量防止有埋伏的敌人,因而在前进的时候,移动速度小一点,因而可以在预先设置时,虚拟对象在前进状态的移动速度系数小于虚拟对象在后退状态的移动速度系数,但并不限于此,比如也可以是在前进状态的移动速度系数大于虚拟对象在后退状态的移动速度系数。

需要说明的是,根据移动朝向状态获取与移动朝向状态对应的移动速度系数可以通过根据与之相邻的主要移动方向上的预设移动速度系数经过插值计算求得,但并不限于此。

需要说明的是,上述与移动朝向状态对应的加速度可以认为是与移动朝向状态对应的当前加速度,该当前加速度与上述当前移动速度系数的获取方式类似,比如也可以通过预先设置前进,后退,左右平移等移动朝向状态下的加速度缩放比例,以及预先定义了一个加速度(该加速度可以认为是最大的加速度但并不限于此),通过插值算法得到移动朝向状态下的加速度缩放比例,根据预先定义的加速度和上述当前加速度缩放比例得到当前加速度。

通过采用插值的算法(平滑算法)得到速度信息,进而进一步控制虚拟对象的移动,提高了镜头的稳定性,降低了眩晕感。

需要说明的是,为了更加真实,提高对游戏的体验感,在得到上述速度信息的时候还可以考虑重力的影响,但并不限于此。

在本发明的一个实施例中,根据第一信息确定指定对象与虚拟对象的位置偏移可以表现为:根据第一信息得到指定对象在预设空间中的位置和朝向;根据指定对象在预设空间中的位置和朝向,以及预设空间的目标位置(而不是当前位置,因为当前位置带有缓动效果)确定指定对象在世界坐标系中的位置;根据指定对象在世界坐标系中的位置和虚拟对象在虚拟现实场景中的当前位置确定指定对象与虚拟对象的位置偏移。

需要说明的是,指定对象在预设空间中的位置和朝向可以是指定对象相对于预设空间的位置和朝向,其是在预设空间所在的坐标系下的位置和朝向;上述预设空间的目标位置可以是预设空间在世界坐标系下的位置和朝向;但并不限于此。

需要说明的是,根据第一信息得到指定对象在预设空间中的位置和朝向实现方式与通过第一信息和指令信息得到该指定对象的朝向信息的方式类似,都是可以采用姿态估值算法,比如方向动力学ik,但并不限于此。

具体的,根据所述指定对象在所述预设空间中的位置和朝向,以及所述预设空间的目标位置确定所述指定对象在世界坐标系中的位置可以表现为:根据预设空间的目标位置对所述指定对象在所述预设空间中的位置和朝向进行坐标系转换,得到指定对象在世界坐标系中的位置。需要说明的是,坐标系转换的方法可以是矩阵乘法运算,比如可以先将指定对象在所述预设空间中的位置和朝向转换成对应的矩阵,在与预设空间的目标位置进行相乘,即可以完成对预设空间中的位置和朝向的坐标系的转换。

即通过头戴式显示器和控制器的位置信息推算出指定对象在预设空间中的位置,再结合预设空间的目标位置得到指定对象在世界坐标系中的位置,即上述指定对象在世界坐标系中的位置确定是根据预设空间的目标位置,以及指定对象相对于预设空间的目标位置来确定的,因而无论上述预设空间采用什么移动算法,预设空间的位置更新与指定对象的世界坐标计算都与预设空间的当前世界坐标无关的,因而实现了解耦,避免了房间(预设空间)移动,玩家(指定对象)移动,角色(虚拟对象)移动,房间(预设空间)移动导致的循环依赖。

需要说明的是,根据虚拟对象的速度信息和指定对象与虚拟对象的位置偏移确定第二信息可以表现为:将虚拟对象的速度信息乘上帧间隔得到的结果,加上所述指定对象与所述虚拟对象的位置偏移,得到上述第二信息。

在本发明的一个实施例中,在根据第二信息控制虚拟对象在虚拟现实场景中的移动之后,上述方法还可以包括:根据预设空间的当前目标位置,虚拟对象的位置信息和指定对象在世界坐标系中的位置更新预设空间的目标位置。

需要说明的是,根据虚拟对象的位置信息和指定对象在世界坐标系中的位置更新预设空间的目标位置可以表现为:将预设空间的当前目标位置加上,虚拟对象的位置信息和指定对象在世界坐标系中的位置之差,得到更新后的预设空间的目标位置。

通过在玩家(指定对象)位置与角色(虚拟对象)位置进行了对齐之后,更新上述预设空间的目标位置,可以确保玩家(指定对象)所对应的虚拟对象不会穿插到场景内的障碍物中,进而确保摄像机不穿插到目标障碍物中。

需要说明的是,通过上述方式,使得在虚拟对象(角色)因上述控制器被操作而导致位置发生了变化的情况下,通过上述预设房间的当前目标位置累加虚拟对象的位置信息和指定对象在世界坐标系中的位置的差值,使得玩家与角色位置进行重新对齐。

需要说明的是,在根据所述虚拟对象的位置信息和所述指定对象在世界坐标系中的位置更新所述预设空间的目标位置之后,上述方法还可以包括:根据更新后的所述预设空间的目标位置更新所述预设空间的位置。

需要说明的是,根据更新后的所述预设空间的目标位置更新所述预设空间的位置可以表现为:基于更新后的预设空间的目标位置和预设空间的当前位置更新预设空间的位置。具体可以表现为:基于计算得到的本帧的预设空间的目标位置(更新后的预设空间的目标位置),上一帧的预设空间的位置,以及本帧与上一帧的帧间隔更新本帧中预设空间的位置。

需要说明的是,上述步骤的执行主体可以是终端,比如手机,pad,个人计算机等,但并不限于此。

需要说明的是,上述方法可以应用vr第一人称大场景的自由移动探索中,但并不限于此。

为了更好地理解本发明实施例,以下结合优选的实施例对本发明做进一步解释。

为了更好地理解本发明优选实施例,以下先介绍本发明优选实施例所涉及的术语:

头戴式显示器(头显)(headmounteddisplay,简称hmd)(相当于上述实施例中的头戴式显示器);

控制器(相当于上述实施例中的控制器):controller,其可以作为输入设备,通常握在玩家手中;

玩家(相当于上述实施例中的指定对象):真实世界玩游戏的人;

角色(相当于上述实施例中的虚拟对象):玩家在游戏中的替身;

房间(相当于上述实施例中的预设空间):现实世界中玩家的游玩区域映射到游戏场景(相当于上述虚拟现实场景)中的虚拟节点,是摄像机、左右控制器的父节点;

目标房间(相当于上述实施例中的预设空间的目标位置):游戏场景中房间的目标移动位置;

父子层级:3d引擎中的对象嵌套关系;父节点的变换将被继承到其子节点上;

帧间隔:两次更新之间的间隔;

按键移动:通过控制器上的按键来控制角色移动的方式。本优选实施例中还包含了利用控制器上的摇杆、触摸盘、滚轮等控制方式。

本发明优选实施例提供了一种支持vr下大场景自由移动探索的方法,该方法同时支持玩家在房间内真实移动,防止玩家穿插进物件中导致穿帮,以及降低眩晕所带来的不适。

通过本优选实施例可以实现以下技术效果:

(1)叠加了玩家真实移动与按键移动。其中通过引入目标房间概念,解耦了房间追随玩家(第一人称),房间位置变化导致头显、控制器位置变化,头显、控制器位置变化又导致玩家世界坐标位置变化的数据循环问题。

(2)控制角色移动的平滑算法以及房间插值到目标房间的平滑算法,提高了房间的稳定性,进而提高了镜头的稳定性,降低了晕眩感。

(3)通过玩家和角色的位置同步(第一人称),只需简单地让角色无法穿透障碍物,即可防止摄像机穿插到场景物件内部导致显示错误。

在执行本发明优选实施例之前,可以进行以下至少之一设置:

父子层级设置:头显、控制器等节点设置一个共同的父节点——房间;

设置一个新的游戏对象(利用其变换组件),用来表示目标房间;

在此目标房间下,加入一个新的游戏对象(利用其变换组件),用来表示目标玩家(世界坐标系中);

在场景物件和角色上设置恰当的物理碰撞(比如头部),用于防止角色穿插,进而避免头显穿插。

图3是根据本发明优选实施例提供的摄像机移动控制示意图,如图3所示,“房间”或“虚拟房间”为头戴式显示器与控制器(其分为左手控制器和右手控制器)的父节点。父节点的变换会继承给所有子节点。因此,通过移动虚拟房间能够起到间接移动头戴式显示器与控制器的作用。

本优选实施例的方法包括:

(1)玩家位置、朝向更新(根据头显、左右控制器位置推算玩家在房间中的位置,再根据目标房间位置得出玩家在世界坐标系中的位置):

输入vr头显及控制器的位置追踪信息,通过一个姿态估算算法(在本优选实施例中采用的是ik(反向动力学))计算玩家在房间坐标系中的位置和朝向。将此房间坐标系下的位置、朝向经过预定变换得到目标房间下的目标玩家位置朝向上。通过上面的步骤就得到了世界坐标系下的玩家位置。

需要说明的是,上述房间坐标系可以是游戏世界中,玩家,头显,控制器所在的坐标系,但是对于坐标系的原点可以根据需要进行设计,并不做限制。需要说明的是,上述预定变换可以是位置旋转,缩放等的操作,但并不限于此。

通过上述步骤,可以实现根据目标房间位置,头显、控制器位置推断玩家在世界中的位置。

(2)移动角色的更新:

a,根据角色按键、头显朝向与角色朝向,计算角色当前速度:

角色朝向=玩家朝向(相当于上述实施例中的第一朝向信息);

角色平移方向(相当于上述移动方向)=玩家头显朝向投影到水平面的旋转(相当于上述实施例中的头戴式显示器的朝向信息投影到水平面后得到的朝向信息)*按键操作方向向量(相当于上述实施例中的指令信息);

目标速度:根据角色朝向与角色平移方向,确认角色是在前进、后退或者左右平移,以此根据角色不同方向上的移动速度百分比(相当于上述移动速度系数),得到目标(方向上的最大)速度。

需要说明的是,上述前进,后退,左右平移都可以认为角色的一种移动朝向状态,此处也可以称为方向。

需要说明的是,对于在不同移动朝向状态下的移动速度百分比可能不同,但是针对同一个移动朝向状态下不同时间或不同位置处的移动速度百分比可以通过线性插值的算法进行计算,进而可以依据该算法可以得到角色在该移动朝向状态下的当前的移动速度百分比,进而可以得到当前的最大速度(即目标速度)。

当前速度:根据在该目标速度对应的方向上,应用不同的加速度,插值求得当前速度;需要说明的是,该插值算法与上述线性插值的算法可以相同,即可以定义前进、后退、左右平移的加速度缩放比例,再通过线性插值得到该方向上的当前加速度缩放系数,通过当前加速度缩放系数和上述目标速度可以得到当前的速度。

可选地,对当前速度应用重力的影响,输出角色当前速度(相当于上述实施例中的虚拟对象的速度信息)。

b,叠加上面求出的玩家的位置和朝向到角色移动向量中:

玩家位置:等于在上面得到的世界坐标系下的玩家位置。

玩家与角色的位置偏移(相当于上述实施例中的指定对象与虚拟对象的位置偏移)=当前玩家位置-当前角色位置(每帧更新,初始为出生点位置,而后通过移动控制器逻辑更新位置);

输出玩家与角色的位置偏移。

c,角色移动向量=角色当前速度*帧间隔+玩家与角色的位置偏移。

利用本帧角色移动向量,更新角色位置;至此,角色的位置和朝向均得到了更新。

(3)更新目标房间位置:

完成了角色移动之后,需要立即更新目标房间位置,以求得正确的目标房间位置;

更新后的目标房间位置=更新前的目标房间位置+角色位置-玩家位置

需注意这里的前提是第一人称,即玩家位置与角色位置是对齐的。因为在上面已经将角色位置与玩家位置进行了对齐,故在这里可以直接计算。

只需代入几种情况即可检验:

a,玩家未进行按键移动,仅进行了房间内移动:那么此时的角色位置应该与玩家位置已经是一致的,想减后得到的diff应该是一个零向量,目标房间位置不会变化,符合预期;

b,玩家进行了按键移动:那么此事无论是玩家是否在房间内进行了移动(因定位器的采样误差及角色位置推算算法的不稳定性,玩家很难相对房间静止,就算是站立不动也会存在极细微的晃动),角色应该因为按键移动而导致位置发生了变化,即产生了变化向量,只需让目标房间位置累加此变化向量,即可让玩家与角色位置重新对齐。

c,只需如上操作,让玩家与角色重新对齐,更新目标房间位置,即可确保玩家不穿插到障碍物中,进一步确保摄像机不穿插到目标障碍物中。

(4)移动房间(房间是摄像机的父节点,移动房间能起到间接移动摄像机的作用):

根据目标房间位置,插值移动房间。具体的,该插值算法也可以是线性插值,但并不限于此。

本优选实施例采用了简单房间减振的算法,大致原理是:区分目标房间的水平和垂直位置更新,采用不同的平滑参数进行平滑与防抖(比如线性插值算法)。

因为引入了目标房间概念,而玩家的位置确定是根据目标房间位置和玩家相对目标房间位置来确定的,所以无论房间采用何种移动算法(插值或者不插值),目标房间的位置更新与玩家的世界坐标计算(根据玩家相对房间的局部坐标(该坐标与房间世界坐标无关)以及目标房间位置来求得)都是与房间的当前世界坐标无关的。这样就实现了解耦,避免了:房间移动-玩家移动-角色移动-房间移动导致的循环依赖。

本发明实施例还提供了一种虚拟现实中的虚拟对象控制装置,图4是根据本发明实施例提供的虚拟现实中的虚拟对象控制装置的结构框图,如图4所示,该装置包括:

获取模块42,用于获取指定对象在预设空间中的第一信息和基于指定对象作用于控制器的操作所产生的指令信息;其中,第一信息包括:指定对象所穿戴的头戴式显示器的第一位置追踪信息和控制器的第二位置追踪信息;

确定模块44,与获取模块42连接,用于根据第一信息和指令信息确定虚拟现实场景中与指定对象对应的虚拟对象的第二信息;

控制模块46,与上述确定模块44连接,用于根据第二信息控制虚拟对象在虚拟现实场景中的移动。

通过上述装置,采用头戴式显示器和控制器的位置追踪信息以及控制器产生的指令信息来确定用于控制虚拟现实场景中对应虚拟对象的移动的第二信息,进而实现控制虚拟对象在虚拟现实场景中的移动的方式,叠加了指定对象在预设空间中的真实移动和控制器的控制移动,从而实现了提高游戏体验度的技术效果,进而解决了相关技术中的虚拟现实中采用瞬移和仅房间内移动的方式导致游戏的体验度较差的技术问题。

需要说明的是,位置追踪信息可以包括:朝向信息和/或位置信息,但并不限于此,比如上述第一追踪信息可以包括:头戴式显示器的朝向信息和/或位置信息,上述第二追踪信息可以包括:控制器的朝向信息和/或位置信息。

需要说明的是,上述指定对象可以是真实世界玩游戏的人,即可以是玩家,但并不限于此,上述预设控制可以是真实世界中该玩家的游玩区域,可以称为“房间”,但并不限于此。

需要说明的是,上述控制器可以包括一个,也可以包括多个,比如两个,但并不限于此;可选地,上述控制器可以包括两个,比如左控制器,右控制器;但并不限于此。

需要说明的是,上述预设空间可以是摄像机,头戴式显示器,控制器的父节点;但并不限于此。本发明实施例所采用的3d引擎中的对象嵌套关系,即父节点的变换将被继承到子节点上,比如上述预设空间的变化可以被继承到摄像机,头戴式显示器,控制器上。

需要说明的是,上述指令信息可以是指定对象作用于控制器时控制器产生的信息。需要说明的是,上述指令信息可以用于指示上述虚拟对象进行移动。需要说明的是,上述控制器还可以包括按键,摇杆,触摸盘,滚轮等控制方式,以按键为例进行说明,上述指定对象按压上述控制器上的按键,上述控制器接收到该按压操作之后产生一个指令信息,通过该指令信息控制虚拟对象进行移动,但并不限于此。

需要说明的是,上述第二信息可以包括:虚拟对象的移动信息,比如虚拟对象的位置信息,虚拟对象的移动向量等,但并不限于此。

在本发明的一个实施例中,上述确定模块44可以包括:第一确定单元,用于根据第一信息和指令信息确定虚拟对象的速度信息和指定对象与虚拟对象的位置偏移;第二确定单元,与上述第一确定单元连接,用于根据虚拟对象的速度信息和指定对象与所述虚拟对象的位置偏移确定第二信息。

需要说明的是,上述第一确定单元还可以用于,根据第一信息确定指定对象的第一朝向信息;将第一朝向信息确定为虚拟对象在虚拟现实场景中的朝向信息;根据第一信息和指令信息确定虚拟对象在虚拟现实场景中的移动方向;以及根据虚拟对象在虚拟现实场景中的朝向信息和移动方向确定虚拟对象的速度信息。

需要说明的是,上述第一确定单元可以通过姿态估算算法来实现,比如反向动力学(ik),即上述第一确定模块将头戴式显示器和控制器的信息通过ik算法计算得到上述指定对象的第一朝向信息,但并不限于此。

需要说明的是,上述第一确定单元还可以用于,将头戴式显示器的朝向信息投影到水平面后得到朝向信息,以及将得到的朝向信息与上述指令信息进行指定运算得到上述移动方向。需要说明的是,上述指定运算可以是乘法运算,但并不限于此。

需要说明的是,头戴式显示器的朝向信息投影到水平面后得到的朝向信息可以认为是将原头戴式显示器的朝向信息仅保留绕指定方向旋转的信息,其中该指定方向为垂直于上述水平面的方向,但并不限于此。

需要说明的是,上述头戴式显示器的朝向信息和上述指令信息的表现方式可以有多种,比如可以通过向量表示,也可以通过矩阵表示,也可以通过四元数表示,但并不限于此。

需要说明的是,第一确定单元还用于,根据虚拟对象在虚拟现实场景中的朝向信息确定虚拟对象的移动朝向状态;根据移动朝向状态获取与移动朝向状态对应的移动速度系数;根据移动速度系数和预设速度确定虚拟对象在移动朝向状态下的最大速度;以及根据虚拟对象的第一速度,与移动朝向状态对应的加速度和最大速度确定速度信息。

需要说明的是,上述第一速度可以认为是虚拟对象更新前的速度(上一帧中虚拟对象的速度),上述确定的速度信息则认为是虚拟对象更新后的速度(本帧中虚拟对象的速度)。

需要说明的是,第一确定单元还用于根据与移动朝向状态相邻的主要移动方向上的预设移动速度系数经过插值计算求得与移动朝向状态对应的移动速度系数。

需要说明的是,第一确定单元还用于,根据第一信息得到指定对象在预设空间中的位置和朝向;根据指定对象在预设空间中的位置和朝向,以及预设空间的目标位置确定指定对象在世界坐标系中的位置;以及根据指定对象在世界坐标系中的位置和虚拟对象在虚拟现实场景中的当前位置确定指定对象与所述虚拟对象的位置偏移。

需要说明的是,第一确定单元根据第一信息和指令信息得到指定对象在预设空间中的位置和朝向实现方式与第一确定单元通过第一信息和指令信息得到该指定对象的朝向信息的方式类似,都是可以采用姿态估值算法,比如方向动力学ik,但并不限于此。

需要说明的是,第一确定单元还用于根据预设空间的目标位置对所述指定对象在所述预设空间中的位置和朝向进行坐标系转换,得到指定对象在世界坐标系中的位置。需要说明的是,坐标系转换的方法可以是矩阵乘法运算,比如上述第一确定单元可以先将指定对象在所述预设空间中的位置和朝向转换成对应的矩阵,在与预设空间的目标位置进行相乘,即可以完成对预设空间中的位置和朝向的坐标系的转换。

即通过头戴式显示器和控制器的位置信息推算出指定对象在预设空间中的位置,再结合预设空间的目标位置得到指定对象在世界坐标系中的位置,即上述指定对象在世界坐标系中的位置确定是根据预设空间的目标位置,以及指定对象相对于预设空间的目标位置来确定的,因而无论上述预设空间采用什么移动算法,预设空间的位置更新与指定对象的世界坐标计算都与预设空间的当前世界坐标无关的,因而实现了解耦,避免了房间(预设空间)移动,玩家(指定对象)移动,角色(虚拟对象)移动,房间(预设空间)移动导致的循环依赖。

需要说明的是,上述第二确定单元还用于将虚拟对象的速度信息乘上帧间隔得到的结果,加上所述指定对象与所述虚拟对象的位置偏移,得到上述第二信息。

在本发明的一个实施例中,上述装置还可以包括:更新模块,与上述确定模块44连接,用于根据预设空间的当前目标位置,虚拟对象的位置信息和指定对象在世界坐标系中的位置更新预设空间的目标位置。

需要说明的是,上述更新模块,还用于将预设空间的当前目标位置加上,虚拟对象的位置信息和指定对象在世界坐标系中的位置之差,得到更新后的预设空间的目标位置。

通过在玩家位置与角色位置进行了对齐之后,更新上述预设空间的目标位置,可以确保玩家不穿插到障碍物中,进一步确定摄像机不穿插到目标障碍物中。

需要说明的是,通过上述装置,使得在虚拟对象(角色)因上述控制器被操作而导致位置发生了变化的情况下,通过上述预设房间的当前目标位置累加虚拟对象的位置信息和指定对象在世界坐标系中的位置的差值,使得玩家与角色位置进行重新对齐。

需要说明的是,上述更新模块还用于根据更新后的所述预设空间的目标位置更新所述预设空间的位置。

需要说明的是,上述更新模块还用于基于更新后的预设空间的目标位置和预设空间的当前位置更新预设空间的位置。具体可以表现为:上述更新模块基于计算得到的本帧的预设空间的目标位置(更新后的预设空间的目标位置),上一帧的预设空间的位置,以及本帧与上一帧的帧间隔更新本帧中预设空间的位置。

需要说明的是,上述装置可以位于终端中,比如手机,pad,个人计算机等,但并不限于此。

根据本发明的一个实施例,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述方法。上述存储介质可以包括但不限于:u盘、只读存储器(rom)、随机存取存储器(ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

根据本发明的一个实施例,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述方法。上述处理器可以包括但不限于:微处理器(mcu)或可编程逻辑器件(fpga)等的处理装置。

根据本发明的一个实施例,还提供了一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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