一种一对多虚拟现实展示方法及装置与流程

文档序号:19281738发布日期:2019-11-29 23:00阅读:215来源:国知局
一种一对多虚拟现实展示方法及装置与流程

本发明涉及虚拟现实技术领域,尤其涉及一种一对多虚拟现实展示方法及装置。



背景技术:

虚拟现实(virtualreality,vr)技术是当前正在快速发展的新兴智能硬件形态。利用计算机及显示设备模拟产生一个三维虚拟世界,将使用者的真实运动实时计算并视觉为主、其他感官为辅的方式反馈给使用者,给人更强的身临其境的沉浸感。

常见的虚拟现实应用的实时计算与反馈通常只针对单个用户。虚拟现实技术因其身临其境的沉浸感,被广泛应用于各个行业,其中教育、培训、旅游等行业因其特殊性,存在一人(操作)展示、多人观看的“一对多”展示需求。具体的,需要有一个展示者负责与场景的交互以及引导内容的展示,若干展示对象旁观展示者的操作,并且共享展示者的视野(和其他感官)。在确保展示者的正常体验的同时,带给展示对象实时的沉浸体验。

现有一对多的展示技术有两种方案,第一种现有方案是类似网络游戏的方式,本质上,是每个虚拟设备终端分别渲染了各自的虚拟场景内容,通过网络通信技术实时共享实现定义的操作指令和数据变化。使得使用者感觉访问了“同一个”虚拟场景,进行了实时的互动。该方法缺点在于:一方面在软件上需要特殊定制支持网络通信的应用内容,另一方面在硬件上每一台设备都需要较高的性能进行独立渲染。第二种现有方案采用了视频、音频信号的一拖多的分线器,使得展示对象能够完全共享展示者的视觉、听觉。这种方案的成本较低,仅需要一台高性能电脑负责展示者的虚拟现实设备进行实时计算,展示对象只需要若干台虚拟现实头盔即可。该方案的缺点在于显示画面是完全跟随展示者而非展示对象的头部动作,而两者往往是不匹配的,从而会造成展示对象的强烈眩晕感(晕动症)从而影响沉浸效果。



技术实现要素:

本发明实施例提供一种一对多虚拟现实展示方法及装置,用以解决现有技术中不支持任意的虚拟现实应用,需特殊定制应用内容,会造成展示对象的眩晕感的问题。

第一方面,本发明实施例提供一种一对多虚拟现实展示方法,包括:

实时接收虚拟现实sdk服务端通过网络通信模块传输的数据包;

对所述数据包进行解包解码,得到展示者虚拟现实设备的视场角、姿态数据和姿态数据对应的画面内容;

获取当前姿态数据,计算所述展示者虚拟现实设备的姿态数据与所述当前姿态数据的差值;

根据所述姿态数据的差值、所述展示者虚拟现实设备的视场角和所述展示对象虚拟现实设备的视场角将所述展示者虚拟现实设备的画面进行处理并实时渲染到屏幕上;其中,姿态数据的差值用于确认屏幕渲染的位置,展示者虚拟现实设备的视场角以及展示对象虚拟现实设备的视场角用于确认画面内容的视角。

上述方案,虚拟现实sdk服务端除了获取展示者虚拟现实设备的当前姿态等数据,并将虚拟现实应用左右眼的内容输出给展示对象虚拟现实设备之外,同时虚拟现实sdk服务端会将该左右眼内容实时编码成视频流,并结合其他数据(例如当前内容对应的姿态数据、当前的视频帧编号、校验码、音频数据等),通过网络通信模块广播发送给n台展示对象虚拟现实设备,每台虚拟现实设备通过网络通信模块各自独立接收到虚拟现实sdk服务端发送的网络数据包之后,独立进行解码并渲染到各自的屏幕上,由于数据包中已经包含了对应的姿态数据,每台虚拟现实设备会根据当前设备实际的姿态进行渲染,从而使得各自的展示对象以各自的姿态看到的内容会跟随展示对象的头部姿态转动而变化(而非跟随展示者的头部姿态变化),因为展示对象的动作与所见的画面是匹配的,从而避免了晕动症的产生。

可选的,所述数据包由虚拟现实sdk服务端将接收的所述展示者虚拟现实设备的姿态数据发送至虚拟现实应用后将所述虚拟现实应用输出的所述姿态数据对应的画面内容进行实时编码打包得到。

需要说明的是,虚拟现实sdk服务端运行在服务器模块上,普通的虚拟现实应用运行在服务器模块上,该应用调用虚拟现实sdk服务端,获取展示者虚拟现实设备的姿态数据。虚拟现实sdk服务端将虚拟现实应用的左右眼内容实时编码成视频流,并结合其他数据(例如当前内容对应的姿态数据、当前的视频帧编号、校验码、音频数据、视场角等等)打包成符合通信协议的数据包,通过网络通信模块广播发送给n台展示对象虚拟现实设备e。

可选的,在所述实时接收虚拟现实sdk服务端通过网络通信模块传输的数据包之前,还包括:

通过所述网络通信模块与所述虚拟现实sdk服务端配对并通信。

上述方案,网络通信模块用于实现一对多展示功能中的服务器模块和多台展示对象虚拟现实设备的组网、配对、通信功能。该模块包含通信所需的硬件部分,通信方式包括但不限于无线或有线通信的方式,并且定义了以服务器模块为服务端,展示对象虚拟现实设备为客户端的通信协议。

可选的,当网络丢包或视频流帧率大于所述展示对象虚拟现实设备刷新率时进行插帧计算。

上述方案,在网络丢包或者视频流帧率跟不上展示对象虚拟现实设备屏幕刷新率的时候还需要进行插帧计算(包括但不限于使用异步时间扭曲算法进行插帧),从而使得各自的用户(展示对象)以各自的姿态看到的内容会跟随展示对象的头部姿态转动而变化,从而避免了晕动症的产生。

第二方面,本发明实施例提供一种一对多虚拟现实展示系统,包括:

获取模块,用于实时接收虚拟现实sdk服务端通过网络通信模块传输的数据包;

处理模块,用于对所述数据包进行解包解码,得到展示者虚拟现实设备的视场角、姿态数据和姿态数据对应的画面内容;获取当前姿态数据,计算所述展示者虚拟现实设备的姿态数据与所述当前姿态数据的差值;根据所述姿态数据的差值、所述展示者虚拟现实设备的视场角和所述展示对象虚拟现实设备的视场角将所述展示者虚拟现实设备的画面进行处理并实时渲染到屏幕上;其中,姿态数据的差值用于确认屏幕渲染的位置,展示者虚拟现实设备的视场角以及展示对象虚拟现实设备的视场角用于确认画面内容的视角。

可选的,所述数据包由虚拟现实sdk服务端将接收的所述展示者虚拟现实设备的姿态数据发送至虚拟现实应用后将所述虚拟现实应用输出的所述姿态数据对应的画面内容进行实时编码打包得到。

可选的,所述处理模块还用于:

在所述实时接收虚拟现实sdk服务端通过网络通信模块传输的数据包之前,通过所述网络通信模块与所述虚拟现实sdk服务端配对并通信。

可选的,所述处理模块还用于:

当网络丢包或视频流帧率大于所述展示对象虚拟现实设备刷新率时进行插帧计算。

第三方面,本发明实施例提供一种计算机设备,包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述第一方面所述的方法。

第四方面,本发明实施例提供一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述第一方面所述的方法。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种系统架构的示意图;

图2为本发明实施例提供的一种一对多虚拟现实展示方法的流程示意图;

图3为本发明实施例提供的一种展示对象虚拟现实设备的屏幕渲染效果图;

图4为本发明实施例提供的一种展示对象虚拟现实设备的屏幕渲染效果图;

图5为本发明实施例提供的一种一对多虚拟现实展示方法的流程示意图;

图6为本发明实施例提供的一种一对多虚拟现实展示装置的结构示意图。

具体实施方式

为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。

图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构可以包括服务器模块100、网络通信模块200、展示者虚拟现实设备300和展示对象虚拟现实设备400。

其中,服务器模块100包括虚拟现实sdk服务端,服务器模块100运行了虚拟现实应用,该虚拟现实应用通过虚拟现实sdk服务端将虚拟现实场景实时计算而后反馈给展示者虚拟现实设备300。其中,服务器模块100和展示者虚拟现实设备300的连接方式可能通过网络通信模块(例如云vr方式),也可能不通过网络通信模块而直接连接(例如普通的pcvr方式)。

网络通信模块200用于实现一对多展示功能中的服务器模块100和展示对象虚拟现实设备400的组网、配对、通信功能。该模块包含通信所需的硬件部分,通信方式包括但不限于无线或有线通信的方式,并且定义了以服务器模块100为服务端,展示对象虚拟现实设备400为客户端的通信协议。

需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。

基于上述描述,图2示例性的示出了一种一对多虚拟现实展示方法的流程。

如图2所示,该流程具体包括:

步骤201,实时接收虚拟现实sdk服务端通过网络通信模块传输的数据包。

进一步的,数据包由虚拟现实sdk服务端将接收的所述展示者虚拟现实设备的姿态数据发送至虚拟现实应用后将所述虚拟现实应用输出的所述姿态数据对应的画面内容进行实时编码打包得到。

具体的,虚拟现实sdk服务端除了获取虚拟现实设备的当前姿态等数据,并将虚拟现实应用左右眼的内容输出给展示者虚拟现实设备之外,同时虚拟现实sdk服务端会将该左右眼内容实时编码成视频流,并结合其他数据(例如当前内容对应的姿态数据、当前的视频帧编号、校验码、音频数据等),通过网络通信模块广播发送给n台展示对象虚拟现实设备。

需要说明的是,在步骤201之前,展示对象虚拟现实设备通过网络通信模块与虚拟现实sdk服务端配对并通信。

进一步的,网络通信模块用于实现一对多展示功能中的服务器模块和多台展示对象虚拟现实设备的组网、配对、通信功能。该模块包含通信所需的硬件部分,通信方式包括但不限于无线或有线通信的方式,并且定义了以服务器模块为服务端,展示对象虚拟现实设备为客户端的通信协议。

步骤202,对所述数据包进行解包解码,得到展示者虚拟现实设备的视场角、姿态数据和姿态数据对应的画面内容。

具体的,每台展示对象虚拟现实设备遵照网络通信模块定义的通信协议接入网络通信模块,可与虚拟现实sdk服务端配对并通信,并实时接收到虚拟现实sdk服务端通过网络通信模块发送的广播数据包,随后进行相应的解包和解码。

进一步的,当网络丢包或视频流帧率大于所述展示对象虚拟现实设备刷新率时进行插帧计算。

具体的,在网络丢包或者视频流帧率跟不上展示对象虚拟现实设备屏幕刷新率的时候还需要进行插帧计算(包括但不限于使用异步时间扭曲算法进行插帧),从而使得各自的用户(展示对象)以各自的姿态看到的内容会跟随展示对象的头部姿态转动而变化,从而避免了晕动症的产生。

步骤203,获取当前姿态数据,计算所述展示者虚拟现实设备的姿态数据与所述当前姿态数据的差值。

步骤204,根据所述姿态数据的差值、所述展示者虚拟现实设备的视场角和所述展示对象虚拟现实设备的视场角将所述展示者虚拟现实设备的画面进行处理并实时渲染到屏幕上。

进一步的,每台展示对象虚拟现实设备进行相应的解包和解码后根据数据包中的画面内容对应姿态数据与当前设备的实际姿态、镜片畸变等信息综合起来进行上屏渲染。其中,姿态数据的差值用于确认屏幕渲染的位置,展示者虚拟现实设备的视场角以及展示对象虚拟现实设备的视场角用于确认画面内容的视角。

具体的,每台展示对象虚拟现实设备通过网络通信模块各自独立接收到虚拟现实sdk服务端发送的网络数据包之后,独立进行解码并渲染到各自的屏幕上,由于数据包中已经包含了对应的姿态数据,每台展示对象虚拟现实设备会根据当前设备实际的姿态进行渲染,从而使得展示对象以各自的姿态看到的内容会跟随展示对象的头部姿态转动而变化(而非跟随展示者的头部姿态变化),因为展示对象的动作与所见的画面是匹配的,从而避免了晕动症的产生。

为了更好的解释上述实施例,图3为本发明实施例提供的一种展示对象虚拟现实设备的屏幕渲染效果图。

图3的a图为展示对象虚拟现实设备接收到的展示者虚拟现实设备的画面内容,其中,画面内容与展示者虚拟现实设备的姿态数据一一对应。

具体的,展示者虚拟现实设备与展示对象虚拟现实设备均建立了惯性坐标系,姿态数据的计算通过四元数进行,采用四元数法计算量小,简单高效。展示对象虚拟现实设备根据姿态数据的差值将所述展示者虚拟现实设备的画面进行处理并实时渲染到屏幕上。举例来说,在视场角差值为零且网络通信模块传输无损耗的理想状态下,展示对象虚拟现实设备接收到的画面内容如图3a,此时展示对象的头部姿态相对于展示者的头部姿态水平向右旋转,此时展示对象虚拟现实设备渲染的屏幕如图3的b图,其中,预设场景部分黑屏或为本地存储的预设场景,提高用户的沉浸体验感。

为了更好的解释上述实施例,图4为本发明实施例提供的一种展示对象虚拟现实设备。

图4的a图为展示对象虚拟现实设备接收到的展示者虚拟现实设备的画面内容,展示对象虚拟现实设备计算展示者虚拟现实设备的视场角以及当前视场角将展示者虚拟现实设备的画面进行处理并实时渲染到屏幕上。在姿态数据差值为零,且网络传输无损耗的理想状态下展示对象屏幕渲染的一种实施例如图4的b图,展示者虚拟现实设备的视场角以及展示对象虚拟现实设备的视场角用于确认画面内容的视角。在本发明的一种实施例中可根据客户使用需求比如对屏幕渲染呈现效果的要求适当调整视场角差值以使用户的沉浸体验具备真实感。

为了更好的解释上述实施例,图5为本发明实施例提供的一种一对多虚拟现实展示方法的流程图。

步骤501:接收展示者虚拟现实设备的视场角、姿态数据;

步骤502:将视场角、姿态数据发送给虚拟现实应用;

步骤503:将虚拟现实应用输出的内容发送给展示者虚拟现实设备;

步骤504:将虚拟现实应用输出的内容处理后发送给网络通信模块;

具体的,虚拟现实sdk服务端除了获取展示者虚拟现实设备的当前姿态等数据,并将虚拟现实应用左右眼的内容输出给展示对象虚拟现实设备之外,同时虚拟现实sdk服务端会将该左右眼内容实时编码成视频流,并结合其他数据(例如当前内容对应的姿态数据、当前的视频帧编号、校验码、音频数据等),通过网络通信模块广播发送给n台展示对象虚拟现实设备。

步骤505:检测当前丢包率是否大于丢包率阈值,若是则执行步骤506,若否,则执行步骤509;

步骤506:切换信道;检测当前丢包率是否大于丢包率阈值,若是则继续切换信道,若否,则保持当前状态;

步骤507:判断所有信道是否已尝试,若是,则执行步骤508,若否,则返回步骤506;

步骤508:重启设备,重新连接。

基于相同的技术构思,图6示例性的示出了本发明实施例提供一种一对多虚拟现实展示装置的结构,该装置可以执行一对多虚拟现实展示方法的流程。

如图6所示,该装置可以包括:

获取模块601,用于实时接收虚拟现实sdk服务端通过网络通信模块传输的数据包;

处理模块602,用于对所述数据包进行解包解码,得到展示者虚拟现实设备的视场角、姿态数据和姿态数据对应的画面内容;获取当前姿态数据,计算所述展示者虚拟现实设备的姿态数据与所述当前姿态数据的差值;根据所述姿态数据的差值、所述展示者虚拟现实设备的视场角和所述展示对象虚拟现实设备的视场角将所述展示者虚拟现实设备的画面进行处理并实时渲染到屏幕上;其中,姿态数据的差值用于确认屏幕渲染的位置,展示者虚拟现实设备的视场角以及展示对象虚拟现实设备的视场角用于确认画面内容的视角。可选的,所述数据包由虚拟现实sdk服务端将接收的所述展示者虚拟现实设备的姿态数据发送至虚拟现实应用后将所述虚拟现实应用输出的所述姿态数据对应的画面内容进行实时编码打包得到。

可选的,所述处理模块602还用于:在所述实时接收虚拟现实sdk服务端通过网络通信模块传输的数据包之前,通过所述网络通信模块与所述虚拟现实sdk服务端配对并通信。

可选的,所述处理模块602还用于:

当网络丢包或视频流帧率大于所述展示对象虚拟现实设备刷新率时进行插帧计算。

基于相同的技术构思,本发明实施例还提供了一种计算设备,包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述一对多虚拟现实展示方法。

基于相同的技术构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述一对多虚拟现实展示方法。

最后应说明的是:本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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