应用于移动端虚拟/增强现实的远程扩展渲染系统的制作方法

文档序号:19832115发布日期:2020-02-04 12:33阅读:199来源:国知局
应用于移动端虚拟/增强现实的远程扩展渲染系统的制作方法

本发明涉及虚拟/增强现实领域,具体是一种应用于移动端虚拟/增强现实的远程扩展渲染系统。



背景技术:

虚拟现实和增强现实技术综合利用计算机图形学、光电成像技术、传感技术、计算机仿真、人工智能等多种技术,并借助各种交互设备,旨在为用户提供一个逼真的、具有多重感知的虚拟和现实交互的世界。

近年来由于资本的介入,让虚拟现实和增强现实发展迅猛,有很多人开始进入从事这一技术领域。虚拟现实和增强现实目前主流有两种方案,一种是基于pc为主机眼镜作为配件,一种是基于移动端将眼镜和主控集成到一起。相比之下,移动端虚拟现实技术门槛低,因现在高端智能手机的普及率高,加之移动端的成本和制造难度与电脑端相比微乎其微,给用户带来的体验也是极为方便,用户甚至只需拥有一部智能手机,再简单制作一个vr盒子便能进行vr体验,所以现在移动端的虚拟现实技术普及率远远超于电脑端,并逐年上升。

移动端虚拟现实虽然高,但是用户体验却远远不如电脑端。其最主要的原因在于移动端的硬件性能远远弱于电脑端,即使是移动端的骁龙820或者三星exynos8890也完全无法和电脑端的i54590与gtx970的性能相比拟。因此移动端带来的用户体验往往不尽人意,渲染能力有限。而pc端性能强劲,画面呈现体验很好,但是由于有连接线,真实感大大降低。

htc为了解决有线连接的问题,与intel合作完成了一套无线方案,然而他们技术方向只是为了降低中间连接线换成无线的延迟,仍旧把头盔只是当成一个配件,所有的图形算法计算都在pc上。



技术实现要素:

本发明为解决背景技术中存在的问题(移动端由于渲染能力有限,用户体验不好;pc端因为有线连接,真实感欠缺,无线连接延迟高),提出了一种应用于移动端虚拟/增强现实的远程扩展渲染系统。

技术方案:

一种应用于移动端虚拟/增强现实的远程扩展渲染系统,其特征在于它包括移动端和pc端,所述移动端包括imu、头盔、手柄和显示屏,其特征在于:

所述pc端内嵌有渲染sdk,包含硬件编码器和编码模块,pc端接收移动端交互模块发来的交互数据,作用到虚拟相机使其渲染出头盔对应姿态的画面,pc端按照头盔的姿态进行渲染,并将渲染画面传输给编码模块;编码模块选择硬件编码器进行低延迟编码,并将结果通过pc端网络模块发送给移动端头盔;

所述移动端内置移动端渲染模块,移动端渲染模块负责接收pc端发来的帧数据,通过包头信息获取到位姿索引,帧类型和帧长度,通过帧类型和帧长度对随后接收的数据包进行组包操作,最后将完整的帧数据送入解码器进行低延迟硬件解码,解码后的画面与位姿索引一起使用动态时间帧补偿算法进行渲染帧补偿并提交屏幕显示。

具体的,移动端渲染模块流程:

步骤1:开启网络线程接收来自pc端的网络数据包;

步骤2:根据网络协议接收图像帧数据,读取包头信息,包括是否为帧头,帧类型,帧长度,索引等;

步骤3:根据帧类型和帧长度读取后续的数据包;

步骤4:将所有接收到的属于该帧的数据包组合为完整图像帧,进行完整性校验,如果校验通过到步骤5,如果校验没通过,将帧丢弃后回到步骤2;

步骤5:将图像帧输入到硬件解码器中进行解码,通过硬件解码低延迟配置,降低解码时间,解码后获取到可渲染的纹理;

步骤6:从移动端交互模块根据索引值获取对应的位姿数据,将位姿数据和纹理输入到动态时间帧补偿算法中提交最新的姿态补偿画面到屏幕,完成一帧的渲染更新。

优选的,所述移动端还内置交互模块,移动端交互模块负责采集头盔运行时的头部姿态数据和手柄姿态数据,并将数据进行组装,以固定频率通过无线网络发送到pc端,同时维持map建立索引缓存头部姿态数据。

具体的,移动端交互模块采集数据流程:

步骤1:移动端交互模块开启高优先级线程开始交互数据采集;

步骤2:访问imu或者6dof算法模块获取最新的旋转四元数和位移数据;

步骤3:访问外设交互驱动获取手柄旋转四元数和位移数据,按键状态数据,触摸坐标数据以及其他外设交互数据;

步骤4:为这组数据生成交互索引,交互索引保证运行时这组数据的唯一性;

步骤5:将索引数据和头部、外设的位姿等交互数据组装到网络包中,通过网络协议发送给pc端;

步骤6:发送成功后将索引和位姿数据以key-value方式缓存到map中;

步骤7:判断是否有退出请求,如果是,结束线程,清空map,如果否,则进入步骤8;

步骤8:判断当前是否可以开始下一轮更新,如果是,则回到步骤2,否则进入步骤9;

步骤9:线程等待固定时间,回到步骤8。

优选的,pc端网络模块一方面负责接收移动端头盔的交互数据,将头部位姿数据、手柄姿态数据和索引值,一同提交给渲染sdk;另一方面负责将pc端编码模块的编码后数据加入包头和索引信息,发送给移动端头盔。

具体的,pc端网络模块接收交互数据流程:

步骤1:pc端开启交互数据接收线程;

步骤2:根据网络协议接收来自移动端的交互网络数据包,如果接收超时,断开连接,等待移动端重新连接,否则进入步骤3;

步骤3:通过网络数据包解析出索引信息,头部位姿数据和手柄/外设位姿,按键/触摸等交互数据;

步骤4:将数据更新到渲染sdk,等待接收下一轮交互数据。

pc端网络模块发送帧数据流程:

步骤1:接收来自硬件编码器的帧数据和索引信息;

步骤2:将索引,帧类型,帧长度写入包头;

步骤3:判断帧长度是否超过网络协议的最大帧长度,如果超过网络协议的数据包长度上限,进入步骤4,否则进入步骤5;

步骤4:根据网络协议的数据包长度上限拆分帧数据包,每个子包包含帧序号信息;

步骤5:调用网络接口发送数据包;

步骤6:判断当前是否请求退出,如果否则回到步骤1等待下一帧数据,如果是则结束帧发送流程。

优选的,pc端编码模块负责将来自渲染sdk的纹理进行编码处理,为了避免编码流程阻塞渲染流程,编码采用异步编码的方式,渲染sdk提交一帧纹理给编码队列,切换目标纹理,进行下一帧渲染,一台pc可以有一个或多个硬件编码器,从队列获取纹理数据进行硬件编码,编码后的数据提交给网络模块发送给移动端。

具体的,pc端编码模块流程:

步骤1:创建编码队列和编码线程,避免阻塞渲染线程;

步骤2:等待渲染sdk将相机目标纹理放入编码队列,将纹理置为待编码状态,渲染sdk将相机切换到其他纹理,避免访问冲突;

步骤3:查询当前是否有可用硬编码器,如果有,则进入步骤5,否则进入步骤4;

步骤4:如果当前没有空闲的编码器,则等待编码完成;

步骤5:将纹理送入硬件编码器编码,编码完成后置为可用状态,并将编码后的帧数据以及对应的索引数据提交给网络模块;

步骤6:判断当前是否退出编码流程,如果是,则退出,否则回到步骤2。

优选的,pc端渲染sdk从pc端网络模块获取交互数据,其中头部位姿数据作用在渲染引擎的相机上,使其能够与头盔同步转动和移动,手柄位姿数据作用在手柄模型上,使其能够同步用户的操作,手柄按键数据通过api接口提供给开发者调用,实现不同的应用逻辑,同时sdk负责生成引擎相机的目标纹理,并在一帧渲染结束时sdk将相机纹理提交给pc端编码模块,并切换到另一个可用纹理开始下一帧的渲染。

具体的,pc端渲染sdk渲染流程:

步骤1:初始化相机,并生成多个目标纹理;

步骤2:创建包括手柄的外设模型;

步骤3:相机选取一个可用纹理作为目标纹理,开始渲染一帧;

步骤4:从交互模块获取最新的头部位姿数据,手柄位姿数据,交互事件,其中头部位姿数据更新到相机,手柄位姿数据更新到手柄模型,交互事件通过api回调给应用开发者;

步骤5:应用使用sdk提供的相机渲染,并使用sdk提供的手柄模型进行交互;

步骤6:渲染一帧结束后将目标纹理送入编码器;

步骤7:查询当前编码器是否存在可用状态的纹理,如果没有则等待;如果有则进入步骤8;

步骤8:判断当前是否请求退出,如果是,结束渲染sdk流程,否则回到步骤3。

本发明的有益效果

本发明方案利用移动虚拟现实和增强现实一体机的计算性能,将除了渲染图形之外的大部分图形变化算法和空间跟踪算法都放在移动端完成,从而使得移动端头盔跟pc可以协同工作。该方案可以达到完成虚拟现实和增强现实领域延时小于20ms的体验要求,同时可以大规模降低对于无线通道的实时性和带宽的要求,无线通道使用通用领域5g频段的wi-fi。本发明就是搭建一整套虚拟现实和增强现实一体机与pc端协作的系统,并配套一整套sdk工具,可供开发者在该系统上开发相应的应用。具体的:

1、本方案可以去掉pc头盔的线揽,为pc头盔的无线方案。

2、本方案可以极大程度降低应用于vr/ar的pc配置的门槛。

3、通过一体机和pc协同渲染的方式,在vr/ar移动端上屏前进行二次时间帧渲染,降低了由网络产生的高延迟,提升体验。

4、设计异步编码队列,保证pc端应用的渲染帧率不受影响,并且充分利用pc的硬件解码器,既可以支持cpu核显解码器,也可以支持显卡解码器,通过并行解码的方式最大程度提高解码效率。

6、扩展性强,渲染sdk支持多种语言编写,可内嵌主流的游戏/3d渲染引擎,pc端服务为跨平台软件,可在windows/linux等不同平台运行,同时无线网络协议可兼容tcp/udp,无线传输方案可支持wifi,移动网络,特定传输模组等。应用范围广。

7、移动端统一不同解码芯片的低延迟配置,使之在不同芯片平台的移动端头盔都获得低延迟解码的能力。

附图说明

图1为本发明的系统框架图

图2为移动端渲染模块流程图

图3为移动端交互模块采集数据流程图

图4为pc端网络模块接收交互数据流程图

图5为pc端网络模块接收交互数据流程图

图6为pc端编码模块流程图

图7为pc端渲染sdk渲染流程图

具体实施方式

下面结合实施例对本发明作进一步说明,但本发明的保护范围不限于此:

结合图1、本发明的技术方案包括移动端虚拟/增强现实系统交互模块、渲染模块,pc端网络模块,编码模块和渲染sdk组成。如框架图所示,移动端虚拟/增强系统的交互模块负责采集移动端虚拟/增强现实头盔的头部姿态数据和手柄姿态数据,通过网络发送给pc端;渲染模块通过网络获取到pc端的渲染帧,进行解码,然后通过动态时间帧补偿机制渲染到屏幕上;pc端网络模块负责接收移动头盔端的交互数据,传输给渲染sdk;渲染sdk内嵌在pc应用中,接收头盔发来的交互数据,作用到虚拟相机使其渲染出头盔对应姿态的画面,让应用按照头盔的姿态进行渲染,并将渲染画面传输给编码模块;编码模块选择合适的硬件编码器进行低延迟编码,并将结果通过网络模块发送给移动端头盔。

移动端渲染模块负责接收pc端发来的帧数据,通过包头信息获取到位姿索引,帧类型和帧长度,通过帧类型和帧长度对随后接收的数据包进行组包操作,最后将完整的帧数据送入解码器进行低延迟硬件解码,解码后的画面与位姿索引一起使用动态时间帧补偿算法进行渲染帧补偿并提交屏幕显示。

本申请提出了一种远程渲染框架,充分利用pc端的高性能图形渲染能力,通过无线的方式,传输给移动端进行二次时间帧渲染,一方面摆脱了有线的束缚,另一方面大幅降低渲染延迟,提升体验。

移动端虚拟/增强现实系统统一了不同芯片的硬件解码机制,在移动端渲染模块可以获得低延迟解码能力,获得比一般视频解码更快的解码速度,降低延迟。

结合图2、移动端渲染模块流程:

步骤1:开启网络线程接收来自pc端的网络数据包;

步骤2:根据网络协议接收图像帧数据,读取包头信息,包括是否为帧头,帧类型,帧长度,索引等;

步骤3:根据帧类型和帧长度读取后续的数据包;

步骤4:将所有接收到的属于该帧的数据包组合为完整图像帧,进行完整性校验,如果校验通过到步骤5,如果校验没通过,将帧丢弃后回到步骤2;

步骤5:将图像帧输入到硬件编码器中进行解码,通过硬件解码低延迟配置,降低解码时间,解码后获取到可渲染的纹理;

步骤6:从移动端交互模块根据索引值获取对应的位姿数据,将位姿数据和纹理输入到动态时间帧补偿算法中提交最新的姿态补偿画面到屏幕,完成一帧的渲染更新(补偿算法可以采用申请人早年的申请,cn106296566a_一种虚拟现实移动端动态时间帧补偿渲染系统及方法)。

移动端交互模块负责采集头盔运行时的头部姿态数据和手柄姿态数据,并将数据进行组装,以固定频率通过无线网络发送到pc端,同时维持map建立索引缓存头部姿态数据。移动端与pc端的交互数据同步机制,可支持三自由度/六自由度的头部位姿数据,以及单/双手柄的交互,易于扩展支持各类外设。

结合图3、交互模块采集数据流程:

步骤1:移动端交互模块开启高优先级线程开始交互数据采集;

步骤2:访问imu或者6dof算法模块获取最新的旋转四元数和位移数据;

步骤3:访问外设交互驱动获取手柄旋转四元数和位移数据,按键状态数据,触摸坐标数据以及其他外设交互数据;

步骤4:为这组数据生成交互索引,交互索引保证运行时这组数据的唯一性;

步骤5:将索引数据和头部、外设的位姿等交互数据组装到网络包中,通过网络协议发送给pc端;

步骤6:发送成功后将索引和位姿数据以key-value方式缓存到map中;

步骤7:判断是否有退出请求,如果是,结束线程,清空map,如果否,则进入步骤8;

步骤8:判断当前是否可以开始下一轮更新,如果是,则回到步骤2,否则进入步骤9;

步骤9:线程等待固定时间,回到步骤8。

pc端网络模块一方面负责接收移动端头盔的交互数据,将头部位姿数据、手柄姿态数据和索引值,一同提交给渲染sdk。另一方面负责将pc端编码模块的编码后数据加入包头和索引信息,发送给移动端头盔。

网络模块同时检测网络状态变化,当交互数据接收时间间隔超过设定时间时停止发送帧数据,并设为连接断开状态,当移动端重新连接时,同步当前渲染画面。

结合图4、pc端网络模块接收交互数据流程:

步骤1:pc端开启交互数据接收线程;

步骤2:根据网络协议接收来自移动端的交互网络数据包,如果接收超时,断开连接,等待移动端重新连接,否则进入步骤3;

步骤3:通过网络数据包解析出索引信息,头部位姿数据和手柄/外设位姿,按键/触摸等交互数据;

步骤4:将数据更新到渲染sdk,等待接收下一轮交互数据。

结合图5、pc端网络模块发送帧数据流程:

步骤1:接收来自硬件编码器的帧数据和索引信息;

步骤2:将索引,帧类型,帧长度写入包头;

步骤3:判断帧长度是否超过网络协议的最大帧长度,如果超过网络协议的数据包长度上限,进入步骤4,否则进入步骤5;

步骤4:根据网络协议的数据包长度上限拆分帧数据包,每个子包包含帧序号信息;

步骤5:调用网络接口发送数据包;

步骤6:判断当前是否请求退出,如果否回到步骤1等待下一帧数据,如果是结束帧发送流程。

通过索引机制建立交互数据与帧数据的关联,使接收到的帧数据匹配交互数据,从而让动态时间帧补偿算法可以获取帧数据的位姿与当前位姿的相对关系,从而进行时间帧补偿渲染,大幅降低了最后上屏的画面的延迟时间。

pc-移动端协同渲染中,位姿数据代表了不同时刻的移动端头盔的姿态,延迟时间定义为屏幕显示画面对应的位姿数据的采集时间与真实时间的差值,由于pc-移动端协同渲染包含了移动端采集位姿数据、网络发送到pc端,pc端接收提交渲染、渲染完成编码、编码后网络发送给移动端,移动端解码显示一系列流程,导致延迟时间较高,主要来自于网络传输延迟和编解码,本方案中,构建了pc端,移动端一致的位姿索引机制,在移动端接收到图像帧时得到对应的位姿数据索引,因此可以获得与其图像对应的位姿数据,在移动端屏幕显示前,再次获取移动端最新时刻的位姿数据,通过构建pc渲染时刻和移动端屏幕显示时刻两个位姿数据的变换矩阵,使用移动端gpu对图像帧进行二次位姿变换渲染,使图像帧的位姿变换到最新时刻的位姿,从而消除了中间由于网络传输和编解码带来的延迟,大幅降低了最后上屏画面的延迟时间。然而这种变换会导致图像帧的有效显示区域的损失,为了弥补显示区域缩小的损失,在pc端,通过采用异步编码队列保持高帧率渲染,从而使移动端发送的位姿数据能尽快渲染到纹理上,不会因编码流程而阻塞,另外利用多个硬件编码器并行编码减低了编码的等待时间,在网络层面利用5gwifi降低传输延迟,提高传输带宽,在移动端利用低延迟解码配置降低解码时间,并建立直接上屏的单缓冲机制,通过每个流程的低延迟策略,降低了整体的延迟时间,从而获得了较好的显示效果。

pc端编码模块负责将来自渲染sdk的纹理进行编码处理,为了避免编码流程阻塞渲染流程,编码采用异步编码的方式,渲染sdk提交一帧纹理给编码队列,切换目标纹理,进行下一帧渲染,一台pc可以有一个或多个硬件编码器,从队列获取纹理数据进行硬件编码,编码后的数据提交给网络模块发送给移动端。pc端渲染sdk的异步渲染功能,通过异步渲染队列,利用一个或多个硬件编码器进行编码,不阻塞应用渲染时间,另一方面允许多个编码器并行编码降低编码延迟。

结合图6、pc端编码模块流程:

步骤1:创建编码队列和编码线程,避免阻塞渲染线程;

步骤2:等待渲染sdk将相机目标纹理放入编码队列,将纹理置为待编码状态,渲染sdk将相机切换到其他纹理,避免访问冲突;

步骤3:查询当前是否有可用硬编码器,如果有,则进入步骤5,否则进入步骤4;

步骤4:如果当前没有空闲的编码器,则等待编码完成;

步骤5:将纹理送入硬件编码器编码,编码完成后置为可用状态,并将编码后的帧数据以及对应的索引数据提交给网络模块;

步骤6:判断当前是否退出编码流程,如果是,则退出,否则回到步骤2。

pc端渲染sdk从网络模块获取交互数据,其中头部位姿数据以四元数/旋转矩阵/欧拉角和位移数据方式作用在渲染引擎的相机上,使其能够与头盔同步转动和移动,手柄位姿数据作用在手柄模型上,使其能够同步用户的操作,手柄按键数据通过api接口提供给开发者调用,实现不同的应用逻辑,同时sdk负责生成引擎相机的目标纹理,并在一帧渲染结束时sdk将相机纹理提交给编码模块,并切换到另一个可用纹理开始下一帧的渲染。

结合图7、pc端渲染sdk渲染流程:

步骤1:初始化相机,并生成多个目标纹理;

步骤2:创建手柄/其他外设模型;

步骤3:相机选取一个可用纹理作为目标纹理,开始渲染一帧;

步骤4:从交互模块获取最新的头部位姿数据,手柄位姿数据,交互事件等,其中头部位姿数据更新到相机,手柄位姿数据更新到手柄模型,交互事件通过api回调给应用开发者;

步骤5:应用使用sdk提供的相机渲染,并使用sdk提供的手柄模型进行交互;

步骤6:渲染一帧结束后将目标纹理送入编码器;

步骤7:查询当前编码器是否存在可用状态的纹理,如果没有等待有可用纹理释放,如果有,则进入步骤8;

步骤8:判断当前是否请求退出,如果是,结束渲染sdk流程,否则回到步骤3。

优选的实施例中,无线网络协议可使用tcp、udp等主流网络协议。无线网络媒介,可以是wifi,移动网络(5g),或者特定的网络传输模组。pc端硬件解码器支持一个或多个,并且可使用cpu核显解码或者独立显卡解码。渲染sdk可支持opengl和directx,支持开发者直接使用,或者内嵌于主流渲染引擎。可以使用各类编解码协议,包括但不限于h264,h265等等。移动端虚拟现实/增强实现系统既可以基于android也可以基于linux。

本文中所描述的具体实施例仅仅是对本发明精神做举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

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