一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

渲染虚拟现实VR眼镜可视化的方法及相关设备与流程

2022-08-21 16:18:26 来源:中国专利 TAG:

渲染虚拟现实vr眼镜可视化的方法及相关设备
技术领域
1.本发明涉及人工智能技术领域,尤其涉及一种渲染虚拟现实vr眼镜可视化的方法及相关设备。


背景技术:

2.当前一些主流的vr(virtual reality,虚拟现实)一体机(如googlevr眼镜、oculus和爱奇艺奇遇vr等)都提供了对应的sdk进行vr应用开发,都比较友好的兼容unity,但是对于androidnative开发不是很友好,在native层开发业务逻辑难度大。
3.而且,对于虚拟人实时渲染,如果出现网络抖动,就会存在延迟大的问题。


技术实现要素:

4.有鉴于此,本发明实施例提供一种渲染虚拟现实vr眼镜可视化的方法及相关设备,以解决native层开发业务逻辑难度大和直播延迟大的问题。
5.为实现上述目的,本发明实施例提供如下技术方案:
6.本发明实施例第一方面公开了一种渲染虚拟现实vr眼镜可视化的方法,所述方法包括:
7.采集任意人体标定时各个点位的动捕数据,将所述动捕数据转换为骨骼数据;
8.基于所述骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据;
9.基于所述实时虚拟人数据,渲染所述虚拟人和预先设置的虚拟场景,得到实时全景视频流;
10.利用视频直播软件将所述实时全景视频流推出;
11.基于vr眼镜客户端预先安装的拉流应用apk获取的所述实时全景视频流,调用所述vr眼镜客户端预先安装的软件开发工具包sdk,使所述vr眼镜进入vr全景模式。
12.可选的,所述将所述动捕数据转换为骨骼数据,包括:
13.根据各个所述点位的动捕数据,确定各个所述点位指示的对应所述人体骨骼的关节点;
14.根据各个所述点位指示的对应所述人体骨骼的关节点,计算所述人体的各个关键骨骼长度,得到骨骼数据。
15.可选的,所述基于vr眼镜客户端预先安装的拉流应用apk获取的所述实时全景视频流,调用所述vr眼镜客户端预先安装的软件开发工具包sdk,使所述vr眼镜进入vr全景模式,包括:
16.在vr眼镜客户端启动后,基于实时消息传输协议rtmp和所述vr眼镜客户端预先安装的拉流应用apk,获取所述实时全景视频流;
17.根据经纬度的划分方式,生成预先创建的球体模型的顶点坐标、纹理坐标和索引坐标;
18.基于所述顶点坐标、所述纹理坐标和所述索引坐标,通过开放图像库opengl,将所
述实时全景视频流渲染到所述球体模型上;
19.调用所述vr眼镜客户端预先安装的软件开发工具包sdk,将所述实时全景视频流渲染到vr眼镜上,使所述vr眼镜进入vr全景模式。
20.可选的,所述基于所述顶点坐标、所述纹理坐标和所述索引坐标,通过开放图像库opengl,将所述实时全景视频流渲染到所述球体模型上,包括:
21.获取所述实时全景视频流的纹理坐标;
22.通过开放图像库opengl,加载顶点着色器和片元着色器,并编译所述顶点着色器和所述片元着色器;
23.创建program对象,将已编译的顶点着色器和已编译的片元着色器绑定到所述program对象中,并编译所述program对象,得到已编译程序;
24.获取所述program对象中的变换矩阵句柄、顶点坐标句柄和纹理坐标句柄;
25.基于所述顶点坐标、所述纹理坐标、所述索引坐标、所述变换矩阵句柄、所述顶点坐标句柄和所述纹理坐标句柄,使用所述已编译程序,将所述实时全景视频流渲染到所述球体模型上。
26.可选的,所述基于所述顶点坐标、所述纹理坐标、所述索引坐标、变换矩阵句柄、顶点坐标句柄和纹理坐标句柄,使用所述已编译程序,将所述实时全景视频流渲染到所述球体模型上,包括:
27.将所述vr眼镜的显示屏幕划分为两个分屏视口,并设置所述分屏视口的的大小;
28.根据所述变换矩阵句柄、所述顶点坐标句柄、所述纹理坐标句柄和所述分屏视口的大小,调整所述分屏视口对应的所述实时全景视频流中的所述人体的眼睛的坐标,得到更新后的实时全景视频流;
29.使用所述已编译程序,将所述顶点坐标、所述索引坐标传输至所述已编译的顶点着色器,得到最终顶点着色器,并将所述纹理坐标传输至所述已编译的片元着色器,得到最终片元着色器;
30.在所述最终顶点着色器和所述最终片元着色器中,将所述更新后的实时全景视频流渲染到所述球体模型上。
31.本发明实施例第二方面公开了一种渲染虚拟现实vr眼镜可视化的装置,所述装置包括:
32.转换模块,用于采集任意人体标定时各个点位的动捕数据,将所述动捕数据转换为骨骼数据;
33.驱动模块,用于基于所述骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据;
34.渲染模块,用于基于所述实时虚拟人数据,渲染所述虚拟人和预先设置的虚拟场景,得到实时全景视频流;
35.推流模块,用于利用视频直播软件将所述实时全景视频流推出;
36.可视化模块,用于基于vr眼镜客户端预先安装的拉流应用apk获取的所述实时全景视频流,调用所述vr眼镜客户端预先安装的软件开发工具包sdk,使所述vr眼镜进入vr全景模式。
37.可选的,所述转换模块,包括:
38.确定单元,用于根据各个所述点位的动捕数据,确定各个所述点位指示的对应所述人体骨骼的关节点;
39.计算单元,用于根据各个所述点位指示的对应所述人体骨骼的关节点,计算所述人体的各个关键骨骼长度,得到骨骼数据。
40.本发明实施例第三方面公开了一种渲染虚拟现实vr眼镜可视化的系统,所述系统包括:光学动捕主机、motionbuilder主机、虚幻引擎ue4渲染主机和vr眼镜客户端;
41.所述光学动捕主机,用于采集任意人体标定时各个点位的动捕数据,将所述动捕数据转换为骨骼数据,以及将所述骨骼数据发送至所述motionbuilder主机;
42.所述motionbuilder主机,用于接收所述骨骼数据,基于所述骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据,以及将所述实时虚拟人数据发送至所述ue4渲染主机;
43.所述ue4渲染主机,用于接收所述实时虚拟人数据,基于所述实时虚拟人数据,渲染所述虚拟人和预先设置的虚拟场景,得到实时全景视频流,利用视频直播软件将所述实时全景视频流推出;
44.所述vr眼镜客户端,用于基于vr眼镜客户端预先安装的拉流应用apk获取的所述实时全景视频流,调用所述vr眼镜客户端预先安装的软件开发工具包sdk,使所述vr眼镜进入vr全景模式。
45.本发明实施例第四方面公开了一种电子设备,所述电子设备包括处理器;
46.所述存储器,用于存储计算机程序;
47.所述处理器,用于调用并执行所述存储器中存储的计算机程序时,实现如本发明实施例第一方面中任一项所述的渲染虚拟现实vr眼镜可视化的方法。
48.本发明实施例第五方面公开了一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如本发明实施例第一方面中任一项所述的渲染虚拟现实vr眼镜可视化的方法。
49.基于上述本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的方法及相关设备,所述方法包括:采集任意人体标定时各个点位的动捕数据,将所述动捕数据转换为骨骼数据;基于所述骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据;基于所述实时虚拟人数据,渲染所述虚拟人和预先设置的虚拟场景,得到实时全景视频流;利用视频直播软件将所述实时全景视频流推出;基于vr眼镜客户端预先安装的拉流应用apk获取的所述实时全景视频流,调用所述vr眼镜客户端预先安装的软件开发工具包sdk,使所述vr眼镜进入vr全景模式。在本方案中,利用转换得到的骨骼数据,驱动虚拟人,根据得到的实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,基于获取的实时全景视频流,调用vr眼镜客户端的sdk,使vr眼镜进入vr全景模式,从而解决native层开发业务逻辑难度大和直播延迟大的问题。
附图说明
50.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
51.图1为本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的方法的流程示意图;
52.图2为本发明实施例提供的一种调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式的流程示意图;
53.图3为本发明实施例提供的一种将实时全景视频流渲染到球体模型上的流程示意图;
54.图4为本发明实施例提供的另一种将实时全景视频流渲染到球体模型上的流程示意图;
55.图5为本发明实施例提供的一种android全景视频在vr眼镜中的渲染原理图;
56.图6为本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的装置的结构示意图;
57.图7为本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的系统的结构示意图;
58.图8为本发明实施例提供的一种电子设备80的结构示意图。
具体实施方式
59.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
60.在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
61.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
62.为了便于理解本发明的技术方案,对本发明中出现的技术术语进行说明:
63.rtmp(real time messaging protocol,实时消息传输协议),是一种提供端对端传输服务的实时传输协议,同时支持在单目标广播和多目标广播网络服务中传输实时数据,而实时数据的传输则由rtcp协议来监视控制。
64.opengl es(opengl for embedded systems),是opengl三维图形api的子集,针对手机、pda和游戏主机等嵌入式设备而设计。
65.虚幻4引擎(ue4),是由epic games公司推出的一款游戏开发引擎,相比其他引擎,虚幻引擎不仅高效、全能,还能直接预览开发效果,赋予了开发商更强的能力。
66.由背景技术可知,现有的vr一体机对于androidnative开发不是很友好,在native
层开发业务逻辑难度大,而且,对于虚拟人实时渲染,容易出现网络抖动、延迟大的问题。
67.因此,本发明实施例提供一种渲染虚拟现实vr眼镜可视化的方法及相关设备,在本方案中,利用转换得到的骨骼数据,驱动虚拟人,根据得到的实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,基于获取的实时全景视频流,调用vr眼镜客户端的sdk,使vr眼镜进入vr全景模式,从而解决native层开发业务逻辑难度大和直播延迟大的问题。
68.如图1所示,为本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的方法的流程示意图。
69.需要说明的是,在本发明实施例中,该渲染虚拟现实vr眼镜可视化的方法可以为基于虚拟人实时渲染虚拟现实vr眼镜可视化的方法。
70.该渲染虚拟现实vr眼镜可视化的方法主要包括以下步骤:
71.步骤s101:采集任意人体标定时各个点位的动捕数据,将动捕数据转换为骨骼数据。
72.在具体实现步骤s101的过程中,动捕演员穿着反光材质的动捕服摆tpose进行人体标定,光学动捕主机采用红外线光学动捕方案,采集该演员人体标定时各个反光点位的动捕数据,并将该采集到的动捕数据转换为骨骼数据。
73.在实际应用中,光学动捕主机的光学镜头通过有源以太网poe(power over ethernet)网线连接交换机,用来安装动捕软件的计算机通过交换机也连接到同一局域网环境中,构成一个光学捕捉的最小系统。
74.需要说明的是,大多数光学捕捉系统的捕捉标准是:三个光学镜头同时捕获到场地中的marker点,则该marker点被光学捕捉系统识别为有效点。光学镜头本身对外发射红外光。目前市面上主流镜头的光谱谱段在850nm左右,红外光在捕捉场地中接触到反光体,产生反射,当反射强度达到捕捉的阈值后,相机将反光信息采集到软件中,识别为点。
75.如果只有一个相机,采集的是一幅2d的图像,但是场地中有多个相机,并且在使用动捕之前对相机的高度进行了标定,因此,相机的高度是已知的,所以多个相机采集的信息,在动捕软件中被还原为3d的点云信息,此时,动捕软件对这些点云信息做人体标定,也就是把一堆点位信息转换成一个人的模型,其中包括以下几个过程:
76.1、点云数据分类
77.在tpose状态下,动捕演员的身体辨识度是最高的,点位之间也不会出现重合或者距离过近导致的识别错误,在这个状态下,软件根据预制的模板,识别出采集到的点位来自于人体的什么位置,所以,需要让动捕演员摆tpose进行人体标定。
78.2、骨骼测量
79.动捕演员穿上动捕服摆tpose进行人体标定时,动捕软件根据这些点位,完成人体骨骼测量。而这一测量的依据为预设的人体模板,当动捕软件得知点位标签之后,根据这些标签所代表的关节点,软件就可以自动计算出人体各个关键骨骼的长度。
80.优选的,该软件可以为cmtracker,其中,cmtracker为一款光学动捕配套使用软件。
81.优选的,在一具体实施例中,光学动捕主机和motionbuilder主机处于同一局域网内,光学动捕主机通过网络实时将骨骼数据传输至motionbuilder主机,用于实时驱动motionbuilder主机中预先制作的虚拟人。
82.可选的,执行步骤s101将动捕数据转换为骨骼数据的过程,主要包括以下步骤:
83.步骤s11:根据各个点位的动捕数据,确定各个点位指示的对应人体骨骼的关节点。
84.步骤s12:根据各个点位指示的对应人体骨骼的关节点,计算人体的各个关键骨骼长度,得到骨骼数据。
85.步骤s102:基于骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据。
86.在具体实现步骤s102的过程中,motionbuilder主机接收光学动捕主机传输的骨骼数据,并基于骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据,也就是说,motionbuilder主机将骨骼数据通过网络传输至motionbuilder主机连通虚拟人。
87.可选的,在一具体实施例中,光学动捕主机、motionbuilder主机和虚幻引擎ue4渲染主机处于同一局域网内,motionbuilder主机通过网络将实时虚拟人数据传输至ue4渲染主机。
88.步骤s103:基于实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,得到实时全景视频流。
89.在具体实现步骤s103的过程中,ue4渲染主机接收motionbuilder主机传输的实时虚拟人数据,并基于实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,得到实时全景视频流。
90.可以理解的是,ue4渲染主机基于实时虚拟人数据,加载实时虚拟人动作和虚拟场景,承担实时渲染全景视频的任务。
91.可选的,ue4渲染主机接收motionbuilder主机传输的实时虚拟人数据后,全景相机插件采集渲染出的实时虚拟场景和虚拟人。
92.步骤s104:利用视频直播软件将实时全景视频流推出。
93.在本发明实施例中,视频直播软件包括但不限于视频实时流软件obs。
94.可选的,在一具体实施例中,将实时全景视频流推流到rtmp流媒体服务器。
95.步骤s105:基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式。
96.在步骤s105中,vr眼镜客户端封装集成一些主流眼镜平台的sdk,使vr眼镜进入vr播放模式。
97.可选的,拉流应用apk可以通过命令adb install${apkpath}进行安装。
98.可选的,在vr眼镜客户端中预先输入拉流地址。
99.在具体实现步骤s105的过程中,vr眼镜预先安装拉流应用apk和软件开发工具包sdk,基于vr眼镜客户端预先安装的拉流应用apk以及预先输入的拉流地址,获取实时全景视频流,基于该实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式,也就是使vr眼镜播放ue4渲染主机实时渲染的虚拟人和虚拟场景。
100.可选的,在一具体实施例中,vr眼镜进入vr全景模式后,监听vr眼镜上的矢量全感器的数据,将矢量全感器的数据转换为对应的矩阵,从而实现转动vr头盔时视角矩阵的计算。
101.可选的,在一具体实施例中,vr眼镜客户端轮询当前直播流(实时全景视频流)缓冲大小时间,如果缓冲大小时间超过设定的阀值(例如1.5秒),则快速播放,加快消耗缓冲
大小,当缓冲变小到指定大小(例如500毫秒),则正常播放。
102.基于本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的方法,通过采集任意人体标定时各个点位的动捕数据,将动捕数据转换为骨骼数据;基于骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据;基于实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,得到实时全景视频流;利用视频直播软件将实时全景视频流推出;基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式。在本方案中,利用转换得到的骨骼数据,驱动虚拟人,根据得到的实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,基于获取的实时全景视频流,调用vr眼镜客户端的sdk,使vr眼镜进入vr全景模式,从而解决native层开发业务逻辑难度大和直播延迟大的问题。
103.基于上述本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的方法,执行步骤s105基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式的过程,如图2所示,为本发明实施例提供的一种调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式的流程示意图,主要包括以下步骤:
104.步骤s201:在vr眼镜客户端启动后,基于实时消息传输协议rtmp和vr眼镜客户端预先安装的拉流应用apk,获取实时全景视频流。
105.在具体实现步骤s201的过程中,vr眼镜客户端预先安装拉流应用apk,在vr眼镜客户端启动后,基于实时消息传输协议rtmp和vr眼镜客户端预先安装的拉流应用apk,实时获取真人穿光学动捕服驱动虚拟人的实时全景视频流,
106.步骤s202:根据经纬度的划分方式,生成预先创建的球体模型的顶点坐标、纹理坐标和索引坐标。
107.需要说明的是,预先创建球体模型的过程包括:
108.步骤s21:创建初始球体模型,并确定球体半径、经度、经度等分数和维度等分数。
109.步骤s22:按照经度和维度将初始球体模型的球体表面分割成多个四边形,并将每个四边形分割成两个三角形。
110.步骤s23:根据经度、维度、经度等分数、维度等分数和初始球体模型的球体半径计算得到每个三角形的每个顶点坐标、每个顶点对应的索引坐标以及每个顶点对应的纹理坐标。
111.相关计算代码如下:
112.//计算顶点x,y,z坐标
113.x=(math.cos((2f*pi*s.tofloat()*s).todouble())*math.sin((pi*r.tofloat()*r).todouble())).tofloat()
114.y=-math.sin((-pi_2 pi*r.tofloat()*r).todouble()).tofloat()
115.z=(math.sin((2f*pi*s.tofloat()*s).todouble())*math.sin((pi*r.tofloat()*r).todouble())).tofloat()
116.//保存对应的纹理坐标
117.texcoords[t ]=s*s
[0118]
texcoords[t ]=r*r
[0119]
//乘以半径保存对应的顶点坐标数据
[0120]
vertexs[v ]=x*radius
[0121]
vertexs[v ]=y*radius
[0122]
vertexs[v ]=z*radius
[0123]
//计算索引坐标数据
[0124]
indices[counter ]=(r*sectorsplusone s).toshort()//(a)
[0125]
indices[counter ]=((r 1)*sectorsplusone s).toshort()//(b)
[0126]
indices[counter ]=(r*sectorsplusone (s 1)).toshort()//(c)
[0127]
indices[counter ]=(r*sectorsplusone (s 1)).toshort()//(c)
[0128]
indices[counter ]=((r 1)*sectorsplusone s).toshort()//(b)
[0129]
indices[counter ]=((r 1)*sectorsplusone (s 1)).toshort()//(d)
[0130]
s
[0131]
步骤s24:建立顶点坐标、索引坐标和纹理坐标之间的关联关系,并基于关联关系创建球体模型。
[0132]
步骤s203:基于顶点坐标、纹理坐标和索引坐标,通过开放图像库opengl,将实时全景视频流渲染到球体模型上。
[0133]
在具体实现步骤s203的过程中,基于生成的球体模型对应的顶点坐标、纹理坐标和索引坐标,通过开放图像库opengl,将ue4渲染主机渲染出的实时全景视频流渲染到球体模型上。
[0134]
可选的,执行步骤s203基于顶点坐标、纹理坐标和索引坐标,通过开放图像库opengl,将实时全景视频流渲染到球体模型上的过程,如图3所示,为本发明实施例提供的一种将实时全景视频流渲染到球体模型上的流程示意图,主要包括以下步骤:
[0135]
步骤s301:获取实时全景视频流的纹理坐标。
[0136]
步骤s302:通过开放图像库opengl,加载顶点着色器和片元着色器,并编译顶点着色器和片元着色器。
[0137]
步骤s303:创建program对象,将已编译的顶点着色器和已编译的片元着色器绑定到program对象中,并编译program对象,得到已编译程序。
[0138]
在步骤s303中,可以通过glcreateprogram创建program对象。
[0139]
在具体实现步骤s303的过程中,通过glcreateprogram创建program对象,通过glattachshader将已编译的顶点着色器和已编译的片元着色器绑定到program对象中,并编译program对象,得到已编译程序。
[0140]
步骤s304:获取program对象中的变换矩阵句柄、顶点坐标句柄和纹理坐标句柄。
[0141]
在具体实现步骤s304的过程中,通过glgetuniformlocation获取program对象中的变换矩阵句柄,通过glgetattriblocation(mprogramhandle,”a_position”)获取program对象中的顶点坐标句柄,以及通过glgetattriblocation(mprogramhandle,”a_texcoordinate”)获取program对象中的纹理坐标句柄。
[0142]
步骤s305:基于顶点坐标、纹理坐标、索引坐标、变换矩阵句柄、顶点坐标句柄和纹理坐标句柄,使用已编译程序,将实时全景视频流渲染到球体模型上。
[0143]
可以理解的是,在glsurfaceview.renderer的ondrawframe方法中使用已编译程
序并调用gldrawelement进行顶点绘制,实现将实时全景视频流渲染到球体模型上。
[0144]
需要说明的是,在本发明实施例中,创建glsurfaceview,设置glsurfaceview的renderer(渲染器),在renderer中提供三个回调方法,分别为:void onsurfacecreated(gl10 gl,eglconfig config);void onsurfacechanged(gl10 gl,intwidth,int height);void ondrawframe(gl10 gl)。
[0145]
在onsurfacecreated回调方法中,首先,创建纹理glsurfacetextureid,通过纹理id,分别创建msurfacetexture=new surfacetexture(glsurfacetextureid)和msurface=new surface(msurfacetexture),这个msurface生成后需要传递给视频播放器,用于接收全景视频数据。
[0146]
其次,通过经纬度的方式获取球体模型的顶点坐标和对应的纹理坐标,加载顶点着色器和片元着色器,并编译顶点着色器和片元着色器,通过glcreateprogram创建program,然后通过glattachshader把编译好的顶点着色器和片元着色器bind到program中并编译program。
[0147]
再其次,通过glgetuniformlocation获取program中的变换矩阵句柄,其中,变换矩阵句柄用于设置球体模型eye视角,缩放,旋转等等。
[0148]
通过glgetattriblocation(mprogramhandle,”a_position”)获取program的顶点坐标句柄,其中,顶点坐标句柄用于把球体模型的顶点坐标传给opengl底层。
[0149]
通过glgetattriblocation(mprogramhandle,”a_texcoordinate”)获取纹理句柄,纹理句柄用于把纹理坐标传递给opengl。
[0150]
在ondrawfram回调方法中,首先,把vr眼镜的屏幕平均划分为两个部分,通过glviewport设置指定视口大小。
[0151]
其次,通过gluseprogram,使用onsurfacechange回调方法中已编译程序,然后传递球体模型的顶点数据和纹理顶点数据。
[0152]
再其次,通过gldrawelements把全景视频数据(实时全景视频流)渲染到球体模型上。
[0153]
可选的,执行步骤s305基于顶点坐标、纹理坐标、索引坐标、变换矩阵句柄、顶点坐标句柄和纹理坐标句柄,使用已编译程序,将实时全景视频流渲染到球体模型上的过程,如图4所示,为本发明实施例提供的另一种将实时全景视频流渲染到球体模型上的流程示意图,主要包括以下步骤:
[0154]
步骤s401:将vr眼镜的显示屏幕划分为两个分屏视口,并设置分屏视口的的大小。
[0155]
在具体实现步骤s401的过程中,将vr眼镜的显示屏幕划分为两个分屏视口,并通过glviewport设置分屏视口的的大小。
[0156]
步骤s402:根据变换矩阵句柄、顶点坐标句柄、纹理坐标句柄和分屏视口的大小,调整分屏视口对应的实时全景视频流中的人体的眼睛的坐标,得到更新后的实时全景视频流。
[0157]
在具体实现步骤s402的过程中,根据变换矩阵句柄、顶点坐标句柄、纹理坐标句柄和分屏视口的大小,确定分屏视口对应的实时全景视频流中的人体的眼睛的坐标,并进行调整,得到更新后的实时全景视频流。
[0158]
步骤s403:使用已编译程序,将顶点坐标、索引坐标传输至已编译的顶点着色器,
得到最终顶点着色器,并将纹理坐标传输至已编译的片元着色器,得到最终片元着色器。
[0159]
在具体实现步骤s403的过程中,使用已编译程序,通过开放图像库opengl的相关接口,将顶点坐标、索引坐标传输至已编译的顶点着色器,得到最终顶点着色器,并将纹理坐标传输至已编译的片元着色器,得到最终片元着色器。
[0160]
可以理解的是,在glsurfaceview.renderer的onsurfacechange方法中使用已编译程序并调用gluseprogram,通过开放图像库opengl的相关接口,将顶点坐标、索引坐标传输至已编译的顶点着色器,得到最终顶点着色器,并将纹理坐标传输至已编译的片元着色器,得到最终片元着色器,实现球体的顶点数据、索引数据以及纹理数据的传递。
[0161]
步骤s404:在最终顶点着色器和最终片元着色器中,将更新后的实时全景视频流渲染到球体模型上。
[0162]
步骤s204:调用vr眼镜客户端预先安装的软件开发工具包sdk,将实时全景视频流渲染到vr眼镜上,使vr眼镜进入vr全景模式。
[0163]
在具体实现步骤s204的过程中,vr眼镜预先安装软件开发工具包sdk,调用vr眼镜客户端预先安装的软件开发工具包sdk,将实时全景视频流渲染到vr眼镜上,使vr眼镜进入vr全景模式,也就是使vr眼镜播放ue4渲染主机实时渲染的虚拟人和虚拟场景。
[0164]
如图5所示,为本发明实施例提供的一种android全景视频在vr眼镜中的渲染原理图。
[0165]
在实际应用中,把渲染逻辑部分放到了java层,把驱动vr眼镜工作部分放到native层,然后通过jni方式把渲染出来的数据(surface)传到native层,从而实现android全景视频在vr眼镜中的渲染。
[0166]
基于本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的方法,通过基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式,从而解决native层开发业务逻辑难度大和直播延迟大的问题。
[0167]
与上述本发明实施例图1示出的一种渲染虚拟现实vr眼镜可视化的方法相对应,本发明实施例还对应提供了一种渲染虚拟现实vr眼镜可视化的装置,如图6所示,该渲染虚拟现实vr眼镜可视化的装置包括:转换模块61、驱动模块62、渲染模块63、推流模块64和可视化模块65。
[0168]
转换模块61,用于采集任意人体标定时各个点位的动捕数据,将动捕数据转换为骨骼数据。
[0169]
驱动模块62,用于基于骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据。
[0170]
渲染模块63,用于基于实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,得到实时全景视频流。
[0171]
推流模块64,用于利用视频直播软件将实时全景视频流推出。
[0172]
可视化模块65,用于基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式。
[0173]
可选的,基于上述图6示出的渲染虚拟现实vr眼镜可视化的装置,所述转换模块61,包括:确定单元和计算单元。
[0174]
确定单元,用于根据各个点位的动捕数据,确定各个点位指示的对应人体骨骼的
关节点。
[0175]
计算单元,用于根据各个点位指示的对应人体骨骼的关节点,计算人体的各个关键骨骼长度,得到骨骼数据。
[0176]
需要说明的是,上述本发明实施例公开的渲染虚拟现实vr眼镜可视化的装置中的各个模块具体的原理和执行过程,与上述本发明实施渲染虚拟现实vr眼镜可视化的方法相同,可参见上述本发明实施例公开的渲染虚拟现实vr眼镜可视化的方法中相应的部分,这里不再进行赘述。
[0177]
基于本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的装置,通过采集任意人体标定时各个点位的动捕数据,将动捕数据转换为骨骼数据;基于骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据;基于实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,得到实时全景视频流;利用视频直播软件将实时全景视频流推出;基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式。在本方案中,利用转换得到的骨骼数据,驱动虚拟人,根据得到的实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,基于获取的实时全景视频流,调用vr眼镜客户端的sdk,使vr眼镜进入vr全景模式,从而解决native层开发业务逻辑难度大和直播延迟大的问题。
[0178]
可选的,基于上述图6示出的渲染虚拟现实vr眼镜可视化的装置,所述可视化模块65,包括:
[0179]
获取单元,用于在vr眼镜客户端启动后,基于实时消息传输协议rtmp和vr眼镜客户端预先安装的拉流应用apk,获取实时全景视频流。
[0180]
生成单元,用于根据经纬度的划分方式,生成预先创建的球体模型的顶点坐标、纹理坐标和索引坐标。
[0181]
渲染单元,用于基于顶点坐标、纹理坐标和索引坐标,通过开放图像库opengl,将实时全景视频流渲染到球体模型上。
[0182]
可视化单元,用于调用vr眼镜客户端预先安装的软件开发工具包sdk,将实时全景视频流渲染到vr眼镜上,使vr眼镜进入vr全景模式。
[0183]
可选的,基于上述图6示出的渲染虚拟现实vr眼镜可视化的装置,所述渲染单元,包括:
[0184]
第一获取子单元,用于获取实时全景视频流的纹理坐标。
[0185]
加载与编译子单元,用于通过开放图像库opengl,加载顶点着色器和片元着色器,并编译顶点着色器和片元着色器。
[0186]
绑定与编译子单元,用于创建program对象,将已编译的顶点着色器和已编译的片元着色器绑定到program对象中,并编译program对象,得到已编译程序。
[0187]
第二获取子单元,用于获取program对象中的变换矩阵句柄、顶点坐标句柄和纹理坐标句柄。
[0188]
渲染子单元,用于基于顶点坐标、纹理坐标、索引坐标、变换矩阵句柄、顶点坐标句柄和纹理坐标句柄,使用已编译程序,将实时全景视频流渲染到球体模型上。
[0189]
可选的,基于上述图6示出的渲染虚拟现实vr眼镜可视化的装置,所述渲染子单元,具体用于:
[0190]
将vr眼镜的显示屏幕划分为两个分屏视口,并设置分屏视口的的大小;根据变换矩阵句柄、顶点坐标句柄、纹理坐标句柄和分屏视口的大小,调整分屏视口对应的实时全景视频流中的人体的眼睛的坐标,得到更新后的实时全景视频流;使用已编译程序,将顶点坐标、索引坐标传输至已编译的顶点着色器,得到最终顶点着色器,并将纹理坐标传输至已编译的片元着色器,得到最终片元着色器;在最终顶点着色器和最终片元着色器中,将更新后的实时全景视频流渲染到球体模型上。
[0191]
基于本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的装置,通过基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式,从而解决native层开发业务逻辑难度大和直播延迟大的问题。
[0192]
与上述本发明实施例示出的一种渲染虚拟现实vr眼镜可视化的方法相对应,本发明实施例还对应提供了一种渲染虚拟现实vr眼镜可视化的系统,如图7所示,该渲染虚拟现实vr眼镜可视化的系统包括:光学动捕主机71、motionbuilder主机72、虚幻引擎ue4渲染主机73和vr眼镜客户端74。
[0193]
光学动捕主机71,用于采集任意人体标定时各个点位的动捕数据,将动捕数据转换为骨骼数据,以及将骨骼数据发送至motionbuilder主机72。
[0194]
motionbuilder主机72,用于接收骨骼数据,基于骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据,以及将实时虚拟人数据发送至ue4渲染主机73。
[0195]
ue4渲染主机73,用于接收实时虚拟人数据,基于实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,得到实时全景视频流,利用视频直播软件将实时全景视频流推出。
[0196]
vr眼镜客户端74,用于基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式。
[0197]
基于本发明实施例提供的一种渲染虚拟现实vr眼镜可视化的系统,通过采集任意人体标定时各个点位的动捕数据,将动捕数据转换为骨骼数据;基于骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据;基于实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,得到实时全景视频流;利用视频直播软件将实时全景视频流推出;基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式。在本方案中,利用转换得到的骨骼数据,驱动虚拟人,根据得到的实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,基于获取的实时全景视频流,调用vr眼镜客户端的sdk,使vr眼镜进入vr全景模式,从而解决native层开发业务逻辑难度大和直播延迟大的问题。
[0198]
基于上述本发明实施例公开的渲染虚拟现实vr眼镜可视化的系统,上述各个模块可以通过一种由处理器和存储器构成的硬件设备实现。具体为上述各个模块作为程序单元存储于存储器中,由处理器执行存储在存储器中的上述程序单元来实现渲染虚拟现实vr眼镜可视化。
[0199]
其中,处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现渲染虚拟现实vr眼镜可视化。
[0200]
本发明实施例提供了一种计算机存储介质,存储介质包括存储渲染虚拟现实vr眼镜可视化程序,其中,程序被处理器执行时实现如权利要求1至5中任一项的渲染虚拟现实
vr眼镜可视化的方法。
[0201]
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行图1公开的渲染虚拟现实vr眼镜可视化的方法。
[0202]
本发明实施例提供了一种电子设备,如图8所示,为本发明实施例提供的一种电子设备80的结构示意图。
[0203]
本发明实施例中的电子设备可以是服务器、pc、pad、手机等。
[0204]
该电子设备包括至少一个处理器801,以及与处理器连接的至少一个存储器802,以及总线803。
[0205]
处理器801、存储器802通过总线803完成相互间的通信。处理器801,用于执行存储器802中存储的程序。
[0206]
存储器802,用于存储程序,该程序至少用于:采集任意人体标定时各个点位的动捕数据,将动捕数据转换为骨骼数据;基于骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据;基于实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,得到实时全景视频流;利用视频直播软件将实时全景视频流推出;基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式。
[0207]
本技术还提供了一种计算机程序产品,当在电子设备上执行时,适于执行初始化有如下方法步骤的程序:
[0208]
采集任意人体标定时各个点位的动捕数据,将动捕数据转换为骨骼数据;基于骨骼数据,驱动预先制作的虚拟人,得到实时虚拟人数据;基于实时虚拟人数据,渲染虚拟人和预先设置的虚拟场景,得到实时全景视频流;利用视频直播软件将实时全景视频流推出;基于vr眼镜客户端预先安装的拉流应用apk获取的实时全景视频流,调用vr眼镜客户端预先安装的软件开发工具包sdk,使vr眼镜进入vr全景模式。
[0209]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0210]
在一个典型的配置中,设备包括一个或多个处理器(cpu)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
[0211]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
[0212]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、
数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0213]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0214]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0215]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献