CN109725782B - 一种实现虚拟现实的方法、装置及智能设备、存储介质 - Google Patents
一种实现虚拟现实的方法、装置及智能设备、存储介质 Download PDFInfo
- Publication number
- CN109725782B CN109725782B CN201711021925.4A CN201711021925A CN109725782B CN 109725782 B CN109725782 B CN 109725782B CN 201711021925 A CN201711021925 A CN 201711021925A CN 109725782 B CN109725782 B CN 109725782B
- Authority
- CN
- China
- Prior art keywords
- virtual object
- position information
- virtual
- information
- virtual reality
- 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.)
- Active
Links
Images
Landscapes
- User Interface Of Digital Computer (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明实施例公开了一种实现虚拟现实的方法,该方法包括:接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处;响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息;根据所述位置信息和显示方向信息,计算得到该虚拟对象的目标显示位置信息;在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处。采用本发明实施例,方便用户在当前VR设备的位置和显示方向上更好地查看虚拟对象。
Description
技术领域
本发明涉及虚拟现实技术领域,尤其涉及一种实现虚拟现实的方法、装置及智能设备、存储介质。
背景技术
通过虚拟现实(Virtual Reality,VR)技术可以创建一个虚拟现实世界的场景,使用者通过专用的VR设备,能够体验该虚拟现实的场景。使用者通过VR设备和相关的附属设备,能够与虚拟现实场景中的虚拟对象进行交互,能够基于用户的实体控制行为直接对虚拟现实场景中的三维对象进行动态控制,使用户沉浸到该虚拟环境中。如何在虚拟现实场景中向用户展示虚拟对象是当前研究的热点问题。
发明内容
本发明实施例提供一种实现虚拟现实的方法、装置及智能设备,可结合VR设备的位置和显示方向来更好地在虚拟现实场景中向用户展示虚拟对象。
一方面,本发明实施例提供了一种实现虚拟现实的方法,包括:
接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处;
响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息;
根据所述位置信息和显示方向信息,计算得到该虚拟对象在所述虚拟现实场景中的目标显示位置信息;
在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处。
另一方面,本发明实施例还提供了一种实现虚拟现实的装置,包括:
接收模块,用于接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处;
获取模块,用于响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息;
计算模块,用于根据所述位置信息和显示方向信息,计算得到该虚拟对象在所述虚拟现实场景中的目标显示位置信息;
处理模块,用于在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处。
再一方面,本发明实施例还提供了一种智能设备,包括:存储装置和处理器,其中:
所述存储装置,用于存储程序指令;
所述处理器,调用所述存储装置中存储的程序指令,用于
接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处;
响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息;
根据所述位置信息和显示方向信息,计算得到该虚拟对象在所述虚拟现实场景中的目标显示位置信息;
在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处。
相应地,本发明实施例还提供了一种计算机存储介质,所述计算机存储介质中存储有程序指令,该程序指令被执行时,用于实现如上述的实现虚拟现实的方法。
本发明实施例能够基于VR设备的位置和显示方向来对某个虚拟对象进行移动处理,将虚拟对象移动到某个位置,方便用户在当前VR设备的位置和显示方向上更好地查看虚拟对象,虚拟对象的显示满足VR位置和显示方向的需求,而不需要用户调整VR设备的位置和显示方向来适应虚拟对象的显示位置,更好地为用户实现了虚拟现实场景,方便、快捷地为用户显示了虚拟对象。
附图说明
图1是本发明实施例的一种实现虚拟现实的用户使用场景示意图;
图2是本发明实施例的对虚拟对象进行移动的方法流程示意图;
图3是本发明实施例的处于展开状态的虚拟书本的示意图;
图4是本发明实施例的对书本进行翻页处理的流程示意图;
图5是本发明实施例的对虚拟书本进行拖动处理的流程示意图;
图6是本发明实施例的对虚拟书本进行关闭处理的流程示意图;
图7是本发明实施例的一种实现虚拟现实的方法的流程示意图;
图8是本发明实施例的对虚拟对象进行控制的方法的流程示意图;
图9是本发明实施例的对虚拟对象进行控制的另一种方法的流程示意图;
图10是本发明实施例的一种实现虚拟现实的装置的结构示意图;
图11是本发明实施例的一种智能设备的结构示意图。
具体实施方式
本发明实施例能够根据虚拟现实设备的位置信息和显示的方向,来确定出一个目标位置用于显示虚拟现实场景中的某个虚拟对象,该目标位置是一个方便用户在显示方向上观看虚拟对象的位置,在确定出该目标位置后,能够动态地将虚拟对象移动显示在该目标位置上,方便用户观看虚拟对象并对虚拟对象进行控制。
图1是本发明实施例的一种实现虚拟现实的用户使用场景示意图,虚拟现实设备可以是指用户头戴的VR设备。该VR设备除了能够实现虚拟现实场景的处理和虚拟现实的图像帧显示等基本VR功能外,还能够基于VR设备当前的位置和显示方向来计算一个目标位置,以动态调整当前显示的虚拟现实场景中某个虚拟对象的显示位置。在一个实施例中,用来计算目标位置的VR设备的位置信息是一个在虚拟现实场景所对应的坐标系下的位置信息,显示方向也为VR设备在虚拟现实场景下的一个朝向,显示方向具体如图1中箭头所指示的方向。VR设备的位置信息和显示方向可以通过VR设备中配置的传感器计算得到。虚拟现实场景中每个虚拟对象是根据场景、设计需要预置摆放的,在控制打开虚拟书本时会移动到用户VR头显前方。在开发虚拟现实场景时,可以根据需要将每个虚拟对象对应设置在虚拟现实场景中某个想要呈现给用户的显示位置,各显示位置可以根据VR设备的位置进行配置,以达到在虚拟现实场景中为用户呈现一个相对真实的虚拟对象。
结合图2来对虚拟对象在虚拟现实场景中移动处理进行说明。在本发明实施例中,虚拟对象以一虚拟书本为例进行说明,对其他类型的虚拟对象,例如一个动物或者汽车等虚拟对象,所执行的移动处理基本相同。在本发明实施例中,对虚拟对象的移动处理可以包括对虚拟对象的位置计算处理,另外还可以包括诸如在计算得到的相应位置处显示该虚拟对象的显示处理等。
在本发明实施例中,所述虚拟书本可以运用Unity引擎(一种游戏开发工具引擎)开发,在一个实施例中,所述虚拟书本是中间可折叠的3D模型。在虚拟书本上可以添加Collider(一种碰撞器)碰撞体组件,该碰撞体组件可以对与用户手持的控制器对应的虚拟对象(该虚拟对象可以是一个虚拟的控制器)发出的虚拟光束进行碰撞识别检测。在一个实施例中,所述虚拟书本在展开状态下,还可以配置与用户的交互界面,例如两个图标按键区域,可以在展开的虚拟书本的右上方设置关闭图标按键,用于指示用户可以关闭书本,即合上书本,而在虚拟书本的中间位置设置“move”图标按键,以指示用户可以基于该图标按键再次通过控制器来手动移动该虚拟书本至虚拟现实场景中的任意一个位置。本实施例中,通过该“move”图标按键还可以将虚拟书本移出所述虚拟现实场景,即让虚拟书本不再显示在虚拟现实场景中,或将虚拟书本移入虚拟房间的虚拟书架上进行摆放。
上述两个图标按键对应的区域可以在默认状态下隐藏不可接收用户的交互操作,而在虚拟书本处于展开状态后再显示并可供给用户操作,以接收用户的交互操作。在一个实施例中,处于展开状态的虚拟书本的示意图如图3所示,在该展开的虚拟书本301上,设置了关闭图标按键302以及表示移动的“move”图标按键303。
在本发明实施例中,虚拟对象如上述虚拟书本默认闭合摆放在虚拟环境中。对虚拟对象进行移动的方法主要包括以下步骤来实现。
在S201中,用户按下控制器1的扳机键触发打开虚拟对象。用户可以先移动控制器以便于虚拟现实场景中相应的虚拟对象发出虚拟光束指向虚拟书本,然后按下扳机键即可生成触发打开虚拟书本的触发信号。该控制器1可以是手持的一个控制设备,或者是其他形式控制器,例如,设置在VR设备上的一个控制装置。在按下扳机键后,控制器1生成触发信号,可以通过有线或者无线的方式向VR设备2发送触发信号。VR设备2可在当前显示的虚拟现实场景中显示关于该控制器1的虚拟对象,例如显示一个虚拟控制器,并且从虚拟控制器中发射出虚拟光束。控制器1上也可以设置其他形式的按键,例如触摸板形式的按键。在一个实施例中,用户可以移动控制器1,基于控制器1的移动,在VR设备2显示的虚拟现实场景中,会对应于该控制器1的虚拟对象产生一个Raycast虚拟光束,该虚拟光束随着控制器1的移动而移动,该虚拟光束在移动过程中,如果接触到所述虚拟书本且用户按下扳机键后,为该虚拟书本配置的碰撞体组件可以检测到该碰撞事件,即可认为检测到对虚拟现实场景中显示的虚拟书本的触发操作。
在S202中,VR设备2播放虚拟书本的展开动画。展开动画可以是在开发该虚拟现实场景以及虚拟对象时配置的一段动画,在检测到上述的触发操作后,即播放该段动画,该段动画作为虚拟现实场景中的一部分。在其他实施例中,所述虚拟书本也可以同现实世界中的书本,虚拟书本中的文字也与现实世界中书本文字相同,如用户在虚拟现实世界阅读名著《水浒传》。
在S203中,VR设备2计算所述虚拟书本打开后,最终显示在虚拟现实场景中的目标位置[BookOpenPosition],该目标位置可以认为是虚拟对象在虚拟现实场景中最终显示位置的目标显示位置信息。在本发明实施例中,首先获取用户头显坐标[HmdPosition]和头显正方向[HmdDirection],头显坐标[HmdPosition]即是所需的虚拟现实设备的位置信息,头显正方向[HmdDirection]即为所需的虚拟现实设备的显示方向信息,其中,用户头显坐标是指VR设备2的坐标,头显正方向可以认为是VR设备2的显示方向,该显示方向如图1所示,所述用户头显坐标[HmdPosition]和头显正方向[HmdDirection]可以通过VR设备2中的位置传感器和姿态传感器得到的数据进行计算得到。所述用户头显坐标[HmdPosition]和头显正方向[HmdDirection]均是指头显在虚拟现实场景中的坐标和方向。在本发明实施例中,目标位置[BookOpenPosition]的计算方式如下公式(1)所示。
[BookOpenPosition]=[HmdPosition]+[HmdDirection]*Distance(1);
其中,Distance为距离系数,为一个预设值,体现了在虚拟现实场景下,虚拟对象距离人眼的距离,该值被设置得越大,在视觉感官上虚拟对象越小,感觉距离用户越远;该值被设置得值越小,则虚拟对象越大,使用户感觉虚拟对象距离用户越近。距离系数可以在开发相应的虚拟现实场景时设置,在一些实施例中,也可以提供设置接口供用户可以手动调节,例如可以基于VR设备2上的旋钮进行调节,随着旋钮的调节,在虚拟现实场景中,虚拟对象在用户视觉感官上有拉远和接近的效果。
基于上述公式(1)可得到用户在当前的头显位置坐标和头显正方向(面向方向)的情况下,理论上用户双眼在虚拟现实场景中所注视位置点的坐标,该目标位置[BookOpenPosition]即为触发打开虚拟书本后,虚拟书本在所述虚拟现实场景中最终的显示位置的坐标。在一个实施例中,虚拟书本移动后实际最终显示的位置可以是与所述目标位置较为接近的一个位置。在一个实施例中,虚拟书本移动后的某一个位置距离计算得到的目标位置非常接近时,例如移动后的位置与目标位置之间的距离小于预设的距离阈值时,则直接将所述虚拟书本跳转到所述目标位置处显示。
在S204中,可以通过插值逐帧移动的方式,移动虚拟书本至所述计算得到的目标位置[BookOpenPosition]处。在移动过程中,各个时刻的移动位置[A]i可以按照下述的公式(2)计算得到。为了描述方便,该各个时刻的移动位置[A]i所对应的信息以下称为“第一过渡位置信息”。第一过渡位置信息所指示的位置位于初始位置和目标位置之间,是根据初始位置所对应的初始位置信息以及目标位置所对应的目标显示位置信息计算得到的。所述第一过渡位置信息可以包括一个,或者两个,或者多个。
[A]i=Vector3.Lerp([A]i-1,[B],[C] * Time.deltaTime) (2)
其中,所述[C]表示[MoveSpeed],是指触发开启虚拟书本后的开启速度信息,开启速度信息表示虚拟书本在虚拟现实场景中的移动速度,可以为一个预设值,对[MoveSpeed]值的修改可调整虚拟图像在显示屏幕上移动显示的过程中的移动速度。
所述Time.deltaTime是指实时获取的上一帧包括虚拟对象的图像帧的显示时长,也可以根据需要进行设置。Vector3.Lerp()是一个线性插值算法,在公式2中,对[A]i-1、[B]、[C]、Time.deltaTime做线性插值计算,得到[A]i。其中,[A]i表示当前的第一过渡位置信息[BookPostion]i,[A]i-1表示上一次计算的第一过渡位置信息[BookPostion]i-1,[B]则表示上述的[BookOpenPosition]。在计算第一个第一过渡位置信息时,所使用的上一次第一过渡位置信息是指虚拟书本显示于所述虚拟现实场景的初始位置信息。
在其他实施例中,上述公式(2)中可以不考虑Time.deltaTime,即参考下述的公式(3)也可以得到第一过渡位置信息。
[A]i=Vector3.Lerp([A]i-1,[B],[C])(3)
在通过上述的公式计算得到移动过程中的第一过渡位置信息后,如果计算得到的最新的第一过渡位置信息所指示的位置距离所述目标位置非常近,例如距离小于预设的距离阈值,则在该距离非常近的第一过渡位置信息所指示的位置处显示处理所述虚拟书本后,可以将该虚拟书本直接显示到所述目标位置处,以确保虚拟书本最终中目标位置处显示给用户。
在S205中,获取虚拟书本面向用户方向的旋转值四元数[LookRotation],旋转值四元数可以认为是虚拟书本的旋转参数。旋转值四元数的作用在于指示虚拟对象在三维空间中的旋转,旋转值四元数可以是xyz轴任意角度的旋转值,可以包括但不限于虚拟书本上、下、左、右的旋转值。旋转值四元数的计算方式可以参考下述的公式(4)。根据头显坐标、虚拟书本的位置坐标计算得到的旋转值四元数,可保证虚拟对象旋转后能够最终以某个想要的姿态展示给用户,例如,虚拟书本能够展开并且将包括文字部分的平面正常展示给用户。
[X]=Quaternion.LookRotation([Y],BookTransform.up)(4)
其中,用户头显坐标[HmdPosition]减虚拟书本的位置坐标[BookPosition](虚拟书本的位置坐标也即虚拟对象旋转位置信息,对应于上述的第一过渡位置信息),可获得向量[Y],[Y]表示虚拟书本指向用户的向量[BookToUserVector],可称之为所述虚拟对象的指向向量。BookTransform.up是指所述虚拟书本的正方向值,在对虚拟现实场景中的虚拟对象的开发时,均会为虚拟对象设置一个正方向值,该值在计算该虚拟对象旋转值四元数时,可以被获取。所述Quaternion.LookRotation()则为注视旋转算法。上述公式(4)中的[X]表示旋转值四元数[LookRotation]。
在S206中,通过插值逐帧旋转虚拟书本至目标旋转值。而在旋转过程中,每个旋转位置的[W]i可以通过下述的公式(5)计算得到,[W]i表示旋转值[BookRotation]i。
[W]i=Quaternion.Slerp([W]i-1,[X],[Z]*Time.deltaTime) (5);
其中,[Z]表示旋转速度[RotateSpeed],旋转速度为一个预设的值,用于表示虚拟书本在虚拟现实场景中旋转的速度,可以在开发该虚拟书本的虚拟现实场景时设置,通过调整该值可调整改变旋转速度,以达到用户想要的旋转效果。Time.deltaTime仍然是指旋转过程中每帧关于虚拟对象的图像帧的显示时间,在其他实施例中,每个虚拟对象旋转位置信息所指示的旋转位置处的旋转值同样可以不用参考所述Time.deltaTime。Quaternion.Slerp()为球形插值算法,通过球形插值算法对[W]i-1、[X]、[Z]、Time.deltaTime进行球形插值计算得到[W]i,其中,[W]i表示当前旋转值[BookRotation]i,[W]i-1表示在上一次计算得到的旋转值[BookRotation]i-1,[X]表示旋转值四元数[LookRotation]、及[Z]表示旋转速度[RotateSpeed]。
在S207中,判断所述虚拟书本在经过上述处理后,移动的过程中的位置[BookPosition]与所述目标位置[BookOpenPosition]之间的距离是否小于一个短距离阈值[ShortThresold],判断结果为是时进入S208,否则跳至S204,以便于继续执行上述S204~S206对应的移动和旋转处理。所述与目标位置进行比较的移动的过程中的位置是最新的用于显示虚拟书本的位置。在一个实施例中,可以计算当前得到的第一过渡位置信息所述指示的位置与目标显示位置信息所指示的位置之间的距离,并将计算得到的距离与所述短距离阈值[ShortThresold]进行比较判断。
在其他实施例中,也可以一次性计算得到初始位置信息所指示的初始位置到目标显示位置信息所指示的目标位置之间所有的第一过渡位置信息,虚拟书本直接在计算得到的各个第一过渡位置信息执行重绘等处理,以体现虚拟书本的移动。
在一个实施例中,由于允许虚拟书本移动后实际最终显示的位置可以是一个与所述目标位置非常接近的位置,因此,只需要在所述虚拟书本移动的最新位置[BookPosition]距离所述目标位置[BookOpenPosition]小于一个短距离阈值[ShortThresold],就可以不用在移动虚拟书本。
在S208中,可以显示相应的交互界面,例如图3所示,在虚拟书本的下方区域显示移动图标按键和右上方关闭图标按键。通过上述的各个步骤,书本可以完成展开并移至用户视野中。在一个实施例中,虚拟书本的初始位置可以预先设置,基于该初始位置以及上述的移动和旋转处理,能够在用户佩戴VR设备后,根据用户需要将虚拟书本显示在用户视野的正前方,如图1所示,在虚拟现实场景中,用户视野前方的中间区域展示打开后的虚拟书本,当然,由于计算误差等因素,可能导致虚拟书本出现在视野前方的中间位置区域附近。
如图1所述,虚拟视场中显示虚拟现实场景,处于闭合状态的虚拟书本所在的位置为初始位置,经过两个第一过渡位置信息所指示的位置后,移动到达合适用户观看的目标显示位置。并且在移动过程中,虚拟书本基于不同的旋转参数旋转后呈现给用户。目标显示位置对应的目标显示位置信息、两个第一过渡位置对应的第一过渡位置信息,以及各个位置处的旋转参数的计算如上所述。
再请参见图4,在虚拟书本处于展开状态后,可以对书本进行翻页处理。在S401中,用户可以移动控制器1使得虚拟光束指向至虚拟书本的指定位置区域,例如指向虚拟书本的边缘区域,同样,VR设备2在虚拟现实场景中会显示从控制器1对应的虚拟对象中发射出虚拟光束,方便用户清楚应当如何移动控制器1以到达虚拟书本的边缘。在S402中,用户按住扳机键移动,控制器1生成并发出控制指令,可以为左移或者右移,以便于发出左右翻页的控制指令。在S403中,VR设备2更换虚拟书本的书页图像内容。还可以播放一个书本向左或者向右翻页的动画。
再请参见图5,是本发明实施例在虚拟书本处于展开状态后,对虚拟书本进行拖动处理的流程示意图。在S501中,用户移动控制器1使得虚拟控制器的虚拟光束指向关于虚拟书本的交互界面,即虚拟书本下方的移动图标按键,移动图标按键在所述交互界面的第一界面上,并按住扳机键,拖动控制器1,准备手动调整虚拟书本在虚拟现实场景中的位置。在S502中,控制器1生成相应的移动信号给VR设备2。在S503中,VR设备2记录虚拟书本移动前的起始坐标[BookStartPosition](即虚拟书本当前显示位置信息)和控制器1的起始坐标[ControllerStartPosition](即控制器1的起始控制位置信息),控制器1的起始位置坐标是指基于控制器1上的传感器检测到的数据进行计算后映射到虚拟现实场景中的坐标。在S504中,判断用户是否松开扳机键,用户若松开扳机键,则完成位移,结束移动控制。否则执行S505。在S505中,VR设备2在虚拟现实场景中移动虚拟书本,虚拟书本的坐标[BookPosition](即虚拟对象的移动位置信息)可以通过下述的公式(6)计算得到。
[BookPosition]=[BookStartPosition]+[ControllerPosition]-[ControllerStartPosition] (6)
其中,[ControllerPosition]是指用户按下扳机键移动控制器1的过程中所述控制器1的移动控制位置信息,通过上述步骤,可让虚拟书本与控制器1同步移动。
在S506中,VR设备2控制旋转虚拟书本,使所述虚拟书本指定的平面例如显示有文字内的平面在虚拟现实场景中面向用户,在一个实施例中,所述S506的具体实现可参考上述的S205和S206的描述。
再请参见图6,是本发明实施例的在虚拟书本处于展开状态后,对虚拟书本进行关闭处理的流程示意图。在S601中,用户移动控制器1使得虚拟控制器的虚拟光束指向并点击交互界面,为了关闭虚拟书本,可以指向并点击虚拟书本右上方关闭图标按键,关闭图标按键在交互界面的第二界面上,准备关闭所述虚拟书本。在S602中,控制器1生成触发信号给VR设备2,VR设备2判断该触发信号为对关闭图标按键的点击信号,确定需要关闭所述虚拟书本。在S603中,所述VR设备2关闭虚拟书本的交互界面,可以同时或者先后隐藏虚拟书本下方区域的移动图标按键和右上方区域关闭图标按键。在S604中,通过插值逐帧移动虚拟书本至目标位置,该目标位置是指所述虚拟书本的放置位置,目标位置对应的位置信息为一个放置位置信息,在一个实施例中,在执行关闭处理时所说的目标位置可以为书本最初放置时的上述初始位置[BookInitPosition],当然也可以为在虚拟现实场景中预先配置的其他放置虚拟书本的位置。此时,需要计算关闭过程中的第二过渡位置信息,所述关闭处理包括计算第二过渡位置信息,并且还可以包括在相应计算得到的第二过渡位置信息所指示的位置处和所述放置位置信息所指示的位置处,先后以一定程度合上书本的处理。
所述第二过渡位置信息的计算可参考上述公式(2)计算第一过渡位置信息的计算方式以及描述。在S605中,判断所述虚拟书本的当前位置[BookPosition](即当前所处的第二过渡位置信息所指示的位置)与所述目标位置[BookInitPosition](可以是放置位置信息所指示的位置)之间的距离是否小于一个距离阈值[ShortThresold],如果判断结果为是,则在S606中关闭虚拟书本,可以播放一段书本关闭动画,否则跳转至S604继续计算新的第二过渡位置信息,继续位移。
针对其他形式的虚拟对象,例如动物、虚拟汽车等对象,同样可以如上所述设置包括“move”移动图标按键等内容的交互界面,以便于直观的指示用户可移动虚拟的动物、汽车等。对这些虚拟对象进行的移动处理的过程中,对目标显示位置信息、各第一过渡位置信息、旋转值四元数、旋转位置处的旋转值等参数的计算均可采用上述公式(1)至(5)。如果用户通过控制器来在虚拟现实场景中拖动这些虚拟对象,则虚拟对象的移动位置信息可以采用上述的公式(6)来计算。同样在这些虚拟对象的移动过程中,可以在适当时机播放属于这些虚拟对象的特殊动画,例如上述对于虚拟书本,可播放一段书本关闭的动画,对于鸟类动物,则可以播放一段该鸟类动物鸣叫以及飞行的动画,对于汽车,则可以播放一段引擎发动或者关闭时车辆的抖动和声音的动画。
本发明实施例能够基于VR设备的位置和显示方向来对某个虚拟对象进行移动处理,将虚拟对象移动到某个位置,方便用户在当前VR设备的位置和显示方向上更好地查看虚拟对象,达到虚拟对象的显示满足VR位置和显示方向的需求,而不需要用户调整VR设备的位置和显示方向来适应虚拟对象的显示位置,更好地为用户实现了虚拟现实场景,方便、快捷地为用户显示了虚拟对象。并且通过插值算法和相应的旋转处理,使得虚拟现实场景更加真实。
再请参见图7,是本发明实施例的一种实现虚拟现实的方法的流程示意图,本发明实施例的所述方法可以由一个VR设备来执行。该VR设备可以为集成相应虚拟现实计算功能的设备,或者该VR设备为插入了具有虚拟现实计算功能的智能终端(例如智能手机)的VR盒子,或者该VR设备包括头戴式显示器、VR主机和输入设备等设备。在VR设备或者头戴式显示器上可以设置位置传感器和姿态传感器,用于采集VR设备的相关数据以得到位置信息和显示方向信息。对位置信息和显示方向信息进行处理后,可以将虚拟现实场景中的某个虚拟对象移动到一个合适的显示位置,方便用户观看该虚拟对象。
输入设备可以为一个控制器,该控制器上设置有扳机键或者触摸按键等形式的按键。控制器可以通过有线或者无线的方式与VR主机相连,在本发明实施例中,控制器也可以在虚拟现实场景中存在相应的虚拟图像,且该控制器相应的虚拟图像可以显示在头戴式显示器显示的虚拟现实场景中。
在本发明实施例中,所述实现虚拟现实的方法可以包括如下步骤。
S701:接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处。所述虚拟现实场景可以是在用户开启VR设备后,显示给用户的。对虚拟对象的触发操作可以是用户通过上述的控制器发出点击操作后产生的。
在一个实施例中,可以为所述虚拟现实场景中的虚拟对象配置碰撞体组件,所述S701可以包括:判断在所述碰撞体组件上是否检测到碰撞事件,所述碰撞体组件可以是Collider碰撞体组件,该碰撞体组件可以对用户的控制器经由对应的虚拟控制器发出的虚拟光束进行碰撞识别检测。在所述碰撞体组件上检测到碰撞事件后,接收对虚拟现实场景中显示的虚拟对象的触发操作;其中,当控制器接收到用户操作后,对所述虚拟现实场景中的所述控制器对应的虚拟对象进行虚拟控制,生成虚拟光束,该虚拟光束可以方便用户确定控制器在虚拟现实场景中所指向的位置,方便用户可以直观地移动控制器以便于碰撞体组件能够检测到虚拟光束,所述碰撞体组件在检测到该虚拟光束对象后,确定产生碰撞事件。在一个实施例中,所述根据所述碰撞事件确定对虚拟现实场景中显示的虚拟对象的触发操作是指,在检测到所述碰撞事件后,开始监测是否接收到触发信号,如果接收到触发信号,则确定出已经产生了对虚拟现实场景中显示的虚拟对象的触发操作。所述触发信号可以是用户按下控制器上的扳机键或者其他形式的按键时,由控制器生成并发送的。
S702:响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息。所述位置信息和显示方向信息可以基于上述提到的位置传感器和姿态传感器的感测数据计算得到。所述显示方向信息可参考图1所示的方向。在一个实施例中,响应所述触发操作,还可以在所述虚拟现实场景中播放关于所述虚拟对象的第一动画,例如,针对虚拟书本,可以播放一个的书本打开的动画,该动画可以是基于上一次翻开的虚拟书本的页码来生成的,经过该动画后,虚拟书本展开的页面为上一次翻开的页码对应的页面。
S703:根据所述位置信息和显示方向信息,计算得到该虚拟对象在所述虚拟现实场景中的目标显示位置信息。计算所述目标显示位置信息的计算方式可参考上述公式(1)的计算公式及其描述。
S704:在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处。在一个实施例中,可以直接将虚拟书本从所述初始位置移动到计算得到的目标显示位置信息所指示的位置,可以直接在所述目标显示位置信息所指示的位置处显示所述虚拟对象。在另一个实施例中,可以基于插值逐帧移动的方式将虚拟对象从所述初始位置移动的所述目标显示位置信息所指示的位置处。所述S704可以包括根据所述初始位置和所述目标显示位置信息,基于插值计算的方式确定第一过渡位置信息;在第一过渡位置信息所指示的位置处显示所述虚拟对象,以完成对所述虚拟对象的移动处理。第一过渡位置信息所指示的位置在所述初始位置和所述目标显示位置信息所指示的位置之间,第一过渡位置信息可以有一个、两个或者更多个。
在一个实施例中,可以基于线性插值算法对相关参数进行计算,以得到虚拟对象从初始位置移动到目标显示位置信息所指示位置之间的第一过渡位置信息。所述S704可以包括:获取开启速度信息,所述开启速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度;基于预设的线性插值算法对所述开启速度信息、初始位置所对应的初始位置信息以及所述目标显示位置信息进行计算,得到移动过程中的第一过渡位置信息;在第一过渡位置信息所指示的位置处显示所述虚拟对象,完成所述虚拟对象在所述虚拟现实场景中从初始位置到目标显示位置信息所指示位置的移动处理。可以参考上述公式(2)的计算公式以及描述来确定第一过渡位置信息,虚拟对象会在这些第一过渡位置信息所指示的位置处显示给用户。
在一个实施例中,为了达到更逼真的虚拟对象移动场景,还可以进一步确定虚拟对象在移动过程中的旋转参数,基于旋转参数来旋转虚拟对象,使得虚拟对象在最终的目标显示位置信息所指示位置处显示时,指定平面能够正面朝向用户。例如,对于虚拟书本按照计算的旋转参数进行旋转,能够在最终的显示位置处,将包含书本文字内容的一面朝向用户。在一个实施例中,所述S704还可以包括:获取所述虚拟对象在第一过渡位置信息所指示位置处朝向所述虚拟现实设备的旋转参数;根据所述旋转参数,控制所述虚拟对象的指定平面在第一过渡位置信息所指示位置处旋转。在第一过渡位置信息所指示位置处,均对虚拟对象按照旋转参数进行旋转处理。此处的第一过渡位置信息可以通过上述所提到的公式(2)进行计算。在其他实施例中,第一过渡位置信息也可以从初始位置到目标显示位置信息所指示的目标位置之间的任意一个位置点或者多个位置点对应的信息。
旋转后所述虚拟对象的指定平面的内容能够呈现给用户。所述第一过渡位置信息可以由上述涉及的相关公式计算得到。在其他实施例中,所述第一过渡位置信息也可以是初始位置和目标显示位置信息所指示位置之间的任意一个位置,例如与所述初始位置之间的距离值和与目标显示位置信息所指示位置之间的距离值相同的中间位置。
在另一个实施例中,所述S704包括:根据虚拟现实设备的位置信息和虚拟对象旋转位置信息,计算得到所述虚拟对象的指向向量;基于预置的注视旋转算法对所述指向向量和所述虚拟对象的正方向值进行计算,得到所述虚拟对象在所述旋转位置信息所指示位置处的旋转参数。也就是说,旋转参数和上述的第一过渡位置信息可以分别计算,使得虚拟对象能够一边移动一边旋转。在一个实施例中,所述虚拟对象旋转位置信息可以与上述的第一过渡位置信息对应,每一个第一过渡位置信息所对应的位置处均存在旋转参数。
所述的旋转参数可以是指上、下、左、右中一个方向或者多个方向上的旋转值,旋转参数的计算方式可参考上述公式(4)的计算公式以及相应的描述。在得到旋转参数后,旋转过程中每个第一过渡位置信息所指示位置处的中间旋转参数的计算则可以参考公式(5)以及对应的描述,在各个第一过渡位置信息所指示的位置处,按照中间旋转参数对虚拟书本进行旋转。
在一个可选的实施例中,所述方法还可以包括:S705:检测虚拟对象在移动处理后移动的过程中的位置与所述目标显示位置信息所指示的位置之间的距离;如果检测到的距离不大于距离阈值时,显示用于对所述虚拟对象进行控制的交互界面;所述交互界面包括:用于控制所述虚拟对象移动的第一界面,和/或,用于控制关闭所述虚拟对象的第二界面。在一个实施例中,对于虚拟书本而言,交互界面可以参考图3所示,其他虚拟对象均可以设置类似的交互界面,以直观地让用户了解到可以手动移动虚拟对象,并且可以直接关闭虚拟对象。
本发明实施例能够基于VR设备的位置和显示方向来对某个虚拟对象进行移动处理,将虚拟对象移动到某个位置,方便用户在当前VR设备的位置和显示方向上更好地查看虚拟对象,达到虚拟对象的显示满足VR位置和显示方向的需求,而不需要用户调整VR设备的位置和显示方向来适应虚拟对象的显示位置,更好地为用户实现了虚拟现实场景,方便、快捷地为用户显示了虚拟对象。
再请参见图8,是本发明实施例的对移动后的虚拟对象进行控制的方法的流程示意图,本发明实施例的所述方法同样由VR设备来执行,所控制的对象是经过上述实施例移动到目标显示位置信息所对应位置处的虚拟对象。本发明实施例的所述方法包括如下步骤。
S801:接收对所述虚拟对象的指定区域发出的控制操作。
S802:响应所述控制操作,根据所述指定区域的位置对所述虚拟对象进行内容显示控制。
用户可以将控制器移动指向到虚拟书本的指定位置区域,例如指向虚拟书本的边缘区域,同样,VR设备在虚拟现实场景中会显示从控制器对应的虚拟对象中发射出虚拟光束,以便于用户清楚应当如何移动控制器以便于到达虚拟书本的边缘,指向边缘区域后,用户按住扳机键移动产生控制操作,使得虚拟光束对应地左移或者右移,以便于发出左右翻页的控制指令。VR设备接收到控制指令,确认接收到了对所述虚拟对象的指定区域发出的控制操作,在S802中具体可以更换虚拟书本的书页图像内容。还可以播放一个书本向左或者向右翻页的动画。
在本发明实施例中,显示了虚拟书本等类型的虚拟对象后,可以通过设置特定区域供用户操作,以执行翻页等操作,并且将虚拟书本的边缘区域确定为指定区域,一般情况下符合用户的使用习惯,直观、方便地使用户快捷进行翻页。
再请参见图9,是本发明实施例的对移动后的虚拟对象进行控制的另一种方法的流程示意图,本发明实施例的所述方法同样由VR设备来执行,所控制的对象是经过上述实施例移动到目标显示位置信息所对应位置处的虚拟对象,并且在该虚拟对象上显示用户交互界面。本发明实施例的所述方法包括如下步骤。
S901:判断所述虚拟对象配置的碰撞体组件是否检测到对所述交互界面的控制操作。所述交互界面的表现形式可以参考图3所示。所述交互界面包括:用于控制所述虚拟对象移动的第一界面和/或用于控制关闭所述虚拟对象的第二界面。当控制器接收到用户操作后,对所述控制器在所述虚拟现实场景中的虚拟对象进行控制,生成并显示虚拟光束,在所述碰撞体组件检测到该虚拟光束后,确定检测到控制操作。若判断结果为是时,执行下述的S902,否则,继续执行S901。
S902:对所述虚拟对象进行控制。如果所述交互界面上包括图3涉及的关闭图标按键和移动图标按键,则根据控制操作所控制的交互界面的位置,对所述虚拟对象执行关闭处理或者移动处理。用户可以通过控制器发出控制指令,在虚拟现实场景中显示该控制器所对应的虚拟控制器发出的虚拟光束,方便用户直观地选择关闭图标按键还是选择移动图标按键。
在一个实施例中,所述S902包括:当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面中的第一界面的控制操作时,获取控制器的起始控制位置信息和移动控制位置信息;获取虚拟对象的当前显示位置信息;对虚拟对象的当前显示位置信息、控制器的起始控制位置信息和移动控制位置信息进行计算,得到虚拟对象的移动位置信息;将虚拟对象移动显示到所述移动位置信息所指示位置处。其中,移动位置信息的计算可参考公式(6)及其相关描述。
在手动控制虚拟装置移动的过程中,还可以同时对虚拟对象进行旋转处理。
在一个实施例中,所述S902包括:获取所述虚拟对象在所述移动位置信息所指示位置处朝向所述虚拟现实设备的旋转参数;根据所述旋转参数,控制所述虚拟对象的指定平面在移动位置信息所指示位置处旋转。所述旋转参数可以是指前述实施例中提及的旋转值四元数。在虚拟对象被用户控制移动到所述计算得到的移动位置信息所指示位置处的情况下,按照获取得到的旋转参数旋转虚拟对象,至少使得虚拟对象移到最终的显示位置后,指定平面(例如虚拟书本的带页面内容的一面)能够朝向用户。在一个实施例中,旋转参数的计算可参考上述公式(4)、(5)及其相关描述。
在一个实施例中,所述S902包括:当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面中的第二界面的控制操作时,获取虚拟对象的当前显示位置信息;获取虚拟对象的放置位置信息;获取虚拟对象的关闭速度信息,所述关闭速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度,具体是指在用户触发关闭虚拟对象时,该虚拟对象在虚拟现实场景中的移动速度,所述关闭速度信息所指示的移动速度和前述提及的开启速度信息所指示的速度可以相同也可以不相同,均可以预先设置得到;基于预设的线性插值算法对所述当前显示位置信息、所述放置位置信息、所述关闭速度信息进行计算,得到关闭过程中的第二过渡位置信息;在第二过渡位置信息所指示的位置处显示所述虚拟对象,并最终在所述放置位置信息所指示的位置处显示完全闭合后的虚拟书本,完成对所述虚拟对象的关闭处理。
关闭过程可以理解为前述的基于触发操作打开虚拟对象的反过程,可以将虚拟对象当前显示的位置(可能是由用户通过控制器控制移动后的一个显示位置)作为关闭时的初始位置,将在S701中接收到触发操作时的虚拟对象的位置作为关闭时的目标显示位置信息,可以直接将虚拟对象从关闭时的初始位置移动到关闭时的目标显示位置信息所指示的位置,也可以通过插值计算的方式,例如基于上述的公式(1)、(2)的插值方式计算第二过渡位置信息,通过逐帧移动以及旋转的方式,将虚拟对象从所述关闭时的初始位置移动到所述关闭时的目标显示位置信息所指示的位置处。另外,针对虚拟书本而言,可以判断所述虚拟书本的当前位置距离所述关闭时的目标显示位置信息所指示位置是否小于一个距离阈值,如果判断结果为是,则完成关闭书本,可以播放一段关闭动画来表示虚拟书本被关闭。
本发明实施例能够基于VR设备的位置和显示方向来对某个虚拟对象进行移动处理,将虚拟对象移动到某个位置,方便用户在当前VR设备的位置和显示方向上更好地查看虚拟对象,虚拟对象的显示满足VR位置和显示方向的需求,而不需要用户调整VR设备的位置和显示方向来适应虚拟对象的显示位置,更好地为用户实现了虚拟现实场景,方便、快捷地为用户显示了虚拟对象。
本发明实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,存储的程序指令被处理器执行时,用于实现上述图2、图4到图9相应的流程、方法。
再请参见图10,是本发明实施例的一种实现虚拟现实的装置的结构示意图,本发明实施例的所述装置可以设置在VR设备中,该装置具体包括如下模块。
接收模块1001,用于接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处;获取模块1002,用于响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息;计算模块1003,用于根据所述位置信息和显示方向信息,计算得到该虚拟对象在所述虚拟现实场景中的目标显示位置信息;处理模块1004,用于在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处。
在一个实施例中,所述虚拟现实场景中的虚拟对象配置有碰撞体组件;所述接收模块1001,用于在所述碰撞体组件上检测到碰撞事件后,接收对虚拟现实场景中显示的虚拟对象的触发操作;其中,当控制器接收到用户操作后,对所述控制器在所述虚拟现实场景中的虚拟对象进行虚拟控制,生成虚拟光束,所述碰撞体组件在检测到该虚拟光束后,确定产生碰撞事件。
在一个实施例中,所述处理模块1004,用于根据所述初始位置和所述目标显示位置信息,基于插值计算的方式确定第一过渡位置信息;在第一过渡位置信息所指示的位置处显示所述虚拟对象,以完成对所述虚拟对象的移动处理。
在一个实施例中,所述处理模块1004,用于获取开启速度信息,所述开启速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度;基于插值算法对所述开启速度信息、初始位置所对应的初始位置信息以及所述目标显示位置信息进行计算,得到移动过程中的第一过渡位置信息;在第一过渡位置信息所指示的位置处显示所述虚拟对象,以完成所述虚拟对象从所述初始位置到目标显示位置信息所指示位置的移动处理。
在一个实施例中,所述处理模块1004,用于获取所述虚拟对象在第一过渡位置信息所指示位置处朝向所述虚拟现实设备的旋转参数;根据所述旋转参数,控制所述虚拟对象的指定平面在第一过渡位置信息所指示位置处旋转。
在一个实施例中,所述处理模块1004,用于根据虚拟现实设备的位置信息和虚拟对象旋转位置信息,计算得到所述虚拟对象的指向向量;基于注视旋转算法对所述指向向量和所述虚拟对象的正方向值进行计算,得到所述虚拟对象在所述旋转位置信息所指示位置处的旋转参数。
在一个实施例中,所述装置还可以包括显示模块1005,用于检测虚拟对象在移动处理后移动的过程中的位置与所述目标显示位置信息所指示的位置之间的距离;如果检测到的距离不大于距离阈值,显示用于对所述虚拟对象进行控制的交互界面;所述交互界面包括:用于控制所述虚拟对象移动的第一界面,和/或,用于控制关闭所述虚拟对象的第二界面。
在一个实施例中,所述处理模块1004,还用于接收对所述虚拟对象的指定区域发出的控制操作;响应所述控制操作,根据所述指定区域的位置对所述虚拟对象进行内容显示控制。
在一个实施例中,所述处理模块1004,还用于当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面的控制操作时,对所述虚拟对象进行控制;其中,当控制器接收到用户操作后,对所述控制器在所述虚拟现实场景中的虚拟对象进行虚拟控制,生成并显示虚拟光束,在所述碰撞体组件检测到该虚拟光束后,确定检测到控制操作。
在一个实施例中,所述处理模块1004,用于当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面中的第一界面的控制操作时,获取控制器的起始控制位置信息和移动控制位置信息;获取虚拟对象的当前显示位置信息;对虚拟对象的当前显示位置信息,控制器的起始控制位置信息和移动控制位置信息进行计算,得到虚拟对象的移动位置信息;将虚拟对象移动显示到所述移动位置信息所指示位置处。
在一个实施例中,所述处理模块1004,用于获取所述虚拟对象在所述移动位置信息所指示位置处朝向所述虚拟现实设备的旋转参数;根据所述旋转参数,控制所述虚拟对象的指定平面在移动位置信息所指示位置处旋转。
在一个实施例中,所述处理模块1004,用于当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面中的第二界面的控制操作时,获取虚拟对象的当前显示位置信息;获取虚拟对象的放置位置信息;获取关闭速度信息,所述关闭速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度;基于插值算法对所述当前显示位置信息、所述放置位置信息、所述关闭速度信息进行计算,得到关闭过程中的第二过渡位置信息;在第二过渡位置信息所指示的位置处显示所述虚拟对象,以完成对所述虚拟对象的关闭处理。
本发明实施例中,所述装置的各个功能模块的具体实现可参考上述各个实施例中相关内容的描述,在此不赘述。
本发明实施例能够基于VR设备的位置和显示方向来对某个虚拟对象进行移动处理,将虚拟对象移动到某个位置,方便用户在当前VR设备的位置和显示方向上更好地查看虚拟对象,虚拟对象的显示满足VR位置和显示方向的需求,而不需要用户调整VR设备的位置和显示方向来适应虚拟对象的显示位置,更好地为用户实现了虚拟现实场景,方便、快捷地为用户显示了虚拟对象。
再请参见图11,是本发明实施例的一种智能设备的结构示意图,本发明实施例的所述智能设备可以为一个VR设备,该智能设备包括供电装置等结构,并且还包括头戴式显示器111、虚拟现实主机112以及输入接口113,其中,虚拟现实主机112包括存储装置1121和处理器1122。
所述头戴式显示器111可佩戴于用户头部,以显示虚拟现实场景等图像。头戴式显示器111通过柔性电路板或硬件通信接口与所述虚拟现实主机112电性相连。头戴式显示器111的佩戴方式可参考图1所示。
所述虚拟现实主机112通常集成在头戴式显示器111的内部,或者,虚拟现实主机也可以设置在头戴式显示器111之外。
所述输入接口113可以与外部的控制器通信,所述输入接口113,所述虚拟现实主机112可以通过线缆、蓝牙连接或Wi-Fi(Wireless-Fidelity,无线保真)等连接方式与外部的控制器相连。所述的控制器可以为体感手套、体感手柄、遥控器、鼠标、键盘、人眼聚焦设备等输入外设。
所述存储装置1121可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储装置1121也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),固态·硬盘(solid-state drive,SSD)等;存储装置1121还可以包括上述种类的存储器的组合。
所述处理器1122可以是中央处理器(central processing unit,CPU)。所述处理器1122还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)等。PLD可以是现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)等。
可选地,所述存储装置1121还用于存储程序指令。所述处理器1122可以调用所述程序指令,实现上述涉及的各种方法。
在一个实施例中,所述处理器1122,调用所述存储装置1121中存储的程序指令,用于接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处;响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息;根据所述位置信息和显示方向信息,计算得到该虚拟对象在所述虚拟现实场景中的目标显示位置信息;在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处。在此过程中,所述处理器1122会将处理过程中产生的虚拟对象对应的图像数据输出给所述头戴式显示器111显示,以便于用户能够看到虚拟对象的移动过程。
在一个实施例中,所述虚拟现实场景中的虚拟对象配置有碰撞体组件;所述处理器1122,在用于接收对虚拟现实场景中显示的虚拟对象的触发操作时,用于在所述碰撞体组件上检测到碰撞事件后,接收对虚拟现实场景中显示的虚拟对象的触发操作;其中,当控制器接收到用户操作后,对所述控制器在所述虚拟现实场景中的虚拟对象进行虚拟控制,生成虚拟光束,所述碰撞体组件在检测到该虚拟光束后,确定产生碰撞事件。关于所述控制器的虚拟图像、虚拟光束等都会被输出到所述头戴式显示器111中显示给用户。
在一个实施例中,所述处理器1122,在用于根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理时,用于根据所述初始位置和所述目标显示位置信息,基于插值计算的方式确定第一过渡位置信息;在第一过渡位置信息所指示的位置处显示所述虚拟对象,以完成对所述虚拟对象的移动处理。
在一个实施例中,所述处理器1122,在用于根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理时,用于获取开启速度信息,所述开启速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度;基于插值算法对所述开启速度信息、初始位置所对应的初始位置信息以及所述目标显示位置信息进行计算,得到移动过程中的第一过渡位置信息;在第一过渡位置信息所指示的位置处显示所述虚拟对象,以完成所述虚拟对象从所述初始位置到目标显示位置信息所指示位置的移动处理。
在一个实施例中,所述处理器1122,在用于根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理时,用于获取所述虚拟对象在第一过渡位置信息所指示位置处朝向所述虚拟现实设备的旋转参数;根据所述旋转参数,控制所述虚拟对象的指定平面在第一过渡位置信息所指示位置处旋转。
在一个实施例中,所述处理器1122,在用于获取所述虚拟对象在第一过渡位置信息所指示位置处朝向所述虚拟现实设备的旋转参数时,用于根据虚拟现实设备的位置信息和虚拟对象旋转位置信息,计算得到所述虚拟对象的指向向量;基于注视旋转算法对所述指向向量和所述虚拟对象的正方向值进行计算,得到所述虚拟对象在所述旋转位置信息所指示位置处的旋转参数。
在上述旋转移动的过程中,由处理器1122输出处理结果给所述头戴式显示器111,由所述头戴式显示器111将相应的位置以及旋转角度的虚拟对象显示给用户。
在一个实施例中,所述处理器1122,还用于检测虚拟对象在移动处理后移动的过程中的位置与所述目标显示位置信息所指示的位置之间的距离;如果检测到的距离不大于距离阈值,显示用于对所述虚拟对象进行控制的交互界面;所述交互界面包括:用于控制所述虚拟对象移动的第一界面,和/或,用于控制关闭所述虚拟对象的第二界面。
在一个实施例中,所述处理器1122,还用于接收对所述虚拟对象的指定区域发出的控制操作;响应所述控制操作,根据所述指定区域的位置对所述虚拟对象进行内容显示控制。处理器1122处理得到翻页后应该显示的内容信息,并输出给所述头戴式显示器111,由头戴式显示器111将翻页后应该显示的内容信息在虚拟对象上显示给用户。
在一个实施例中,所述处理器1122,还用于当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面的控制操作时,对所述虚拟对象进行控制;其中,当控制器接收到用户操作后,对所述控制器在所述虚拟现实场景中的虚拟对象进行虚拟控制,生成并显示虚拟光束,在所述碰撞体组件检测到该虚拟光束后,确定检测到控制操作。
在一个实施例中,所述处理器1122,在用于当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面的控制操作时,对所述虚拟对象进行控制时,用于当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面中的第一界面的控制操作时,获取控制器的起始控制位置信息和移动控制位置信息;获取虚拟对象的当前显示位置信息;对虚拟对象的当前显示位置信息,控制器的起始控制位置信息和移动控制位置信息进行计算,得到虚拟对象的移动位置信息;将虚拟对象移动显示到所述移动位置信息所指示位置处。
在一个实施例中,所述处理器1122,在用于当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面的控制操作时,对所述虚拟对象进行控制时,用于获取所述虚拟对象在所述移动位置信息所指示位置处朝向所述虚拟现实设备的旋转参数;根据所述旋转参数,控制所述虚拟对象的指定平面在移动位置信息所指示位置处旋转。
在一个实施例中,所述处理器1122,在用于当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面的控制操作时,对所述虚拟对象进行控制时,用于当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面中的第二界面的控制操作时,获取虚拟对象的当前显示位置信息;获取虚拟对象的放置位置信息;获取关闭速度信息,所述关闭速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度;基于插值算法对所述当前显示位置信息、所述放置位置信息、所述关闭速度信息进行计算,得到第二过渡位置信息;在第二过渡位置信息所指示的位置处显示所述虚拟对象,以完成对所述虚拟对象的关闭处理。
移动以及旋转过程中需要显示的内容仍由处理器1122处理得到,并输出给所述头戴式显示器1121显示给用户。
本发明实施例中,所述处理器1122的具体实现可参考上述各个实施例中相关内容的描述,在此不赘述。
本发明实施例能够基于VR设备的位置和显示方向来对某个虚拟对象进行移动处理,将虚拟对象移动到某个位置,方便用户在当前VR设备的位置和显示方向上更好地查看虚拟对象,虚拟对象的显示满足VR位置和显示方向的需求,而不需要用户调整VR设备的位置和显示方向来适应虚拟对象的显示位置,更好地为用户实现了虚拟现实场景,方便、快捷地为用户显示了虚拟对象。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明的部分实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (13)
1.一种实现虚拟现实的方法,其特征在于,包括:
接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处;
响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息;
根据所述位置信息和显示方向信息,计算得到该虚拟对象在所述虚拟现实场景中的目标显示位置信息;
在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处;
其中,所述根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,包括:
获取开启速度信息,所述开启速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度;
基于插值算法对所述开启速度信息、初始位置所对应的初始位置信息以及所述目标显示位置信息进行计算,得到移动过程中的第一过渡位置信息;
在第一过渡位置信息所指示的位置处显示所述虚拟对象,以完成所述虚拟对象从所述初始位置到目标显示位置信息所指示位置的移动处理。
2.如权利要求1所述的方法,其特征在于,所述虚拟现实场景中的虚拟对象配置有碰撞体组件;所述接收对虚拟现实场景中显示的虚拟对象的触发操作,包括:
在所述碰撞体组件上检测到碰撞事件后,接收对虚拟现实场景中显示的虚拟对象的触发操作;
其中,当控制器接收到用户操作后,对所述控制器在所述虚拟现实场景中的虚拟对象进行虚拟控制,生成虚拟光束,所述碰撞体组件在检测到该虚拟光束后,确定产生碰撞事件。
3.如权利要求1所述的方法,其特征在于,所述根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,包括:
获取所述虚拟对象在第一过渡位置信息所指示位置处朝向所述虚拟现实设备的旋转参数;
根据所述旋转参数,控制所述虚拟对象的指定平面在第一过渡位置信息所指示位置处旋转。
4.如权利要求3所述的方法,其特征在于,所述获取所述虚拟对象在第一过渡位置信息所指示位置处朝向所述虚拟现实设备的旋转参数,包括:
根据虚拟现实设备的位置信息和虚拟对象旋转位置信息,计算得到所述虚拟对象的指向向量;
基于注视旋转算法对所述指向向量和所述虚拟对象的正方向值进行计算,得到所述虚拟对象在所述旋转位置信息所指示位置处的旋转参数。
5.如权利要求1所述的方法,其特征在于,还包括:
检测虚拟对象在移动处理后移动的过程中的位置与所述目标显示位置信息所指示的位置之间的距离;
如果检测到的距离不大于距离阈值,显示用于对所述虚拟对象进行控制的交互界面;
所述交互界面包括:用于控制所述虚拟对象移动的第一界面,和/或,用于控制关闭所述虚拟对象的第二界面。
6.如权利要求1所述的方法,其特征在于,还包括:
接收对所述虚拟对象的指定区域发出的控制操作;
响应所述控制操作,根据所述指定区域的位置对所述虚拟对象进行内容显示控制。
7.如权利要求5所述的方法,其特征在于,还包括:
当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面的控制操作时,对所述虚拟对象进行控制;
其中,当控制器接收到用户操作后,对所述控制器在所述虚拟现实场景中的虚拟对象进行虚拟控制,生成并显示虚拟光束,在所述碰撞体组件检测到该虚拟光束后,确定检测到控制操作。
8.如权利要求7所述的方法,其特征在于,所述当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面的控制操作时,对所述虚拟对象进行控制,包括:
当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面中的第一界面的控制操作时,获取控制器的起始控制位置信息和移动控制位置信息;
获取虚拟对象的当前显示位置信息;
对虚拟对象的当前显示位置信息,控制器的起始控制位置信息和移动控制位置信息进行计算,得到虚拟对象的移动位置信息;
将虚拟对象移动显示到所述移动位置信息所指示位置处。
9.如权利要求8所述的方法,其特征在于,所述当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面的控制操作时,对所述虚拟对象进行控制,还包括:
获取所述虚拟对象在所述移动位置信息所指示位置处朝向所述虚拟现实设备的旋转参数;
根据所述旋转参数,控制所述虚拟对象的指定平面在移动位置信息所指示位置处旋转。
10.如权利要求7所述的方法,其特征在于,所述当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面的控制操作时,对所述虚拟对象进行控制,包括:
当为所述虚拟对象配置的碰撞体组件检测到对所述交互界面中的第二界面的控制操作时,获取虚拟对象的当前显示位置信息;
获取虚拟对象的放置位置信息;
获取关闭速度信息,所述关闭速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度;
基于插值算法对所述当前显示位置信息、所述放置位置信息、所述关闭速度信息进行计算,得到第二过渡位置信息;
在第二过渡位置信息所指示的位置处显示所述虚拟对象,以完成对所述虚拟对象的关闭处理。
11.一种实现虚拟现实的装置,其特征在于,包括:
接收模块,用于接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处;
获取模块,用于响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息;
计算模块,用于根据所述位置信息和显示方向信息,计算得到该虚拟对象在所述虚拟现实场景中的目标显示位置信息;
处理模块,用于在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处;
其中,所述处理模块,在用于根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理时,用于获取开启速度信息,所述开启速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度;基于插值算法对所述开启速度信息、初始位置所对应的初始位置信息以及所述目标显示位置信息进行计算,得到移动过程中的第一过渡位置信息;在第一过渡位置信息所指示的位置处显示所述虚拟对象,以完成所述虚拟对象从所述初始位置到目标显示位置信息所指示位置的移动处理。
12.一种智能设备,其特征在于,包括:存储装置和处理器,其中:
所述存储装置,用于存储程序指令;
所述处理器,调用所述存储装置中存储的程序指令,用于
接收对虚拟现实场景中显示的虚拟对象的触发操作,所述虚拟对象显示于所述虚拟现实场景的初始位置处;
响应所述触发操作,获取虚拟现实设备的位置信息和显示方向信息;
根据所述位置信息和显示方向信息,计算得到该虚拟对象在所述虚拟现实场景中的目标显示位置信息;
在所述虚拟现实场景中,根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理,将所述虚拟对象显示于所述目标显示位置信息所指示的位置处;
其中,所述处理器,在用于根据所述初始位置和所述目标显示位置信息,对所述虚拟对象进行移动处理时,用于:
获取开启速度信息,所述开启速度信息用于表示所述虚拟对象在虚拟现实场景中的移动速度;
基于插值算法对所述开启速度信息、初始位置所对应的初始位置信息以及所述目标显示位置信息进行计算,得到移动过程中的第一过渡位置信息;
在第一过渡位置信息所指示的位置处显示所述虚拟对象,以完成所述虚拟对象从所述初始位置到目标显示位置信息所指示位置的移动处理。
13.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有程序指令,该程序指令被执行时,用于实现如权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711021925.4A CN109725782B (zh) | 2017-10-27 | 2017-10-27 | 一种实现虚拟现实的方法、装置及智能设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711021925.4A CN109725782B (zh) | 2017-10-27 | 2017-10-27 | 一种实现虚拟现实的方法、装置及智能设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109725782A CN109725782A (zh) | 2019-05-07 |
CN109725782B true CN109725782B (zh) | 2021-08-24 |
Family
ID=66290688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711021925.4A Active CN109725782B (zh) | 2017-10-27 | 2017-10-27 | 一种实现虚拟现实的方法、装置及智能设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109725782B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110456907A (zh) * | 2019-07-24 | 2019-11-15 | 广东虚拟现实科技有限公司 | 虚拟画面的控制方法、装置、终端设备及存储介质 |
CN110764614B (zh) * | 2019-10-15 | 2021-10-08 | 北京市商汤科技开发有限公司 | 增强现实数据呈现方法、装置、设备及存储介质 |
CN111522439B (zh) * | 2020-04-02 | 2024-04-12 | 上海电气集团股份有限公司 | 一种虚拟样机的修订方法、装置、设备及计算机存储介质 |
CN112905007A (zh) * | 2021-01-28 | 2021-06-04 | 海信视像科技股份有限公司 | 一种虚拟现实设备及语音辅助交互方法 |
CN112817453A (zh) * | 2021-01-29 | 2021-05-18 | 聚好看科技股份有限公司 | 虚拟现实设备和虚拟现实场景中物体的视线跟随方法 |
CN112907709B (zh) * | 2021-03-31 | 2023-07-25 | 福建天晴在线互动科技有限公司 | 一种虚拟人物抓握目标物体动作的实现方法及系统 |
US11681370B2 (en) | 2021-09-16 | 2023-06-20 | Htc Corporation | Handheld controller and control method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106774872A (zh) * | 2016-12-09 | 2017-05-31 | 网易(杭州)网络有限公司 | 虚拟现实系统、虚拟现实交互方法及装置 |
CN106774821A (zh) * | 2016-11-08 | 2017-05-31 | 广州视源电子科技股份有限公司 | 基于虚拟现实技术的显示方法和系统 |
WO2017142009A1 (ja) * | 2016-02-18 | 2017-08-24 | 国立大学法人名古屋大学 | 仮想空間表示システム |
CN107145227A (zh) * | 2017-04-20 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 虚拟现实场景的交互方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102219464B1 (ko) * | 2014-05-23 | 2021-02-25 | 삼성전자주식회사 | 보안 운용 방법 및 이를 지원하는 전자 장치 |
-
2017
- 2017-10-27 CN CN201711021925.4A patent/CN109725782B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017142009A1 (ja) * | 2016-02-18 | 2017-08-24 | 国立大学法人名古屋大学 | 仮想空間表示システム |
CN106774821A (zh) * | 2016-11-08 | 2017-05-31 | 广州视源电子科技股份有限公司 | 基于虚拟现实技术的显示方法和系统 |
CN106774872A (zh) * | 2016-12-09 | 2017-05-31 | 网易(杭州)网络有限公司 | 虚拟现实系统、虚拟现实交互方法及装置 |
CN107145227A (zh) * | 2017-04-20 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 虚拟现实场景的交互方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109725782A (zh) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109725782B (zh) | 一种实现虚拟现实的方法、装置及智能设备、存储介质 | |
US11221730B2 (en) | Input device for VR/AR applications | |
JP6788719B2 (ja) | 力ベースのオブジェクト操作及び触覚的感覚のためのシステム及び方法 | |
CN110603509B (zh) | 计算机介导的现实环境中直接和间接交互的联合 | |
JP6702489B2 (ja) | ヘッドマウントディスプレイ、情報処理方法、及びプログラム | |
CN106249882B (zh) | 一种应用于vr设备的手势操控方法与装置 | |
US9685005B2 (en) | Virtual lasers for interacting with augmented reality environments | |
EP2755194B1 (en) | 3d virtual training system and method | |
JP5833750B2 (ja) | コンピュータビジョンの応用例で対話の範囲を拡大するジェスチャ制御による技術 | |
JP6335613B2 (ja) | 触覚使用可能な適合的及び多面的ディスプレイのためのシステム及び方法 | |
US10324293B2 (en) | Vision-assisted input within a virtual world | |
KR101488121B1 (ko) | 표시된 정보를 제어하기 위한 사용자 입력 장치 및 방법 | |
CN116719413A (zh) | 用于操纵环境中的对象的方法 | |
CN116719452A (zh) | 用于与用于移动虚拟环境中的虚拟对象的虚拟控件和/或示能表示交互的方法 | |
WO2014141504A1 (ja) | 3次元ユーザインタフェース装置及び3次元操作処理方法 | |
JP2000504450A (ja) | ユーザフィードバックメカニズムによるカーソル制御 | |
TWI530858B (zh) | 一種立體交互系統和立體交互方法 | |
KR20180098166A (ko) | 가상 감성 터치를 위한 시스템들 및 방법들 | |
US10649616B2 (en) | Volumetric multi-selection interface for selecting multiple objects in 3D space | |
JP2018113025A (ja) | 触覚によるコンプライアンス錯覚のためのシステム及び方法 | |
TW201606574A (zh) | 操作畫面顯示裝置、操作畫面顯示方法以及非暫時性之記錄媒體 | |
KR20190058839A (ko) | 사용자 인터페이스를 적응적으로 구성하기 위한 장치 및 방법 | |
US20200286298A1 (en) | Systems and methods for a user interaction proxy | |
KR101605740B1 (ko) | 스마트폰 사용자의 개인화된 동작인식 방법 및 이를 이용한 게임방법 | |
WO2023181549A1 (ja) | 制御装置、制御方法、プログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |