VR视频显示方法、装置及终端与流程

文档序号:14718035发布日期:2018-06-16 02:02阅读:443来源:国知局
VR视频显示方法、装置及终端与流程

本发明涉及视频技术领域,特别涉及一种VR视频显示方法、装置及终端。



背景技术:

目前,近年来,随着VR(Virtual Reality,虚拟现实技术)的风起云涌,VR概念也被越来越多的被认知,VR产品也层出不穷,VR已经逐渐进入到人们的生活当中。而VR全景视频作为一个全新的视频市场,其巨大的商业价值不言而喻,作为当前热门研究的VR技术,其重要性也可见一斑。然而相关技术中IOS操作系统(由苹果公司开发的移动操作系统)的手机上却无法正常显示VR全景源视频,用户在通过IOS操作系统的手机观看VR全景源视频时,视频帧看上去常常是扭曲的或者断层的,从而严重影响用户体验。



技术实现要素:

有鉴于此,本发明实施例所要解决的一个技术问题如何提供一种VR视频显示方法、装置及终端,可以在IOS操作系统上正常播放VR全景源视频,使得使用IOS操作系统的用户能够获得正常的VR体验,而不再看到断层的或者扭曲的VR视频帧。技术方案如下:

本发明提供了一种VR视频显示方法,包括:

获取VR全景源视频;

通过苹果图形库上下文对象构建图形处理程序的运行环境,并运行所述图形处理程序;

通过图形库纹理加载方法,将所述VR全景源视频加载到所述图形处理程序;

针对所述VR全景源视频中的每一帧,通过所述图形处理程序将所述VR全景源视频的视频帧映射至球面模型;

获取当前的角度信息;

从所述球面模型中选取所述角度信息所对应的局部平面图;

对所述局部平面图渲染并显示。

可选地,所述针对所述VR全景源视频中的每一帧,通过所述图形处理程序将所述VR全景源视频的视频帧映射至球面模型,包括:

使用所述图形处理程序,构建所述球面模型;

将所述VR全景源视频的视频帧渲染至所述球面模型上。

可选地,所述使用所述图形处理程序,构建所述球面模型,包括:

确定用于构建所述球面模型的三角形的相关参数,其中,所述相关参数用于指示所述三角形的数目;

根据所述相关参数确定用于构建所述球面模型的所有三角形中各三角形的顶点的球坐标;

根据所述各三角形的顶点的球坐标,计算所述各三角形的顶点的三维坐标;

在所述图形处理程序中,根据所述各三角形的顶点的三维坐标构建所述球面模型。

可选地,所述将所述VR全景源视频的视频帧渲染至所述球面模型上,包括:

根据所述各三角形的顶点的三维坐标,计算所述各三角形的顶点在所述VR全景源视频的视频帧上对应的映射点的二维坐标,将所述映射点的二维坐标作为所述映射点的纹理坐标;

将所述映射点的像素值确定为所述映射点的纹理坐标所对应的像素值;

将所述映射点的纹理坐标所对应的像素值渲染至所述映射点对应的顶点上。

可选地,所述对所述局部平面图渲染并显示,包括:

计算用于显示所述局部平面图的屏幕上各点的坐标值;

确定所述局部平面图上与所述屏幕上各点的坐标值相应的纹理坐标;

通过所述视图控件,将所述相应的纹理坐标所对应的像素值渲染至所述屏幕上各点。

可选地,所述从所述球面模型中选取所述角度信息所对应的局部平面图,包括:

根据所述角度信息,确定与所述角度信息相应的视图矩阵;

根据所述视图矩阵从所述球面模型中选取所述角度信息所对应的局部平面图。

本发明还提供了一种VR视频显示装置,包括:

第一获取模块,用于获取VR全景源视频;

第一处理模块,用于通过苹果图形库上下文对象构建图形处理程序的运行环境,并运行所述图形处理程序;

加载模块,用通过图形库纹理加载方法,将所述VR全景源视频加载到所述图形处理程序;

映射模块,用于针对所述VR全景源视频中的每一帧,通过所述图形处理程序将所述VR全景源视频的视频帧映射至球面模型;

第二获取模块,用于获取当前的角度信息;

选取模块,用于从所述球面模型中选取所述角度信息所对应的局部平面图;

第二处理模块,用于对所述局部平面图渲染并显示。

可选地,所述映射模块包括:

构建子模块,用于使用所述图形处理程序,构建所述球面模型;

渲染子模块,用于将所述VR全景源视频的视频帧渲染至所述球面模型上。

可选地,所述构建子模块包括:

第一确定单元,用于确定用于构建所述球面模型的三角形的相关参数,其中,所述相关参数用于指示所述三角形的数目;

第二确定单元,用于根据所述相关参数确定用于构建所述球面模型的所有三角形中各三角形的顶点的球坐标;

第一计算单元,用于根据所述各三角形的顶点的球坐标,计算所述各三角形的顶点的三维坐标;

构建单元,用于在所述图形处理程序中,根据所述各三角形的顶点的三维坐标构建所述球面模型。

可选地,所述渲染子模块包括:

第二计算单元,用于根据所述各三角形的顶点的三维坐标,计算所述各三角形的顶点在所述VR全景源视频的视频帧上对应的映射点的二维坐标,将所述映射点的二维坐标作为所述映射点的纹理坐标;

第三确定单元,用于将所述映射点的像素值确定为所述映射点的纹理坐标所对应的像素值;

渲染单元,用于将所述映射点的纹理坐标所对应的像素值渲染至所述映射点对应的顶点上。

可选地,所述第二处理模块包括:

计算子模块,用于计算用于显示所述局部平面图的屏幕上各点的坐标值;

第一确定子模块,用于确定所述局部平面图上与所述屏幕上各点的坐标值相应的纹理坐标;

渲染子模块,用于通过所述视图控件,将所述相应的纹理坐标所对应的像素值渲染至所述屏幕上各点。

可选地,所述选取模块包括:

第二确定子模块,用于根据所述角度信息,确定与所述角度信息相应的视图矩阵;

选取子模块,用于根据所述视图矩阵从所述球面模型中选取所述角度信息所对应的局部平面图。

本发明还提供了一种终端,包括:如上述技术方案中任一项所述VR视频显示装置。

本发明的实施例提供的技术方案可以包括以下有益效果:

在通过IOS操作系统获得VR全景源视频后,通过在IOS操作系统上构建图形处理程序的运行环境并运行图形处理程序,并将VR全景源视频加载到图形处理程序中,可利用图形处理程序将VR全景源视频的视频帧通过纹理映射至球面模型上,进而在获取当前的角度信息后,可从球面模型中自动选取角度信息所对应的局部平面图,并对局部平面图渲染和显示,从而在IOS操作系统上通过图形处理程序实现将视频帧映射至球面模型上和局部平面图的选取,进而实现在IOS操作系统上正常播放VR全景源视频,使得使用IOS操作系统的用户能够获得正常的VR体验,而不再看到断层的或者扭曲的VR视频帧。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1是根据一示例性实施例示出的一种VR视频显示方法的流程图。

图2是根据一示例性实施例示出的另一种VR视频显示方法的流程图。

图3是根据一示例性实施例示出的又一种VR视频显示方法的流程图。

图4是根据一示例性实施例示出的再一种VR视频显示方法的流程图。

图5A是根据一示例性实施例示出的再一种VR视频显示方法的流程图。

图5B是根据一示例性实施例示出的再一种VR视频显示方法的流程图。

图6是根据一示例性实施例示出的一种VR视频显示装置的框图。

图7是根据一示例性实施例示出的另一种VR视频显示装置的框图。

图8是根据一示例性实施例示出的又一种VR视频显示装置的框图。

图9是根据一示例性实施例示出的一种球坐标的获取示意图。

图10是根据一示例性实施例示出的一种构建球面模型的三角形的示意图。

图11是根据一示例性实施例示出的一种使用三角形构建球面模型的示意图。

具体实施方式

现在将参照附图1至11来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。

计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

目前,安装有IOS操作系统的iPhone手机上无法正常播放VR全景源视频,在通过iPhone手机播放VR全景源视频时,视频中的视频帧看上去常常是扭曲的或者断层的,从而严重影响用户体验,使得使用iPhone手机的用户无法获得真实的VR体验,因而,如何能够在iPhone的手机上播放VR全景源视频就成为了亟待解决的问题。

而本申请通过IOS操作系统上运行OpenGL(Open Graphics Library,是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口)模块实现可将二维的VR视频帧映射至球面模型上,并从球面模型中选取局部平面图,以实现在IOS操作系统上正常播放VR全景源视频,使IOS操作系统的用户能够获得正常

如图1所示,本发明实施例中的VR视频显示方法可以包括:步骤S101至步骤S108,其中,

在步骤S101中,获取VR全景源视频。

获取VR全景源视频时,可通过IOS操作系统中的网络服务接口获取,而网络服务接口可以是webserver接口。具体地:可通过HTTP协议(HyperText Transfer Protocol,超文本传输协议)从webserver接口获取相关全景视频源信息的url(Uniform Resoure Locator,统一资源定位器),然后获得VR视频,并进行解码即可获得VR全景源视频。

其中,获得VR全景源视频的具体流程可以如下:

创建Session(会话);

设置解码相关参数;

开始解码,循环获取编码后的H.264(一种高度压缩数字视频编解码器标准)数据;

解码源数据,获取YUV(是被欧洲电视系统所采用的一种颜色编码方法,属于PAL)类型的数据;

结束解码,获得VR全景源视频。

在步骤S102中,通过苹果图形库上下文对象构建图形处理程序的运行环境,并运行图形处理程序。

其中:苹果图形库上下文即EAGL Context,在IOS操作系统中使用EAGL(Embedded Apple Graphics Library,嵌入式苹果图形库)提供的EAGLContext(Context即上下文)类可实现和提供一个呈现环境,用来保持OpenGL ES(OpenGL for Embedded Systems,是OpenGL三维图形API的子集)使用到的硬件状态,EAGL是一个Objective-C(通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言)API(Application Programming Interface,应用程序编程接口),提供使OpenGL ES与Core Animation(核心动画,是直接作用在CALayer上的(并非UIView上)非常强大的跨MacOSX和iOS平台的动画处理API)和UIKIT(是YOOtheme团队开发的一款轻量级、模块化的前端框架)集成的接口。图形处理程序即OpenGL模块。

在步骤S103中,通过图形库纹理加载方法,将VR全景源视频加载到图形处理程序。

其中:图形库纹理加载即GLKTextureLoader,GLKTextureLoader为应用提供从IOS操作系统支持的各种图像格式的源自动加载纹理图像到OpenGL ES图像环境的方式。

在步骤S104中,针对VR全景源视频中的每一帧,通过图形处理程序将VR全景源视频的视频帧映射至球面模型。

在步骤S105中,获取当前的角度信息。

其中:在获取角度信息时,可通过IOS操作系统中的核心运动接口获取,而核心运动接口即CoreMotion接口。

在步骤S106中,从球面模型中选取角度信息所对应的局部平面图。

在步骤S107中,对局部平面图渲染并显示,其中,在显示时,可通过IOS操作系统中的视图控件显示,而视图控件即UIView(表示屏幕上的一块矩形区域,它在App中占有绝对重要的地位,因为IOS中几乎所有可视化控件都是UIView的子类)。

在通过IOS操作系统获得VR全景源视频后,通过在IOS操作系统上构建图形处理程序的运行环境并运行图形处理程序,并将VR全景源视频加载到图形处理程序中,可利用图形处理程序将VR全景源视频的视频帧通过纹理映射至球面模型上,进而在获取当前的角度信息后,可从球面模型中自动选取角度信息所对应的局部平面图,并对局部平面图渲染和显示,从而在IOS操作系统上通过图形处理程序实现将视频帧映射至球面模型上和局部平面图的选取,进而实现在IOS操作系统上正常播放VR全景源视频,使得使用IOS操作系统的用户能够获得正常的VR体验,而不再看到断层的或者扭曲的VR视频帧。

在一个实施例中,上述图1中的步骤S105,即针对VR全景源视频中的每一帧,通过图形处理程序将VR全景源视频的视频帧映射至球面模型,可被执行为:

使用图形处理程序,构建球面模型。

将VR全景源视频的视频帧渲染至球面模型上。

通过使用图形处理程序,构建球面模型,可将VR全景源视频的视频帧渲染至球面模型上,如此,可将VR全景源视频的二维视频帧映射至球面模型上,以便于之后从球面模型上选取用户观看方向/观看角度的局部平面图。

如图2所示,在一个实施例中,使用图形处理程序,构建球面模型,可以包括步骤S201至步骤S204:

在步骤S201中,确定用于构建球面模型的三角形的相关参数,其中,相关参数用于指示三角形的数目。

在步骤S202中,根据相关参数确定用于构建球面模型的所有三角形中各三角形的顶点的球坐标。

在步骤S203中,根据各三角形的顶点的球坐标,计算各三角形的顶点的三维坐标。

在步骤S204中,在图形处理程序中,根据各三角形的顶点的三维坐标构建球面模型。

在构建球面模型时,可使用多个三角形构建,因而,可先确定用于构建球面模型的三角形的相关参数,进而根据该相关参数确定每个三角形的顶点的球坐标,然后根据球坐标系与直角坐标系的关系,即可计算各三角形的顶点的三维坐标,进而根据确定的各三角形的顶点的三维坐标即可构建出球面模型,以便之后将二维视频帧映射至球面模型上。

如图3所示,在一个实施例中,将VR全景源视频的视频帧渲染至球面模型上,可以包括步骤S301至步骤S303:

在步骤S301中,根据各三角形的顶点的三维坐标,计算各三角形的顶点在VR全景源视频的视频帧上对应的映射点的二维坐标,将映射点的二维坐标作为映射点的纹理坐标。

其中,各三角形的顶点即各三角形的端点,VR全景源视频的视频帧可以是二维的矩形视频帧,而映射点的二维坐标指的是:该映射点在以该VR全景源视频的视频帧的相邻两边中的长边为x轴、短边为y轴建立二维坐标系后,在该二维坐标系中的坐标值。

而计算各三角形的顶点在VR全景源视频的视频帧上对应的映射点的二维坐标的公式如下:

假定ρ(x,y,z)为某三角形的一个顶点在空间坐标系中的三维坐标。

ρ(x0,y0)为该顶点在VR全景源视频的视频帧上对应的映射点的二维坐标,则:

x0=(1.0+arctan(y/x)/π)*0.5

y0=(1.0-arcsin(z)*2.0/π)*0.5

在步骤S302中,将映射点的像素值确定为映射点的纹理坐标所对应的像素值。

在步骤S303中,将映射点的纹理坐标所对应的像素值渲染至映射点对应的顶点上,其中,如果A三角形的a顶点在VR全景源视频的视频帧上对应的映射点为B点,则映射点B对应a顶点,且在渲染时,是将三角形的顶点的三维坐标作为了顶点坐标,进而基于三角形的顶点的顶点坐标,将映射点的纹理坐标所对应的像素值渲染至映射点对应的顶点。

在映射至球面模型上时,可根据各三角形的顶点的三维坐标,计算各三角形的顶点在VR全景源视频的视频帧上对应的映射点的二维坐标,然后将映射点的二维坐标作为映射点的纹理坐标,进而将该映射点的像素值确定为映射点的纹理坐标所对应的像素值,并将映射点的纹理坐标所对应的像素值渲染至映射点对应的顶点上,即根据VR全景源视频的视频帧上的映射点的像素值对各三角形的顶点进行了着色,而各三角形构成的又是个球面模型,因而,完成了VR全景源视频中二维视频帧到球面的映射。

如图4所示,在一个实施例中,上述图1所示的步骤S108,即对局部平面图渲染并显示,可以包括步骤S401至步骤S403:

在步骤S401中,计算用于显示局部平面图的屏幕上各点的坐标值。

在步骤S402中,确定局部平面图上与屏幕上各点的坐标值相应的纹理坐标。

在步骤S403中,通过视图控件,将相应的纹理坐标所对应的像素值渲染至屏幕上各点。

在将局部平面图进行渲染并显示时,可以以该屏幕的相邻两边分别为坐标轴建立二维坐标系,然后计算出屏幕上各点的坐标值,进而根据各点的坐标值,确定出局部平面图上与该屏幕上各点的坐标值相应的纹理坐标,然后通过该视图控件将前述相应的纹理坐标所对应的像素值渲染至该屏幕上各点,即可完成局部平面图到屏幕的映射,使用户能够通过IOS操作系统正常观看VR全景源视频,不再看到扭曲的或者断层的VR视频帧。

另外,由于获得的局部平面图是根据当前的角度信息即用户的视角范围(或者当前的观看角度/观看方向)确定的,而用户可见的范围又受屏幕尺寸的限制,因而,局部平面图的尺寸与屏幕尺寸大小是一致的,而且局部平面图所在平面与屏幕也是平行的,如此,屏幕上各点与局部平面图上各点是一一对应的。

如图5A所示,在一个实施例中,上述图1所示的步骤S107,即从球面模型中选取角度信息所对应的局部平面图,可以包括步骤S501和步骤S502:

在步骤S501中,根据角度信息,确定与角度信息相应的视图矩阵。

在步骤S502中,根据视图矩阵从球面模型中选取角度信息所对应的局部平面图。

在选取局部平面图时,可获取安装有IOS操作系统的终端的当前的角度信息,进而确定该角度信息对应的视图矩阵后,即可根据该视图矩阵从球面模型中选取局部平面图,而由于该角度信息可表征用户的观看角度/观看方向,因而,根据该角度信息选择局部平面图,可从球面模型中选择用户所观看的任一角度/任一方向的映像,从而使用户可以看到空间内360度的视频帧,如此,用户可通过IOS操作系统的终端获得全方位的视觉体验,获得真实的VR体验。

另外,为了使获得的角度信息能够准确地表征用户在空间中的观看角度/观看方向,可以将IOS操作系统的终端放置于VR头盔内,这样,用户头部转动后终端会同步转动,因而,终端当前的角度信息即代表用户头部的转动角度,也是用户眼睛的观看角度或观看方向。

在一个实施例中,获取当前的角度信息,包括:通过核心运动接口接收预设传感器发送的角度信息。

在一个实施例中,获取当前的角度信息,包括:通过核心运动接口向预设传感器发送角度获取请求,以获得预设传感器检测到的角度信息,其中,预设传感器包括以下至少一项:角度传感器、加速计、陀螺仪。

在获取当前的角度信息时,可通过核心运动接口接收预设传感器发送的角度信息或者通过核心运动接口向预设传感器发送角度获取请求,以获得预设传感器检测到的角度信息,即CoreMotion接口可通过pull方式(startGyroUpdates)或者push方式(startGyroUpdatesToQueue)获取角度信息。

如图5B所示,本发明的VR视频显示方法如步骤S503至步骤S508所示:

在步骤S503中,通过webserver接口获取VR视频。

在步骤S504中,对VR视频进行解封装、解码,获得VR全景源视频。

在步骤S505中,在IOS系统上运行的OpenGL中构建球面模型。

在步骤S506中,在OpenGL中将VR全景源视频中的视频帧映射至球面模型上,完成球面映射。

在步骤S507中,通过传感器数据获得的角度信息,从球面模型中获取局部平面图。

在步骤S508中,将局部平面图渲染至iPhone手机屏幕上,使用户可通过VR头盔上的VR眼镜观看。

下面将举例说明本发明的具体实施例:

通过iphone中的webserver接口获取VR视频。

调用VideoToolbox硬件编解码接口对VR视频进行解码,得到VR全景源视频。

在iphone中构建图形处理程序的运行环境,并运行图形处理程序。

通过图形库纹理加载方法,将该VR全景源视频加载到图形处理程序。

使用图形处理程序,构建球面模型。

将VR全景源视频的视频帧渲染至球面模型上。

通过iphone中的CoreMotion接口,获取表征用户观看方向的角度信息。

从球面模型中选取角度信息所对应的局部平面图。

通过iphone中的视图控件,将局部平面图渲染并显示。

在上述实施例中,在构建球面模型时,可使用三角形构建,具体地:

可根据三角形的相关参数确定各三角形的顶点在球面坐标系中的球坐标。

根据球面坐标系与直角坐标系的坐标转换关系,计算出各三角形的顶点的三维坐标,进而图形处理程序利用这些三角形的顶点的三维坐标即可构建球面模型。

下面将结合图9至图11详细说明本发明的具体实施例:

第一步骤:通过HTTP协议从webserver接口获取相关的VR全景源视频信息的url。

第二步骤:通过IOS系统硬件解码接口获取VR全景视频数据帧。

系统通过VideoToolbox硬件编解码接口,获取视频数据帧的流程如下:

1)创建Session。

2)设置解码相关参数。

3)开始解码,循环获取编码后的H264数据。

4)解码源数据,获取yuv类型的数据。

5)结束解码。

第三步骤:将每一帧VR全景视频数据帧由yuv格式转换成RGB格式。

第四步骤:在运行在IOS操作系统的OPEGNGL中创建球面模型。

创建球面模型的原理如下:

球形全景是将球体的经度和纬度坐标,连接到水平和垂直坐标的一格,这个网格的高度大约宽的两倍。因而,从球体的赤道到两极,横向拉伸不断加剧,南北两个极点被拉伸成了扁平的网格在整个上部和下部边缘,球形全景可以现实整个水平和竖直的360全景,具体地:

1、可将球体水平切成N层,然后按弧线竖着切M份,就得到了N*M个长方形。其中,M、N即为三角形的相关参数,决定了三角形的数目,而为了使用户最终看到的局部平面图更加真实、没有断层或者扭曲,N可等于2M,其中,M为正整数。

2、在按对角戏切分就得到了2*N*M个三角形,当然也可以有其他的方法划分成三角形。

3、然后计算每个三角形的顶点坐标,即可创建球面模型,如图10所示,图10中的三角形即是用于构建球面模型的其中一个三角形,该三角形的三个顶点到球心的距离均为球面模型的半径r,而利用上述2*N*M个三角形即可构建如图11所示的球面模型。

而M、N一旦确定,三角形的数目和各三角形的顶点的球坐标即可确定;且如图9所示的各三角形的顶点的球坐标和各三角形的顶点的三维坐标的转换关系如下:

z=rcosθ

第五步骤:经着色器程序视图模型变换,渲染到球面模型上,具体地:

1)将各三角形的顶点的三维坐标作为顶点坐标。

2)将各三角形的顶点在二维的全景视频数据帧上的映射点的二维坐标作为纹理坐标。

各三角形的顶点的三维坐标与各三角形的顶点在全景视频数据帧上的映射点的二维坐标的转换关系如下:

ρ(x,y,z)为各三角形的顶点的三维坐标

ρ(x0,y0)为二维视频帧图像上的二维坐标

x0=(1.0+arctan(y/x)/π)*0.5

y0=(1.0-arcsin(z)*2.0/π)*0.5

3)将各三角形的顶点的三维坐标、纹理坐标的像素值导入vertex shader,vertex就是顶点信息,vertex shader中包含了坐标以及颜色值信息,即可将二维的全景视频数据帧映射至球面模型上。

第六步骤:通过角度传感器获取用户的行为,实时更新视图矩阵,获得该视图矩阵对应的局部平面图,具体过程如下。

1)通过CoreMotion框架提供的加速计来获取设备当前的加速度数据、陀螺仪数据、所处的磁场以及设备的方位等信息。陀螺仪的原理是检测设备在X、Y、Z轴上所旋转的角速度。

2)IOS系统通过CoreMotion接口来调用。陀螺仪更新数据有两种方式,pull方式(startGyroUpdates),push方式(startGyroUpdatesToQueue)可以精确的定位iPhone与水平面的夹角以及iPhone绕自身旋转的角度。

第七步骤:局部平面图映射至手机的左右屏,其具体过程如下:

1)获取屏幕坐标。

2)计算横向单个视窗坐标,获得左右屏幕坐标。

3)通过屏幕坐标换算得到其映射的平面局部图上的纹理坐标,将其映射的平面局部图上的纹理坐标的像素值渲染至屏幕上,即完成了局部平面图到手机的左右屏的映射。

如图6所示,本发明还提供一种VR视频显示装置,应被配置为工作在IOS操作系统的设备,包括:

第一获取模块601,被配置为获取VR全景源视频;

第一处理模块602,被配置为通过苹果图形库上下文对象构建图形处理程序的运行环境,并运行图形处理程序;

加载模块603,用通过图形库纹理加载方法,将VR全景源视频加载到图形处理程序;

映射模块604,被配置为针对VR全景源视频中的每一帧,通过图形处理程序将VR全景源视频的视频帧映射至球面模型;

第二获取模块605,被配置为获取当前的角度信息;

选取模块606,被配置为从球面模型中选取角度信息所对应的局部平面图;

第二处理模块607,被配置为对局部平面图渲染并显示。

如图7所示,在一个实施例中,映射模块604可以包括:

构建子模块6041,被配置为使用图形处理程序,构建球面模型;

渲染子模块6042,被配置为将VR全景源视频的视频帧渲染至球面模型上。

在一个实施例中,构建子模块6041包括:

第一确定单元,被配置为确定被配置为构建球面模型的三角形的相关参数,其中,相关参数被配置为指示三角形的数目;

第二确定单元,被配置为根据相关参数确定被配置为构建球面模型的所有三角形中各三角形的顶点的球坐标;

第一计算单元,被配置为根据各三角形的顶点的球坐标,计算各三角形的顶点的三维坐标;

构建单元,被配置为在图形处理程序中,根据各三角形的顶点的三维坐标构建球面模型。

在一个实施例中,渲染子模块6042包括:

第二计算单元,被配置为根据各三角形的顶点的三维坐标,计算各三角形的顶点在VR全景源视频的视频帧上对应的映射点的二维坐标,将映射点的二维坐标作为映射点的纹理坐标;

第三确定单元,被配置为将映射点的像素值确定为映射点的纹理坐标所对应的像素值;

渲染单元,被配置为将映射点的纹理坐标所对应的像素值渲染至映射点对应的顶点上。

在一个实施例中,第二处理模块包括:

计算子模块,被配置为计算被配置为显示局部平面图的屏幕上各点的坐标值;

第一确定子模块,被配置为确定局部平面图上与屏幕上各点的坐标值相应的纹理坐标;

渲染子模块,被配置为通过视图控件,将相应的纹理坐标所对应的像素值渲染至屏幕上各点。

如图8所示,在一个实施例中,选取模块606可以包括:

第二确定子模块6061,被配置为根据角度信息,确定与角度信息相应的视图矩阵;

选取子模块6062,被配置为根据视图矩阵从球面模型中选取角度信息所对应的局部平面图。本发明还提供了一种终端,包括:如上述技术方案中任一项VR视频显示装置。

该终端可实现的技术效果如上述实施例中任一项的VR视频显示方法,此处不再赘述。

另外,本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于装置实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

可能以许多方式来实现本发明的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。

本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

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