360度图像加载方法、加载模块及移动终端的制作方法

文档序号:10539261阅读:313来源:国知局
360度图像加载方法、加载模块及移动终端的制作方法
【专利摘要】本发明涉及图像显示技术领域,公开了一种360度图像加载方法、加载模块及移动终端。本发明中,360度图像加载方法,包含以下步骤:第一数据层生成三维图像;第一数据层获取当前视点;第一数据层根据所述当前视点将当前视角范围内的三维图像渲染到纹理,以生成纹理图像;第一数据层将所述纹理图像的纹理标号传递至第二数据层;第二数据层根据所述纹理标号获取所述纹理图像,并对所述纹理图像进行反畸变处理。本发明提供的360度图像加载方法、加载模块及移动终端,在360度视频显示过程中,避免了第一数据层与第二数据层之间大量视频播控数据的传递,提高了程序开发的效率。
【专利说明】
360度图像加载方法、加载模块及移动终端
技术领域
[0001]本发明涉及图像显示技术领域,特别涉及一种360度图像加载方法、加载模块及移动终端。
【背景技术】
[0002]360度全景是一种基于静态图像在微机平台上能够实现虚拟现实(VR)技术。基于360度全景,人们能在电脑上进行360度全景观察,而且通过交互操作,可以实现自由浏览;从而体验三维的VR视觉世界。
[0003]目前,在基于安卓手机的VR方案中,360度全景观影方式的实现一般都是基于C++,在native层实现清染引擎。即,安卓java层将原始的二维图像传递至native层,native层将原始的二维图像渲染和绘制后,再传递至java层进行显示。在这过程中,安卓java层和native层需要传递大量JNI(Java Native Interface)标准的视频播控数据;而且,JNI标准的代码很不方便调试。因此,目前的设计模式给开发者造成了极大的不便。

【发明内容】

[0004]本发明的目的在于提供一种360度图像加载方法、加载模块及移动终端,在360度视频显示过程中,避免了两个数据层之间大量视频播控数据的传递,提高了程序开发的效率。
[0005]为解决上述技术问题,本发明的实施方式提供了一种360度图像加载方法,包含以下步骤:第一数据层生成三维图像;第一数据层获取当前视点;第一数据层根据所述当前视点将当前视角范围内的三维图像渲染到纹理,以生成纹理图像;第一数据层将所述纹理图像的纹理标号传递至第二数据层;第二数据层根据所述纹理标号获取所述纹理图像,并对所述纹理图像进行反畸变处理。
[0006]本发明的实施方式还提供了一种360度图像加载模块,包含:三维图像生成单元、视点获取单元、纹理图像生成单元、纹理图像传递单元、以及反畸变处理单元;所述三维图像生成单元用于生成三维图像;所述视点获取单元用于获取当前视点;所述纹理图像生成单元用于根据将当前视角范围内的三维图像渲染到纹理,以生成纹理图像;所述图像传递单元用于将所述纹理图像传递至第二数据层;所述反畸变处理单元用于对所述纹理图像进行反畸变处理。
[0007]本发明的实施方式还提供了一种移动终端,包含:所述的360度图像加载模块。
[0008]本发明实施方式相对于现有技术而言,在360度视频显示过程中,第一数据层生成三维图像,并仅将当前视角范围内的纹理图像的纹理标号传递至第二数据层;第二数据层根据所述纹理标号获取所述纹理图像,并对所述纹理图像进行反畸变处理。即,在360度视频显示过程中,第一数据层与第二数据层之间只需要传递纹理标号,从而避免了第一数据层与第二数据层之间大量视频播控数据的传递,提高了程序开发的效率。并且,由于在第一数据层中完成三维图像的渲染和绘制,即只有第一数据层需要使用渲染和绘制的相关数据而第二数据层无需使用,从而有效避免了第一数据层和第二数据层之间共用渲染和绘制的相关数据,简化了程序开发的复杂度。
[0009]另外,所述第一数据层是java层,所述第二数据层是native层。即,本发明可基于安卓平台实现。
【附图说明】
[0010]图1是根据本发明第一实施方式的360度图像加载方法的流程图;
[0011 ]图2是根据本发明第二实施方式的360度图像加载模块的流程图。
【具体实施方式】
[0012]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
[0013]本发明的第一实施方式涉及一种360度图像加载方法,应用于移动终端。其中,移动终端为基于安卓平台的智能手机,因此,本实施方式中的第一数据层与第二数据层分别为java层与native层。然而,本实施方式对智能手机的开发平台不做任何限制,当开发平台不同时,第一数据层与第二数据层也会随之不同。
[0014]本实施方式中的360度图像加载方法的具体流程如图1所示。
[0015]步骤10:java层生成三维图像。
[0016]首先,java层建立一个三维球体模型。
[0017]其次,java层获取移动终端内部预存的二维图像,并将该二维图像纹理贴图至该三维球体模型,以生成三维图像。具体实现方法为:java层生成一个纹理标号(如textureld),并根据纹理标号生成一个表面纹理(SurfaceTexture) ; java层通过SurfaceTexture创建一个空的Surface去接收二维图像;java层将Surface绑定到三维球体上。即,生成了三维图像。
[0018]较佳的,纹理贴图后,还可以对生成的三维图像进行光线、透明度等方面的修饰,使得最后呈现的三维图像更加真实。
[0019]步骤11:java层获取当前视点。其中,步骤11包含以下子步骤。
[°02°]子步骤111: java层检测移动终端的当前姿态。
[0021]具体而言,用户在使用移动终端时,可能会变换移动终端的空间朝向;当前姿态即反映移动终端的空间朝向。本实施方式中的当前姿态由移动终端的角速度表征。其中,移动终端的角速度包含移动终端在X、Y、Z轴方向上的三个角速度。然而,本实施方式中对表征当前姿态的具体参数不作任何限制,只要能够反映移动终端的空间朝向即可。?0022] 子步骤112: java层根据当前姿态计算当前视点。
[0023]具体而言,首先,根据移动终端在X、Y、Z轴方向上的三个角速度计算欧拉角的三个角度,三个角度分别为:yaw,表示视点绕Y轴旋转的角度;P i t ch,表示视点绕X轴旋转的角度,roll,表示视点绕Z轴旋转的角度。其次,根据欧拉角的三个角度,计算三个旋转矩阵matrix_yaw=matrix::rotateY(yaw) ;matrix_pitch=matrix::rotateX(pitch) ;matrix_roll=matrix::rotateZ(roll)。即,当前视点实质由三个旋转矩阵表示。
[0024]需要说明的是,本实施方式对当前视点的获取方式不作任何限制;于其他实施方式中,当前视点也可以为预存在移动终端内的推荐视点(表示较佳的观看角度)、或者预存在移动终端内的多个连续变化的视点。
[0025]步骤12:java层根据当前视点将当前视角范围内的三维图像渲染到纹理,以生成纹理图像生成纹理图像。其中,步骤12包含以下子步骤。
[0026]子步骤121:java层根据当前视点将当前视角范围内的三维图像渲染到帧缓存。
[0027]首先,java层创建一个帧缓存(Framebuffer object)。其次,java层根据当前视点(即三个旋转矩阵)计算出当前视角范围内的三维图像的顶点坐标,从而根据计算出的顶点坐标将当前视角范围内的三维图像渲染到帧缓存内,其中,帧缓存内的图像即为显示屏显示出来的图像。
[0028]子步骤122:java层将帧缓存中的三维图像渲染到纹理,以生成纹理图像。
[0029]首先,java层生成一个新的纹理标号(textureId_new),并根据新的纹理标号(textureld_new)生成一个表面纹理(SurfaceTexture)。其次,java层将帧缓存中的三维图像清染到表面纹理(SurfaceTexture),以生成纹理图像。
[°03°] 步骤13: java层将纹理图像的纹理标号传递至native层。
[0031 ] 即,java层将纹理图像的纹理标号textureld_new传递至native层。
[0032]步骤14:native层根据纹理标号获取纹理图像,并对纹理图像进行反畸变处理。
[0033]即,native层根据纹理图像的纹理标号(textureId_new)查找到纹理图像的实际物理位置,该实际物理位置即为上述帧缓存;native层直接对帧缓存内的纹理图像进行反畸变处理,反畸变处理后的纹理图像覆盖原来的纹理图像储存在帧缓存内。其中,反畸变处理是为了消除后续用户使用透镜观看图像时发生的畸变现象,本领域技术人员应当了解反畸变处理的具体方式,此处不再赘述。
[0034]步骤15: java层将帧缓存中的反畸变处理后的纹理图像在显示屏上进行显示。
[0035]本发明提供的360度图像加载方法,第一数据层(本实施例中为java层)实现渲染与绘制以生成三维图像;第一数据层将当前视角范围内的三维图像渲染到纹理后,并将纹理标号传递至第二数据层(本实施例中为native层),并由第二数据层实现反畸变处理。即,在360度视频显示过程中,第一数据层与第二数据层之间只需要传递纹理标号,从而避免了第一数据层与第二数据层之间大量视频播控数据的传递,提高了程序开发的效率。并且,由于在第一数据层中完成三维图像的渲染和绘制,即只有第一数据层需要使用渲染和绘制的相关数据而第二数据层无需使用,从而有效避免了第一数据层和第二数据层之间共用渲染和绘制的相关数据,简化了程序开发的复杂度。
[0036]上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
[0037]本发明第二实施方式涉及一种360度图像加载模块,如图2所示,包含:三维图像生成单元10、视点获取单元11、纹理图像生成单元12、纹理图像传递单元13、反畸变处理单元14以及显示单元15。
[0038]三维图像生成单元10用于生成三维图像。
[0039]视点获取单元11用于获取当前视点。具体而言,视点获取单元11还包含:姿态检测子单元与视点计算子单元。姿态检测子单元用于检测移动终端的当前姿态;视点计算子单元用于根据所述当前姿态计算所述当前视点。其中,姿态检测子单元包含陀螺仪。
[0040]纹理图像生成单元12用于根据将当前视角范围内的三维图像渲染到纹理,以生成纹理图像。
[0041 ]图像传递单元用于将纹理图像传递的纹理标号至反畸变处理单元14。
[0042]反畸变处理单元14用于根据纹理标号获取纹理图像,并对纹理图像进行反畸变处理。
[0043]显示单元15用于显示经反畸变处理后的纹理图像。
[0044]不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
[0045]值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单
J L ο
[0046]本发明第三实施方式涉及一种移动终端,包含第二实施方式所述的360度图像加载模块。本实施方式中的移动终端为智能手机,然并不限于此。。
[0047]其中,第二实施方式中提到的相关技术细节在本实施方式中依然有效,在第二实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
[0048]本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
【主权项】
1.一种360度图像加载方法,其特征在于,包含以下步骤: 第一数据层生成三维图像; 第一数据层获取当前视点; 第一数据层根据所述当前视点将当前视角范围内的三维图像渲染到纹理,以生成纹理图像; 第一数据层将所述纹理图像的纹理标号传递至native层; 第二数据层根据所述纹理标号获取所述纹理图像,并对所述纹理图像进行反畸变处理。2.根据权利要求1所述的360度图像加载方法,其特征在于,所述第一数据层根据所述当前视点将当前视角范围内的三维图像渲染到纹理,以生成纹理图像生成纹理图像的步骤,包含以下子步骤: 第一数据层根据所述当前视点将当前视角范围内的三维图像渲染到帧缓存; 第一数据层将所述帧缓存中的内容渲染到纹理,以生成纹理图像生成纹理图像。3.根据权利要求1所述的360度图像加载方法,其特征在于,所述获取当前视点的步骤,包含以下子步骤: 第一数据层检测移动终端的当前姿态; 第一数据层根据所述当前姿态计算所述当前视点。4.根据权利要求3所述的360度图像加载方法,其特征在于,所述当前视点至少由移动终端的角速度表征。5.根据权利要求1所述的360度图像加载方法,其特征在于,所述第二数据层对所述纹理图像进行反畸变处理的步骤之后,还包含以下步骤: 第一数据层显示经所述反畸变处理后的纹理图像。6.根据权利要求1所述的360度图像加载方法,其特征在于,所述第一数据层是java层,所述第二数据层是native层。7.—种360度图像加载模块,其特征在于,包含:三维图像生成单元、视点获取单元、纹理图像生成单元、纹理图像传递单元以及反畸变处理单元; 所述三维图像生成单元用于生成三维图像; 所述视点获取单元用于获取当前视点; 所述纹理图像生成单元用于根据将当前视角范围内的三维图像渲染到纹理,以生成纹理图像; 所述图像传递单元用于将所述纹理图像的纹理标号传递至所述反畸变处理单元; 所述反畸变处理单元根据所述纹理标号获取所述纹理图像,并对所述纹理图像进行反畸变处理。8.根据权利要求7所述的360度图像加载模块,其特征在于,所述视点获取单元还包含:姿态检测子单元与视点计算子单元; 所述姿态检测子单元用于检测移动终端的当前姿态; 所述视点计算子单元用于根据所述当前姿态计算所述当前视点。9.根据权利要求8所述的360度图像加载模块,其特征在于,所述姿态检测子单元包含陀螺仪。10.根据权利要求7所述的360度图像加载模块,其特征在于,所述360度图像显示模块还包含:显示单元; 所述显示单元用于显示经所述反畸变处理后的纹理图像。11.一种移动终端,其特征在于,包含权利要求7至10中任意一项所述的360度图像加载模块。
【文档编号】G06T15/00GK105898272SQ201511022816
【公开日】2016年8月24日
【申请日】2015年12月28日
【发明人】许小飞
【申请人】乐视致新电子科技(天津)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1