CN104183009B - 一种基于场景光照图的大场景非直接光照方法 - Google Patents
一种基于场景光照图的大场景非直接光照方法 Download PDFInfo
- Publication number
- CN104183009B CN104183009B CN201410422870.8A CN201410422870A CN104183009B CN 104183009 B CN104183009 B CN 104183009B CN 201410422870 A CN201410422870 A CN 201410422870A CN 104183009 B CN104183009 B CN 104183009B
- Authority
- CN
- China
- Prior art keywords
- scene
- illumination
- pel
- centerdot
- immediate
- 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.)
- Expired - Fee Related
Links
Abstract
一种基于场景光照图的大场景非直接光照方法,它有四大步骤:步骤一、将场景在纹理空间参数化;步骤二、计算场景光照图;步骤三、根据步骤二动态烘焙的场景光照图,利用光线追踪算法计算非直接光照;步骤四、使用帧关联降低非直接光照计算量。该方法能够比较好地支持复杂场景、效果可调并且比较稳定。它在图像处理技术领域里有较好的实用价值和广阔地应用前景。
Description
技术领域
本发明涉及一种基于场景光照图的大场景非直接光照方法,属于图像处理技术领域,特别涉及实时渲染过程全局光照中非直接光照计算的图像处理技术。
背景技术
全局光照计算是一个比较困难的问题,它包含直接光和非直接光照及其阴影,由于整个场景都有可能对非直接光照产生影响,且非直接光中不少是经过多次反射得到的。非直接光照对场景的视觉效果影响比较大,但需要比较大的计算代价,在需实时绘制的场合计算非直接光照是一个比较困难的问题。
现有不少处理方法可以处理非直接光照,但它们本身都存在着一些问题。如预计算辐射度算法和预计算光照算法,可以提供比较真实的效果,但对处理动态灯光和动态场景有问题;如普通的即时辐射度算法,对灯光支持不太好,并不适合类似环境图光源;效果比较好的LPV等,由于栅格的分辨有限,无法充分表达场景,常会出现漏光现;而效率较高的有SSAO等环境遮挡算法,由于只考虑屏幕空间的环境光照,光照并不稳定。
本发明中的方法将直接光照和非直接光照分开计算,首先将场景在纹理空间参数化,并使用主灯光的RSM计算每个图元的光照生成光照图,随后使用光线追踪算法计算非直接光照。虽然对于光照图由于分辨率问题会照成失真,但非直接光照在场景中变化比较缓慢,对于一般表面材质可以近似计算。该方法使用直接光照提供高分辨率的阴影和其它效果,而非直接光照使用近似计算,并且可以方便地控制场景非直接光照的细节精细度。
发明内容
本发明的目的在于提供了一种基于场景光照图的大场景非直接光照方法,该方法能够比较好地支持复杂场景、效果可调并且比较稳定。
实现本发明目的的技术方案:一种基于场景光照图的大场景非直接光照方法,其特征在于包括以下具体步骤:
1、一种基于场景光照图的大场景非直接光照方法,其特征在于:它包括以下具体步骤:
步骤一、将场景在纹理空间参数化;
将场景在纹理空间参数化,就是反转物体空间和纹理空间;反转物体空间和纹理空间需要场景UV数据,这需要建立场景时建立相应的UV数据;
面片在UV空间中占有面积越大,它的非直接光照计算的细节也越高,这需要进行额外的UV创建,但也提供了场景的非直接光照的细节控制;因此对于多个物体,令物体离相机越远,则它所占的纹理空间越少,UV数据通过下式变换:
其中:(xc,yc)为裁减空间坐标,(ua,va)为UV空间坐标,(ηa,x,ηa,y)为纹理a的缩放因子,调节细节,(γa,x,γa,y)为纹理a的偏移地址;
缩放因子和偏移地址由CPU端进行计算管理,这里使用距离和可见性作为调节参数,并使用遗传算法进行解空间搜索;
步骤二、计算场景光照图;
a)使用RSM计算一次光照
一次光照图计算是使用场景参数图,利用RSM计算各个图元的直接光照,并使用类似PCF阴影算法计算,只不过由于RSM生成一次光照图时并没有使用正面消隐,需要将每个图元位置按它法线进行偏移减轻自遮挡;
b)利用a)中的一次光照图,使用光线追踪算法计算二次光照
多次光照图计算使用光线追踪算法完成,对每个图元进行重要性采样近似计算为:
其中为光线的出射方向,为光线的入射方向,为图元中点zx,y沿方向反射的辐射度,NUM为对点zx,y的采样总数,i为对点zx,y的采样,为双向散射分布函数,为点zx,y从方向得到的入射辐射度,θi为zx,y法向量和入射方向的夹角,为采样分布,这里使用基于Phone BRDF重要性采样;
C)对b)中的二次光照图进行重要性加权模糊,b)中计算量比较大的是由于场景空间的关联性及非直接光照漫反射的低变化率,将近邻图元值近似加权为本图元值,相当于增加重要性采样的采样数,这里将生成的光照图按图元间的相似性进行重要性加权模糊:
其中zx,y为图元(x,y)的空间位置,i为对点zx,y横坐标方向的采样,采样范围为-N到N,j为对点zx,y纵坐标方向的采样,采样范围为-M到M,nx,y为图元(x,y)的单位法向量,d和r为调整参数,控制周围图元的权重变化,dot()函数表示向量的点乘,K为归一化系数:
步骤三、根据步骤二动态烘焙的场景光照图,利用光线追踪算法计算非直接光照;
非直接光计算使用前面动态烘焙的场景光照图和光线追踪算法完成,光线追踪使用基于BVH的无堆栈算法,由于BVH加速结构的计算速度和它的深度有关,并且为了场景的可伸缩性,因此这里使用在CPU端对物体的AABB进行3D栅格化,并将物体ID号存储于对应的3D元素里,这样相当于将一颗BVH树转化为有组织BVH森林,访问计算如下:
a)计算与光线初次相交的3D元素;
b)访问3D元素中存储的物体,并对其中BVH树进行计算,如相交则返回;
c)使用DDA算法计算光线经过的下一个3D元素,如存在则执行b),否则返回;
步骤四、使用帧关联降低非直接光照计算量;
帧关联是利用数据复用以降低计算量,通过检测上一帧和当前帧的像素之间关系确定是否重用数据;设帧k的相机变换阵为投影变换阵为屏幕空间(u,v)的深度为dk(u,v),法线为Nk(u,v),对于当前帧的(u,v)在前一帧位置(u′,v′)计算如下:
(u′,v′,dk-1,1)=(0.5·ut/wt+0.5,0.5·vt/wt+0.5,dt/wt,1)
(ut,vt,dt,wt)=M·(2u-1,2v-1,dk,1)
法线变换如下:
Nk-1=(M-1)T·Nk
由于光线追踪计算的是非直接光照,因此如果当前后两帧的位置和法线相近则重用该非直接光照值,其中τ、υ和κ为关联阈值,处理流程如下:
a)计算当前片段在前一帧中的(u′,v′)、dk-1和Nk-1;
b)如果(u′,v′)超出[0,1],则跳转到g);
c)如果dot(Nk-1,Nk)<τ,则跳转到g);
d)如果||dk-dk-1||>υ,则跳转到g);
e)如果则跳转到g);
f)重用前一帧中的(u′,v′)非直接光照值,并终止;
g)重新计算当前片段的非直接光照值;
其中e)步中的tn k为当前帧的降分辨率图元法线与入射光线的交点到图元的距离,tn k-1为前一帧的降分辨率图元法线与入射光线的交点到图元的距离,当e)步条件满足时表明有动态物体会影响该图元,需重新计算该图元的非直接光照。
本发明的有益效果在于:
本发明提供了一种新的基于场景光照图的大场景非直接光照方法,与其他方法相比,是一种比较好地支持复杂场景、效果可调并比较稳定的实时非直接光照方法。
附图说明
图1:一种基于场景光照图的大场景非直接光照方法流程图。
图2(a):场景位置图。
图2(b):场景法线图。
图2(c):场景UV图。
图3:场景光照图。
图4(a):本发明中方法实验结果图。
图4(b):LPV算法实验结果图。
具体实施方式
为了更好地理解本发明的技术方案,下面结合附图及具体实施方式详细介绍本发明。
见图1—图4(a)、(b),本发明是一种基于场景光照图的大场景非直接光照方法,该方法主要包括以下几个步骤:
步骤一:将场景在纹理空间参数化;
步骤二:计算场景光照图;
步骤三:根据步骤一动态烘焙的场景光照图,利用光线追踪算法计算非直接光照;
步骤四:使用帧关联降低非直接光照计算量。
本发明的具体实现流程如图1所示,各部分具体实施细节如下:
1.将场景在纹理空间参数化
将场景在纹理空间参数化,就是反转物体空间和纹理空间。反转物体空间和纹理空间需要场景UV数据,这需要建立场景时建立相应的UV数据。
面片在UV空间中占有面积越大,它的非直接光照计算的细节也越高,这需要进行额外的UV创建,但也提供了场景的非直接光照的细节控制。因此对于多个物体,令物体离相机越远,则它所占的纹理空间越少,UV数据通过下式变换:
其中:(xc,yc)为裁减空间坐标,(ui,vi)为UV空间坐标,(ηi,x,ηi,y)为纹理i的缩放因子,调节细节,(γi,x,γi,y)为纹理i的偏移地址。
缩放因子和偏移地址由CPU端进行计算管理,这里使用距离和可见性作为调节参数,并使用遗传算法进行解空间搜索。
2.计算场景光照图
为了支持动态灯光和其它复杂灯光,需要动态烘焙场景光照图,具体的计算步骤分为以下三步:
a)使用RSM计算一次光照
一次光照图计算是使用场景参数图,利用RSM计算各个图元的直接光照,并使用类似PCF阴影算法计算,只不过由于RSM生成一次光照图时并没有使用正面消隐,需要将每个图元位置按它法线进行偏移减轻自遮挡。
b)利用a中的一次光照图,使用光线追踪算法计算二次光照
多次光照图计算使用光线追踪算法完成,对每个图元进行重要性采样近似计算为:
其中为图元中点x沿方向反射的辐射度,N为对点x的采样数,为双向散射分布函数,为点x从方向得到的入射辐射度,θi为x法向量和入射方向的夹角,为采样分布,这里使用基于Phone BRDF重要性采样。
c)对b中的二次光照图进行重要性加权模糊
b中计算量比较大的是由于场景空间的关联性及非直接光照漫反射的低变化率,可将近邻图元值近似加权为本图元值,相当于增加重要性采样的采样数,这里将生成的光照图按图元间的相似性进行重要性加权模糊:
其中zx,y为图元(x,y)的空间位置,nx,y为图元(x,y)的单位法向量,d和r为调整参数,控制周围图元的权重变化,K为归一化系数:
3.根据步骤2动态烘焙的场景光照图,利用光线追踪算法计算非直接光照
非直接光计算使用前面动态烘焙的场景光照图和光线追踪算法完成,光线追踪使用基于BVH的无堆栈算法。由于BVH加速结构的计算速度和它的深度有关,并且为了场景的可伸缩性,如在机场中的飞机和各种车辆的移动,场景中存在的物体个数未知,因此这里使用在CPU端对物体的AABB进行3D栅格化,并将物体ID号存储于对应的3D元素里,这样相当于将一颗BVH树转化为有组织BVH森林,访问计算如下:
d)计算与光线初次相交的3D元素;
e)访问3D元素中存储的物体,并对其中BVH树进行计算,如相交则返回;
f)使用DDA算法计算光线经过的下一个3D元素,如存在则执行b,否则返回。
4.使用帧关联降低非直接光照计算量
帧关联是利用数据复用以降低计算量,通过检测上一帧和当前帧的像素之间关系确定是否重用数据。假设帧i的相机变换阵为投影变换阵为屏幕空间(u,v)的深度为di(u,v),法线为Ni(u,v),对于当前帧的(u,v)在前一帧位置(u′,v′)计算如下:
(u′,v′,di-1,1)=(0.5·ut/wt+0.5,0.5·vt/wt+0.5,dt/wt,1)
(ut,vt,dt,wt)=M·(2u-1,2v-1,di,1)
法线变换如下:
Ni-1=(M-1)T·Ni
由于光线追踪计算的是非直接光照,因此如果当前后两帧的位置和法线相近则重用该非直接光照值,其中τ、υ和κ为关联阈值,处理流程如下:
h)计算当前片段在前一帧中的(u′,v′)、di-1和Ni-1;
i)如果(u′,v′)超出[0,1],则跳转到g;
j)如果dot(Ni-1,Ni)<τ,则跳转到g;
k)如果||di-di-1||>υ,则跳转到g;
l)如果则跳转到g;
m)重用前一帧中的(u′,v′)非直接光照值,并终止;
n)重新计算当前片段的非直接光照值。
其中e步中的tn i为降分辨率图元法线方向的测试光线交点距离,tn i-1为前一帧的图元法线方向光线交点距离,当e步条件满足时表明有动态物体会影响该图元,需重新计算该图元的非直接光照。
Claims (1)
1.一种基于场景光照图的大场景非直接光照方法,其特征在于:它包括以下具体步骤:
步骤一、将场景在纹理空间参数化;
将场景在纹理空间参数化,就是反转物体空间和纹理空间;反转物体空间和纹理空间需要场景UV数据,这需要建立场景时建立相应的UV数据;
面片在UV空间中占有面积越大,它的非直接光照计算的细节也越高,这需要进行额外的UV创建,但也提供了场景的非直接光照的细节控制;因此对于多个物体,令物体离相机越远,则它所占的纹理空间越少,UV数据通过下式变换:
其中:(xc,yc)为裁减空间坐标,(ua,va)为UV空间坐标,(ηa,x,ηa,y)为纹理a的缩放因子,调节细节,(γa,x,γa,y)为纹理a的偏移地址;
缩放因子和偏移地址由CPU端进行计算管理,这里使用距离和可见性作为调节参数,并使用遗传算法进行解空间搜索;
步骤二、计算场景光照图;
a)使用RSM计算一次光照
一次光照图计算是使用场景参数图,利用RSM计算各个图元的直接光照,并使用类似PCF阴影算法计算,只不过由于RSM生成一次光照图时并没有使用正面消隐,需要将每个图元位置按它法线进行偏移减轻自遮挡;
b)利用a)中的一次光照图,使用光线追踪算法计算二次光照
多次光照图计算使用光线追踪算法完成,对每个图元进行重要性采样近似计算为:
其中为光线的出射方向,为光线的入射方向,为图元中点zx,y沿方向反射的辐射度,NUM为对点zx,y的采样总数,i为对点zx,y的采样,为双向散射分布函数,为点zx,y从方向得到的入射辐射度,θi为zx,y法向量和入射方向的夹角,为采样分布,这里使用基于Phone BRDF重要性采样;
C)对b)中的二次光照图进行重要性加权模糊,b)中计算量比较大的是由于场景空间的关联性及非直接光照漫反射的低变化率,将近邻图元值近似加权为本图元值,相当于增加重要性采样的采样数,这里将生成的光照图按图元间的相似性进行重要性加权模糊:
其中zx,y为图元(x,y)的空间位置,i为对点zx,y横坐标方向的采样,采样范围为-N到N,j为对点zx,y纵坐标方向的采样,采样范围为-M到M,nx,y为图元(x,y)的单位法向量,d和r为调整参数,控制周围图元的权重变化,dot()函数表示向量的点乘,K为归一化系数:
步骤三、根据步骤二动态烘焙的场景光照图,利用光线追踪算法计算非直接光照;
非直接光计算使用前面动态烘焙的场景光照图和光线追踪算法完成,光线追踪使用基于BVH的无堆栈算法,由于BVH加速结构的计算速度和它的深度有关,并且为了场景的可伸缩性,因此这里使用在CPU端对物体的AABB进行3D栅格化,并将物体ID号存储于对应的3D元素里,这样相当于将一颗BVH树转化为有组织BVH森林,访问计算如下:
a)计算与光线初次相交的3D元素;
b)访问3D元素中存储的物体,并对其中BVH树进行计算,如相交则返回;
c)使用DDA算法计算光线经过的下一个3D元素,如存在则执行b),否则返回;
步骤四、使用帧关联降低非直接光照计算量;
帧关联是利用数据复用以降低计算量,通过检测上一帧和当前帧的像素之间关系确定是否重用数据;设帧k的相机变换阵为投影变换阵为屏幕空间(u,v)的深度为dk(u,v),法线为Nk(u,v),对于当前帧的(u,v)在前一帧位置(u′,v′)计算如下:
(u′,v′,dk-1,1)=(0.5·ut/wt+0.5,0.5·vt/wt+0.5,dt/wt,1)
(ut,vt,dt,wt)=M·(2u-1,2v-1,dk,1)
法线变换如下:
Nk-1=(M-1)T·Nk
由于光线追踪计算的是非直接光照,因此如果当前后两帧的位置和法线相近则重用该非直接光照值,其中τ、υ和κ为关联阈值,处理流程如下:
a)计算当前片段在前一帧中的(u′,v′)、dk-1和Nk-1;
b)如果(u′,v′)超出[0,1],则跳转到g);
c)如果dot(Nk-1,Nk)<τ,则跳转到g);
d)如果||dk-dk-1||>υ,则跳转到g);
e)如果则跳转到g);
f)重用前一帧中的(u′,v′)非直接光照值,并终止;
g)重新计算当前片段的非直接光照值;
其中e)步中的tn k为当前帧的降分辨率图元法线与入射光线的交点到图元的距离,tn k-1为前一帧的降分辨率图元法线与入射光线的交点到图元的距离,当e)步条件满足时表明有动态物体会影响该图元,需重新计算该图元的非直接光照。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410422870.8A CN104183009B (zh) | 2014-08-25 | 2014-08-25 | 一种基于场景光照图的大场景非直接光照方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410422870.8A CN104183009B (zh) | 2014-08-25 | 2014-08-25 | 一种基于场景光照图的大场景非直接光照方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104183009A CN104183009A (zh) | 2014-12-03 |
CN104183009B true CN104183009B (zh) | 2017-01-18 |
Family
ID=51964023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410422870.8A Expired - Fee Related CN104183009B (zh) | 2014-08-25 | 2014-08-25 | 一种基于场景光照图的大场景非直接光照方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104183009B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105261059B (zh) * | 2015-09-18 | 2017-12-12 | 浙江大学 | 一种基于在屏幕空间计算间接反射高光的渲染方法 |
US11010956B2 (en) | 2015-12-09 | 2021-05-18 | Imagination Technologies Limited | Foveated rendering |
JP6985804B2 (ja) | 2016-03-11 | 2021-12-22 | イマジネイション テクノロジーズ リミテッド | 光マップを決定するための重要度サンプリング |
CN106447759B (zh) * | 2016-10-19 | 2018-10-12 | 长春理工大学 | 利用可见性插值实现三维场景间接光照效果近似绘制的方法 |
CN108109204B (zh) * | 2017-12-18 | 2021-06-25 | 苏州蜗牛数字科技股份有限公司 | 一种制作和渲染大规模地形的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458824A (zh) * | 2009-01-08 | 2009-06-17 | 浙江大学 | 一种基于web的全景图的光照渲染方法 |
CN101826214A (zh) * | 2010-03-29 | 2010-09-08 | 中山大学 | 一种基于光子映射的全局光照方法 |
CN102467752A (zh) * | 2010-11-05 | 2012-05-23 | 上海威塔数字科技有限公司 | 一种物理实时渲染三维场景的方法及系统 |
-
2014
- 2014-08-25 CN CN201410422870.8A patent/CN104183009B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458824A (zh) * | 2009-01-08 | 2009-06-17 | 浙江大学 | 一种基于web的全景图的光照渲染方法 |
CN101826214A (zh) * | 2010-03-29 | 2010-09-08 | 中山大学 | 一种基于光子映射的全局光照方法 |
CN102467752A (zh) * | 2010-11-05 | 2012-05-23 | 上海威塔数字科技有限公司 | 一种物理实时渲染三维场景的方法及系统 |
Non-Patent Citations (3)
Title |
---|
Temporal power spectral models of angle of arrival fluctuations for optical waves propagating through weak non-Kolmogorov turbulence;Linyan Cui et al.;《CHINESE OPTICS LETTERS》;20131110;第11卷(第11期);第1-4页 * |
一种复杂非直接光照场景的渲染算法;朱振兴等;《一种复杂非直接光照场景的渲染算法》;20101231;第37卷(第12期);第227-229页 * |
基于锥形射线族投射的非直接光照算法;吴福祥等;《计算机工程》;20131231;第39卷(第12期);第294-297页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104183009A (zh) | 2014-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104183009B (zh) | 一种基于场景光照图的大场景非直接光照方法 | |
CN104183016B (zh) | 一种快速的2.5维建筑物模型的构建方法 | |
CN109063301A (zh) | 一种基于热力图的单幅图像室内物体姿态估计方法 | |
CN103559737A (zh) | 一种对象全景建模方法 | |
US20150161763A1 (en) | 2d animation from a 3d mesh | |
CN102426695A (zh) | 一种单幅图像场景的虚实光照融合方法 | |
CN103559733B (zh) | 支持三维体数据内部视点漫游的球面体绘制方法 | |
CN105261059A (zh) | 一种基于在屏幕空间计算间接反射高光的渲染方法 | |
CN103871039B (zh) | 一种sar图像变化检测差异图生成方法 | |
CN102855400A (zh) | 一种基于投影网格的海洋表面建模及实时光照方法 | |
CN103995700A (zh) | 一种3d游戏引擎全局照明的实现方法 | |
CN102819860B (zh) | 基于辐射度算法的次表面散射物体的实时全局光照方法 | |
CN110059602A (zh) | 一种基于正投影特征变换的俯视人脸矫正方法 | |
CN104200512A (zh) | 基于虚拟球形光源的多光源渲染方法 | |
WO2023061232A1 (zh) | 图像渲染方法、装置、设备及介质 | |
CN109991602A (zh) | 基于深度残差网络的isar图像分辨率增强方法 | |
CN104517313B (zh) | 基于屏幕空间的环境光遮蔽的方法 | |
CN109242769A (zh) | 一种图像处理方法和装置 | |
CN106210696A (zh) | 一种实时虚拟视点合成的方法及装置 | |
CN103617593A (zh) | 三维流体物理动画引擎的实现方法及装置 | |
CN104318591A (zh) | 一种带边界平面流场的动态绘制方法 | |
CN103871096B (zh) | 三维空间中真实感流体场景合成方法 | |
CN103106687B (zh) | 自适应视域范围内三维海洋网格的计算机生成方法及其装置 | |
US10803654B2 (en) | Three-dimensional human face reconstruction method | |
KR101691476B1 (ko) | 방향 벡터 보간에 의한 3차원 형상의 온도-적외선 신호 계산 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170118 Termination date: 20180825 |