CN102306401B - 一种包含模糊反射效果的3d虚拟场景的左右眼立体画面绘制方法 - Google Patents
一种包含模糊反射效果的3d虚拟场景的左右眼立体画面绘制方法 Download PDFInfo
- Publication number
- CN102306401B CN102306401B CN 201110225275 CN201110225275A CN102306401B CN 102306401 B CN102306401 B CN 102306401B CN 201110225275 CN201110225275 CN 201110225275 CN 201110225275 A CN201110225275 A CN 201110225275A CN 102306401 B CN102306401 B CN 102306401B
- Authority
- CN
- China
- Prior art keywords
- incident radiation
- radiation brightness
- intersection point
- hshbf
- virtual camera
- 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
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明公开一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法,属于真实感三维虚拟场景绘制技术领域。传统的三维虚拟场景的左右眼立体画面绘制方法采用分别独立绘制左右眼虚拟相机的图像画面的方式实现立体画面的绘制。本发明方法在双核CPU上分别同时执行左右眼虚拟相机的图像画面的绘制程序,左眼虚拟相机的图像画面从第一行像素开始绘制,右眼虚拟相机的图像画面从最后一行像素开始绘制,保证了左右眼虚拟相机的图像画面绘制过程中的入射辐射亮度计算结果的可重用性;通过基于梯度的插值方法,在绘制过程中重用了入射辐射亮度计算结果。利用本发明方法绘制三维虚拟场景立体画面比传统方法快20%~35%。
Description
技术领域
本发明属于真实感3D虚拟场景绘制技术领域,涉及一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法。
背景技术
三维动画电影作为近年来新兴的计算机艺术,发展势头非常迅猛,已经在许多行业得到了广泛的应用。为了产生更强的视觉冲击力,目前很多三维动画电影都具有立体视觉效果。立体视觉效果的基本原理是,观众在观看动画电影时,左右眼能分别互不干扰地看到左右眼虚拟相机拍摄的图像画面,再通过人脑的合成,最终产生画面的入屏或者出屏效果。
为了提高三维动画电影画面的真实感,往往要求在绘制的图像中加入全局光照效果。实现全局光照效果的关键是,正确地模拟3D虚拟场景中的不同物体表面对光的反射过程。在三维图形绘制中,常见的光照反射类型有:镜面反射(Specular Reflection)、漫反射(DiffuseReflection)和模糊反射(Glossy Reflection)。镜面反射和漫反射实际上可以看成是模糊反射的特例。通常使用双向反射分布函数(BRDF)来建模物体表面对光的反射特性。2004年Pascal Gautron等人提出用半球谐和基函数来表示半球域函数(Hemispherical Functions)(见2004年欧洲图形学学会出版的Eurographics Symposium on Rendering会议论文集中的论文《A Novel Hemispherical Basis for Accurate and Efficient Rendering》,作者Pascal Gautron,Jaroslav Krivanek,Sumanta Pattanaik,Kadi Bouatouch)。由于3D虚拟场景中的物体表面的BRDF和入射辐射亮度等物理量实际上都属于半球域函数,因此可以用半球谐和基函数来表示。
传统的3D虚拟场景立体画面绘制方法采用分别独立绘制左右眼虚拟相机的图像画面的方式来实现立体画面的绘制。模糊反射是真实感3D虚拟场景中的一种常见光照反射类型。然而,由于模糊反射的出射光照值与观察角密切相关,而3D虚拟场景中的同一点相对于左右眼虚拟相机的观察角通常并不相等。因此,3D虚拟场景中的物体表面上的同一点在左右眼虚拟相机的图像画面的像素中所表现出的光照值通常并不完全相等,这使得左眼虚拟相机的图像画面的模糊反射光照计算结果难以直接在右眼虚拟相机的图像画面中复用。本发明利用半球谐和基函数来表示3D虚拟场景中的物体表面的BRDF和入射辐射亮度,通过入射辐射亮度缓存实现已有计算结果的重用,以便提高包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制的速度。
发明内容
本发明的目的在于提供一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法。本发明方法需要的设备包括:带有双核CPU和共享内存的计算机***。如图1所示,当左眼虚拟相机(101)和右眼虚拟相机(102)能同时拍摄到3D虚拟场景中的物体(105)的表面上的点p1、点p2和点p3时,点p1、点p2和点p3的光照值将分别保存在左眼虚拟相机(101)的像平面(103)和右眼虚拟相机(102)的像平面(104)上的像素中。首先将3D虚拟场景中的漫反射和模糊反射表面的双向反射分布函数(Bi-directional ReflectanceDistribution Function,缩写为BRDF)展开成低阶半球谐和基函数(Hemispherical HarmonicsBasis Function,缩写为HSHBF)的累加和的形式,把各阶HSHBF的系数保存在共享内存中并与该表面的BRDF相关联。然后在双核CPU上同时绘制左眼虚拟相机(101)的图像画面和右眼虚拟相机(102)的图像画面,将漫反射和模糊反射表面点的入射辐射亮度展开成低阶HSHBF的累加和的形式,并保存在入射辐射亮度缓存中,通过基于梯度的入射辐射亮度插值计算,实现入射辐射亮度计算结果的重用,从而提高3D虚拟场景的左右眼立体画面的绘制速度。
本发明方法提供一种入射辐射亮度记录项数据结构,其包括位置分量、局部坐标系分量、HSHBF展开系数分量、HSHBF展开系数平移梯度分量等成员变量。
本发明方法将入射辐射亮度记录项保存在位于共享内存中的入射辐射亮度缓存中;为了便于根据空间位置检索入射辐射亮度缓存中的入射辐射亮度记录项和向入射辐射亮度缓存中添加新的入射辐射亮度记录项,入射辐射亮度缓存使用三维空间均匀网格数据结构;根据给定的三维空间位置,可以直接检索出对应网格中的所有入射辐射亮度记录项,以及向网格中添加新的入射辐射亮度记录项。
本发明方法的第一部分计算3D虚拟场景中的所有漫反射和模糊反射表面的BRDF的低阶HSHBF展开系数,具体步骤如下:
步骤S101:设置最低HSHBF阶数nl、最高HSHBF阶数nh和HSHBF展开的误差阈值Et;
步骤S102:将漫反射看作是模糊反射的特例,对于3D虚拟场景中的各漫反射和模糊反射表面的BRDF(A101),标记BRDF(A101)能表示成低阶HSHBF的累加和的形式,令nv=nl,做如下计算:
②计算如果且nv<nh,则nv=nv+1,转①;如果且nv=nh,则标记BRDF(A101)不能表示成低阶HSHBF的累加和的形式;如果则在共享内存中保存所有HSHBF展开系数并将其与BRDF(A101)及角度采样相关联。
本发明方法的第二部分在带有双核CPU和共享内存的计算机***上并行地绘制左右眼虚拟相机的图像画面,通过对已经计算出的入射辐射亮度值进行缓存并利用基于梯度的插值方法,实现入射辐射亮度计算结果的复用,以提高左右眼虚拟相机的图像画面的绘制速度,具体步骤如下:
步骤S201:清空共享内存中的入射辐射亮度缓存;
步骤S202:在第一个CPU计算内核上运行左眼虚拟相机的图像画面的绘制程序,同时在第二个CPU计算内核上运行右眼虚拟相机的图像画面的绘制程序;左眼虚拟相机的图像画面的绘制程序执行步骤S203,右眼虚拟相机的图像画面的绘制程序执行步骤S204;
步骤S203:令I=1,J=1,执行如下计算:
①从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的第I行、J列像素发射主光线(B01),测试主光线(B01)与3D虚拟场景的表面是否相交;如果不相交,则将主光线(B01)对应的像素的颜色设置为背景光照值,转⑦,否则计算最近的交点位置pi,利用蒙特卡洛方法对光源进行采样,计算交点pi处的直接光照值;
②如果交点pi所在表面的反射类型为镜面反射,则递归跟踪镜面反射二次光线,计算镜面反射间接光照值;如果交点pi所在表面的反射类型为漫反射,则转③;如果交点pi所在表面的反射类型为模糊反射,则在共享内存中查询交点pi所在表面的BRDF是否能表示成低阶HSHBF的累加和的形式,若能,则转③,否则使用蒙特卡洛方法对交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间进行重要性采样(Ni与交点pi的法线方向同向),直接计算模糊反射间接光照值,转⑥;
③对入射辐射亮度缓存进行访存加锁操作;从入射辐射亮度缓存中查找满足如下条件的入射辐射亮度记录项(B02):
条件A:其中p为入射辐射亮度记录项(B02)中的位置分量成员变量,n为入射辐射亮度记录项(B02)的位置分量成员变量所表示的表面点处的法线向量,ni为交点pi的单位法线向量,Ri为交点pi到所有可见对象的谐和函数平均距离,a为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;
④将查找到的所有满足条件A的入射辐射亮度记录项(B02)放入一个集合S中,如果S非空,则转⑤,否则利用蒙特卡洛方法对交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数及其平移梯度其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量成员变量赋值为pi,局部坐标系分量成员变量赋值为(Ui,Vi,Ni),HSHBF展开系数分量成员变量赋值为HSHBF展开系数平移梯度分量成员变量赋值为对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置pi相对应的网格单元中,同时将其加入集合S中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S中的各元素的局部坐标系分量成员变量,旋转各元素的局部坐标系以便与交点pi的局部坐标系对齐,利用基于梯度的插值方法,根据集合S中的入射辐射亮度记录项插值计算交点pi的入射辐射亮度的HSHBF展开系数计算主光线(B01)在交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间中所对应的角度将的值作为交点pi的模糊反射间接光照值,其中为交点pi所在表面的BRDF的HSHBF展开系数;
⑥将交点pi处的直接光照值和反射间接光照值相加作为交点pi的最终光照值计算结果;
⑦J=J+1,如果J>Npix,则J=1,I=I+1,其中Npix表示左眼虚拟相机的图像画面的像素列数;
⑧如果I<=Mpix,其中Mpix表示左眼虚拟相机的图像画面的像素行数,则转①,否则转步骤S205;
步骤S204:令I′=Mpix,J′=Npix,其中Mpix表示右眼虚拟相机的图像画面的像素行数,Npix表示右眼虚拟相机的图像画面的像素列数,执行如下计算:
①从右眼虚拟相机光心位置向右眼虚拟相机的像平面上的第I′行、J′列像素发射主光线(B03),测试主光线(B03)与3D虚拟场景的表面是否相交;如果不相交,则将主光线(B03)对应的像素的颜色设置为背景光照值,转⑦,否则计算最近的交点位置p′i,利用蒙特卡洛方法对光源进行采样,计算交点p′i处的直接光照值;
②如果交点p′i所在表面的反射类型为镜面反射,则递归跟踪镜面反射二次光线,计算镜面反射间接光照值;如果交点p′i所在表面的反射类型为漫反射,则转③;如果交点p′i所在表面的反射类型为模糊反射,则在共享内存中查询交点p′i所在表面的BRDF是否能表示成低阶HSHBF的累加和的形式,若能,则转③,否则使用蒙特卡洛方法对交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间进行重要性采样(N′i与交点p′i的法线方向同向),直接计算模糊反射间接光照值,转⑥;
③对入射辐射亮度缓存进行访存加锁操作;从入射辐射亮度缓存中查找满足如下条件的入射辐射亮度记录项(B04):
条件A′:p′为入射辐射亮度记录项(B04)中的位置分量成员变量,n′为入射辐射亮度记录项(B04)的位置分量成员变量所表示的表面点处的法线向量,n′i为交点p′i的单位法线向量,Ri为交点p′i到所有可见对象的谐和函数平均距离,a为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;
④将查找到的所有满足条件A′的入射辐射亮度记录项(B04)放入一个集合S′中,如果S′非空,则转⑤,否则利用蒙特卡洛方法对交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数及其平移梯度其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量成员变量赋值为p′i,局部坐标系分量成员变量赋值为(U′i,V′i,N′i),HSHBF展开系数分量成员变量赋值为HSHBF展开系数平移梯度分量成员变量赋值为对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置p′i相对应的网格单元中,同时将其加入集合,中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S′中的各元素的局部坐标系分量成员变量,旋转各元素的局部坐标系以便与交点p′i的局部坐标系对齐,利用基于梯度的插值方法,根据集合S′中的入射辐射亮度记录项插值计算交点p′i的入射辐射亮度的HSHBF展开系数计算主光线(B03)在交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间中所对应的角度将的值作为交点p′i的模糊反射间接光照值,其中为交点p′i所在表面的BRDF的HSHBF展开系数;
⑥将交点p′i处的直接光照值和反射间接光照值相加作为交点p′i的最终光照值计算结果;
⑦J′=J′-1,如果J′<1,则J′=Npix,I′=I′-1;
⑧如果I′≥1,则转①,否则转步骤S205;
步骤S205:左右眼虚拟相机的图像画面绘制完毕。
有益效果
本发明提供了一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法。由于使用双核CPU同时绘制左右眼虚拟相机的图像画面,并且采用左眼虚拟相机的图像画面从第一行像素开始绘制,右眼虚拟相机的图像画面从最后一行像素开始绘制的绘制顺序,进一步保证了左右眼虚拟相机的图像画面绘制过程中的入射辐射亮度计算结果的可重用性;通过基于梯度的插值方法,在绘制过程中重用了入射辐射亮度计算结果,因此减少了绘制3D虚拟场景左右眼立体画面的总时间。利用本发明方法绘制3D虚拟场景立体画面比传统方法快20%~35%。
附图说明
图1是3D虚拟场景中的物体表面上的点在左右眼虚拟相机的像平面上的成像示意图。
具体实施方式
为了使本发明的特征和优点更加清楚明白,下面结合具体实施例对本发明作进一步的描述。
在本实施例中,选择Intel(R)XeonTM双核CPU,通过加锁的方法实现两个CPU计算内核对共享内存的互斥访问。入射辐射亮度缓存设置在共享内存中,左右眼虚拟相机的图像画面绘制程序都将计算出的入射辐射亮度结果存放到入射辐射亮度缓存中,并从入射辐射亮度缓存查找临近点的入射辐射亮度进行插值计算。因此左眼虚拟相机的图像画面绘制程序的入射辐射亮度计算结果,可以直接被右眼虚拟相机的图像画面绘制程序使用;同理,右眼虚拟相机的图像画面绘制程序的入射辐射亮度计算结果,也可以直接被左眼虚拟相机的图像画面绘制程序使用。
本发明的目的在于提供一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法。本发明方法需要的设备包括:带有双核CPU和共享内存的计算机***。如图1所示,当左眼虚拟相机(101)和右眼虚拟相机(102)能同时拍摄到3D虚拟场景中的物体(105)的表面上的点p1、点p2和点p3时,点p1、点p2和点p3的光照值将分别保存在左眼虚拟相机(101)的像平面(103)和右眼虚拟相机(102)的像平面(104)上的像素中。首先将3D虚拟场景中的漫反射和模糊反射表面的双向反射分布函数(Bi-directional ReflectanceDistribution Function,缩写为BRDF)展开成低阶半球谐和基函数(Hemispherical HarmonicsBasis Function,缩写为HSHBF)的累加和的形式,把各阶HSHBF的系数保存在共享内存中并与该表面的BRDF相关联。然后在双核CPU上同时绘制左眼虚拟相机(101)的图像画面和右眼虚拟相机(102)的图像画面,将漫反射和模糊反射表面点的入射辐射亮度展开成低阶HSHBF的累加和的形式,并保存在入射辐射亮度缓存中,通过基于梯度的入射辐射亮度插值计算,实现入射辐射亮度计算结果的重用,从而提高3D虚拟场景的左右眼立体画面的绘制速度。
本发明方法提供一种入射辐射亮度记录项数据结构,其包括位置分量、局部坐标系分量、HSHBF展开系数分量、HSHBF展开系数平移梯度分量等成员变量。
本发明方法将入射辐射亮度记录项保存在位于共享内存中的入射辐射亮度缓存中;为了便于根据空间位置检索入射辐射亮度缓存中的入射辐射亮度记录项和向入射辐射亮度缓存中添加新的入射辐射亮度记录项,入射辐射亮度缓存使用三维空间均匀网格数据结构;根据给定的三维空间位置,可以直接检索出对应网格中的所有入射辐射亮度记录项,以及向网格中添加新的入射辐射亮度记录项。
本发明方法的第一部分计算3D虚拟场景中的所有漫反射和模糊反射表面的BRDF的低阶HSHBF展开系数,具体步骤如下:
步骤S101:设置最低HSHBF阶数nl、最高HSHBF阶数nh和HSHBF展开的误差阈值Et;
步骤S102:将漫反射看作是模糊反射的特例,对于3D虚拟场景中的各漫反射和模糊反射表面的BRDF(A101),标记BRDF(A101)能表示成低阶HSHBF的累加和的形式,令nv=nl,做如下计算:
②计算如果且nv<nh,则nv=nv+1,转①;如果且nv=nh,则标记BRDF(A101)不能表示成低阶HSHBF的累加和的形式;如果则在共享内存中保存所有HSHBF展开系数并将其与BRDF(A101)及角度采样相关联。
本发明方法的第二部分在带有双核CPU和共享内存的计算机***上并行地绘制左右眼虚拟相机的图像画面,通过对已经计算出的入射辐射亮度值进行缓存并利用基于梯度的插值方法,实现入射辐射亮度计算结果的复用,以提高左右眼虚拟相机的图像画面的绘制速度,具体步骤如下:
步骤S201:清空共享内存中的入射辐射亮度缓存;
步骤S202:在第一个CPU计算内核上运行左眼虚拟相机的图像画面的绘制程序,同时在第二个CPU计算内核上运行右眼虚拟相机的图像画面的绘制程序;左眼虚拟相机的图像画面的绘制程序执行步骤S203,右眼虚拟相机的图像画面的绘制程序执行步骤S204;
步骤S203:令I=1,J=1,执行如下计算:
①从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的第I行、J列像素发射主光线(B01),测试主光线(B01)与3D虚拟场景的表面是否相交;如果不相交,则将主光线(B01)对应的像素的颜色设置为背景光照值,转⑦,否则计算最近的交点位置pi,利用蒙特卡洛方法对光源进行采样,计算交点pi处的直接光照值;
②如果交点pi所在表面的反射类型为镜面反射,则递归跟踪镜面反射二次光线,计算镜面反射间接光照值;如果交点pi所在表面的反射类型为漫反射,则转③;如果交点pi所在表面的反射类型为模糊反射,则在共享内存中查询交点pi所在表面的BRDF是否能表示成低阶HSHBF的累加和的形式,若能,则转③,否则使用蒙特卡洛方法对交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间进行重要性采样(Ni与交点pi的法线方向同向),直接计算模糊反射间接光照值,转⑥;
③对入射辐射亮度缓存进行访存加锁操作;从入射辐射亮度缓存中查找满足如下条件的入射辐射亮度记录项(B02):
条件A:其中p为入射辐射亮度记录项(B02)中的位置分量成员变量,n为入射辐射亮度记录项(B02)的位置分量成员变量所表示的表面点处的法线向量,ni为交点pi的单位法线向量,Ri为交点pi到所有可见对象的谐和函数平均距离,a为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;
④将查找到的所有满足条件A的入射辐射亮度记录项(B02)放入一个集合S中,如果S非空,则转⑤,否则利用蒙特卡洛方法对交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数及其平移梯度其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量成员变量赋值为pi,局部坐标系分量成员变量赋值为(Ui,Vi,Ni),HSHBF展开系数分量成员变量赋值为HSHBF展开系数平移梯度分量成员变量赋值为对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置pi相对应的网格单元中,同时将其加入集合S中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S中的各元素的局部坐标系分量成员变量,旋转各元素的局部坐标系以便与交点pi的局部坐标系对齐,利用基于梯度的插值方法,根据集合S中的入射辐射亮度记录项插值计算交点pi的入射辐射亮度的HSHBF展开系数计算主光线(B01)在交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间中所对应的角度将的值作为交点pi的模糊反射间接光照值,其中为交点pi所在表面的BRDF的HSHBF展开系数;
⑥将交点pi处的直接光照值和反射间接光照值相加作为交点pi的最终光照值计算结果;
⑦J=J+1,如果J>Npix,则J=1,I=I+1,其中Npix表示左眼虚拟相机的图像画面的像素列数;
⑧如果I<=Mpix,其中Mpix表示左眼虚拟相机的图像画面的像素行数,则转①,否则转步骤S205;
步骤S204:令I′=Mpix,J′=Npix,其中Mpix表示右眼虚拟相机的图像画面的像素行数,Npix表示右眼虚拟相机的图像画面的像素列数,执行如下计算:
①从右眼虚拟相机光心位置向右眼虚拟相机的像平面上的第I′行、J′列像素发射主光线(B03),测试主光线(B03)与3D虚拟场景的表面是否相交;如果不相交,则将主光线(B03)对应的像素的颜色设置为背景光照值,转⑦,否则计算最近的交点位置p′i,利用蒙特卡洛方法对光源进行采样,计算交点p′i处的直接光照值;
②如果交点p′i所在表面的反射类型为镜面反射,则递归跟踪镜面反射二次光线,计算镜面反射间接光照值;如果交点p′i所在表面的反射类型为漫反射,则转③;如果交点p′i所在表面的反射类型为模糊反射,则在共享内存中查询交点p′i所在表面的BRDF是否能表示成低阶HSHBF的累加和的形式,若能,则转③,否则使用蒙特卡洛方法对交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间进行重要性采样(N′i与交点p′i的法线方向同向),直接计算模糊反射间接光照值,转⑥;
③对入射辐射亮度缓存进行访存加锁操作;从入射辐射亮度缓存中查找满足如下条件的入射辐射亮度记录项(B04):
条件A′:p′为入射辐射亮度记录项(B04)中的位置分量成员变量,n′为入射辐射亮度记录项(B04)的位置分量成员变量所表示的表面点处的法线向量,n′i为交点p′i的单位法线向量,Ri为交点p′i到所有可见对象的谐和函数平均距离,a为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;
④将查找到的所有满足条件A′的入射辐射亮度记录项(B04)放入一个集合S′中,如果S′非空,则转⑤,否则利用蒙特卡洛方法对交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数及其平移梯度其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量成员变量赋值为p′i,局部坐标系分量成员变量赋值为(U ′i,V′i,N′i),HSHBF展开系数分量成员变量赋值为HSHBF展开系数平移梯度分量成员变量赋值为对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置p′i相对应的网格单元中,同时将其加入集合S′中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S′中的各元素的局部坐标系分量成员变量,旋转各元素的局部坐标系以便与交点p′i的局部坐标系对齐,利用基于梯度的插值方法,根据集合S′中的入射辐射亮度记录项插值计算交点p′i的入射辐射亮度的HSHBF展开系数计算主光线(B03)在交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间中所对应的角度将的值作为交点p′i的模糊反射间接光照值,其中为交点p′i所在表面的BRDF的HSHBF展开系数;
⑥将交点p′i处的直接光照值和反射间接光照值相加作为交点p′i的最终光照值计算结果;
⑦J′=J′-1,如果J′<1,则J′=Npix,I′=I′-1;
⑧如果I′≥1,则转①,否则转步骤S205;
步骤S205:左右眼虚拟相机的图像画面绘制完毕。
Claims (1)
1.一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法,其特征在于,所需的设备、数据结构以及实现步骤如下:
本方法的目的在于提供一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法;本方法需要的设备包括:带有双核CPU和共享内存的计算机***;当左眼虚拟相机(101)和右眼虚拟相机(102)能同时拍摄到3D虚拟场景中的物体(105)的表面上的点p1、点p2和点p3时,点p1、点p2和点p3的光照值将分别保存在左眼虚拟相机(101)的像平面(103)和右眼虚拟相机(102)的像平面(104)上的像素中;首先将3D虚拟场景中的漫反射和模糊反射表面的双向反射分布函数展开成低阶半球谐和基函数的累加和的形式,双向反射分布函数展的英文为Bi-directional Reflectance Distribution Function,缩写为BRDF,半球谐和基函数的英文为Hemispherical Harmonics Basis Function,缩写为HSHBF,把各阶HSHBF的系数保存在共享内存中并与该表面的BRDF相关联;然后在双核CPU上同时绘制左眼虚拟相机(101)的图像画面和右眼虚拟相机(102)的图像画面,将漫反射和模糊反射表面点的入射辐射亮度展开成低阶HSHBF的累加和的形式,并保存在入射辐射亮度缓存中,通过基于梯度的入射辐射亮度插值计算,实现入射辐射亮度计算结果的重用,从而提高3D虚拟场景的左右眼立体画面的绘制速度;
本方法提供一种入射辐射亮度记录项数据结构,其包括位置分量、局部坐标系分量、HSHBF展开系数分量、HSHBF展开系数平移梯度分量;
本方法将入射辐射亮度记录项保存在位于共享内存中的入射辐射亮度缓存中;为了便于根据空间位置检索入射辐射亮度缓存中的入射辐射亮度记录项和向入射辐射亮度缓存中添加新的入射辐射亮度记录项,入射辐射亮度缓存使用三维空间均匀网格数据结构;根据给定的三维空间位置,可以直接检索出对应网格中的所有入射辐射亮度记录项,以及向网格中添加新的入射辐射亮度记录项;
本方法的第一部分计算3D虚拟场景中的所有漫反射和模糊反射表面的BRDF的低阶HSHBF展开系数,具体步骤如下:
步骤S101:设置最低HSHBF阶数nl、最高HSHBF阶数nh和HSHBF展开的误差阈值Et;
步骤S102:将漫反射看作是模糊反射的特例,对于3D虚拟场景中的各漫反射和模糊反射表面的BRDF(A101),标记BRDF(A101)能表示成低阶HSHBF的累加和的形式,令nv=nl,做如下计算:
②计算如果且nv<nh,则nv=nv+1,转①;如果且nv=nh,则标记BRDF(A101)不能表示成低阶HSHBF的累加和的形式;如果则在共享内存中保存所有HSHBF展开系数并将其与BRDF(A101)及角度采样相关联;
本方法的第二部分在带有双核CPU和共享内存的计算机***上并行地绘制左右眼虚拟相机的图像画面,通过对已经计算出的入射辐射亮度值进行缓存并利用基于梯度的插值方法,实现入射辐射亮度计算结果的复用,以提高左右眼虚拟相机的图像画面的绘制速度,具体步骤如下:
步骤S201:清空共享内存中的入射辐射亮度缓存;
步骤S202:在第一个CPU计算内核上进行左眼虚拟相机的图像画面的绘制,同时在第二个CPU计算内核上进行右眼虚拟相机的图像画面的绘制;步骤S203为绘制左眼虚拟相机的图像画面,步骤S204为绘制右眼虚拟相机的图像画面;
步骤S203:令I=1,J=1,执行如下计算:
①从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的第I行、J列像素发射主光线(B01),测试主光线(B01)与3D虚拟场景的表面是否相交;如果不相交,则将主光线(B01)对应的像素的颜色设置为背景光照值,转⑦,否则计算最近的交点位置pi,利用蒙特卡洛方法对光源进行采样,计算交点pi处的直接光照值;
②如果交点pi所在表面的反射类型为镜面反射,则递归跟踪镜面反射二次光线,计算镜面反射间接光照值;如果交点pi所在表面的反射类型为漫反射,则转③;如果交点pi所在表面的反射类型为模糊反射,则在共享内存中查询交点pi所在表面的BRDF是否能表示成低阶HSHBF的累加和的形式,若能,则转③,否则使用蒙特卡洛方法对交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间进行重要性采样,Ni与交点pi的法线方向同向,直接计算模糊反射间接光照值,转⑥;
③对入射辐射亮度缓存进行访存加锁操作;从入射辐射亮度缓存中查找满足如下条件的入射辐射亮度记录项(B02):
条件A:其中p为入射辐射亮度记录项(B02)中的位置分量,n为入射辐射亮度记录项(B02)的位置分量所表示的表面点处的法线向量,ni为交点pi的单位法线向量,Ri为交点pi到所有可见对象的谐和函数平均距离,a为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;
④将查找到的所有满足条件A的入射辐射亮度记录项(B02)放入一个集合S中,如果S非空,则转⑤,否则利用蒙特卡洛方法对交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数及其平移梯度其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量赋值为pi,局部坐标系分量赋值为(Ui,Vi,Ni),HSHBF展开系数分量赋值为HSHBF展开系数平移梯度分量赋值为对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置pi相对应的网格单元中,同时将其加入集合S中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S中的各元素的局部坐标系分量,旋转各元素的局部坐标系以便与交点pi的局部坐标系对齐,利用基于梯度的插值方法,根据集合S中的入射辐射亮度记录项插值计算交点pi的入射辐射亮度的HSHBF展开系数计算主光线(B01)在交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间中所对应的角度将的值作为交点pi的模糊反射间接光照值,其中为交点pi所在表面的BRDF的HSHBF展开系数;
⑥将交点pi处的直接光照值和反射间接光照值相加作为交点pi的最终光照值计算结果;
⑦J=J+1,如果J>Npix,则J=1,I=I+1,其中Npix表示左眼虚拟相机的图像画面的像素列数;
⑧如果I<=Mpix,其中Mpix表示左眼虚拟相机的图像画面的像素行数,则转①,否则转步骤S205;
步骤S204:令I′=Mpix,J′=Npix,其中Mpix表示右眼虚拟相机的图像画面的像素行数,Npix表示右眼虚拟相机的图像画面的像素列数,执行如下计算:
①从右眼虚拟相机光心位置向右眼虚拟相机的像平面上的第I′行、J′列像素发射主光线(B03),测试主光线(B03)与3D虚拟场景的表面是否相交;如果不相交,则将主光线(B03)对应的像素的颜色设置为背景光照值,转⑦,否则计算最近的交点位置p′i,利用蒙特卡洛方法对光源进行采样,计算交点p′i处的直接光照值;
②如果交点p′i所在表面的反射类型为镜面反射,则递归跟踪镜面反射二次光线,计算镜面反射间接光照值;如果交点p′i所在表面的反射类型为漫反射,则转③;如果交点p′i所在表面的反射类型为模糊反射,则在共享内存中查询交点p′i所在表面的BRDF是否能表示成低阶HSHBF的累加和的形式,若能,则转③,否则使用蒙特卡洛方法对交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间进行重要性采样,N′i与交点p′i的法线方向同向,直接计算模糊反射间接光照值,转⑥;
③对入射辐射亮度缓存进行访存加锁操作;从入射辐射亮度缓存中查找满足如下条件的入射辐射亮度记录项(B04):
条件A′:p′为入射辐射亮度记录项(B04)中的位置分量,n′为入射辐射亮度记录项(B04)的位置分量所表示的表面点处的法线向量,n′i为交点p′i的单位法线向量,Ri为交点p′i到所有可见对象的谐和函数平均距离,a为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;
④将查找到的所有满足条件A′的入射辐射亮度记录项(B04)放入一个集合S′中,如果S′非空,则转⑤,否则利用蒙特卡洛方法对交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数及其平移梯度其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量赋值为p′i,局部坐标系分量赋值为(U′i,V′i,N′i),HSHBF展开系数分量赋值为HSHBF展开系数平移梯度分量赋值为对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置p′i相对应的网格单元中,同时将其加入集合S′中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S′中的各元素的局部坐标系分量,旋转各元素的局部坐标系以便与交点p′i的局部坐标系对齐,利用基于梯度的插值方法,根据集合S′中的入射辐射亮度记录项插值计算交点p′i的入射辐射亮度的HSHBF展开系数计算主光线(B03)在交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间中所对应的角度将的值作为交点p′i的模糊反射间接光照值,其中为交点p′i所在表面的BRDF的HSHBF展开系数;
⑥将交点p′i处的直接光照值和反射间接光照值相加作为交点p′i的最终光照值计算结果;
⑦J′=J′-1,如果J′<1,则J′=Npix,I′=I′-1;
⑧如果I′≥1,则转①,否则转步骤S205;
步骤S205:左右眼虚拟相机的图像画面绘制完毕。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110225275 CN102306401B (zh) | 2011-08-08 | 2011-08-08 | 一种包含模糊反射效果的3d虚拟场景的左右眼立体画面绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110225275 CN102306401B (zh) | 2011-08-08 | 2011-08-08 | 一种包含模糊反射效果的3d虚拟场景的左右眼立体画面绘制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102306401A CN102306401A (zh) | 2012-01-04 |
CN102306401B true CN102306401B (zh) | 2013-08-28 |
Family
ID=45380258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110225275 Expired - Fee Related CN102306401B (zh) | 2011-08-08 | 2011-08-08 | 一种包含模糊反射效果的3d虚拟场景的左右眼立体画面绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102306401B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103995700A (zh) * | 2014-05-14 | 2014-08-20 | 无锡梵天信息技术股份有限公司 | 一种3d游戏引擎全局照明的实现方法 |
CN105006011B (zh) * | 2015-07-21 | 2017-08-25 | 长春理工大学 | 真实感三维场景的体感交互式绘制***与方法 |
CN105447905B (zh) * | 2015-11-17 | 2018-03-06 | 长春理工大学 | 基于可见性平滑滤波的三维场景近似柔和阴影绘制方法 |
CN107274474B (zh) * | 2017-07-03 | 2020-06-23 | 长春理工大学 | 三维场景立体画面绘制中的间接光照复用方法 |
CN109493409B (zh) * | 2018-11-05 | 2022-08-23 | 长春理工大学 | 基于左右眼空间复用的虚拟三维场景立体画面绘制方法 |
CN112002003B (zh) * | 2020-08-26 | 2022-09-06 | 长春理工大学 | 虚拟3d场景的球面全景立体画面生成与交互式显示方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101064327A (zh) * | 2006-04-29 | 2007-10-31 | 联华电子股份有限公司 | 图像感测元件及其制作方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4913996B2 (ja) * | 2004-09-16 | 2012-04-11 | キヤノン株式会社 | 投射型画像表示装置 |
-
2011
- 2011-08-08 CN CN 201110225275 patent/CN102306401B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101064327A (zh) * | 2006-04-29 | 2007-10-31 | 联华电子股份有限公司 | 图像感测元件及其制作方法 |
Non-Patent Citations (4)
Title |
---|
Face recognition by elastic bunch graph matching;Wiskott, L. etc.;《IEEE Transactions on Pattern Analysis and Machine Intelligence》;19970731;第19卷(第7期);第775-779页 * |
Wiskott, L. etc..Face recognition by elastic bunch graph matching.《IEEE Transactions on Pattern Analysis and Machine Intelligence》.1997,第19卷(第7期),第775-779页. |
实时快速3D绘制空气中水滴反射效果;费涨 等;《计算机工程与应用》;20071231(第25期);第114-117页 * |
费涨 等.实时快速3D绘制空气中水滴反射效果.《计算机工程与应用》.2007,(第25期),第114-117页. |
Also Published As
Publication number | Publication date |
---|---|
CN102306401A (zh) | 2012-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108463837B (zh) | 用于渲染多个细节等级的***和方法 | |
CN108475497B (zh) | 用于渲染多个细节等级的***和方法 | |
US9582922B2 (en) | System, method, and computer program product to produce images for a near-eye light field display | |
CN102306401B (zh) | 一种包含模糊反射效果的3d虚拟场景的左右眼立体画面绘制方法 | |
CN112513712A (zh) | 具有虚拟内容翘曲的混合现实***和使用该***生成虚拟内容的方法 | |
US9501860B2 (en) | Sparse rasterization | |
Weiskopf et al. | GPU‐based nonlinear ray tracing | |
Kang et al. | Two-view underwater 3D reconstruction for cameras with unknown poses under flat refractive interfaces | |
Yao et al. | Multi‐image based photon tracing for interactive global illumination of dynamic scenes | |
CN112184575A (zh) | 图像渲染的方法和装置 | |
Okura et al. | Mixed-reality world exploration using image-based rendering | |
US20170323469A1 (en) | Stereo multi-projection implemented using a graphics processing pipeline | |
Dos Santos et al. | Real time ray tracing for augmented reality | |
CN103700134A (zh) | 基于可控制纹理烘焙的三维矢量模型实时光影延迟着色渲染方法 | |
Ganestam et al. | Real-time multiply recursive reflections and refractions using hybrid rendering | |
Baričević et al. | User-perspective augmented reality magic lens from gradients | |
US20240177394A1 (en) | Motion vector optimization for multiple refractive and reflective interfaces | |
Wang et al. | The efficient model to define a single light source position by use of high dynamic range image of 3D scene | |
Tredinnick et al. | Experiencing interior environments: New approaches for the immersive display of large-scale point cloud data | |
US11508119B2 (en) | Inverse path tracing for material and lighting estimation | |
CN115715464A (zh) | 用于遮挡处理技术的方法和装置 | |
US11210860B2 (en) | Systems, methods, and media for visualizing occluded physical objects reconstructed in artificial reality | |
KR102397001B1 (ko) | 그래픽 프로세서 | |
Delalandre et al. | Single scattering in heterogenous participating media | |
US11562529B2 (en) | Generating and modifying an artificial reality environment using occlusion surfaces at predetermined distances |
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 |
Granted publication date: 20130828 Termination date: 20140808 |
|
EXPY | Termination of patent right or utility model |