一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法

著录项
  • CN201110225275.1
  • 20110808
  • CN102306401A
  • 20120104
  • 长春理工大学
  • 陈纯毅;杨华民;范静涛;蒋振刚;李岩芳;冯欣;权巍;张育力;薛耀红;宋小龙;曲福恒;从立钢
  • G06T19/00(2011.01)I
  • G06T19/00(2011.01)I G06T15/00(2011.01)I

  • 吉林省长春市卫星路7089号
  • 中国,CN,吉林(22)
摘要
本发明公开一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法,属于真实感三维虚拟场景绘制技术领域。传统的三维虚拟场景的左右眼立体画面绘制方法采用分别独立绘制左右眼虚拟相机的图像画面的方式实现立体画面的绘制。本发明方法在双核CPU上分别同时执行左右眼虚拟相机的图像画面的绘制程序,左眼虚拟相机的图像画面从第一行像素开始绘制,右眼虚拟相机的图像画面从最后一行像素开始绘制,保证了左右眼虚拟相机的图像画面绘制过程中的入射辐射亮度计算结果的可重用性;通过基于梯度的插值方法,在绘制过程中重用了入射辐射亮度计算结果。利用本发明方法绘制三维虚拟场景立体画面比传统方法快20%~35%。
权利要求

1.一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法,其特征在于,所 需的设备、数据结构以及实现步骤如下:

本发明的目的在于提供一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方 法;本发明方法需要的设备包括:带有双核CPU和共享内存的计算机系统;当左眼虚拟相机 (101)和右眼虚拟相机(102)能同时拍摄到3D虚拟场景中的物体(105)的表面上的点p 1、 点p 2和点p 3时,点p 1、点p 2和点p 3的光照值将分别保存在左眼虚拟相机(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阶数n l、最高HSHBF阶数n h和HSHBF展开的误差阈值 E t;

步骤S102:将漫反射看作是模糊反射的特例,对于3D虚拟场景中的各漫反射和模糊反 射表面的BRDF(A101),标记BRDF(A101)能表示成低阶HSHBF的累加和的形式,令n v =n l,做如下计算:

①按余弦分布对正半球空间进行空间角度采样,在每个角度采样 处计算(其中θ o为极 角分量, 为方位角分量):

l=0,1,...,n v,m=-l,...,l,其中 为BRDF(A101)在出射角为 入射角为 时的值, 为一个 半球谐和基函数, 为BRDF(A101)在角度采样 上与 相关联的HSHBF 展开系数;

②计算 如果 且 n v<n h,则n v=n v+1,转①;如果 且n v=n h,则标记BRDF (A101)不能表示成低阶HSHBF的累加和的形式;如果 则在共享内存中保存所有HSHBF展开系数 并将其与BRDF(A101)及角度采 样 相关联;

本发明方法的第二部分在带有双核CPU和共享内存的计算机系统上并行地绘制左右眼 虚拟相机的图像画面,通过对已经计算出的入射辐射亮度值进行缓存并利用基于梯度的插值 方法,实现入射辐射亮度计算结果的复用,以提高左右眼虚拟相机的图像画面的绘制速度, 具体步骤如下:

步骤S201:清空共享内存中的入射辐射亮度缓存;

步骤S202:在第一个CPU计算内核上运行左眼虚拟相机的图像画面的绘制程序,同时 在第二个CPU计算内核上运行右眼虚拟相机的图像画面的绘制程序;左眼虚拟相机的图像画 面的绘制程序执行步骤S203,右眼虚拟相机的图像画面的绘制程序执行步骤S204;

步骤S203:令I=1,J=1,执行如下计算:

①从左眼虚拟相机光心位置向左眼虚拟相机的像平面上的第I行、J列像素发射主光线 (B01),测试主光线(B01)与3D虚拟场景的表面是否相交;如果不相交,则将主光线(B01) 对应的像素的颜设置为背景光照值,转⑦,否则计算最近的交点位置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的法线方向同向),直接计算模糊反 射间接光照值,转⑥;

③对入射辐射亮度缓存进行访存加锁操作;从入射辐射亮度缓存中查满足如下条件的 入射辐射亮度记录项(B02):

条件A: 其中p为入射辐射亮度记录项(B02)中的位 置分量成员变量,n为入射辐射亮度记录项(B02)的位置分量成员变量所表示的表面点处的 法线向量,n i为交点p i的单位法线向量,R i为交点p i到所有可见对象的谐和函数平均距离, a为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;

④将查到的所有满足条件A的入射辐射亮度记录项(B02)放入一个集合S中,如果S 非空,则转⑤,否则利用蒙特卡洛方法对交点p i的局部坐标系(U i,V i,N i)的正N i半球空间进行 空间角度采样,计算各角度采样方向上的入射辐射亮度值 k表示角度采样编号,根 据它们计算入射辐射亮度的HSHBF展开系数 及其平移梯度 其中l=0,1,...,n v,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度 记录项,其位置分量成员变量赋值为p i,局部坐标系分量成员变量赋值为(U i,V i,N i),HSHBF 展开系数分量成员变量赋值为 HSHBF展开系数平移梯度分量成员变量赋值为 对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射 辐射亮度缓存中的与位置p i相对应的网格单元中,同时将其加入集合S中;对入射辐射亮度 缓存进行访存解锁操作;

⑤根据集合S中的各元素的局部坐标系分量成员变量,旋转各元素的局部坐标系以便与 交点p i的局部坐标系对齐,利用基于梯度的插值方法,根据集合S中的入射辐射亮度记录项 插值计算交点p i的入射辐射亮度的HSHBF展开系数 计算主光线(B01)在交点p i的 局部坐标系(U i,V i,N i)的正N i半球空间中所对应的角度 将 的值作为交点p i的模糊反射间接光照值,其中 为交点p i所在表面的BRDF的HSHBF 展开系数;

⑥将交点p i处的直接光照值和反射间接光照值相加作为交点p i的最终光照值计算结果;

⑦J=J+1,如果J>N pix,则J=1,I=I+1,其中N pix表示左眼虚拟相机的图像画面的 像素列数;

⑧如果I<=M pix,其中M pix表示左眼虚拟相机的图像画面的像素行数,则转①,否则转 步骤S205;

步骤S204:令I′=M pix,J′=N pix,其中M pix表示右眼虚拟相机的图像画面的像素行数, N pix表示右眼虚拟相机的图像画面的像素列数,执行如下计算:

①从右眼虚拟相机光心位置向右眼虚拟相机的像平面上的第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的单位法线向量,R i为交点p′ i到所有可见对象的谐和函数平均距离,a 为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;

④将查到的所有满足条件A′的入射辐射亮度记录项(B04)放入一个集合S′中,如果S′ 非空,则转⑤,否则利用蒙特卡洛方法对交点p′ i的局部坐标系(U′ i,V′ i,N′ i)的正N′ i半球空间进 行空间角度采样,计算各角度采样方向上的入射辐射亮度值 k表示角度采样编号, 根据它们计算入射辐射亮度的HSHBF展开系数 及其平移梯度 其中l=0,1,...,n v,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′=N pix,I′=I′-1;

⑧如果I′≥1,则转①,否则转步骤S205;

步骤S205:左右眼虚拟相机的图像画面绘制完毕。

说明书
技术领域

本发明属于真实感3D虚拟场景绘制技术领域,涉及一种包含模糊反射效果的3D虚拟 场景的左右眼立体画面绘制方法。

三维动画电影作为近年来新兴的计算机艺术,发展势头非常迅猛,已经在许多行业得 到了广泛的应用。为了产生更强的视觉冲击力,目前很多三维动画电影都具有立体视觉效 果。立体视觉效果的基本原理是,观众在观看动画电影时,左右眼能分别互不干扰地看到 左右眼虚拟相机拍摄的图像画面,再通过人脑的合成,最终产生画面的入屏或者出屏效果。

为了提高三维动画电影画面的真实感,往往要求在绘制的图像中加入全局光照效果。 实现全局光照效果的关键是,正确地模拟3D虚拟场景中的不同物体表面对光的反射过程。 在三维图形绘制中,常见的光照反射类型有:镜面反射(Specular Reflection)、漫反射(Diffuse Reflection)和模糊反射(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 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,做如下计算:

①按余弦分布对正半球空间进行空间角度采样,在每个角度采样处计算(其中θo
极角分量,为方位角分量):

l=0,1,...,nv,m=-l,...,l,其中
为BRDF(A101)在出射角为入射角为时的值,为一
个半球谐和基函数,为BRDF(A101)在角度采样上与相关联的
HSHBF展开系数;

②计算如果
且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 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,做如下计算:

①按余弦分布对正半球空间进行空间角度采样,在每个角度采样处计算(其中θo
极角分量,为方位角分量):

l=0,1,...,nv,m=-l,...,l,其中
为BRDF(A101)在出射角为入射角为时的值,为一
个半球谐和基函数,为BRDF(A101)在角度采样上与相关联的
HSHBF展开系数;

②计算如果
且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:左右眼虚拟相机的图像画面绘制完毕。

本文发布于:2024-09-25 12:28:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/73458.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议