一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种实时渲染的方法与流程

2022-12-07 02:23:47 来源:中国专利 TAG:

1.本发明涉及计算机技术领域,具体是一种实时渲染的方法。


背景技术:

2.真实感自然场景模拟一直是计算机图形学领域研究的热点问题之一,而其中云的模拟在室外自然场景绘制中占据着不可或缺的地位。但是由于云模型并无确定的边界与表面,所以很难用传统建模方法来模拟云的基本形态。同时,云体中存在着十分复杂的光线反射、折射和散射效果,使得真实感云场景的绘制十分困难。目前,常见的真实感云场景的模拟方法可以分为以下两类:基于物理模型的模拟方法和基于启发式的模拟方法。基于物理模型的方法通常从流体力学与大气热动力学的角度出发,真实地模拟云的形成与运动,但计算复杂度非常高。
3.基于其复杂性,第一类方法一般不用于云场景的实时绘制,并需要基于中高端图形工作站实现。在交互式自然场景绘制系统中,通常对实时性要求很高,因而很多云的绘制技术并不适用于这方面。本发明为了改善云层在太阳光线照射下的效果,本文将光照分为反射光与透射光分别计算,较为真实地模拟了不同时段的云场景。在上述基础上引入了gpu加速技术,获得了令人满意的显示效率,同时也提高了处理精度。


技术实现要素:

4.本发明提供一种改善云层在太阳光线照射下的效果,提高显示效率和处理精度的实时渲染的方法。
5.本发明所采用的技术方案为:一种实时渲染的方法,其特征在于:包括光照模型的建立和引入gup技术;
6.对于待渲染的目标物体上的每一个目标点,根据预置追踪参数从所述目标点向光源的方向进行光线追踪,所述预置追踪参数包括预置多条路径及所述多条路径中每条路径对应的方向;同时也需考虑到真实环境中云层的实际效果,本文将云层对光照的反映分为两部分:反射光与透射光;对于反射光部分,采用考虑浓度的phong光照模型;而对于透射光部分,采用单向散射模型,计算穿过云层的光线散射至视点处的强度;最后使用gpu加速技术后,大量的浮点运算由gpu处理,且不需要纹理在内存与显存之间频繁交换,因而获得了流畅,稳定的帧速率,满足了实时性要求;
7.具体光照模型建立的步骤如下:
8.根据phong光照模型,反射光被分成4个独立的成分:环境光、散射光、镜面反射光与发射光。其中散射光与镜面反射光的计算都需要光源方向与物体表面法向进行点积计算。按照一般的理解,为了正确反映云的光照效果,需要对云浓度图进行三角网格重构,求每点法向量。但是这会大大增加cpu以及gpu的运算量,很难满足实时响应的要求。本发明引入了基于pixel shader的bumping纹理的方法。
9.s1:基于云浓度图计算云层表面法向量,并以纹理形式传递给pixel shader,在
pixel shader之中计算反射光各部分强度;云层表面(x,y)处法向量求解方法如下:
10.(1)求x方向上的向量;x=(2,0,clouddensity(x 1,y)-clouddensity(x-1,y),0)
11.(2)求y方向上的向量;y=(0,2,clouddensity(x,y 1)-clouddensity(x,y-1))
12.(3)两向量叉积得到(x,y)点处法向量;normal(x,y)=nomalize(x
×
y)
13.(4)法向量存入bumping纹理之中,rgb通道分别对应normal(x,y)的μ、ν、ω分量;rgb通取值范围[0,1],normal(x,y)各分量取值范围[-1,1];需要对法向做缩放,bumping(x,y)=normal(x,y)*0.5 0.5,在像素着色器中用normal(x,y)=(bumping(x,y)-0.5)*2将其逆变换回有符号向量;
[0014]
(5)云层的每一点基于phong模型计算反射光,并和云浓度相结合;i=σ
specular
clouddensity(x,y)*i
specular
σ
diffuse
clouddensity(x,y)*i
diffus
i
amb

[0015]
单向散射光照模型只计算穿过介质的光线向单一方向散射的强度。在本发明中,这里的单一方向就是指视点方向。对于到达视点的光线强度,既需要考虑太阳方向(从太阳到云层)的衰减,也要考虑视点方向(从云层到眼睛)的衰减。
[0016]
s2:计算太阳光强在云层中的衰减,通过相位函数求得它散射向眼睛的强度,并计算其在视点方向上的衰减,从而最终求得云层的透射光强度;
[0017]
(1)光线在云层中的衰减;设对于任意一点p,从l方向到达该点的光强为i(p,l),所提方法只考虑云层对光线的吸收效果,而不考虑多重散射效果;光线在云层中的衰减模型如式所示:设太阳光强度为所提及的云层底部是针对太阳位置,而不是视点位置;
[0018]
(2)相位函数p(l,l')用来计算来自l方向的光线散射向l'方向的强度;采用bouthors的henyey-greenstein方程,如式所示:根据相位函数,到达云层底部的光i
bot
(p,l)散射向视点位置的光强为i
bot_view
(p,l)=i
bot
·
p(l,l
view
);
[0019]
(3)对于光线在大气中的传播,设其衰减为常数,并与传播距离d成正比,用函数aten(dis,i)表示;那么最终,光线到达视点的强度如式所示:i
view
(p,l)=aten(d
view
,i
bot
*p(l,l
view
))。
[0020]
进一步地,所述多条路径中确定目标路径;根据所述目标路径确定所述目标点对应的光线入射点;根据所述目标物体的纹理信息计算所述光线入射点的第一光强度;根据所述第一光强度及所述光线入射点到目标点的距离计算所述目标点的第二光强度。
[0021]
进一步地,所述述多条路径中确定目标路径,包括:跟踪光线沿着所述多条路径中的第一路径的反方向上移动第一距离,得到第一距离点,所述第一距离包括至少一个预置路径长度;计算所述第一距离点到所述光源的第一目标距离;将所述第一距离点向光源的方向进行投影,通过目标物体的深度纹理得到第二距离点到所述光源的第二目标距离,所述第二距离点为与所述第一距离点同一条光线上的点;若所述第二目标距离与所述第一目标距离的差异参数小于第一门限,则确定所述第一路径为所述目标路径。
[0022]
进一步地,所述多条路径中确定目标路径,包括:跟踪光线沿着所述多条路径中的第一路径的反方向上移动第一距离,得到第一距离点,所述第一距离至少包括一个预置路径长度;将光源通过所述第一距离点向所述目标物体进行投射,得到第二距离点;若所述第一距离点和所述第二距离点的距离小于第一门限,则确定所述第一路径为所述目标路径;
[0023]
所述第一光强度及所述光线入射点到目标点的距离计算所述目标点的第二光强度,包括:计算所述光线入射点与所述目标点之间的衰减距离;根据所述衰减距离和衰减指数确定光强度的衰减值;根据所述第一光强度和所述衰减值确定所述第二光强度;
[0024]
所述目标物体的纹理信息计算所述光线入射点的第一光强度之前,所述方法还包括:以光源的位置为虚拟摄像机的位置渲染所述目标物体,得到所述目标物体的纹理信息,所述纹理信息包括深度纹理,位置纹理,法线纹理和uv坐标纹理。
[0025]
进一步地,所述σ
specular
与σ
diffuse
分别为镜面反射光与慢反射光的材质系数;所述i
specular
与i
diffus
采用3d计算机图形学中介绍的求法。
[0026]
进一步地,所述i(l)是自l方向到达云层的光线强度,τ(t)光线在云层中深度t处的衰减系数,d
p
是p点在云层中的深度;其中den(p)表示p点的浓度;p点处云层深度度以及对光线的衰减系数都与den(p)相关。
[0027]
进一步地,所述中θ表示的是l'与l的夹角,g表示散射的对称性,mie散射通常取值为-0.75至-0.999之间。
[0028]
本发明的有益效果:
[0029]
本发明在光照的处理上,将云层对太阳光照的反映分为两个部分:反射光与透射光。运用考虑浓度的phong光照模型计算云层表面的反射光;采用单向散射光照模型,计算穿过云层的太阳光线散射至视点位置的强度。该方法能够比较真实地模拟不同时间,不同角度太阳光照射下的云层。为了确保交互式自然场景绘制系统的实时性要求,充分利用了最新图形硬件强大的通用计算能力。将perlin噪声与bumping纹理以纹理对象的形式存储于高速显存中,并将需要大量浮点数运算的perlin噪声更新操作与bumping纹理求解操作都交由gpu并行处理,极大地提高了云场景的渲染效率。
[0030]
本发明通过光线追踪的方法对具有次表面散射效果的物体进行实时渲染,根据光学原理,模拟光线通过目标物体时,光线会发生折射并不是沿直线传播的,对于待渲染的目标物体上的每一个目标点,根据预置追踪参数从所述目标点向光源的方向进行光线追踪,所述预置追踪参数包括预置多条路径及所述多条路径中每条路径对应的方向;从所述多条路径中确定目标路径;根据所述目标路径确定所述目标点对应的光线入射点;根据所述目标物体的纹理信息计算所述光线入射点的第一光强度;根据所述第一光强度及所述光线入射点到目标点的距离计算所述目标点的第二光强度;将所述第二光强度渲染到所述目标点的颜色上。从而对目标物体进行实时渲染。基于物理原理的光线追踪,能够更精确的接近真实效果,提高处理精度。
具体实施方式
[0031]
下面对本发明作进一步说明。
[0032]
一种实时渲染的方法,其特征在于:包括光照模型的建立和引入gup技术;
[0033]
对于待渲染的目标物体上的每一个目标点,根据预置追踪参数从所述目标点向光源的方向进行光线追踪,所述预置追踪参数包括预置多条路径及所述多条路径中每条路径对应的方向;同时也需考虑到真实环境中云层的实际效果,本文将云层对光照的反映分为两部分:反射光与透射光;对于反射光部分,采用考虑浓度的phong光照模型;而对于透射光部分,采用单向散射模型,计算穿过云层的光线散射至视点处的强度;最后使用gpu加速技
术后,大量的浮点运算由gpu处理,且不需要纹理在内存与显存之间频繁交换,因而获得了流畅,稳定的帧速率,满足了实时性要求;
[0034]
所述多条路径中确定目标路径;根据所述目标路径确定所述目标点对应的光线入射点;根据所述目标物体的纹理信息计算所述光线入射点的第一光强度;根据所述第一光强度及所述光线入射点到目标点的距离计算所述目标点的第二光强度。
[0035]
所述述多条路径中确定目标路径,包括:跟踪光线沿着所述多条路径中的第一路径的反方向上移动第一距离,得到第一距离点,所述第一距离包括至少一个预置路径长度;计算所述第一距离点到所述光源的第一目标距离;将所述第一距离点向光源的方向进行投影,通过目标物体的深度纹理得到第二距离点到所述光源的第二目标距离,所述第二距离点为与所述第一距离点同一条光线上的点;若所述第二目标距离与所述第一目标距离的差异参数小于第一门限,则确定所述第一路径为所述目标路径。
[0036]
所述多条路径中确定目标路径,包括:跟踪光线沿着所述多条路径中的第一路径的反方向上移动第一距离,得到第一距离点,所述第一距离至少包括一个预置路径长度;将光源通过所述第一距离点向所述目标物体进行投射,得到第二距离点;若所述第一距离点和所述第二距离点的距离小于第一门限,则确定所述第一路径为所述目标路径;
[0037]
所述第一光强度及所述光线入射点到目标点的距离计算所述目标点的第二光强度,包括:计算所述光线入射点与所述目标点之间的衰减距离;根据所述衰减距离和衰减指数确定光强度的衰减值;根据所述第一光强度和所述衰减值确定所述第二光强度;
[0038]
所述目标物体的纹理信息计算所述光线入射点的第一光强度之前,所述方法还包括:以光源的位置为虚拟摄像机的位置渲染所述目标物体,得到所述目标物体的纹理信息,所述纹理信息包括深度纹理,位置纹理,法线纹理和uv坐标纹理。
[0039]
具体光照模型建立的步骤如下:
[0040]
根据phong光照模型,反射光被分成4个独立的成分:环境光、散射光、镜面反射光与发射光。其中散射光与镜面反射光的计算都需要光源方向与物体表面法向进行点积计算。按照一般的理解,为了正确反映云的光照效果,需要对云浓度图进行三角网格重构,求每点法向量。但是这会大大增加cpu以及gpu的运算量,很难满足实时响应的要求。本发明引入了基于pixel shader的bumping纹理的方法。
[0041]
s1:基于云浓度图计算云层表面法向量,并以纹理形式传递给pixel shader,在pixel shader之中计算反射光各部分强度;云层表面(x,y)处法向量求解方法如下:
[0042]
(1)求x方向上的向量;x=(2,0,clouddensity(x 1,y)-clouddensity(x-1,y),0)
[0043]
(2)求y方向上的向量;y=(0,2,clouddensity(x,y 1)-clouddensity(x,y-1))
[0044]
(3)两向量叉积得到(x,y)点处法向量;normal(x,y)=nomalize(x
×
y)
[0045]
(4)法向量存入bumping纹理之中,rgb通道分别对应normal(x,y)的μ、ν、ω分量;rgb通取值范围[0,1],normal(x,y)各分量取值范围[-1,1];需要对法向做缩放,bumping(x,y)=normal(x,y)*0.5 0.5,在像素着色器中用normal(x,y)=(bumping(x,y)-0.5)*2将其逆变换回有符号向量;
[0046]
(5)云层的每一点基于phong模型计算反射光,并和云浓度相结合;i=σ
specular
clouddensity(x,y)*i
specular
σ
diffuse
clouddensity(x,y)*i
diffus
i
amb

[0047]
所述σ
specular
与σ
diffuse
分别为镜面反射光与慢反射光的材质系数;所述i
specular
与idiffus
采用3d计算机图形学中介绍的求法。
[0048]
单向散射光照模型只计算穿过介质的光线向单一方向散射的强度。在本发明中,这里的单一方向就是指视点方向。对于到达视点的光线强度,既需要考虑太阳方向(从太阳到云层)的衰减,也要考虑视点方向(从云层到眼睛)的衰减。
[0049]
s2:计算太阳光强在云层中的衰减,通过相位函数求得它散射向眼睛的强度,并计算其在视点方向上的衰减,从而最终求得云层的透射光强度;
[0050]
(1)光线在云层中的衰减;设对于任意一点p,从l方向到达该点的光强为i(p,l),所提方法只考虑云层对光线的吸收效果,而不考虑多重散射效果;光线在云层中的衰减模型如式所示:设太阳光强度为所提及的云层底部是针对太阳位置,而不是视点位置;
[0051]
所述i(l)是自l方向到达云层的光线强度,τ(t)光线在云层中深度t处的衰减系数,d
p
是p点在云层中的深度;其中den(p)表示p点的浓度;p点处云层深度度以及对光线的衰减系数都与den(p)相关。
[0052]
(2)相位函数p(l,l')用来计算来自l方向的光线散射向l'方向的强度;采用bouthors的henyey-greenstein方程,如式所示:根据相位函数,到达云层底部的光i
bot
(p,l)散射向视点位置的光强为i
bot_view
(p,l)=i
bot
·
p(l,l
view
);
[0053]
进一步地,所述中θ表示的是l'与l的夹角,g表示散射的对称性,mie散射通常取值为-0.75至-0.999之间。
[0054]
(3)对于光线在大气中的传播,设其衰减为常数,并与传播距离d成正比,用函数aten(dis,i)表示;那么最终,光线到达视点的强度如式所示:i
view
(p,l)=aten(d
view
,i
bot
*p(l,l
view
))。
[0055]
本发明在光照的处理上,将云层对太阳光照的反映分为两个部分:反射光与透射光。运用考虑浓度的phong光照模型计算云层表面的反射光;采用单向散射光照模型,计算穿过云层的太阳光线散射至视点位置的强度。该方法能够比较真实地模拟不同时间,不同角度太阳光照射下的云层。为了确保交互式自然场景绘制系统的实时性要求,充分利用了最新图形硬件强大的通用计算能力。将perlin噪声与bumping纹理以纹理对象的形式存储于高速显存中,并将需要大量浮点数运算的perlin噪声更新操作与bumping纹理求解操作都交由gpu并行处理,极大地提高了云场景的渲染效率。
[0056]
本发明通过光线追踪的方法对具有次表面散射效果的物体进行实时渲染,根据光学原理,模拟光线通过目标物体时,光线会发生折射并不是沿直线传播的,对于待渲染的目标物体上的每一个目标点,根据预置追踪参数从所述目标点向光源的方向进行光线追踪,所述预置追踪参数包括预置多条路径及所述多条路径中每条路径对应的方向;从所述多条路径中确定目标路径;根据所述目标路径确定所述目标点对应的光线入射点;根据所述目标物体的纹理信息计算所述光线入射点的第一光强度;根据所述第一光强度及所述光线入射点到目标点的距离计算所述目标点的第二光强度;将所述第二光强度渲染到所述目标点的颜色上。从而对目标物体进行实时渲染。基于物理原理的光线追踪,能够更精确的接近真实效果,提高处理精度。
[0057]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例
对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献