三维场景中虚拟资源对象的渲染方法技术

技术编号:18352108 阅读:35 留言:0更新日期:2018-07-02 02:31
本发明专利技术公开了一种三维场景中虚拟资源对象的渲染方法、装置、存储介质、处理器及终端,应用于包含一显示单元和一摄像单元的电子设备,虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,该方法包括:通过电子设备的摄像单元捕获现实场景的图像,并以现实场景的图像为背景构建一三维场景;确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置,其中,虚拟水体对象为具有顶面和侧面的三维结构体,预设虚拟对象为不写深度缓存的虚拟资源对象;根据电子设备的摄像单元捕获的现实场景的图像在三维场景中确定一观察位置;根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象。本发明专利技术解决了水体渲染效果和效率无法兼顾且无法交互的技术问题。

【技术实现步骤摘要】
三维场景中虚拟资源对象的渲染方法
本专利技术涉及计算机图形学领域,具体而言,涉及一种三维场景中虚拟资源对象的渲染方法、装置、存储介质、处理器及终端。
技术介绍
实时渲染技术的本质在于图形数据的实时计算和输出。在计算能力有限的情况下,通过一些简单的模拟方法能够快速地渲染出逼真的虚拟元素。在流体仿真模拟领域中,较为常用的模拟水的方法可以分为粒子法和网格法。粒子法将水体拆分成为多个粒子,通过纳维-斯托克斯方程(在流体力学领域描述粘性不可压缩流体动量守恒的运动方程)或者基于位置的密度估计等算法来计算粒子间的相互作用力,从而驱动粒子移动来模拟水的效果。网格法则是将水体区域划分为网格,同样根据纳维-斯托克斯方程等公式来计算各个网格的速度场(由每一时刻、每一点上的速度矢量组成的场)和密度场(每一时刻、每一点上的密度组成的场),然后再采用渲染算法根据密度场来绘制出水体。在游戏实时渲染领域中,尤其是移动终端游戏中,由于计算能力有限,水体渲染方式只渲染水体的表面即可。水体的表面由一个平面构成,由顶点着色器(其为一组指令代码,这组指令代码在顶点被渲染时执行)来控制平面顶点的位移,从而模拟水体表面的波浪及涟漪,然后再通过片元着色器(其为一组指令代码,在顶点着色器之后执行,指令代码用于执行漫反射和/或镜面反射光照计算)来为平面着色,从而使得该平面看上去近似一个完整水体的表面。移动端应用中的水体模拟、渲染和交互还存在以下问题:(1)现有的游戏实时渲染领域的水体是基于一个平面(即缺乏水体的侧面)来完成渲染的。而在移动端应用(比如,AR应用)中,由于需要将虚拟物体合理地放置在真实空间中,因此,需要将水体截成一个立体块来呈现。换言之,可以看到水体的侧面和底面。由此可见,现有的实时渲染水体的方式无法直接用于AR应用中。(2)由于AR平台的特殊性,虚拟的水体需要对真实的环境进行一些折射来增强虚实融合的代入感,即水体背后的背景是通过游戏玩家采用摄像装置实时拍摄到的画面。在AR游戏开发过程中,通过水体折射的画面是未知的,但是普通游戏领域的水体背后的背景则是已知的。(3)现有移动平台涉及到的水更多表现为海面,由于海水通常代表游戏场景的边界,即游戏玩家不可进入的区域,因此,海水可以采用一个海水平面来代替,而无需考虑游戏玩家视角在水下和进出水的情形,也无需考虑游戏玩家与海水的交互情形。然而,在AR平台上,由于游戏玩家的手持设备即为玩家视角,因此,其可以在虚拟世界中的任意位置观看虚拟物体,进而需要考虑玩家视角在水下,在水外,进出水,游戏玩家抛扔的物体进入水中,以使海水呈现不同的可交互效果。(4)流体模拟领域通常所采用的模拟方法可以模拟出“体”的概念(即模拟水的区域是一个实体,而非一个壳体),但是,该种模拟方法对于性能的消耗极高(即每帧图像都需要计算每个粒子的受力情况并模拟每个粒子的运动方向),故而无法应用在移动端。
技术实现思路
本专利技术至少部分实施例提供了一种三维场景中虚拟资源对象的渲染方法、装置、存储介质、处理器及终端,以至少解决水体渲染效果和效率无法兼顾且无法交互的技术问题。根据本专利技术其中一实施例,提供了一种三维场景中虚拟资源对象的渲染方法,应用于包含一显示单元电子设备,虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,上述方法包括:确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置,其中,虚拟水体对象为具有顶面和侧面的三维结构体,预设虚拟对象为不写深度缓存的虚拟资源对象;在三维场景中确定一观察位置;根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象。可选地,根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象的渲染顺序,包括:若第二位置和观察位置的连线穿过第一位置,则确定预设虚拟资源对象先于虚拟水体对象渲染。可选地,在确定第一位置与第二位置之前,还包括:配置虚拟水体对象的顶面,其中,顶面用于模拟海浪;配置虚拟水体对象的侧面,其中,侧面用于呈现立体特效,且侧面中每个侧面所包含的网格面数量小于顶面所包含的网格面数量;分别为顶面上的每个顶点以及侧面上的每个顶点配置初始颜色,其中,初始颜色用于标识虚拟水体对象中与每个顶点对应的区域。可选地,分别为顶面上的每个顶点以及侧面上的每个顶点配置初始颜色包括:将位于顶面上的每个顶点的第一颜色通道的取值设置为真;将位于第一部分侧面上的每个顶点的第二颜色通道的取值设置为真,其中,第一部分侧面是侧面中与顶面相邻的部分侧面;将位于第二部分侧面上的每个顶点的第三颜色通道的取值设置为真,其中,第二部分侧面是侧面中与第一部分侧面相邻的另外部分侧面。可选地,确定所述预设虚拟资源对象先于所述虚拟水体对象渲染包括:计算第一向量与第二向量的数量积,得到第一计算结果,其中,第一向量是由顶面和侧面中每个平面的中心位置与预设虚拟资源对象所在位置确定的,第二向量为每个平面的法向量;计算第三向量与第二向量的数量积,得到第二计算结果,其中,第三向量是由每个平面的中心位置与观察位置确定的;计算第一计算结果与第二计算结果的向量积,得到第三计算结果;如果发现与每个平面分别对应的第三计算结果中存在任一计算结果小于或等于0,则确定预设虚拟资源对象先于虚拟水体对象进行渲染。可选地,根据所述渲染顺序渲染所述虚拟水体对象包括:对顶面和侧面上的每个顶点进行顶点着色处理,其中,顶点着色处理用于在虚拟水体对象与三维场景之间对顶面和侧面上的每个顶点进行空间坐标变换以及为顶面和侧面上的部分或全部顶点配置模拟动画;对三维场景中被虚拟水体对象覆盖的像素区域进行片元着色处理,其中,片元着色处理用于将虚拟水体对象颜色和帧缓存中与像素区域对应的颜色进行混合。可选地,在根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还包括:确定观察位置由虚拟水体对象的外部切换至虚拟水体对象的内部;获取与虚拟水体对象内部对应的着色器代码并触发显示屏幕后处理效果来模拟水下视觉,其中,屏幕后处理效果包括以下至少之一:线性雾,高度雾,表面阳光散射,水下气泡,鱼群。可选地,在根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还包括:确定观察位置由虚拟水体对象的内部切换至虚拟水体对象的外部;获取与观察位置适配的三维场景,并对适配的三维场景进行折射扭曲处理。根据本专利技术其中一实施例,还提供了一种三维场景中虚拟资源对象的渲染装置,应用于包含一显示单元电子设备,虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,上述装置包括:第一确定模块,用于确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置,其中,虚拟水体对象为具有顶面和侧面的三维结构体,预设虚拟对象为不写深度缓存的虚拟资源对象;第二确定模块,用于在三维场景中确定一观察位置;第三确定模块,用于根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;渲染模块,用于根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象。可选地,第三确定模块,用于若第二位置和观察位置的连线穿过第一位置,则确定预设虚拟资源对象先于虚拟水体对象渲染。可选地,上述装置还包括:配置模块,用于配置虚拟水体本文档来自技高网
...
三维场景中虚拟资源对象的渲染方法

【技术保护点】
1.一种三维场景中虚拟资源对象的渲染方法,其特征在于,应用于包含一显示单元的电子设备,所述虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,所述方法包括:确定所述虚拟水体对象在所述三维场景中的第一位置与所述预设虚拟资源对象在所述三维场景中的第二位置,其中,所述虚拟水体对象为具有顶面和侧面的三维结构体,所述预设虚拟对象为不写深度缓存的虚拟资源对象;在所述三维场景中确定一观察位置;根据所述第一位置、所述第二位置和所述观察位置确定所述虚拟水体对象和所述预设虚拟资源对象之间的渲染顺序;根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象。

【技术特征摘要】
1.一种三维场景中虚拟资源对象的渲染方法,其特征在于,应用于包含一显示单元的电子设备,所述虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,所述方法包括:确定所述虚拟水体对象在所述三维场景中的第一位置与所述预设虚拟资源对象在所述三维场景中的第二位置,其中,所述虚拟水体对象为具有顶面和侧面的三维结构体,所述预设虚拟对象为不写深度缓存的虚拟资源对象;在所述三维场景中确定一观察位置;根据所述第一位置、所述第二位置和所述观察位置确定所述虚拟水体对象和所述预设虚拟资源对象之间的渲染顺序;根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象。2.根据权利要求1所述的方法,其特征在于,所述根据所述第一位置、所述第二位置和所述观察位置确定所述虚拟水体对象和预设虚拟资源对象的渲染顺序,包括:若所述第二位置和所述观察位置的连线穿过所述第一位置,则确定所述预设虚拟资源对象先于所述虚拟水体对象渲染。3.根据权利要求1所述的方法,其特征在于,在确定所述第一位置与所述第二位置之前,还包括:配置所述虚拟水体对象的顶面,其中,所述顶面用于模拟海浪;配置所述虚拟水体对象的侧面,其中,所述侧面用于呈现立体特效,且所述侧面所包含的网格面数量小于所述顶面所包含的网格面数量;分别为所述顶面上的每个顶点以及所述侧面上的每个顶点配置初始颜色,其中,所述初始颜色用于标识所述虚拟水体对象中与每个顶点对应的区域。4.根据权利要求3所述的方法,其特征在于,分别为所述顶面上的每个顶点以及所述侧面上的每个顶点配置所述初始颜色包括:将位于所述顶面上的每个顶点的第一颜色通道的取值设置为真;将位于第一部分侧面上的每个顶点的第二颜色通道的取值设置为真,其中,所述第一部分侧面是所述侧面中与所述顶面相邻的部分侧面;将位于第二部分侧面上的每个顶点的第三颜色通道的取值设置为真,其中,所述第二部分侧面是所述侧面中与所述第一部分侧面相邻的另外部分侧面。5.根据权利要求2所述的方法,其特征在于,确定所述预设虚拟资源对象先于所述虚拟水体对象渲染包括:计算第一向量与第二向量的数量积,得到第一计算结果,其中,所述第一向量是由所述顶面和所述侧面中每个平面的中心位置与所述第二位置确定的,所述第二向量为每个平面的法向量;计算第三向量与所述第二向量的数量积,得到第二计算结果,其中,所述第三向量是由每个平面的中心位置与所述观察位置确定的;计算所述第一计算结果与所述第二计算结果的向量积,得到第三计算结果;如果发现与每个平面分别对应的第三计算结果中存在任一计算结果小于或等于0,则确定所述预设虚拟资源对象先于所述虚拟水体对象进行渲染。6.根据权利要求1所述的方法,其特征在于,根据所述渲染顺序渲染所述虚拟水体对象包括:对所述顶面和所述侧面上的每个顶点进行顶点着色处理,其中,所述顶点着色处理用于在所述虚拟水体对象与所述三维场景之间对所述顶面和所述侧面上的每个顶点进行空间坐标变换以及为所述顶面和所述侧面上的部分或全部顶点配置模拟动画;对所述三维场景中被所述虚拟水体对象覆盖的像素区域进行片元着色处理,其中,所述片元着色处理用于将虚拟水体对象颜色和帧缓存中与所述像素区域对应的颜色进行混合。7.根据权利要求1所述的方法,其特征在于,在根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还包括:确定所述观察位置由所述虚拟水体对象的外部切换至所述虚拟水体对象的内部;获取与所述虚拟水体对象内部对应的着色器代码并触发显示屏幕后处理效果来模拟水下视觉,其中,所述屏幕后处理效果包括以下至少之一:线性雾,高度雾,表面阳光散射,水下气泡,鱼群。8.根据权利要求1所述的方法,其特征在于,在根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还包括:确定所述观察位置由所述虚拟水体对象的内部切换至所述虚拟水体对象的外部;获取与所述观察位置适配的三维场景,并对所述适配的三维场景进行折射扭曲处理。9.一种三维场景中虚拟资源对象的渲染装置,其特征在于,应用于包含一显示单元的电子设备,所述虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,所述装置包括:第一确定模块,用于确定所述虚拟水体对象在所述三维场景中的第一位置与所述预设虚拟资源对象在所述三维场景中的第二位置,其中,所述虚拟水体对象为具有顶...

【专利技术属性】
技术研发人员:姜帆
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1