首页> 中国专利> 三维场景中由透明几何对象产生的面焦散效果的近似绘制方法

三维场景中由透明几何对象产生的面焦散效果的近似绘制方法

摘要

本发明公开一种三维场景中由透明几何对象产生的面焦散效果的近似绘制方法。本方法将三维场景中的几何对象分为透明几何对象和非透明几何对象,分别用不同的场景图进行组织;通过先测试光源采样光线是否与透明几何对象相交,来减少对光源采样光线进行处理操作的计算量。对于由透明几何对象被点光源直接照射而产生的面焦散效果,利用本方法可以明显提高三维场景面焦散效果的绘制速度。

著录项

  • 公开/公告号CN105096371A

    专利类型发明专利

  • 公开/公告日2015-11-25

    原文格式PDF

  • 申请/专利权人 长春理工大学;

    申请/专利号CN201510425208.2

  • 申请日2015-07-14

  • 分类号G06T15/06;

  • 代理机构

  • 代理人

  • 地址 130022 吉林省长春市卫星路7089号

  • 入库时间 2023-12-18 12:26:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-08-22

    授权

    授权

  • 2015-12-30

    实质审查的生效 IPC(主分类):G06T15/06 申请日:20150714

    实质审查的生效

  • 2015-11-25

    公开

    公开

说明书

技术领域

本发明属于三维图形绘制技术领域,涉及一种三维场景中由透明几何对象产生的面焦 散效果的近似绘制方法。

背景技术

在三维场景中,光源发出的光线被光滑透明几何对象折射后,再传播到漫反射材质的 几何对象上,会在这些几何对象表面上形成明显的焦散效果。例如,桌上的蜡烛发出的光, 经放在桌上的装满水的透明玻璃杯折射后,再传播到桌面上,会在桌面上形成焦散斑。在 进行三维场景建模时,经常需要快速预览所建模型的视觉效果。如果建立的三维场景模型 包含面焦散效果,则在预览时也希望将焦散效果绘制出来。常见的光线跟踪技术,通过发 射一系列穿过虚拟相机各屏幕像素中心点的光线,并对这些光线进行跟踪操作,来计算虚 拟相机的每个像素对应的入射光亮度,从而实现对三维场景的绘制。对于包含焦散效果的 三维场景,基本的光线跟踪技术难以高效地绘制出焦散效果,通常用光子映射来绘制焦散 效果。然而,常见的基于光子映射的面焦散效果绘制技术的绘制时间比较长,利用该技术 来实现三维场景模型的面焦散效果预览,会产生显著的时间开销,影响建模工作进度。对 于大多数包含透明几何对象产生的面焦散效果的三维场景来说,面焦散效果都是由光源直 接照射产生的,换句话说,经其他非透明几何对象反射后照射到透明几何对象上的间接光 照对面焦散的贡献可以忽略。针对此种情况,本发明提供一种三维场景中由透明几何对象 产生的面焦散效果的近似绘制方法,可以明显提高透明几何对象产生的面焦散效果的绘制 速度。

发明内容

本方法的目的在于,提供一种三维场景中由透明几何对象产生的面焦散效果的近似绘 制方法。

本方法涉及一种数据结构PHOTON,数据结构PHOTON包括位置P0、法向量nv、入 射向量Vi、亮度Φi共四个成员变量。

本方法涉及一种数据结构SPOINT,数据结构SPOINT包括位置P0、法向量nv、漫反 射系数kd共三个成员变量。

本方法的技术解决方案:将三维场景中的所有几何对象分为透明几何对象和非透明几 何对象;透明几何对象就是光可以透过的几何对象,非透明几何对象就是光完全不能透过 的几何对象;将所有透明几何对象用一个场景图SGT来进行组织,将所有非透明几何对象 用一个场景图SGF来进行组织;将场景图SGT和场景图SGF都保存在计算机系统的内存 中;在计算机系统中执行如下操作:

Step001:设置列表LPHOTON为空;根据点光源PS的光照发射强度的空间角度分布, 对点光源的光照发射方向进行重要性采样,得到N个采样方向,每个采样方向对应一条从 点光源PS发射的光线,如图1所示,从而得到N条从点光源PS发射的光线,对其中的每 条光线A001,做如下操作:

Step001-1:判断光线A001是否与场景图SGT中的几何对象相交,如果不相交则转步 骤Step001-9;

Step001-2:计算光线A001与场景图SGT中的几何对象的离点光源PS最近的交点 A002;

Step001-3:判断光线A001是否与场景图SGF中的几何对象相交,如果不相交则转步 骤Step001-6;

Step001-4:计算光线A001与场景图SGF中的几何对象的离点光源PS最近的交点 A003;

Step001-5:如果交点A002到点光源PS的距离大于交点A003到点光源PS的距离, 则转步骤Step001-9;

Step001-6:基于光线跟踪原理,对光线A001在由场景图SGT和场景图SGF中的所 有几何对象组成的三维场景中的传播过程进行跟踪,依次计算光线A001对应的传播路径 与三维场景中的几何对象的交点A004,只要发现交点A004所在的几何对象的表面的材质 为非透明材质,就立即停止光线跟踪计算,并转步骤Step001-7;如果对光线A001对应的 传播路径跟踪完毕后,未发现所在表面的材质为非透明材质的交点,则转步骤Step001-9;

Step001-7:如果交点A004所在的几何对象的表面为非漫反射材质,则转步骤 Step001-9;

Step001-8:在计算机系统的内存中创建一个数据结构PHOTON类型的变量A005;把 变量A005的位置P0成员变量赋值为交点A004所在的位置;把变量A005的法向量nv成 员变量赋值为交点A004所在的位置的表面法向量;把变量A005的入射向量Vi成员变量 赋值为光线A001对应的传播路径在交点A004处的单位化后的入射方向向量;根据点光源 PS的光照发射功率及光照发射空间角度范围,计算点光源PS发射的光照经光线A001对 应的传播路径传输后,入射到交点A004所在的位置的光亮度A006,把变量A005的亮度 Φi成员变量赋值为光亮度A006;把变量A005加入到列表LPHOTON中;

Step001-9:针对光线A001的操作结束;

Step002:创建一个Nr行、Nc列的二维数组Arr,用于存放数据结构SPOINT类型的 变量,Nr是虚拟相机的总像素行数,Nc是虚拟相机的总像素列数,数组Arr的元素与虚 拟相机的像素一一对应;创建一个Nr行、Nc列的二维数组IMAG,用于存放虚拟相机的 每个像素对应的入射光亮度值,Nr是虚拟相机的总像素行数,Nc是虚拟相机的总像素列 数,数组IMAG的元素与虚拟相机的像素一一对应;把场景图SGT和场景图SGF合并为 一个场景图SGA;在计算机系统中,利用光线跟踪技术绘制由场景图SGA中的所有几何 对象组成的三维场景A007,得到虚拟相机的每个像素A008对应的入射光亮度值Lrt,将 每个像素A008对应的数组IMAG的元素赋值为光亮度值Lrt;在光线跟踪过程中,对每条 相机光线A009,即从虚拟相机位置出发穿过像素A008的中心位置的光线,除正常的光线 跟踪操作外,额外做如下操作:

Step002-1:如果光线A009与三维场景A007中的几何对象不相交,则转步骤Step002-3;

Step002-2.计算光线A009与三维场景A007中的几何对象的离虚拟相机位置最近的 交点A010;创建一个数据结构SPOINT类型的变量A011;将变量A011的位置P0成员变 量赋值为交点A010所在的位置,将变量A011的法向量nv成员变量赋值为交点A010所 在的位置的表面法向量;如果交点A010所在的位置对应的表面为漫反射材质,则将该表 面的漫反射系数赋值给变量A011的漫反射系数kd成员变量,否则将变量A011的漫反射 系数kd成员变量赋值为-1;将光线A009对应的像素A008对应的数组Arr的元素赋值为 变量A011的值;转步骤Step002-4;

Step002-3:创建一个数据结构SPOINT类型的变量A012,将变量A012的位置P0成 员变量赋值为位置(0,0,0),将变量A012的法向量nv成员变量赋值为向量(1,0,0),将变量 A012的漫反射系数kd成员变量赋值为-1;将光线A009对应的像素A008对应的数组Arr 的元素赋值为变量A012的值;

Step002-4:针对光线A009的操作结束;

Step003:对列表LPHOTON中的每个数据结构PHOTON类型的变量B001,做如下操 作:

Step003-1:以变量B001的位置P0成员变量表示的位置为球心,确定一个半径为R 的球B002;判断数组Arr中是否存在满足如下条件的元素B003:

条件COND1:元素B003对应的数据结构SPOINT类型的变量的漫反射系数kd成员 变量的值不等于-1,且元素B003对应的数据结构SPOINT类型的变量的位置P0成员变量 表示的位置处于球B002内;

如果数组Arr中不存在满足条件COND1的元素,转步骤Step003-2,否则对数组Arr 中满足条件COND1的每个元素B005,做如下操作:

①令D等于从元素B005对应的数据结构SPOINT类型的变量的位置P0成员变量表示 的位置到变量B001的位置P0成员变量表示的位置的距离;如果R等于0,则令t=2,否 则令t=D/R;

Cκ=exp(-3t2),0t10,t>1;

令Φp等于变量B001的亮度Φi成员变量的值;令ωi等于变量B001的入射向量Vi成 员变量的值;令np等于元素B005对应的数据结构SPOINT类型的变量的法向量nv成员变 量的值;令ωo为从元素B005对应的数据结构SPOINT类型的变量的位置P0成员变量表 示的位置指向虚拟相机位置的单位向量;令ρ等于元素B005对应的数据结构SPOINT类 型的变量的漫反射系数kd成员变量的值;根据漫反射定律计算从ωi表示的方向入射的、 亮度为Φp的光经漫反射系数为ρ的漫反射表面反射后,沿ωo表示的方向入射到虚拟相机 中的光亮度Lc;令LW等于光亮度Lc与Cκ之乘积;

②把元素B005对应的虚拟相机像素对应的数组IMAG的元素赋值为元素B005对应 的虚拟相机像素对应的数组IMAG的元素的值与LW之和;

③针对元素B005的操作结束;

Step003-2:针对变量B001的操作结束;

Step004:把数组IMAG中保存的光亮度值转换成虚拟相机像素的颜色值,并以图像文 件的形式输出到计算机系统的磁盘中。

有益效果

本发明提供了一种三维场景中由透明几何对象产生的面焦散效果的近似绘制方法。本 方法将三维场景中的几何对象分为透明几何对象和非透明几何对象,分别用不同的场景图 进行组织;对每条光源采样光线,只有在与透明几何对象相交的情况下,才进一步地判断 是否与非透明几何对象相交;只有在光源采样光线不与非透明几何对象相交或者光源采样 光线与非透明几何对象的交点到光源的距离大于光源采样光线与透明几何对象的交点到 光源的距离时,才对光源采样光线作进一步处理;对于只包含少量透明几何对象的三维场 景,这可以显著减少对光源采样光线的操作处理时间,因此提高了三维场景中的透明几何 对象产生的面焦散效果的绘制效率。

附图说明

图1为点光源的光照发射方向采样示意图。

具体实施方式

为了使本方法的特征和优点更加清楚明白,下面结合具体实施例对本方法作进一步的 描述。在本实施例中,考虑如下三维场景:三维场景包含一张铺了桌布的桌子,桌面上放 着一份报纸,报纸上放着一个玻璃小雕像,雕像放在报纸中间,雕像占据的桌面面积远比 报纸占据的桌面面积小;一个点光源PS从玻璃雕像的右侧上方照射三维场景,光线穿过 玻璃雕像后在玻璃雕像左侧的报纸上形成面焦散效果;玻璃雕像的材质是镜面透明材质; 三维场景中除了玻璃雕像外,其他几何对象都是漫反射非透明材质。计算机系统的CPU选 择Intel(R)Xeon(R)CPUE3-1225v33.20GHz,内存选择金士顿8GBDDR31333,硬盘 选择BuffaloHD-CE1.5TU2;计算机操作系统选用Windows7,软件编程工具选用VC++ 2010。

本方法涉及一种数据结构PHOTON,数据结构PHOTON包括位置P0、法向量nv、入 射向量Vi、亮度Φi共四个成员变量。

本方法涉及一种数据结构SPOINT,数据结构SPOINT包括位置P0、法向量nv、漫反 射系数kd共三个成员变量。

本方法的技术解决方案:将三维场景中的所有几何对象分为透明几何对象和非透明几 何对象;透明几何对象就是光可以透过的几何对象,非透明几何对象就是光完全不能透过 的几何对象;将所有透明几何对象用一个场景图SGT来进行组织,将所有非透明几何对象 用一个场景图SGF来进行组织;将场景图SGT和场景图SGF都保存在计算机系统的内存 中;在计算机系统中执行如下操作:

Step001:设置列表LPHOTON为空;根据点光源PS的光照发射强度的空间角度分布, 对点光源的光照发射方向进行重要性采样,得到N个采样方向,每个采样方向对应一条从 点光源PS发射的光线,从而得到N条从点光源PS发射的光线,对其中的每条光线A001, 做如下操作:

Step001-1:判断光线A001是否与场景图SGT中的几何对象相交,如果不相交则转步 骤Step001-9;

Step001-2:计算光线A001与场景图SGT中的几何对象的离点光源PS最近的交点 A002;

Step001-3:判断光线A001是否与场景图SGF中的几何对象相交,如果不相交则转步 骤Step001-6;

Step001-4:计算光线A001与场景图SGF中的几何对象的离点光源PS最近的交点 A003;

Step001-5:如果交点A002到点光源PS的距离大于交点A003到点光源PS的距离, 则转步骤Step001-9;

Step001-6:基于光线跟踪原理,对光线A001在由场景图SGT和场景图SGF中的所 有几何对象组成的三维场景中的传播过程进行跟踪,依次计算光线A001对应的传播路径 与三维场景中的几何对象的交点A004,只要发现交点A004所在的几何对象的表面的材质 为非透明材质,就立即停止光线跟踪计算,并转步骤Step001-7;如果对光线A001对应的 传播路径跟踪完毕后,未发现所在表面的材质为非透明材质的交点,则转步骤Step001-9;

Step001-7:如果交点A004所在的几何对象的表面为非漫反射材质,则转步骤 Step001-9;

Step001-8:在计算机系统的内存中创建一个数据结构PHOTON类型的变量A005;把 变量A005的位置P0成员变量赋值为交点A004所在的位置;把变量A005的法向量nv成 员变量赋值为交点A004所在的位置的表面法向量;把变量A005的入射向量Vi成员变量 赋值为光线A001对应的传播路径在交点A004处的单位化后的入射方向向量;根据点光源 PS的光照发射功率及光照发射空间角度范围,计算点光源PS发射的光照经光线A001对 应的传播路径传输后,入射到交点A004所在的位置的光亮度A006,把变量A005的亮度 Φi成员变量赋值为光亮度A006;把变量A005加入到列表LPHOTON中;

Step001-9:针对光线A001的操作结束;

Step002:创建一个Nr行、Nc列的二维数组Arr,用于存放数据结构SPOINT类型的 变量,Nr是虚拟相机的总像素行数,Nc是虚拟相机的总像素列数,数组Arr的元素与虚 拟相机的像素一一对应;创建一个Nr行、Nc列的二维数组IMAG,用于存放虚拟相机的 每个像素对应的入射光亮度值,Nr是虚拟相机的总像素行数,Nc是虚拟相机的总像素列 数,数组IMAG的元素与虚拟相机的像素一一对应;把场景图SGT和场景图SGF合并为 一个场景图SGA;在计算机系统中,利用光线跟踪技术绘制由场景图SGA中的所有几何 对象组成的三维场景A007,得到虚拟相机的每个像素A008对应的入射光亮度值Lrt,将 每个像素A008对应的数组IMAG的元素赋值为光亮度值Lrt;在光线跟踪过程中,对每条 相机光线A009,即从虚拟相机位置出发穿过像素A008的中心位置的光线,除正常的光线 跟踪操作外,额外做如下操作:

Step002-1:如果光线A009与三维场景A007中的几何对象不相交,则转步骤Step002-3;

Step002-2:计算光线A009与三维场景A007中的几何对象的离虚拟相机位置最近的 交点A010;创建一个数据结构SPOINT类型的变量A011;将变量A011的位置P0成员变 量赋值为交点A010所在的位置,将变量A011的法向量nv成员变量赋值为交点A010所 在的位置的表面法向量;如果交点A010所在的位置对应的表面为漫反射材质,则将该表 面的漫反射系数赋值给变量A011的漫反射系数kd成员变量,否则将变量A011的漫反射 系数kd成员变量赋值为-1;将光线A009对应的像素A008对应的数组Arr的元素赋值为 变量A011的值;转步骤Step002-4;

Step002-3:创建一个数据结构SPOINT类型的变量A012,将变量A012的位置P0成 员变量赋值为位置(0,0,0),将变量A012的法向量nv成员变量赋值为向量(1,0,0),将变量 A012的漫反射系数kd成员变量赋值为-1;将光线A009对应的像素A008对应的数组Arr 的元素赋值为变量A012的值;

Step002-4:针对光线A009的操作结束;

Step003:对列表LPHOTON中的每个数据结构PHOTON类型的变量B001,做如下操 作:

Step003-1:以变量B001的位置P0成员变量表示的位置为球心,确定一个半径为R 的球B002;判断数组Arr中是否存在满足如下条件的元素B003:

条件COND1:元素B003对应的数据结构SPOINT类型的变量的漫反射系数kd成员 变量的值不等于-1,且元素B003对应的数据结构SPOINT类型的变量的位置P0成员变量 表示的位置处于球B002内;

如果数组Arr中不存在满足条件COND1的元素,转步骤Step003-2,否则对数组Arr 中满足条件COND1的每个元素B005,做如下操作:

①令D等于从元素B005对应的数据结构SPOINT类型的变量的位置P0成员变量表示 的位置到变量B001的位置P0成员变量表示的位置的距离;如果R等于0,则令t=2,否 则令t=D/R;

Cκ=exp(-3t2),0t10,t>1;

令Φp等于变量B001的亮度Φi成员变量的值;令ωi等于变量B001的入射向量Vi成 员变量的值;令np等于元素B005对应的数据结构SPOINT类型的变量的法向量nv成员变 量的值;令ωo为从元素B005对应的数据结构SPOINT类型的变量的位置P0成员变量表 示的位置指向虚拟相机位置的单位向量;令ρ等于元素B005对应的数据结构SPOINT类 型的变量的漫反射系数kd成员变量的值;根据漫反射定律计算从ωi表示的方向入射的、 亮度为Φp的光经漫反射系数为ρ的漫反射表面反射后,沿ωo表示的方向入射到虚拟相机 中的光亮度Lc;令LW等于光亮度Lc与Cκ之乘积;

②把元素B005对应的虚拟相机像素对应的数组IMAG的元素赋值为元素B005对应 的虚拟相机像素对应的数组IMAG的元素的值与LW之和;

③针对元素B005的操作结束;

Step003-2:针对变量B001的操作结束;

Step004:把数组IMAG中保存的光亮度值转换成虚拟相机像素的颜色值,并以图像文 件的形式输出到计算机系统的磁盘中。

在本实施例中,步骤Step001中的采样方向数N设置为102400;步骤Step003-1中的 半径R设置为4×dis;其中dis通过以下方法确定:在执行完步骤Step002及其子步骤 Step002-1至Step002-4之后,在执行步骤Step003之前,执行如下操作:

Step101:令SUM=0,Counter=0;对二维数组Arr中的每个元素C001,做如下操作:

如果元素C001对应的数据结构SPOINT类型的变量的漫反射系数kd成员变量的值不 等于-1,则计算元素C001对应的数据结构SPOINT类型的变量的位置P0成员变量表示的 位置到点光源PS的距离DPS,将距离DPS与SUM之和赋值给SUM,令Counter=Counter +1;

Step102:如果Counter等于0,则令dis=0,否则令dis=(SUM/Counter)×tan(θh/Nc), 其中θh表示虚拟相机的水平视场角,Nc表示虚拟相机的总像素列数。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号