首页> 中国专利> 应用程序显示三维立体效果的方法及装置

应用程序显示三维立体效果的方法及装置

摘要

本发明公开了一种应用程序显示三维立体效果的方法,包括以下步骤:基于开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数,并根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵;根据预设的景深参数对所述变换矩阵进行平移,获取第一平移矩阵和第二平移矩阵;根据所述第一平移矩阵和第二平移矩阵分别对应绘制生成第一视图对象和第二视图对象;将所述第一视图对象和第二视图对象进行拼接后输出显示。本发明还公开了一种显示应用程序三维立体效果的装置。本发明实现了对每一请求绘制的物体对象为左、右眼输出不同的画面,从而使应用程序能显示出三维立体效果。

著录项

  • 公开/公告号CN105808220A

    专利类型发明专利

  • 公开/公告日2016-07-27

    原文格式PDF

  • 申请/专利权人 深圳TCL数字技术有限公司;

    申请/专利号CN201410849906.0

  • 发明设计人 陈涛;韩菁;王强;

    申请日2014-12-30

  • 分类号

  • 代理机构深圳市世纪恒程知识产权代理事务所;

  • 代理人胡海国

  • 地址 518000 广东省深圳市南山区粤兴二道6号武汉大学深圳产学研大楼B815房(入驻:深圳市前海商务秘书有限公司)

  • 入库时间 2023-06-19 00:12:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-17

    授权

    授权

  • 2016-08-24

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20141230

    实质审查的生效

  • 2016-07-27

    公开

    公开

说明书

技术领域

本发明涉及电视技术领域,尤其涉及一种应用程序显示三维立体效果的方法及装置。

背景技术

随着3D技术的不断发展和取得的巨大突破,3D的消费和使用已经成为了普通大众工作和生活的一部分,如3D电视已逐渐成为家庭娱乐生活的必备产品。然而,由于制作成本高昂,使得目前3D资源非常稀少,大部分应用程序还是基于2D进行开发的,对于使用开放图形库(OpenGraphicsLibrary,简称OpenGL)和三维建模技术开发的2D应用程序,虽然使用三维图形学算法生成了透视效果和光影遮挡效果,使得显示的画面具有三维效果,但是仍然不像现实中人眼所看到的景象那样具有空间感。只是运用了人眼对光影、明暗、虚实的感觉得到三维的感觉,而没有利用双眼的立体视觉,最终显示的画面对于用户的双眼来看都是一样的,无法为用户的左右眼输出不同画面,也就无法实现三维立体效果的显示。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

本发明的主要目的在于提供一种应用程序显示三维立体效果的方法及装置,旨在使应用程序实现三维立体效果的显示。

为实现上述目的,本发明提供的一种应用程序显示三维立体效果的方法,所述方法包括以下步骤:

基于开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数,并根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵;

根据预设的景深参数对所述变换矩阵进行平移,获取第一平移矩阵和第二平移矩阵;

根据所述第一平移矩阵和第二平移矩阵分别对应绘制生成第一视图对象和第二视图对象;

将所述第一视图对象和第二视图对象进行拼接后输出显示。

优选地,所述基于开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数,并根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵的步骤包括:

对本地应用开发包中的开放图形库进行修改;

基于修改后的开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数;

调用系统内核中的软件加速库或硬件加速库来根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵。

优选地,所述根据预设的景深参数对所述变换矩阵进行平移,获取第一平移矩阵和第二平移矩阵的步骤包括:

根据预设的景深参数对所述变换矩阵进行左、右平移或上、下平移,获取平移后的第一平移矩阵和第二平移矩阵。

优选地,所述根据预设的景深参数对所述变换矩阵进行平移,获取第一平移矩阵和第二平移矩阵的步骤包括:

根据预设的景深参数获取对所述变换矩阵进行平移的偏移距离,并根据预设的中间矩阵对所述变换矩阵进行平移变换,获取第一平移矩阵和第二平移矩阵。

优选地,所述基于开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数,并根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵的步骤之前还包括:

根据用户指令在配置文件中预设景深参数。

此外,为实现上述目的,本发明还提供一种显示应用程序三维立体效果的装置,所述装置包括:

生成模块,用于基于开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数,并根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵;

平移模块,用于根据预设的景深参数对所述变换矩阵进行平移,获取第一平移矩阵和第二平移矩阵;

绘制模块,用于根据所述第一平移矩阵和第二平移矩阵分别对应绘制生成第一视图对象和第二视图对象;

拼接显示模块,用于将所述第一视图对象和第二视图对象进行拼接后输出显示。

优选地,所述生成模块还用于:

对本地应用开发包中的开放图形库进行修改;基于修改后的开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数;调用系统内核中的软件加速库或硬件加速库来根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵。

优选地,所述平移模块还用于:

根据预设的景深参数对所述变换矩阵进行左、右平移或上、下平移,获取平移后的第一平移矩阵和第二平移矩阵。

优选地,所述平移模块具体用于:

根据预设的景深参数获取对所述变换矩阵进行平移的偏移距离,并根据预设的中间矩阵对所述变换矩阵进行平移变换,获取第一平移矩阵和第二平移矩阵。

优选地,所述装置还包括:

设定模块,用于根据用户指令在配置文件中预设景深参数。

本发明提出的一种应用程序显示三维立体效果的方法及装置,通过将当前请求绘制的物体对象的变换矩阵进行平移后,获取第一平移矩阵和第二平移矩阵,并根据所述第一平移矩阵和第二平移矩阵分别对应绘制生成第一视图对象和第二视图对象,这样,对每一请求绘制的物体对象在绘制之前都根据其矩阵进行了平移操作,然后对每一请求绘制的物体对象都进行了两遍绘制,最后将两遍绘制的视图对象拼接后输出显示,实现了对每一请求绘制的物体对象为左、右眼输出不同的画面,从而使应用程序能显示出三维立体效果。

附图说明

图1为本发明应用程序显示三维立体效果的方法第一实施例的流程示意图;

图2为本发明应用程序显示三维立体效果的方法第二实施例的流程示意图;

图3为本发明显示应用程序三维立体效果的装置第一实施例的功能模块示意图;

图4为本发明显示应用程序三维立体效果的装置第二实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

对于使用OpenGL和三维建模技术开发的应用程序,由应用程序调用OpenGL接口将三维模型数据和其他数据如视点的位置方向、视野范围等提交给GPU,经过模型视点变换、投影变换和视口变换,在此过程中再配合裁剪、深度测试、Alpha测试、片元着色、光栅化等步骤,最终将三维模型映射到二维的显示器上。由于使用了三维图形学算法生成了透视效果和光影遮挡效果,所以画面具有三维效果,但是仍然不像现实中人眼所看到的景象那样具有空间感。

现实中人眼所看到的景象之所以具有空间感,除了因为具有透视效果、光影遮挡效果外,还因为通过两只眼睛分别看到的景象之间存在视差,大脑会根据这种差异感觉到立体的景象,从而使人眼看到的画面具有三维立体效果。因此,为了使应用程序能显示三维立体效果,需要在OpenGL中模拟人眼成像原理分别为两只眼睛输出不同的画面。

因而,本发明提供一种应用程序显示三维立体效果的方法。

参照图1,图1为本发明应用程序显示三维立体效果的方法第一实施例的流程示意图。

在第一实施例中,该应用程序显示三维立体效果的方法包括:

步骤S10,基于开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数,并根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵;

本实施例中,首先清空OpenGL中的帧缓存数据,准备开始新的一帧的绘制,在OpenGL中设置应用程序当前请求绘制的物体对象的矩阵参数,包括设置视点和视口的相关参数,如视口位置和大小、视点位置、方向和视野范围等参数,其中,视点是指绘制对象时摄像机所处的观察点,即摄像机所处的位置;视口是指投影后在程序窗口的显示范围。设置矩阵参数还包括设置对象资源,如设置顶点、法线、颜色、纹理坐标、纹理、材质等。设置矩阵参数还可包括设置最终生成模型的变换操作,该变换包括平移、旋转、缩放、投影等。设置好应用程序当前请求绘制的物体对象的各种相关矩阵参数后,即可通过OpenGL生成当前请求绘制的物体对象的变换矩阵,其中,每一个对象会根据该对象的顶点多少换算成不同数量的三角形,每个三角形根据坐标会有一个对应的矩阵,因此,根据当前请求绘制的物体对象设置的矩阵参数如视点位置、顶点、变换方式等,即可由OpenGL根据当前请求绘制的物体对象设置的不同矩阵参数调用相应的函数生成当前请求绘制的物体对象的变换矩阵。

步骤S20,根据预设的景深参数对所述变换矩阵进行平移,获取第一平移矩阵和第二平移矩阵;

从配置文件中获取预设的景深参数,该景深参数用于设置对所述变换矩阵进行平移时的具体偏移距离,根据该景深参数和当前请求绘制的物体对象的矩阵参数中的视点位置即可对所述变换矩阵进行平移操作,获取第一平移矩阵和第二平移矩阵。需要说明的是,本实施例中,该平移操作既可以是左、右平移操作,也可以是上、下平移操作,可以为对称性平移操作,也可以为非对称性平移操作,在此不作限定。

具体平移方法如下,若对当前请求绘制的物体对象中的一顶点进行平移,该顶点变换前坐标为[a,b,1],向x方向移动dx,向y方向移动dy,由于是平移,因此在z方向不变,该顶点平移变换后坐标[A,B,1]以矩阵表示为:

>[A,B,1]=[a,b,1]100010dxdy1>

其中,A=a+dx;B=b+dy;[a,b,1]为平移前的变换矩阵,[A,B,1]为平移后生成的平移矩阵,>100010dxdy1>即为设置的变换操作中用于进行平移变换的中间矩阵,具体的偏移距离dx、dy则根据景深参数获知。

步骤S30,根据所述第一平移矩阵和第二平移矩阵分别对应绘制生成第一视图对象和第二视图对象;

获取到第一平移矩阵和第二平移矩阵之后,分别设置第一临时缓存和第二临时缓存,根据所述第一平移矩阵绘制生成第一视图对象后,将第一视图对象保存至第一临时缓存中;根据所述第二平移矩阵绘制生成第二视图对象后,将第二视图对象保存至第二临时缓存中。

步骤S40,将所述第一视图对象和第二视图对象进行拼接后输出显示。

拼接混合第一临时缓存和第二临时缓存中的第一视图对象、第二视图对象,并将拼接后的混合对象输出至帧缓存,翻转所述帧缓存后输出至显示器进行显示。

本实施例通过将当前请求绘制的物体对象的变换矩阵进行平移后,获取第一平移矩阵和第二平移矩阵,并根据所述第一平移矩阵和第二平移矩阵分别对应绘制生成第一视图对象和第二视图对象,这样,对每一请求绘制的物体对象在绘制之前都根据其矩阵进行了平移操作,然后对每一请求绘制的物体对象都进行了两遍绘制,最后将两遍绘制的视图对象拼接后输出显示,实现了对每一请求绘制的物体对象为左、右眼输出不同的画面,从而使应用程序能显示出三维立体效果。

进一步地,在其他实施例中,上述步骤S10可以包括:

对本地应用开发包中的开放图形库进行修改;基于修改后的开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数;调用系统内核中的软件加速库或硬件加速库来根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵。

Android系统中数学函数库、OpenGL等核心库一般是以本地应用开发包NDK的形式提供给开发者,以便开发者可以基于本地应用开发包NDK更高效的构建算法,进行图形图像绘制。本实施例中仅对本地应用开发包NDK中的OpenGL进行修改,如可修改位于本地应用开发包NDK的OpenGL中的libEGL.so、libGLESv1_CM.so、libGLESv2.so库。这样,不仅能确保本地应用开发包NDK中其他核心库的通用性,还能在基于修改后的OpenGL设置应用程序当前请求绘制的物体对象的矩阵参数后,通过该本地应用开发包NDK检查配置文件,查看系统内核中是否有硬件加速版本,若有,则调用系统内核中的硬件开发商提供的硬件加速库如MailGPU的libEGL_mail.so、libGLESv1_CM_mail.so、libGLESv2_mail.so来进行硬件加速,若没有,则调用系统内核中自带的软件加速库如libEGL_android.so、libGLESv1_CM_android.so、libGLESv2_android.so来进行软件加速。即可通过该本地应用开发包NDK调用系统内核中的软件加速库或硬件加速库对后续操作进行加速,如可在根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵的过程中进行加速,从而提高系统的执行效率。

如图2所示,本发明第二实施例提出一种应用程序显示三维立体效果的方法,在上述第一实施例的基础上,在上述步骤S10之前还包括:

步骤S50,根据用户指令在配置文件中预设景深参数。

本实施例与上述第一实施例的区别在于,本实施例还包括根据用户指令在配置文件中预设景深参数的操作。

本实施例中用户可根据自身需要预先在配置文件中设定景深参数,以使得不同用户可根据自身两眼之间距离的不同调整对所述变换矩阵进行平移时的偏移距离,使得根据平移后的矩阵绘制的两个对象为左、右眼输出的画面最符合用户自身两眼的观看间距,更加灵活,且进一步地提升了应用程序显示的三维立体效果,给用户带来更佳的观看体验。

本发明进一步提供一种显示应用程序三维立体效果的装置。

需要说明的是,本发明实施例中,该显示应用程序三维立体效果的装置可以为电视、平板电脑等显示终端。

参照图3,图3为本发明显示应用程序三维立体效果的装置第一实施例的功能模块示意图。

在第一实施例中,该显示应用程序三维立体效果的装置包括:

生成模块01,用于基于开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数,并根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵;

平移模块02,用于根据预设的景深参数对所述变换矩阵进行平移,获取第一平移矩阵和第二平移矩阵;

绘制模块03,用于根据所述第一平移矩阵和第二平移矩阵分别对应绘制生成第一视图对象和第二视图对象;

拼接显示模块04,用于将所述第一视图对象和第二视图对象进行拼接后输出显示。

本实施例中,首先清空OpenGL中的帧缓存数据,准备开始新的一帧的绘制,在OpenGL中设置应用程序当前请求绘制的物体对象的矩阵参数,包括设置视点和视口的相关参数,如视口位置和大小、视点位置、方向和视野范围等参数,其中,视点是指绘制对象时摄像机所处的观察点,即摄像机所处的位置;视口是指投影后在程序窗口的显示范围。设置矩阵参数还包括设置对象资源,如设置顶点、法线、颜色、纹理坐标、纹理、材质等。设置矩阵参数还可包括设置最终生成模型的变换操作,该变换包括平移、旋转、缩放、投影等。设置好应用程序当前请求绘制的物体对象的各种相关矩阵参数后,即可通过OpenGL生成当前请求绘制的物体对象的变换矩阵,其中,每一个物体对象会根据该物体对象的顶点多少换算成不同数量的三角形,每个三角形根据坐标会有一个对应的矩阵,因此,根据当前请求绘制的物体对象设置的矩阵参数如视点位置、顶点、变换方式等,即可由OpenGL根据当前请求绘制的物体对象设置的不同矩阵参数调用相应的函数生成当前请求绘制的物体对象的变换矩阵。

从配置文件中获取预设的景深参数,该景深参数用于设置对所述变换矩阵进行平移时的具体偏移距离,根据该景深参数和当前请求绘制的物体对象的矩阵参数中的视点位置即可对所述变换矩阵进行平移操作,获取第一平移矩阵和第二平移矩阵。需要说明的是,本实施例中,该平移操作既可以是左、右平移操作,也可以是上、下平移操作,可以为对称性平移操作,也可以为非对称性平移操作,在此不作限定。

具体平移方法如下,若对当前请求绘制的物体对象中的一顶点进行平移,该顶点变换前坐标为[a,b,1],向x方向移动dx,向y方向移动dy,由于是平移,因此在z方向不变,该顶点平移变换后坐标[A,B,1]以矩阵表示为:

>[A,B,1]=[a,b,1]100010dxdy1>

其中,A=a+dx;B=b+dy;[a,b,1]为平移前的变换矩阵,[A,B,1]为平移后生成的平移矩阵,>100010dxdy1>即为设置的变换操作中用于进行平移变换的中间矩阵,具体的偏移距离dx、dy则根据景深参数获知。

获取到第一平移矩阵和第二平移矩阵之后,分别设置第一临时缓存和第二临时缓存,根据所述第一平移矩阵绘制生成第一视图对象后,将第一视图对象保存至第一临时缓存中;根据所述第二平移矩阵绘制生成第二视图对象后,将第二视图对象保存至第二临时缓存中。

拼接混合第一临时缓存和第二临时缓存中的第一视图对象、第二视图对象,并将拼接后的混合对象输出至帧缓存,翻转所述帧缓存后输出至显示器进行显示。

本实施例通过将当前请求绘制的物体对象的变换矩阵进行平移后,获取第一平移矩阵和第二平移矩阵,并根据所述第一平移矩阵和第二平移矩阵分别对应绘制生成第一视图对象和第二视图对象,这样,对每一请求绘制的物体对象在绘制之前都根据其矩阵进行了平移操作,然后对每一请求绘制的物体对象都进行了两遍绘制,最后将两遍绘制的视图对象拼接后输出显示,实现了对每一请求绘制的物体对象为左、右眼输出不同的画面,从而使应用程序能显示出三维立体效果。

进一步地,在其他实施例中,上述生成模块01还可以用于:

对本地应用开发包中的开放图形库进行修改;基于修改后的开放图形库设置应用程序当前请求绘制的物体对象的矩阵参数;调用系统内核中的软件加速库或硬件加速库来根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵。

Android系统中数学函数库、OpenGL等核心库一般是以本地应用开发包NDK的形式提供给开发者,以便开发者可以基于本地应用开发包NDK更高效的构建算法,进行图形图像绘制。本实施例中仅对本地应用开发包NDK中的OpenGL进行修改,如可修改位于本地应用开发包NDK的OpenGL中的libEGL.so、libGLESv1_CM.so、libGLESv2.so库,这样,不仅能确保本地应用开发包NDK中其他核心库的通用性,还能在基于修改后的OpenGL设置应用程序当前请求绘制的物体对象的矩阵参数后,通过该本地应用开发包NDK检查配置文件,查看系统内核中是否有硬件加速版本,若有,则调用系统内核中的硬件开发商提供的硬件加速库如MailGPU的libEGL_mail.so、libGLESv1_CM_mail.so、libGLESv2_mail.so来进行硬件加速,若没有,则调用系统内核中自带的软件加速库如libEGL_android.so、libGLESv1_CM_android.so、libGLESv2_android.so来进行软件加速。即可通过该本地应用开发包NDK调用系统内核中的软件加速库或硬件加速库对后续操作进行加速,如可在根据所述矩阵参数生成当前请求绘制的物体对象的变换矩阵的过程中进行加速,从而提高系统的执行效率。

如图4所示,本发明第二实施例提出一种显示应用程序三维立体效果的装置,在上述第一实施例的基础上,该显示应用程序三维立体效果的装置还包括:

设定模块05,用于根据用户指令在配置文件中预设景深参数。

本实施例与上述第一实施例的区别在于,本实施例还包括根据用户指令在配置文件中预设景深参数的操作。

本实施例中用户可根据自身需要预先在配置文件中设定景深参数,以使得不同用户可根据自身两眼之间距离的不同调整对所述变换矩阵进行平移时的偏移距离,使得根据平移后的矩阵绘制的两个对象为左、右眼输出的画面最符合用户自身两眼的观看间距,更加灵活,且进一步地提升了应用程序显示的三维立体效果,给用户带来更佳的观看体验。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号