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

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

Info

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
Application number
CN 201110225275
Other languages
English (en)
Other versions
CN102306401A (zh
Inventor
陈纯毅
杨华民
范静涛
蒋振刚
李岩芳
冯欣
权巍
张育力
薛耀红
宋小龙
曲福恒
从立钢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changchun University of Science and Technology
Original Assignee
Changchun University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Changchun University of Science and Technology filed Critical Changchun University of Science and Technology
Priority to CN 201110225275 priority Critical patent/CN102306401B/zh
Publication of CN102306401A publication Critical patent/CN102306401A/zh
Application granted granted Critical
Publication of CN102306401B publication Critical patent/CN102306401B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Generation (AREA)

Abstract

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

Description

一种包含模糊反射效果的3D虚拟场景的左右眼立体画面绘制方法
技术领域
本发明属于真实感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,做如下计算:
①按余弦分布对正半球空间进行空间角度采样,在每个角度采样
Figure BSA00000552573000031
处计算(其中θo为极角分量,
Figure BSA00000552573000032
为方位角分量):
l=0,1,...,nv,m=-l,...,l,其中
Figure BSA00000552573000034
为BRDF(A101)在出射角为
Figure BSA00000552573000035
入射角为
Figure BSA00000552573000036
时的值,
Figure BSA00000552573000037
为一个半球谐和基函数,为BRDF(A101)在角度采样上与
Figure BSA000005525730000310
相关联的HSHBF展开系数;
②计算如果且nv<nh,则nv=nv+1,转①;如果
Figure BSA000005525730000313
且nv=nh,则标记BRDF(A101)不能表示成低阶HSHBF的累加和的形式;如果
Figure BSA000005525730000314
则在共享内存中保存所有HSHBF展开系数并将其与BRDF(A101)及角度采样
Figure BSA000005525730000316
相关联。
本发明方法的第二部分在带有双核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半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值
Figure BSA00000552573000042
k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数
Figure BSA00000552573000043
及其平移梯度
Figure BSA00000552573000044
其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量成员变量赋值为pi,局部坐标系分量成员变量赋值为(Ui,Vi,Ni),HSHBF展开系数分量成员变量赋值为
Figure BSA00000552573000045
HSHBF展开系数平移梯度分量成员变量赋值为
Figure BSA00000552573000046
对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置pi相对应的网格单元中,同时将其加入集合S中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S中的各元素的局部坐标系分量成员变量,旋转各元素的局部坐标系以便与交点pi的局部坐标系对齐,利用基于梯度的插值方法,根据集合S中的入射辐射亮度记录项插值计算交点pi的入射辐射亮度的HSHBF展开系数计算主光线(B01)在交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间中所对应的角度
Figure BSA00000552573000048
Figure BSA00000552573000051
的值作为交点pi的模糊反射间接光照值,其中
Figure BSA00000552573000052
为交点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′:
Figure BSA00000552573000053
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半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值
Figure BSA00000552573000061
k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数
Figure BSA00000552573000062
及其平移梯度
Figure BSA00000552573000063
其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量成员变量赋值为p′i,局部坐标系分量成员变量赋值为(U′i,V′i,N′i),HSHBF展开系数分量成员变量赋值为
Figure BSA00000552573000064
HSHBF展开系数平移梯度分量成员变量赋值为
Figure BSA00000552573000065
对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置p′i相对应的网格单元中,同时将其加入集合,中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S′中的各元素的局部坐标系分量成员变量,旋转各元素的局部坐标系以便与交点p′i的局部坐标系对齐,利用基于梯度的插值方法,根据集合S′中的入射辐射亮度记录项插值计算交点p′i的入射辐射亮度的HSHBF展开系数
Figure BSA00000552573000066
计算主光线(B03)在交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间中所对应的角度
Figure BSA00000552573000067
的值作为交点p′i的模糊反射间接光照值,其中
Figure BSA00000552573000069
为交点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,做如下计算:
①按余弦分布对正半球空间进行空间角度采样,在每个角度采样
Figure BSA00000552573000081
处计算(其中θo为极角分量,
Figure BSA00000552573000082
为方位角分量):
Figure BSA00000552573000083
l=0,1,...,nv,m=-l,...,l,其中
Figure BSA00000552573000084
为BRDF(A101)在出射角为
Figure BSA00000552573000085
入射角为
Figure BSA00000552573000086
时的值,
Figure BSA00000552573000087
为一个半球谐和基函数,
Figure BSA00000552573000088
为BRDF(A101)在角度采样上与
Figure BSA000005525730000810
相关联的HSHBF展开系数;
②计算
Figure BSA000005525730000811
如果
Figure BSA000005525730000812
且nv<nh,则nv=nv+1,转①;如果
Figure BSA000005525730000813
且nv=nh,则标记BRDF(A101)不能表示成低阶HSHBF的累加和的形式;如果
Figure BSA000005525730000814
则在共享内存中保存所有HSHBF展开系数并将其与BRDF(A101)及角度采样
Figure BSA000005525730000816
相关联。
本发明方法的第二部分在带有双核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:
Figure BSA00000552573000091
其中p为入射辐射亮度记录项(B02)中的位置分量成员变量,n为入射辐射亮度记录项(B02)的位置分量成员变量所表示的表面点处的法线向量,ni为交点pi的单位法线向量,Ri为交点pi到所有可见对象的谐和函数平均距离,a为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;
④将查找到的所有满足条件A的入射辐射亮度记录项(B02)放入一个集合S中,如果S非空,则转⑤,否则利用蒙特卡洛方法对交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值
Figure BSA00000552573000101
k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数
Figure BSA00000552573000102
及其平移梯度
Figure BSA00000552573000103
其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量成员变量赋值为pi,局部坐标系分量成员变量赋值为(Ui,Vi,Ni),HSHBF展开系数分量成员变量赋值为
Figure BSA00000552573000104
HSHBF展开系数平移梯度分量成员变量赋值为
Figure BSA00000552573000105
对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置pi相对应的网格单元中,同时将其加入集合S中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S中的各元素的局部坐标系分量成员变量,旋转各元素的局部坐标系以便与交点pi的局部坐标系对齐,利用基于梯度的插值方法,根据集合S中的入射辐射亮度记录项插值计算交点pi的入射辐射亮度的HSHBF展开系数计算主光线(B01)在交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间中所对应的角度
Figure BSA00000552573000107
Figure BSA00000552573000108
的值作为交点pi的模糊反射间接光照值,其中
Figure BSA00000552573000109
为交点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′:
Figure BSA00000552573000111
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半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值
Figure BSA00000552573000112
k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数
Figure BSA00000552573000113
及其平移梯度
Figure BSA00000552573000114
其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量成员变量赋值为p′i,局部坐标系分量成员变量赋值为(U ′i,V′i,N′i),HSHBF展开系数分量成员变量赋值为
Figure BSA00000552573000115
HSHBF展开系数平移梯度分量成员变量赋值为
Figure BSA00000552573000116
对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置p′i相对应的网格单元中,同时将其加入集合S′中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S′中的各元素的局部坐标系分量成员变量,旋转各元素的局部坐标系以便与交点p′i的局部坐标系对齐,利用基于梯度的插值方法,根据集合S′中的入射辐射亮度记录项插值计算交点p′i的入射辐射亮度的HSHBF展开系数
Figure BSA00000552573000121
计算主光线(B03)在交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间中所对应的角度
Figure BSA00000552573000122
Figure BSA00000552573000123
的值作为交点p′i的模糊反射间接光照值,其中
Figure BSA00000552573000124
为交点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,做如下计算:
①按余弦分布对正半球空间进行空间角度采样,在每个角度采样
Figure FSB00001053305800011
处计算,其中θo为极角分量,
Figure FSB00001053305800012
为方位角分量:
Figure FSB00001053305800021
l=0,1,...,nv,m=-l,...,l,其中
Figure FSB00001053305800022
为BRDF(A101)在出射角为入射角为
Figure FSB00001053305800024
时的值,
Figure FSB00001053305800025
为一个半球谐和基函数,
Figure FSB00001053305800026
为BRDF(A101)在角度采样
Figure FSB00001053305800027
上与
Figure FSB00001053305800028
相关联的HSHBF展开系数;
②计算
Figure FSB00001053305800029
如果
Figure FSB000010533058000210
且nv<nh,则nv=nv+1,转①;如果
Figure FSB000010533058000211
且nv=nh,则标记BRDF(A101)不能表示成低阶HSHBF的累加和的形式;如果
Figure FSB000010533058000212
则在共享内存中保存所有HSHBF展开系数
Figure FSB000010533058000213
并将其与BRDF(A101)及角度采样
Figure FSB000010533058000214
相关联;
本方法的第二部分在带有双核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:
Figure FSB00001053305800031
其中p为入射辐射亮度记录项(B02)中的位置分量,n为入射辐射亮度记录项(B02)的位置分量所表示的表面点处的法线向量,ni为交点pi的单位法线向量,Ri为交点pi到所有可见对象的谐和函数平均距离,a为预先给定的精度阈值;对入射辐射亮度缓存进行访存解锁操作;
④将查找到的所有满足条件A的入射辐射亮度记录项(B02)放入一个集合S中,如果S非空,则转⑤,否则利用蒙特卡洛方法对交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间进行空间角度采样,计算各角度采样方向上的入射辐射亮度值
Figure FSB00001053305800032
k表示角度采样编号,根据它们计算入射辐射亮度的HSHBF展开系数
Figure FSB00001053305800033
及其平移梯度
Figure FSB00001053305800034
其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量赋值为pi,局部坐标系分量赋值为(Ui,Vi,Ni),HSHBF展开系数分量赋值为
Figure FSB00001053305800035
HSHBF展开系数平移梯度分量赋值为对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置pi相对应的网格单元中,同时将其加入集合S中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S中的各元素的局部坐标系分量,旋转各元素的局部坐标系以便与交点pi的局部坐标系对齐,利用基于梯度的插值方法,根据集合S中的入射辐射亮度记录项插值计算交点pi的入射辐射亮度的HSHBF展开系数
Figure FSB00001053305800037
计算主光线(B01)在交点pi的局部坐标系(Ui,Vi,Ni)的正Ni半球空间中所对应的角度
Figure FSB00001053305800038
的值作为交点pi的模糊反射间接光照值,其中
Figure FSB000010533058000310
为交点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展开系数及其平移梯度
Figure FSB00001053305800044
其中l=0,1,...,nv,m=-l,...,l,N为角度采样数;创建一个新的入射辐射亮度记录项,其位置分量赋值为p′i,局部坐标系分量赋值为(U′i,V′i,N′i),HSHBF展开系数分量赋值为
Figure FSB00001053305800045
HSHBF展开系数平移梯度分量赋值为对入射辐射亮度缓存进行访存加锁操作;将该入射辐射亮度记录项添加到入射辐射亮度缓存中的与位置p′i相对应的网格单元中,同时将其加入集合S′中;对入射辐射亮度缓存进行访存解锁操作;
⑤根据集合S′中的各元素的局部坐标系分量,旋转各元素的局部坐标系以便与交点p′i的局部坐标系对齐,利用基于梯度的插值方法,根据集合S′中的入射辐射亮度记录项插值计算交点p′i的入射辐射亮度的HSHBF展开系数
Figure FSB00001053305800051
计算主光线(B03)在交点p′i的局部坐标系(U′i,V′i,N′i)的正N′i半球空间中所对应的角度
Figure FSB00001053305800052
的值作为交点p′i的模糊反射间接光照值,其中为交点p′i所在表面的BRDF的HSHBF展开系数;
⑥将交点p′i处的直接光照值和反射间接光照值相加作为交点p′i的最终光照值计算结果;
⑦J′=J′-1,如果J′<1,则J′=Npix,I′=I′-1;
⑧如果I′≥1,则转①,否则转步骤S205;
步骤S205:左右眼虚拟相机的图像画面绘制完毕。
CN 201110225275 2011-08-08 2011-08-08 一种包含模糊反射效果的3d虚拟场景的左右眼立体画面绘制方法 Expired - Fee Related CN102306401B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101064327A (zh) * 2006-04-29 2007-10-31 联华电子股份有限公司 图像感测元件及其制作方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4913996B2 (ja) * 2004-09-16 2012-04-11 キヤノン株式会社 投射型画像表示装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101064327A (zh) * 2006-04-29 2007-10-31 联华电子股份有限公司 图像感测元件及其制作方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
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