CN107918949A - 虚拟资源对象的渲染方法、存储介质、处理器及终端 - Google Patents
虚拟资源对象的渲染方法、存储介质、处理器及终端 Download PDFInfo
- Publication number
- CN107918949A CN107918949A CN201711310976.9A CN201711310976A CN107918949A CN 107918949 A CN107918949 A CN 107918949A CN 201711310976 A CN201711310976 A CN 201711310976A CN 107918949 A CN107918949 A CN 107918949A
- Authority
- CN
- China
- Prior art keywords
- water body
- virtual
- body object
- vertex
- virtual resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种虚拟资源对象的渲染方法、存储介质、处理器及终端,应用于包含一显示单元和一摄像单元的电子设备,虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,该方法包括:通过电子设备的摄像单元捕获现实场景的图像,并以现实场景的图像为背景构建一三维场景;确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置;在三维场景中确定一观察位置;根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象。本发明解决了相关技术中所提供的可交互水体方式无法直接适用于AR平台的技术问题。
Description
技术领域
本发明涉及计算机图形学领域,具体而言,涉及一种虚拟资源对象的渲染方法、存储介质、处理器及终端。
背景技术
增强现实(Augmented Reality,简称为AR)技术是一种实时地计算摄影机影像的位置及角度并添加相应图像、视频、三维模型的技术。这种技术的目标在于:在屏幕上将虚拟世界嵌套在现实世界并进行互动。此项技术通过将真实环境与虚拟物体实时地叠加至同一个画面上,由此不仅能够展现真实世界的信息,而且还可以将虚拟世界显示出来,进而使得两种信息相互补充与叠加。
实时渲染技术的本质在于图形数据的实时计算和输出。在计算能力有限的情况下,通过一些简单的模拟方法能够快速地渲染出逼真的虚拟元素。
现有的AR应用中还未出现可交互的水体。在流体仿真模拟领域和游戏实时渲染领域,分别存在不同的对于可交互水体的实现方案。
在流体仿真模拟领域中,较为常用的模拟水的方法可以分为粒子法和网格法。粒子法将水体拆分成为多个粒子,通过纳维-斯托克斯方程(在流体力学领域描述粘性不可压缩流体动量守恒的运动方程)或者基于位置的密度估计等算法来计算粒子间的相互作用力,从而驱动粒子移动来模拟水的效果。网格法则是将水体区域划分为网格,同样根据纳维-斯托克斯方程等公式来计算各个网格的速度场(由每一时刻、每一点上的速度矢量组成的场)和密度场(每一时刻、每一点上的密度组成的场),然后再采用渲染算法根据密度场来绘制出水体。
在游戏实时渲染领域中,尤其是移动终端游戏中,由于计算能力有限,水体渲染方式只渲染水体的表面即可。水体的表面由一个平面构成,由顶点着色器(其为一组指令代码,这组指令代码在顶点被渲染时执行)来控制平面顶点的位移,从而模拟水体表面的波浪及涟漪,然后再通过片元着色器(其为一组指令代码,在顶点着色器之后执行,指令代码用于执行漫反射和/或镜面反射光照计算)来为平面着色,从而使得该平面看上去近似一个完整水体的表面。
AR应用中的水体模拟、渲染和交互还存在以下问题:
(1)现有的游戏实时渲染领域的水体是基于一个平面(即缺乏水体的侧面)来完成渲染的。而在AR应用中,由于需要将虚拟物体合理地放置在真实空间中,因此,需要将水体截成一个立体块来呈现。换言之,可以看到水体的侧面和底面。由此可见,现有的实时渲染水体的方式无法直接用于AR应用中。
(2)由于AR平台的特殊性,虚拟的水体需要对真实的环境进行一些折射来增强虚实融合的代入感,即水体背后的背景是通过游戏玩家采用摄像装置实时拍摄到的画面。在AR游戏开发过程中,通过水体折射的画面是未知的,但是普通游戏领域的水体背后的背景则是已知的。
(3)现有移动平台涉及到的水更多表现为海面,由于海水通常代表游戏场景的边界,即游戏玩家不可进入的区域,因此,海水可以采用一个海水平面来代替,而无需考虑游戏玩家视角在水下和进出水的情形,也无需考虑游戏玩家与海水的交互情形。然而,在AR平台上,由于游戏玩家的手持设备即为玩家视角,因此,其可以在虚拟世界中的任意位置观看虚拟物体,进而需要考虑玩家视角在水下,在水外,进出水,游戏玩家抛扔的物体进入水中,以使海水呈现不同的可交互效果。
(4)流体模拟领域通常所采用的模拟方法可以模拟出“体”的概念(即模拟水的区域是一个实体,而非一个壳体),但是,该种模拟方法对于性能的消耗极高(即每帧图像都需要计算每个粒子的受力情况并模拟每个粒子的运动方向),故而无法应用在移动端。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明至少部分实施例提供了一种虚拟资源对象的渲染方法、存储介质、处理器及终端,以至少解决相关技术中所提供的可交互水体方式无法直接适用于AR平台的技术问题。
根据本发明其中一实施例,提供了一种虚拟资源对象的渲染方法,应用于包含一显示单元和一摄像单元的电子设备,虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,上述方法包括:
通过电子设备的摄像单元捕获现实场景的图像,并以现实场景的图像为背景构建一三维场景;确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置,其中,虚拟水体对象为具有顶面和侧面的三维结构体,预设虚拟对象为不写深度缓存的虚拟资源对象;在三维场景中确定一观察位置;根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象。
可选地,在三维场景中确定一观察位置包括:根据电子设备的摄像单元捕获的现实场景的图像在三维场景中确定一观察位置。
可选地,根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象的渲染顺序,包括:若第二位置和观察位置的连线穿过第一位置,则确定预设虚拟资源对象先于虚拟水体对象渲染。
可选地,在确定第一位置与第二位置之前,还包括:配置虚拟水体对象的顶面,其中,顶面用于模拟海浪;配置虚拟水体对象的侧面,其中,侧面用于呈现立体特效,且侧面中每个侧面所包含的网格面数量小于顶面所包含的网格面数量;分别为顶面上的每个顶点以及侧面上的每个顶点配置初始颜色,其中,初始颜色用于标识虚拟水体对象中与每个顶点对应的区域。
可选地,分别为顶面上的每个顶点以及侧面上的每个顶点配置初始颜色包括:将位于顶面上的每个顶点的第一颜色通道的取值设置为真;将位于第一部分侧面上的每个顶点的第二颜色通道的取值设置为真,其中,第一部分侧面是侧面中与顶面相邻的部分侧面;将位于第二部分侧面上的每个顶点的第三颜色通道的取值设置为真,其中,第二部分侧面是侧面中与第一部分侧面相邻的另外部分侧面。
可选地,确定所述预设虚拟资源对象先于所述虚拟水体对象渲染包括:计算第一向量与第二向量的数量积,得到第一计算结果,其中,第一向量是由顶面和侧面中每个平面的中心位置与预设虚拟资源对象所在位置确定的,第二向量为每个平面的法向量;计算第三向量与第二向量的数量积,得到第二计算结果,其中,第三向量是由每个平面的中心位置与观察位置确定的;计算第一计算结果与第二计算结果的向量积,得到第三计算结果;如果发现与每个平面分别对应的第三计算结果中存在任一计算结果小于或等于0,则确定预设虚拟资源对象先于虚拟水体对象进行渲染。
可选地,根据所述渲染顺序渲染所述虚拟水体对象包括:对顶面和侧面上的每个顶点进行顶点着色处理,其中,顶点着色处理用于在虚拟水体对象与三维场景之间对顶面和侧面上的每个顶点进行空间坐标变换以及为顶面和侧面上的部分或全部顶点配置模拟动画;对三维场景中被虚拟水体对象覆盖的像素区域进行片元着色处理,其中,片元着色处理用于将虚拟水体对象颜色和帧缓存中与像素区域对应的颜色进行混合。
可选地,在根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还包括:确定观察位置由虚拟水体对象的外部切换至虚拟水体对象的内部;获取与虚拟水体对象内部对应的着色器代码并触发显示屏幕后处理效果来模拟水下视觉,其中,屏幕后处理效果包括以下至少之一:线性雾,高度雾,表面阳光散射,水下气泡,鱼群。
可选地,在根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还包括:确定观察位置由虚拟水体对象的内部切换至虚拟水体对象的外部;获取与观察位置适配的三维场景,并对适配的三维场景进行折射扭曲处理。
根据本发明其中一实施例,还提供了一种虚拟资源对象的渲染装置,应用于包含一显示单元和一摄像单元的电子设备,虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,上述装置包括:
处理模块,用于通过电子设备的摄像单元捕获现实场景的图像,并以现实场景的图像为背景构建一三维场景;第一确定模块,用于确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置,其中,虚拟水体对象为具有顶面和侧面的三维结构体,预设虚拟对象为不写深度缓存的虚拟资源对象;第二确定模块,用于根据电子设备的摄像单元捕获的现实场景的图像在三维场景中确定一观察位置;第三确定模块,用于根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;渲染模块,用于根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象。
可选地,第三确定模块,用于若第二位置和观察位置的连线穿过第一位置,则确定预设虚拟资源对象先于虚拟水体对象渲染。
可选地,上述装置还包括:配置模块,用于配置虚拟水体对象的顶面,其中,顶面用于模拟海浪;配置模块,还用于配置虚拟水体对象的侧面,其中,侧面用于呈现立体特效,且侧面中每个侧面所包含的网格面数量小于顶面所包含的网格面数量;配置模块,还用于分别为顶面上的每个顶点以及侧面上的每个顶点配置初始颜色,其中,初始颜色用于标识虚拟水体对象中与每个顶点对应的区域。
可选地,配置模块包括:第一配置单元,用于将位于顶面上的每个顶点的第一颜色通道的取值设置为真;第二配置单元,用于将位于第一部分侧面上的每个顶点的第二颜色通道的取值设置为真,其中,第一部分侧面是侧面中与顶面相邻的部分侧面;第三配置单元,用于将位于第二部分侧面上的每个顶点的第三颜色通道的取值设置为真,其中,第二部分侧面是侧面中与第一部分侧面相邻的另外部分侧面。
可选地,第三确定模块包括:第一计算单元,用于计算第一向量与第二向量的数量积,得到第一计算结果,其中,第一向量是由顶面和侧面中每个平面的中心位置与预设虚拟资源对象所在位置确定的,第二向量为每个平面的法向量;第二计算单元,用于计算第三向量与第二向量的数量积,得到第二计算结果,其中,第三向量是由每个平面的中心位置与观察位置确定的;第三计算单元,用于计算第一计算结果与第二计算结果的向量积,得到第三计算结果;确定单元,用于如果发现与每个平面分别对应的第三计算结果中存在任一计算结果小于或等于0,则确定预设虚拟资源对象先于虚拟水体对象进行渲染。
可选地,渲染模块包括:第一处理单元,用于对顶面和侧面上的每个顶点进行顶点着色处理,其中,顶点着色处理用于在虚拟水体对象与三维场景之间对顶面和侧面上的每个顶点进行空间坐标变换以及为顶面和侧面上的部分或全部顶点配置模拟动画;第二处理单元,用于对三维场景中被虚拟水体对象覆盖的像素区域进行片元着色处理,其中,片元着色处理用于将虚拟水体对象颜色和帧缓存中与像素区域对应的颜色进行混合。
可选地,上述装置还包括:第四确定模块,用于确定观察位置由虚拟水体对象的外部切换至虚拟水体对象的内部;第一获取模块,用于获取与虚拟水体对象内部对应的着色器代码并触发显示屏幕后处理效果来模拟水下视觉,其中,屏幕后处理效果包括以下至少之一:线性雾,高度雾,表面阳光散射,水下气泡,鱼群。
可选地,上述装置还包括:第五确定模块,用于确定观察位置由虚拟水体对象的内部切换至虚拟水体对象的外部;第二获取模块,用于获取与观察位置适配的三维场景,并对适配的三维场景进行折射扭曲处理。
根据本发明其中一实施例,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述虚拟资源对象的渲染方法。
根据本发明其中一实施例,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述虚拟资源对象的渲染方法。
根据本发明其中一实施例,还提供了一种终端,包括:一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序用于执行上述虚拟资源对象的渲染方法。
在本发明至少部分实施例中,采用通过电子设备的摄像单元捕获现实场景的图像,并以现实场景的图像为背景构建一三维场景,通过确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置,其中,虚拟水体对象为具有顶面和侧面的三维结构体,预设虚拟对象为不写深度缓存的虚拟资源对象;在三维场景中确定一观察位置;根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象,达到了在增强现实中实现可交互水体的目的,从而实现了实用性较强、性能消耗较低的技术效果,进而解决了相关技术中所提供的可交互水体方式无法直接适用于AR平台的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明其中一实施例的虚拟资源对象的渲染方法的流程图;
图2是根据本发明其中一优选实施例的虚拟水体对象示意图;
图3是根据本发明其中一优选实施例的顶点色配置示意图;
图4是根据本发明其中一优选实施例的浪花区域示意图;
图5是根据本发明其中一优选实施例的水下环境示意图;
图6是根据本发明其中一优选实施例的海底效果示意图;
图7是根据本发明其中一优选实施例的游戏玩家手持AR设备从水中移出之后的观看效果示意图;
图8是根据本发明其中一实施例的虚拟资源对象的渲染装置的结构框图;
图9是根据本发明其中一优选实施例的虚拟资源对象的渲染装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明其中一实施例,提供了一种虚拟资源对象的渲染方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明其中一实施例的虚拟资源对象的渲染方法的流程图,如图1所示,该方法应用于包含一显示单元和一摄像单元的电子设备,虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,该方法包括如下步骤:
步骤S10,通过电子设备的摄像单元捕获现实场景的图像,并以现实场景的图像为背景构建一三维场景;
步骤S11,确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置,其中,虚拟水体对象为具有顶面和侧面的三维结构体,预设虚拟对象为不写深度缓存的虚拟资源对象;
步骤S12,在三维场景中确定一观察位置;
步骤S13,根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;
步骤S14,根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象。
通过上述步骤,可以采用通过电子设备的摄像单元捕获现实场景的图像,并以现实场景的图像为背景构建一三维场景,通过确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置,其中,虚拟水体对象为具有顶面和侧面的三维结构体,预设虚拟对象为不写深度缓存的虚拟资源对象;根据电子设备的摄像单元捕获的现实场景的图像在三维场景中确定一观察位置;根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象,达到了在增强现实中实现可交互水体的目的,从而实现了实用性较强、性能消耗较低的技术效果,进而解决了相关技术中所提供的可交互水体方式无法直接适用于AR平台的技术问题。
上述电子设备可以为但不限于:智能手机、头戴式设备。
上述观察位置为虚拟摄像机所在位置。
可选地,在步骤S13中,根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象的渲染顺序可以包括以下执行步骤:
步骤S131,若第二位置和观察位置的连线穿过第一位置,则确定预设虚拟资源对象先于虚拟水体对象渲染。
第二位置和观察位置的连线穿过第一位置,包括:第二位置和观察位置的连线穿过虚拟水体对象范围。鉴于水体并非是真正的实心体结构,而是一个立方体外壳,为此,在水体着色过程中,需要执行特定的渲染顺序,即当摄像机与预设虚拟资源对象之间的连线穿透水体时,这些预设虚拟资源对象需要在水体之前进行渲染,以确保水体可对其实施折射效果;否则,这些预设虚拟资源对象将在水体之后进行渲染。另外,对于无需写入深度缓存(其用于记录每个像素的深度,其目的在于:正确地生成通常的深度感知效果,即近处物体遮挡远处物体)的物体(例如:粒子特效,数百个粒子在小范围内不停的变换远近关系),水体的渲染顺序需要根据摄像机相对于水体的位置关系来进行动态地调整。下面将对上述特定的渲染顺序进行具体说明。
首先,由于AR平台需要达到虚实融合的效果,因此,通过AR设备所拍摄到的实时画面需要作为背景最先渲染至帧缓存,其为屏幕所显示画面的直接映象,又称为位映射图(Bit Map)或光栅。帧缓存的每个存储单元对应屏幕上的一个像素,整个帧缓存则对应一帧图像。
然后,水体由于是透明物体,会排列在不透明物体之后进行渲染。因此,在渲染水体时,水体与先前已经完成渲染的背景、不透明物体、部分透明物体写在帧缓存中的颜色进行混合。
由于部分不透明物体并未写入深度缓存,即GPU能够获知未写入深度缓存的不透明物体的颜色,但是无法获知这类不透明物体与其他物体之间的位置关系,因此,与水体的渲染顺序需要依据视角与水体的相对位置关系发生动态变化。例如:当摄像机与特效球均位于水体上方时,应该先渲染水体,再渲染特效球。当摄像机在水内,特效球在水外时,应该先渲染特效球,再渲染水体。当摄像机与特效球都在水内时,应该先渲染水体,再渲染特效球。
通过控制渲染顺序,不仅确保特殊的立方体水体结构可以在不同视角下能够正常渲染,而且还使得水体与真实背景相互融合,达到虚实结合的效果。
可选地,步骤S10,通过电子设备的摄像单元捕获现实场景的图像,并以现实场景的图像为背景构建一三维场景。具体地,可以通过电子设备的摄像单元捕获现实场景的图像,识别所述现实场景图像中的特征点,以其中若干特征点为基准构建一现实空间的三维坐标系,并将现实空间的三维坐标系与虚拟空间的三维坐标系匹配,从而实现以现实场景的图像为背景构建一三维场景,为达到增强现实中的“虚实混合效果”建立空间坐标基础。具体实现中,可以采用现有的SDK,比如,ARKit。
可选地,在步骤S11,确定第一位置与第二位置之前还可以包括以下执行步骤:
步骤S15,配置虚拟水体对象的顶面,其中,顶面用于模拟海浪;
步骤S16,配置虚拟水体对象的侧面,其中,侧面用于呈现立体特效,且侧面中每个侧面所包含的网格面数量小于顶面所包含的网格面数量;
步骤S17,分别为顶面上的每个顶点以及侧面上的每个顶点配置初始颜色,其中,初始颜色用于标识虚拟水体对象中与每个顶点对应的区域。
在优选实施过程中,可以对现有游戏实时渲染平台中的水体模拟方式进行扩展(即由一个平面扩展到一个立方体),使其可以适用于AR场景中,并且对虚拟水体对象的顶面与侧面进行优化,使其尽可能地提高性能。
具体地,将立方体设置为呈现水体的模型,其中,该立方体的顶面面数稍多,用于表现海水的表面波浪,该立方体的侧面面数较少且该立方体无底面。
在虚拟水体对象的制作过程中,可以确定每个顶点所标注的颜色,即顶点色。该顶点色在着色(其是指在游戏运行时,图形处理器为该虚拟水体对象所覆盖在屏幕上的像素指定颜色的行为)时用于区分不同顶点。通过顶点色能够区分水体的不同区域,例如:红色表示虚拟水体对象顶面上的顶点,绿色表示虚拟水体对象侧面的上半部分顶点,蓝色表示虚拟水体对象侧面的下半部分顶点,进而根据不同的顶点色,虚拟水体对象在着色时,执行不同的着色逻辑代码,以使虚拟水体对象的顶面与侧面(包括:上半部分侧面和下半部分侧面)呈现差异化、逼真的水体效果。例如:在游戏运行时,图形处理器(GPU)读取当前顶点附带的顶点色为红色,但是GPU在运行着色器后经过计算发现该顶点应当显示为蓝色,最终GPU通知显示屏将该顶点显示为蓝色,即将该顶点着色为蓝色。
可选地,在步骤S17中,分别为顶面上的每个顶点以及侧面上的每个顶点配置初始颜色可以包括以下执行步骤:
步骤S171,将位于顶面上的每个顶点的第一颜色通道的取值设置为真;
步骤S172,将位于第一部分侧面上的每个顶点的第二颜色通道的取值设置为真,其中,第一部分侧面是侧面中与顶面相邻的部分侧面;
步骤S173,将位于第二部分侧面上的每个顶点的第三颜色通道的取值设置为真,其中,第二部分侧面是侧面中与第一部分侧面相邻的另外部分侧面。
在配置虚拟水体对象过程中,分别为每个顶点赋予初始颜色以便在着色阶段区分该顶点的着色逻辑。每个顶点均具有RGBA四个颜色通道。针对位于顶面的顶点,可以将R通道设置为1(即为真);针对上半部分侧面的顶点,可以将G通道设置为1;针对下半部分侧面的顶点,可以将B通道设置为1。
可选地,在步骤S12,在三维场景中确定一观察位置。可以根据电子设备的移动调整观察位置。可选地,根据电子设备的摄像单元捕获的现实场景的图像在三维场景中确定一观察位置。可以从电子设备的摄像单元捕获的现实场景的图像中提取特征点,并根据所述特征点进行计算,反推出虚拟摄像机的位置(观察点的位置)。
可选地,在步骤S12,在三维场景中确定一观察位置,包括:所述电子设备的显示单元为触控显示单元,根据作用于所述电子设备的触控显示单元的触控操作在三维场景中确定一观察位置。比如,可以根据作用于所述电子设备的触控显示单元的点击或才滑动触控操作调整三维场景中虚拟摄像机的位置(观察位置)。
可选地,在步骤S131中,确定所述预设虚拟资源对象先于所述虚拟水体对象渲染可以包括以下执行步骤:
步骤S1311,计算第一向量与第二向量的数量积,得到第一计算结果,其中,第一向量是由顶面和侧面中每个平面的中心位置与预设虚拟资源对象所在位置确定的,第二向量为每个平面的法向量;
步骤S1312,计算第三向量与第二向量的数量积,得到第二计算结果,其中,第三向量是由每个平面的中心位置与观察位置确定的;
步骤S1313,计算第一计算结果与第二计算结果的向量积,得到第三计算结果;
步骤S1314,如果发现与每个平面分别对应的第三计算结果中存在任一计算结果小于或等于0,则确定预设虚拟资源对象先于虚拟水体对象进行渲染;否则,确定预设虚拟资源对象晚于虚拟水体对象进行渲染。
假设虚拟水体对象五个面的中心点为Pi,法向量为Ni,其中,i=1代表顶面,i=2-5分别代表四个不同侧面,另外还假设预设虚拟资源对象所在位置为Po,摄像机的位置为PV;则采用如下公式计算:
Vi=((Po-Pi)·Ni)*((Pv-Pi)·Ni) i=1…5
若对于上述五个面,其中任何一个面出现Vi≤0的情况,则表示该预设虚拟资源对象需要先于虚拟水体对象进行渲染;否则,该预设虚拟资源对象将晚于虚拟水体对象进行渲染。
可选地,在步骤S14中,根据所述渲染顺序渲染所述虚拟水体对象可以包括以下执行步骤:
步骤S141,对顶面和侧面上的每个顶点进行顶点着色处理,其中,顶点着色处理用于在虚拟水体对象与三维场景之间对顶面和侧面上的每个顶点进行空间坐标变换以及为顶面和侧面上的部分或全部顶点配置模拟动画;
步骤S142,对三维场景中被虚拟水体对象覆盖的像素区域进行片元着色处理,其中,片元着色处理用于将虚拟水体对象颜色和帧缓存中与像素区域对应的颜色进行混合。
在顶点着色处理过程中不仅需要完成顶点空间变换还需要为位于顶面和侧面不同区域内的顶点配置不同的模拟动画。在片元着色处理过程中主要计算水体所覆盖的像素因水体所要混合的颜色。
可选地,在步骤S14,根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还可以包括以下执行步骤:
步骤S18,确定观察位置由虚拟水体对象的外部切换至虚拟水体对象的内部;
步骤S19,获取与虚拟水体对象内部对应的着色器代码并触发显示屏幕后处理效果来模拟水下视觉,其中,屏幕后处理效果包括以下至少之一:线性雾,高度雾,表面阳光散射,水下气泡,鱼群。
由于在AR平台,玩家视角可以在水下自由观看,因此,在水下需要采用屏幕后处理效果及特效来避免上述虚拟水体对象在效果显示发面存在的瑕疵,其中,可以包括但不限于:线性雾(距离越远,雾越浓),高度雾(越接近海底,海底的深蓝色效果越浓),表面阳光散射,水下气泡,鱼群。另外,还需要在海底及海底沉船上投射海水对于阳光的散射效果。
通过屏幕后处理和视角在特定区域触发特效的方式,对水下的效果进行模拟。在考虑AR平台中玩家视角可处于虚拟世界中任意位置的条件下,通过多种后处理技术真实地再现玩家视角在水下不同深度所应感受到的水下效果。
可选地,在步骤S14,根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还可以包括以下执行步骤:
步骤S17,确定观察位置由虚拟水体对象的内部切换至虚拟水体对象的外部;
步骤S18,获取与观察位置适配的三维场景,并对适配的三维场景进行折射扭曲处理。
由于游戏玩家在AR场景中可以手持设备自由出入水体,因此,在设备从水下升到水上之后,屏幕上需要存在镜头被水浸湿的水珠效果,而且该水珠效果在一段时间后,会逐渐消失,即水珠被风干。此外,在物体落入水体的AR场景中。水体会溅出水花特效,并且水体的表面会出现向外扩散的涟漪。
针对游戏玩家对于虚拟水体对象的交互提供相适应的反馈,以便游戏玩家在体验AR游戏时,具有身历其境的真实感觉。
下面将结合一个优选实施例对上述优选实施过程作进一步描述。
在该优选实施例中,可以在AR平台立体呈现一块水体的局部(即整个海洋的一个局部),水体会对其背后的真实世界产生一定的折射效果,进而表现出极为真实的虚实融合度。另外,通过实时渲染及屏幕后处理技术,能够实现完整的水上、水下及视角进出水效果以支持AR平台的自由视角。AR平台所呈现的虚拟物体需要尽可能地与现实环境相互融合以及针对游戏玩家的互动具有一定程度的反馈。在此条件上,还需要高效的性能作为保障。
该优选实施例具体可以包括以下执行步骤:
第一步、制作虚拟水体对象。图2是根据本发明其中一优选实施例的虚拟水体对象示意图,如图2所示,虚拟水体对象的表面可以细分为60*60的网格表面,用来模拟海浪的细节。虚拟水体对象的侧面可以细分为8*4的网格表面,用来呈现虚拟水体对象的立体效果,且侧面顶点无动画而仅有由深到浅的过渡效果。由于该水体在AR中使用时,会被放置在AR所侦测到的平面上,因此,在通常情况下,游戏设备不会从水体底部观看水体,而且还考虑到透明物体的渲染性能,故而将虚拟水体对象的底面移除。
第二步、在制作虚拟水体对象过程中,分别为每个顶点赋予初始颜色以便在着色阶段区分该顶点的着色逻辑。图3是根据本发明其中一优选实施例的顶点色配置示意图,如图3所示,每个顶点均具有RGBA四个颜色通道。针对位于顶面的顶点,可以将R通道设置为1;针对上半部分侧面的顶点,可以将G通道设置为1;针对下半部分侧面的顶点,可以将B通道设置为1。图4是根据本发明其中一优选实施例的浪花区域示意图,如图4所示,针对剩余的A通道,可以作为特殊区域的标识。例如:将其作为渲染浪花区域的标识。
第三步、在对上述虚拟水体对象进行正式渲染之前,需要对水体及场景内透明且不写深度缓存的预设虚拟资源对象进行渲染顺序重排,以此来保证水体与这些预设虚拟资源对象之间的渲染效果正常。重排的依据为:当摄像机与预设虚拟资源对象之间的连线穿透水体时,这些预设虚拟资源对象位于水体之前渲染,以此来确保水体对其产生折射效果;否则,这些预设虚拟资源对象位于水体之后渲染。
第四步、预加载水体外侧与水体内侧的两种不同着色器代码,当视角位于水体外侧(即虚拟水体对象覆盖范围之外的全部区域)时,水体呈现更丰富的海面细节;当视角在水底(即海平面之下且位于虚拟水体对象覆盖范围内)时,为了节约性能,水体呈现较简单的细节。这两种着色器代码根据视角的位置自动切换。
第五步、设置水体渲染状态,其中,可以包括但不限于:
(1)设置渲染队列为透明物体,用于确保虚拟水体对象晚于所有不透明物体进行渲染;
(2)渲染类型为透明,用于确定为着色器分配的着色器组别;
(3)关闭背面裁剪,用于确定物体从每个面的反面也可见;
(4)开启深度写,用于在绘制水体时,将自身与其它物体的远近关系通知给GPU;
(5)开启深度测试,用于当发现特定物体中的特定像素远于其它已经通知给GPU的远近关系的物体,则这个像素最终将不会显示到屏幕上。
第六步、抓取背景。为了充分实现虚实融合的效果,水体需要对AR拍摄到的现实画面产生一定的折射效果,因此,在渲染水体之前,需要对当前已经渲染至帧缓存的内容进行抓取,并保存至一张背景纹理中,等待水体渲染时使用。
第七步、顶点着色阶段。在顶点着色器阶段,主要完成顶点空间变换,模拟海浪的顶点动画,模拟交互涟漪的顶点动画以及为后续的片元着色器提供所需参数。
模拟海浪的顶点动画可以选用时下最流行的Gerstner波,相比于其它波形,Gerstner波的波峰更尖,波谷更宽,更接近于真实的海浪。
模拟交互涟漪的顶点动画由脚本将计算结果写入至贴图中,进而传递至着色器。具体过程表现如下:水体碰撞体检测到物体与水体表面的碰撞,以碰撞点为中心生成向外扩散的Gerstner波,该波对于水面各个位置的影响记录在特定贴图中。该贴图的颜色灰度值代表水体表面的该位置受到涟漪的影响大小,从而在顶点着色器阶段根据贴图的灰度来改变该顶点起伏的大小。
另外,上述顶点动画需要根据第二步中的顶点色来区分哪些顶点受到顶点动画的影响。只有R通道大于0(红色区域)的顶点才会受到海浪和涟漪动画的控制。
第八步、片元着色阶段。主要计算水体所覆盖的像素因水体所要混合的颜色,其中,根据第二步中的顶点色,红色区域的顶点表现的是海面特性,绿色和蓝色所表现的则是海水侧面效果的特性。在第四步中提到的水体外侧和内侧的两种不同着色器代码,主要体现在当前步骤。因为在水中,水体片元着色的开销随着水体所占全屏的像素而变得很高,但水体表面的很多细节在水中其实无法看到。因此,在水内的着色器代码可以省略大量的水体表面细节。
水面的着色特征与现有的水体特征相同,其主要包含:由贴图噪声模拟的小波浪,由第六步中的背景作为着色混合的折射效果,高光效果,由环境贴图产生的反射效果,fresnel效果,由顶点色A通道标识的岸边浪花效果以及颜色的混合效果。
由顶点色A通道标识的岸边浪花效果,由于场景中的山体皆保持静止状态,因此未采用现有的借助摄像机的深度贴图来计算当前着色深度与现有深度的差值来生成浪花,主要是出于性能考虑。
在水内着色器代码中,水面的效果保留小波浪及颜色混合效果。
水侧壁主要使用的特征可以包括:颜色的混合效果,由浅至深,水体的深度逐渐增大,由第六步中的背景作为着色混合的折射效果以及水体动态光柱的装饰效果。
第九步、图5是根据本发明其中一优选实施例的水下环境示意图,如图5所示,当游戏玩家手持AR设备进入水下之后,除了水体本身切换成较为简单的水内着色器代码外,还需要激活屏幕后处理效果来模拟水下视觉,其可以包括但不限于:线性雾,高度雾,表面阳光散射,水下气泡,鱼群。
在游戏引擎中,当AR设备的碰撞体位于水体碰撞体之外,则可以确定AR设备在水外;当AR设备的碰撞体在水体之内,则可以确定AR设备在水内。
线性雾是一种游戏实时渲染领域常用的雾效,距离视点越远的物体,其混合的雾色更多。高度雾是一种游戏实时渲染领域常用的雾效,其可以表现为越接近海底,海底的深蓝色效果越浓。表面阳光散射主要利用水面着色时产生的小波浪,其颜色由屏幕顶端至屏幕底部两侧逐渐线性扩散。该效果耗费性能较多,因此只有距离海表面一定距离内且抬头看向海面时,才会触发阳光散射的特效。另外在触发该特效时,需要在效果与迭代次数之间加以权衡来确保实现效率。
第十步、图6是根据本发明其中一优选实施例的海底效果示意图,如图6所示,海底的效果根据海底模型的世界坐标位置,用贴图加噪声混合了水下波光粼粼的效果,从而使得海底变得更加生动逼真。具体地,可以预先准备类似波光粼粼的贴图,然后根据噪声(其可以理解为一张显示内容无规律的黑白图片)来促使上述贴图执行移动和显示,以产生波光粼粼的效果。
第十一步、在游戏玩家手持AR设备从水中移出之后,屏幕在一段时间内会产生屏幕水珠的特效。具体地,水珠流淌的时间可以设置为3秒,水珠缓慢变干的时间可以设置为6秒。图7是根据本发明其中一优选实施例的游戏玩家手持AR设备从水中移出之后的观看效果示意图,如图7所示,在该特效触发时,屏幕一段时间内看到的真实世界呈折射状态,其折射原理与水体相同,均为先采集三维场景,然后在后处理时对三维场景进行折射扭曲。
根据本发明其中一实施例,提供了一种虚拟资源对象的渲染装置的实施例,图8是根据本发明其中一实施例的虚拟资源对象的渲染装置的结构框图,如图8所示,该装置应用于包含一显示单元和一摄像单元的电子设备,虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,该装置包括:处理模块10,用于通过电子设备的摄像单元捕获现实场景的图像,并以现实场景的图像为背景构建一三维场景;第一确定模块20,用于确定虚拟水体对象在三维场景中的第一位置与预设虚拟资源对象在三维场景中的第二位置,其中,虚拟水体对象为具有顶面和侧面的三维结构体,预设虚拟对象为不写深度缓存的虚拟资源对象;第二确定模块30,用于根据电子设备的摄像单元捕获的现实场景的图像在三维场景中确定一观察位置;第三确定模块40,用于根据第一位置、第二位置和观察位置确定虚拟水体对象和预设虚拟资源对象之间的渲染顺序;渲染模块50,用于根据渲染顺序渲染虚拟水体对象和预设虚拟资源对象。
可选地,第三确定模块,用于若第二位置和观察位置的连线穿过第一位置,则确定预设虚拟资源对象先于虚拟水体对象渲染。
可选地,图9是根据本发明其中一优选实施例的虚拟水体对象的渲染装置的结构框图,如图9所示,上述装置包括:配置模块60,用于配置虚拟水体对象的顶面,其中,顶面用于模拟海浪;配置模块60,还用于配置虚拟水体对象的侧面,其中,侧面用于呈现立体特效,且侧面中每个侧面所包含的网格面数量小于顶面所包含的网格面数量;配置模块60,还用于分别为顶面上的每个顶点以及侧面上的每个顶点配置初始颜色,其中,初始颜色用于标识虚拟水体对象中与每个顶点对应的区域。
可选地,配置模块60包括:第一配置单元(图中未示出),用于将位于顶面上的每个顶点的第一颜色通道的取值设置为真;第二配置单元(图中未示出),用于将位于第一部分侧面上的每个顶点的第二颜色通道的取值设置为真,其中,第一部分侧面是侧面中与顶面相邻的部分侧面;第三配置单元(图中未示出),用于将位于第二部分侧面上的每个顶点的第三颜色通道的取值设置为真,其中,第二部分侧面是侧面中与第一部分侧面相邻的另外部分侧面。
可选地,第三确定模块40包括:第一计算单元(图中未示出),用于计算第一向量与第二向量的数量积,得到第一计算结果,其中,第一向量是由顶面和侧面中每个平面的中心位置与预设虚拟资源对象所在位置确定的,第二向量为每个平面的法向量;第二计算单元(图中未示出),用于计算第三向量与第二向量的数量积,得到第二计算结果,其中,第三向量是由每个平面的中心位置与观察位置确定的;第三计算单元(图中未示出),用于计算第一计算结果与第二计算结果的向量积,得到第三计算结果;确定单元(图中未示出),用于如果发现与每个平面分别对应的第三计算结果中存在任一计算结果小于或等于0,则确定预设虚拟资源对象先于虚拟水体对象进行渲染。
可选地,渲染模块50包括:第一处理单元(图中未示出),用于对顶面和侧面上的每个顶点进行顶点着色处理,其中,顶点着色处理用于在虚拟水体对象与三维场景之间对顶面和侧面上的每个顶点进行空间坐标变换以及为顶面和侧面上的部分或全部顶点配置模拟动画;第二处理单元(图中未示出),用于对三维场景中被虚拟水体对象覆盖的像素区域进行片元着色处理,其中,片元着色处理用于将虚拟水体对象颜色和帧缓存中与像素区域对应的颜色进行混合。
可选地,如图9所示,上述装置还可以包括:第四确定模块70,用于确定观察位置由虚拟水体对象的外部切换至虚拟水体对象的内部;第一获取模块80,用于获取与虚拟水体对象内部对应的着色器代码并触发显示屏幕后处理效果来模拟水下视觉,其中,屏幕后处理效果包括以下至少之一:线性雾,高度雾,表面阳光散射,水下气泡,鱼群。
可选地,如图9所示,上述装置还可以包括:第三确定模块90,用于确定观察位置由虚拟水体对象的内部切换至虚拟水体对象的外部;第二获取模块100,用于获取与观察位置适配的三维场景,并对适配的三维场景进行折射扭曲处理。
根据本发明其中一实施例,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述虚拟水体对象的渲染方法。上述存储介质可以包括但不限于:U盘、只读存储器(ROM)、随机存取存储器(RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
根据本发明其中一实施例,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述虚拟水体对象的渲染方法。上述处理器可以包括但不限于:微处理器(MCU)或可编程逻辑器件(FPGA)等的处理装置。
根据本发明其中一实施例,还提供了一种终端,包括:一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序用于执行上述虚拟水体对象的渲染方法。在一些实施例中,上述终端可以是智能手机(例如:Android手机、iOS手机等)、AR头戴设备等终端设备。上述显示装置可以是触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与终端的用户界面进行交互。此外,上述终端还可以包括:输入/输出接口(I/O接口)、通用串行总线(USB)端口、网络接口、电源和/或相机。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (20)
1.一种虚拟资源对象的渲染方法,其特征在于,应用于包含一显示单元和一摄像单元的电子设备,所述虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,所述方法包括:
通过所述电子设备的所述摄像单元捕获现实场景的图像,并以所述现实场景的图像为背景构建一三维场景;
确定所述虚拟水体对象在所述三维场景中的第一位置与所述预设虚拟资源对象在所述三维场景中的第二位置,其中,所述虚拟水体对象为具有顶面和侧面的三维结构体,所述预设虚拟对象为不写深度缓存的虚拟资源对象;
在所述三维场景中确定一观察位置;
根据所述第一位置、所述第二位置和所述观察位置确定所述虚拟水体对象和所述预设虚拟资源对象之间的渲染顺序;
根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一位置、所述第二位置和所述观察位置确定所述虚拟水体对象和预设虚拟资源对象的渲染顺序,包括:
若所述第二位置和所述观察位置的连线穿过所述第一位置,则确定所述预设虚拟资源对象先于所述虚拟水体对象渲染。
3.根据权利要求1所述的方法,其特征在于,在确定所述第一位置与所述第二位置之前,还包括:
配置所述虚拟水体对象的顶面,其中,所述顶面用于模拟海浪;
配置所述虚拟水体对象的侧面,其中,所述侧面用于呈现立体特效,且所述侧面所包含的网格面数量小于所述顶面所包含的网格面数量;
分别为所述顶面上的每个顶点以及所述侧面上的每个顶点配置初始颜色,其中,所述初始颜色用于标识所述虚拟水体对象中与每个顶点对应的区域。
4.根据权利要求3所述的方法,其特征在于,分别为所述顶面上的每个顶点以及所述侧面上的每个顶点配置所述初始颜色包括:
将位于所述顶面上的每个顶点的第一颜色通道的取值设置为真;
将位于第一部分侧面上的每个顶点的第二颜色通道的取值设置为真,其中,所述第一部分侧面是所述侧面中与所述顶面相邻的部分侧面;
将位于第二部分侧面上的每个顶点的第三颜色通道的取值设置为真,其中,所述第二部分侧面是所述侧面中与所述第一部分侧面相邻的另外部分侧面。
5.根据权利要求2所述的方法,其特征在于,确定所述预设虚拟资源对象先于所述虚拟水体对象渲染包括:
计算第一向量与第二向量的数量积,得到第一计算结果,其中,所述第一向量是由所述顶面和所述侧面中每个平面的中心位置与所述第二位置确定的,所述第二向量为每个平面的法向量;
计算第三向量与所述第二向量的数量积,得到第二计算结果,其中,所述第三向量是由每个平面的中心位置与所述观察位置确定的;
计算所述第一计算结果与所述第二计算结果的向量积,得到第三计算结果;
如果发现与每个平面分别对应的第三计算结果中存在任一计算结果小于或等于0,则确定所述预设虚拟资源对象先于所述虚拟水体对象进行渲染。
6.根据权利要求1所述的方法,其特征在于,根据所述渲染顺序渲染所述虚拟水体对象包括:
对所述顶面和所述侧面上的每个顶点进行顶点着色处理,其中,所述顶点着色处理用于在所述虚拟水体对象与所述三维场景之间对所述顶面和所述侧面上的每个顶点进行空间坐标变换以及为所述顶面和所述侧面上的部分或全部顶点配置模拟动画;
对所述三维场景中被所述虚拟水体对象覆盖的像素区域进行片元着色处理,其中,所述片元着色处理用于将虚拟水体对象颜色和帧缓存中与所述像素区域对应的颜色进行混合。
7.根据权利要求1所述的方法,其特征在于,在根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还包括:
确定所述观察位置由所述虚拟水体对象的外部切换至所述虚拟水体对象的内部;
获取与所述虚拟水体对象内部对应的着色器代码并触发显示屏幕后处理效果来模拟水下视觉,其中,所述屏幕后处理效果包括以下至少之一:线性雾,高度雾,表面阳光散射,水下气泡,鱼群。
8.根据权利要求1所述的方法,其特征在于,在根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象之后,还包括:
确定所述观察位置由所述虚拟水体对象的内部切换至所述虚拟水体对象的外部;
获取与所述观察位置适配的三维场景,并对所述适配的三维场景进行折射扭曲处理。
9.根据权利要求1所述的方法,其特征在于,在所述三维场景中确定一观察位置,包括:
根据所述电子设备的所述摄像单元捕获的现实场景的图像在所述三维场景中确定一观察位置。
10.一种虚拟资源对象的渲染装置,其特征在于,应用于包含一显示单元和一摄像单元的电子设备,所述虚拟资源对象包含虚拟水体对象和预设虚拟资源对象,所述装置包括:
处理模块,用于通过所述电子设备的所述摄像单元捕获现实场景的图像,并以所述现实场景的图像为背景构建一三维场景;
第一确定模块,用于确定所述虚拟水体对象在所述三维场景中的第一位置与所述预设虚拟资源对象在所述三维场景中的第二位置,其中,所述虚拟水体对象为具有顶面和侧面的三维结构体,所述预设虚拟对象为不写深度缓存的虚拟资源对象;
第二确定模块,用于根据所述电子设备的所述摄像单元捕获的现实场景的图像在所述三维场景中确定一观察位置;
第三确定模块,用于根据所述第一位置、所述第二位置和所述观察位置确定所述虚拟水体对象和所述预设虚拟资源对象之间的渲染顺序;
渲染模块,用于根据所述渲染顺序渲染所述虚拟水体对象和所述预设虚拟资源对象。
11.根据权利要求10所述的装置,其特征在于,所述第三确定模块,用于若所述第二位置和所述观察位置的连线穿过所述第一位置,则确定所述预设虚拟资源对象先于所述虚拟水体对象渲染。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括:
配置模块,用于配置所述虚拟水体对象的顶面,其中,所述顶面用于模拟海浪;
所述配置模块,还用于配置所述虚拟水体对象的侧面,其中,所述侧面用于呈现立体特效,且所述侧面中每个侧面所包含的网格面数量小于所述顶面所包含的网格面数量;
所述配置模块,还用于分别为所述顶面上的每个顶点以及所述侧面上的每个顶点配置初始颜色,其中,所述初始颜色用于标识所述虚拟水体对象中与每个顶点对应的区域。
13.根据权利要求12所述的装置,其特征在于,所述配置模块包括:
第一配置单元,用于将位于所述顶面上的每个顶点的第一颜色通道的取值设置为真;
第二配置单元,用于将位于第一部分侧面上的每个顶点的第二颜色通道的取值设置为真,其中,所述第一部分侧面是所述侧面中与所述顶面相邻的部分侧面;
第三配置单元,用于将位于第二部分侧面上的每个顶点的第三颜色通道的取值设置为真,其中,所述第二部分侧面是所述侧面中与所述第一部分侧面相邻的另外部分侧面。
14.根据权利要求11所述的装置,其特征在于,所述第三确定模块包括:
第一计算单元,用于计算第一向量与第二向量的数量积,得到第一计算结果,其中,所述第一向量是由所述顶面和所述侧面中每个平面的中心位置与所述第二位置确定的,所述第二向量为每个平面的法向量;
第二计算单元,用于计算第三向量与所述第二向量的数量积,得到第二计算结果,其中,所述第三向量是由每个平面的中心位置与所述观察位置确定的;
第三计算单元,用于计算所述第一计算结果与所述第二计算结果的向量积,得到第三计算结果;
确定单元,用于如果发现与每个平面分别对应的第三计算结果中存在任一计算结果小于或等于0,则确定所述预设虚拟资源对象先于所述虚拟水体对象进行渲染。
15.根据权利要求10所述的装置,其特征在于,所述渲染模块包括:
第一处理单元,用于对所述顶面和所述侧面上的每个顶点进行顶点着色处理,其中,所述顶点着色处理用于在所述虚拟水体对象与所述三维场景之间对所述顶面和所述侧面上的每个顶点进行空间坐标变换以及为所述顶面和所述侧面上的部分或全部顶点配置模拟动画;
第二处理单元,用于对所述三维场景中被所述虚拟水体对象覆盖的像素区域进行片元着色处理,其中,所述片元着色处理用于将虚拟水体对象颜色和帧缓存中与所述像素区域对应的颜色进行混合。
16.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第四确定模块,用于确定所述观察位置由所述虚拟水体对象的外部切换至所述虚拟水体对象的内部;
第一获取模块,用于获取与所述虚拟水体对象内部对应的着色器代码并触发显示屏幕后处理效果来模拟水下视觉,其中,所述屏幕后处理效果包括以下至少之一:线性雾,高度雾,表面阳光散射,水下气泡,鱼群。
17.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第五确定模块,用于确定所述观察位置由所述虚拟水体对象的内部切换至所述虚拟水体对象的外部;
第二获取模块,用于获取与所述观察位置适配的三维场景,并对所述适配的三维场景进行折射扭曲处理。
18.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至9中任意一项所述的虚拟资源对象的渲染方法。
19.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至9中任意一项所述的虚拟资源对象的渲染方法。
20.一种终端,其特征在于,包括:一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序用于执行权利要求1至9中任意一项所述的虚拟资源对象的渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711310976.9A CN107918949A (zh) | 2017-12-11 | 2017-12-11 | 虚拟资源对象的渲染方法、存储介质、处理器及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711310976.9A CN107918949A (zh) | 2017-12-11 | 2017-12-11 | 虚拟资源对象的渲染方法、存储介质、处理器及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107918949A true CN107918949A (zh) | 2018-04-17 |
Family
ID=61893212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711310976.9A Pending CN107918949A (zh) | 2017-12-11 | 2017-12-11 | 虚拟资源对象的渲染方法、存储介质、处理器及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107918949A (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108665531A (zh) * | 2018-05-08 | 2018-10-16 | 阿里巴巴集团控股有限公司 | 3d粒子模型的变换方法及装置 |
CN109002185A (zh) * | 2018-06-21 | 2018-12-14 | 北京百度网讯科技有限公司 | 一种三维动画处理的方法、装置、设备及存储介质 |
CN109144256A (zh) * | 2018-08-20 | 2019-01-04 | 广州市三川田文化科技股份有限公司 | 一种虚拟现实行为互动方法及装置 |
CN109876441A (zh) * | 2019-03-13 | 2019-06-14 | 网易(杭州)网络有限公司 | 游戏中的渲染方法及装置、存储介质及电子设备 |
CN110163976A (zh) * | 2018-07-05 | 2019-08-23 | 腾讯数码(天津)有限公司 | 一种虚拟场景转换的方法、装置、终端设备及存储介质 |
CN110706325A (zh) * | 2019-09-29 | 2020-01-17 | 江苏科技大学 | 一种三维海底环境实时动态渲染方法和渲染系统 |
CN111145323A (zh) * | 2019-12-27 | 2020-05-12 | 珠海金山网络游戏科技有限公司 | 一种图像渲染方法及装置 |
CN111429558A (zh) * | 2020-03-02 | 2020-07-17 | 武汉大学 | 实时模拟动态水体缩略模型的方法及系统 |
CN111467801A (zh) * | 2020-04-20 | 2020-07-31 | 网易(杭州)网络有限公司 | 模型消隐方法及装置、存储介质及电子设备 |
CN111494945A (zh) * | 2020-04-22 | 2020-08-07 | 网易(杭州)网络有限公司 | 虚拟对象处理方法及装置、存储介质、电子设备 |
CN111530085A (zh) * | 2020-05-06 | 2020-08-14 | 网易(杭州)网络有限公司 | 游戏角色染色方法、装置、设备及存储介质 |
CN111862291A (zh) * | 2020-07-10 | 2020-10-30 | 完美世界(北京)软件科技发展有限公司 | 水系的烘焙方法及装置、存储介质、电子装置 |
CN112446941A (zh) * | 2020-11-27 | 2021-03-05 | 网易(杭州)网络有限公司 | 图像处理方法、装置、电子设备及存储介质 |
CN112637518A (zh) * | 2020-12-21 | 2021-04-09 | 北京字跳网络技术有限公司 | 模拟拍照特效的生成方法、装置、设备及介质 |
CN112933606A (zh) * | 2021-03-16 | 2021-06-11 | 天津亚克互动科技有限公司 | 游戏场景转换方法及装置、存储介质、计算机设备 |
CN113223186A (zh) * | 2021-07-07 | 2021-08-06 | 江西科骏实业有限公司 | 实现增强现实的处理方法、设备、产品和装置 |
CN113345066A (zh) * | 2021-05-26 | 2021-09-03 | 网易(杭州)网络有限公司 | 渲染海浪的方法、装置、设备和计算机可读存储介质 |
CN113632498A (zh) * | 2019-03-28 | 2021-11-09 | 多玩国株式会社 | 内容发布系统、内容发布方法、以及内容发布程序 |
CN113935891A (zh) * | 2021-09-09 | 2022-01-14 | 完美世界(北京)软件科技发展有限公司 | 像素风格的场景渲染方法、设备及存储介质 |
WO2022033444A1 (zh) * | 2020-08-10 | 2022-02-17 | 北京字节跳动网络技术有限公司 | 动态流体效果处理方法、装置、电子设备和可读介质 |
WO2023197729A1 (zh) * | 2022-04-14 | 2023-10-19 | 腾讯科技(深圳)有限公司 | 对象渲染方法、装置、电子设备及存储介质 |
WO2023213037A1 (zh) * | 2022-05-06 | 2023-11-09 | 网易(杭州)网络有限公司 | 毛发虚拟模型的渲染方法、装置、计算机设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005346165A (ja) * | 2004-05-31 | 2005-12-15 | Sony Computer Entertainment Inc | 画像処理装置及び画像処理方法 |
CN101650837A (zh) * | 2009-07-16 | 2010-02-17 | 浙江大学 | 一种海洋水体虚拟现实的建模方法 |
US20120306850A1 (en) * | 2011-06-02 | 2012-12-06 | Microsoft Corporation | Distributed asynchronous localization and mapping for augmented reality |
CN102855662A (zh) * | 2012-07-25 | 2013-01-02 | 中国科学院对地观测与数字地球科学中心 | 海洋环境的可视化方法 |
CN103294850A (zh) * | 2013-04-27 | 2013-09-11 | 苏州市数字城市工程研究中心有限公司 | 一种三维动态流体仿真算法智能匹配方法 |
CN103577656A (zh) * | 2013-11-25 | 2014-02-12 | 哈尔滨工业大学 | 潜射导弹出水过程三维动态仿真方法 |
CN106600666A (zh) * | 2016-12-19 | 2017-04-26 | 河海大学常州校区 | 一种水下机器人仿真展示系统及仿真方法 |
CN107251102A (zh) * | 2015-03-24 | 2017-10-13 | 英特尔公司 | 基于与增强现实场景的用户交互的增强修改 |
-
2017
- 2017-12-11 CN CN201711310976.9A patent/CN107918949A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005346165A (ja) * | 2004-05-31 | 2005-12-15 | Sony Computer Entertainment Inc | 画像処理装置及び画像処理方法 |
CN101650837A (zh) * | 2009-07-16 | 2010-02-17 | 浙江大学 | 一种海洋水体虚拟现实的建模方法 |
US20120306850A1 (en) * | 2011-06-02 | 2012-12-06 | Microsoft Corporation | Distributed asynchronous localization and mapping for augmented reality |
CN102855662A (zh) * | 2012-07-25 | 2013-01-02 | 中国科学院对地观测与数字地球科学中心 | 海洋环境的可视化方法 |
CN103294850A (zh) * | 2013-04-27 | 2013-09-11 | 苏州市数字城市工程研究中心有限公司 | 一种三维动态流体仿真算法智能匹配方法 |
CN103577656A (zh) * | 2013-11-25 | 2014-02-12 | 哈尔滨工业大学 | 潜射导弹出水过程三维动态仿真方法 |
CN107251102A (zh) * | 2015-03-24 | 2017-10-13 | 英特尔公司 | 基于与增强现实场景的用户交互的增强修改 |
CN106600666A (zh) * | 2016-12-19 | 2017-04-26 | 河海大学常州校区 | 一种水下机器人仿真展示系统及仿真方法 |
Non-Patent Citations (2)
Title |
---|
RALFNICK: "《https://blog.csdn.net/u011371324/article/details/77823860》", 3 September 2017 * |
刘喜作 等: "增强现实的助航环境构建方法", 《中国航海》 * |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108665531A (zh) * | 2018-05-08 | 2018-10-16 | 阿里巴巴集团控股有限公司 | 3d粒子模型的变换方法及装置 |
CN109002185A (zh) * | 2018-06-21 | 2018-12-14 | 北京百度网讯科技有限公司 | 一种三维动画处理的方法、装置、设备及存储介质 |
CN110163976A (zh) * | 2018-07-05 | 2019-08-23 | 腾讯数码(天津)有限公司 | 一种虚拟场景转换的方法、装置、终端设备及存储介质 |
CN110163976B (zh) * | 2018-07-05 | 2024-02-06 | 腾讯数码(天津)有限公司 | 一种虚拟场景转换的方法、装置、终端设备及存储介质 |
CN109144256A (zh) * | 2018-08-20 | 2019-01-04 | 广州市三川田文化科技股份有限公司 | 一种虚拟现实行为互动方法及装置 |
CN109144256B (zh) * | 2018-08-20 | 2019-08-23 | 广州市三川田文化科技股份有限公司 | 一种虚拟现实行为互动方法及装置 |
CN109876441A (zh) * | 2019-03-13 | 2019-06-14 | 网易(杭州)网络有限公司 | 游戏中的渲染方法及装置、存储介质及电子设备 |
CN109876441B (zh) * | 2019-03-13 | 2022-06-14 | 网易(杭州)网络有限公司 | 游戏中的渲染方法及装置、存储介质及电子设备 |
US11961190B2 (en) | 2019-03-28 | 2024-04-16 | Dwango Co., Ltd. | Content distribution system, content distribution method, and content distribution program |
CN113632498A (zh) * | 2019-03-28 | 2021-11-09 | 多玩国株式会社 | 内容发布系统、内容发布方法、以及内容发布程序 |
CN110706325A (zh) * | 2019-09-29 | 2020-01-17 | 江苏科技大学 | 一种三维海底环境实时动态渲染方法和渲染系统 |
CN110706325B (zh) * | 2019-09-29 | 2022-12-30 | 江苏科技大学 | 一种三维海底环境实时动态渲染方法和渲染系统 |
CN111145323A (zh) * | 2019-12-27 | 2020-05-12 | 珠海金山网络游戏科技有限公司 | 一种图像渲染方法及装置 |
CN111145323B (zh) * | 2019-12-27 | 2023-09-22 | 珠海金山数字网络科技有限公司 | 一种图像渲染方法及装置 |
CN111429558A (zh) * | 2020-03-02 | 2020-07-17 | 武汉大学 | 实时模拟动态水体缩略模型的方法及系统 |
CN111467801A (zh) * | 2020-04-20 | 2020-07-31 | 网易(杭州)网络有限公司 | 模型消隐方法及装置、存储介质及电子设备 |
CN111467801B (zh) * | 2020-04-20 | 2023-09-08 | 网易(杭州)网络有限公司 | 模型消隐方法及装置、存储介质及电子设备 |
CN111494945B (zh) * | 2020-04-22 | 2024-04-26 | 网易(杭州)网络有限公司 | 虚拟对象处理方法及装置、存储介质、电子设备 |
CN111494945A (zh) * | 2020-04-22 | 2020-08-07 | 网易(杭州)网络有限公司 | 虚拟对象处理方法及装置、存储介质、电子设备 |
CN111530085B (zh) * | 2020-05-06 | 2023-04-07 | 网易(杭州)网络有限公司 | 游戏角色染色方法、装置、设备及存储介质 |
CN111530085A (zh) * | 2020-05-06 | 2020-08-14 | 网易(杭州)网络有限公司 | 游戏角色染色方法、装置、设备及存储介质 |
CN111862291B (zh) * | 2020-07-10 | 2024-01-09 | 完美世界(北京)软件科技发展有限公司 | 水系的烘焙方法及装置、存储介质、电子装置 |
CN111862291A (zh) * | 2020-07-10 | 2020-10-30 | 完美世界(北京)软件科技发展有限公司 | 水系的烘焙方法及装置、存储介质、电子装置 |
WO2022033444A1 (zh) * | 2020-08-10 | 2022-02-17 | 北京字节跳动网络技术有限公司 | 动态流体效果处理方法、装置、电子设备和可读介质 |
CN112446941A (zh) * | 2020-11-27 | 2021-03-05 | 网易(杭州)网络有限公司 | 图像处理方法、装置、电子设备及存储介质 |
CN112637518B (zh) * | 2020-12-21 | 2023-03-24 | 北京字跳网络技术有限公司 | 模拟拍照特效的生成方法、装置、设备及介质 |
CN112637518A (zh) * | 2020-12-21 | 2021-04-09 | 北京字跳网络技术有限公司 | 模拟拍照特效的生成方法、装置、设备及介质 |
CN112933606A (zh) * | 2021-03-16 | 2021-06-11 | 天津亚克互动科技有限公司 | 游戏场景转换方法及装置、存储介质、计算机设备 |
CN113345066B (zh) * | 2021-05-26 | 2022-07-22 | 网易(杭州)网络有限公司 | 渲染海浪的方法、装置、设备和计算机可读存储介质 |
CN113345066A (zh) * | 2021-05-26 | 2021-09-03 | 网易(杭州)网络有限公司 | 渲染海浪的方法、装置、设备和计算机可读存储介质 |
CN113223186A (zh) * | 2021-07-07 | 2021-08-06 | 江西科骏实业有限公司 | 实现增强现实的处理方法、设备、产品和装置 |
CN113935891A (zh) * | 2021-09-09 | 2022-01-14 | 完美世界(北京)软件科技发展有限公司 | 像素风格的场景渲染方法、设备及存储介质 |
WO2023197729A1 (zh) * | 2022-04-14 | 2023-10-19 | 腾讯科技(深圳)有限公司 | 对象渲染方法、装置、电子设备及存储介质 |
WO2023213037A1 (zh) * | 2022-05-06 | 2023-11-09 | 网易(杭州)网络有限公司 | 毛发虚拟模型的渲染方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107918949A (zh) | 虚拟资源对象的渲染方法、存储介质、处理器及终端 | |
CN108230436A (zh) | 三维场景中虚拟资源对象的渲染方法 | |
CN106056661B (zh) | 基于Direct3D 11的三维图形渲染引擎 | |
CN108564646A (zh) | 对象的渲染方法和装置、存储介质、电子装置 | |
CN101477701B (zh) | 面向AutoCAD和3DS MAX软件的植入式真三维立体渲染方法 | |
CN101183276A (zh) | 基于摄像头投影仪技术的交互系统 | |
Ganovelli et al. | Introduction to computer graphics: A practical learning approach | |
CN105976423B (zh) | 一种镜头光晕的生成方法和装置 | |
CN101540056B (zh) | 面向ERDAS Virtual GIS的植入式真三维立体渲染方法 | |
CN101511034A (zh) | 面向Skyline的真三维立体显示方法 | |
CN101488229B (zh) | 面向pci三维分析模块的植入式真三维立体渲染方法 | |
US11688150B2 (en) | Color space mapping for intuitive surface normal visualization | |
Kenwright | Approximate inter-fur shadowing effect using shells | |
CN101482978B (zh) | 面向envi/idl的植入式真三维立体渲染方法 | |
CN101488230B (zh) | 面向VirtualEarth的真三维立体显示方法 | |
CN101488232B (zh) | 面向C Tech软件的植入式真三维立体显示方法 | |
CN110458922B (zh) | 图形渲染方法及相关产品 | |
Babić | Volumetric Atmospheric Effects Rendering | |
CN101482977B (zh) | 面向Microstation的植入式真三维立体显示方法 | |
CN101561936B (zh) | 面向GeoGlobe的真三维立体显示方法 | |
Paneva-Marinova et al. | Presentation Layer in a Virtual Museum for Cultural Heritage Artefacts | |
Rana | Rain: Graphical Rendering | |
Elmqvist et al. | Dynamic transparency for 3d visualization: design and evaluation | |
Provost | Beautiful, Yet Friendly Part 1: Stop Hitting the Bottleneck | |
CN117496035A (zh) | 纹理贴图生成方法、装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180417 |