CN102074041B - 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 - Google Patents
一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 Download PDFInfo
- Publication number
- CN102074041B CN102074041B CN201010597769A CN201010597769A CN102074041B CN 102074041 B CN102074041 B CN 102074041B CN 201010597769 A CN201010597769 A CN 201010597769A CN 201010597769 A CN201010597769 A CN 201010597769A CN 102074041 B CN102074041 B CN 102074041B
- Authority
- CN
- China
- Prior art keywords
- vertex
- vertex position
- reflection
- triangle
- vector
- 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虚拟场景面焦散效果的绘制方法,属于真实感3D虚拟场景绘制技术领域。当前,常用光子映射算法绘制3D虚拟场景的面焦散效果。光子映射算法要求对光源发射的大量光子进行跟踪计算,这会严重降低3D虚拟场景面焦散效果的绘制效率。本发明首先计算所有镜面反射三角形面片顶点位置处的反射光线,再根据这些反射光线确定3D虚拟场景中的所有焦散照明体;在绘制3D虚拟场景时,如果待绘制场景点处于某个焦散照明体之中,则在该场景点的光照值中加入此焦散照明体的贡献,从而实现对面焦散效果的绘制。本发明方法可以很容易地集成到光线跟踪算法框架之中,能显著地提高3D虚拟场景绘制的真实感。
Description
技术领域
本发明属于真实感3D虚拟场景绘制技术领域,涉及一种绘制由镜面反射产生的3D虚拟场景的面焦散效果的方法。
背景技术
真实感3D虚拟场景绘制技术在数字娱乐、影视特效、建筑CAD、广告动画等领域受到人们的广泛关注。目前3D虚拟场景绘制技术虽然已经得到深入的研究,但是如何快速绘制具有高度真实感的3D虚拟场景画面仍然是一个有待进一步解决的难题。当光源发出的光线入射到光滑表面上时,光滑表面的镜面反射过程可能对反射光线产生聚焦或者离焦作用,从而导致反射光线形成复杂的空间分布。当这些空间分布复杂的反射光线再次入射到不透明的反射表面上时,就会在反射表面上产生形状复杂的亮斑,这就是由镜面反射产生的面焦散。
光子映射是一种绘制面焦散效果的经典方法。标准的光子映射算法首先对大量的从光源发射的光子进行跟踪,将这些光子与场景表面的碰撞位置及其相关数据记录在光子缓存中;然后根据光子缓存中的数据计算场景的焦散图;最后利用类似阴影映射的方法把焦散图投影到场景表面上,从而绘制出面焦散效果。由于大量的光子跟踪计算存在较大的系统执行时间和存储空间开销,因此利用光子映射算法绘制面焦散效果的效率通常不高。
随着3D虚拟场景绘制技术的不断发展,影视特效、游戏、视景仿真等3D应用对绘制画面的真实感要求变得越来越高。在这些3D应用中加入由镜面反射产生的3D虚拟场景的面焦散效果可显著增强绘制画面的真实感。目前人们迫切需要在不明显降低绘制效率的条件下,将面焦散效果加入到3D虚拟场景的绘制之中。因此设计快速绘制由镜面反射产生的3D虚拟场景的面焦散效果的方法具有重要的意义。值得注意的是,在大多数3D虚拟场景中,仅绘制由一次镜面反射(即对光源直接光照的镜面反射)产生的面焦散效果就可以获得很好的真实感。充分利用这一特点,可以设计出不需光子跟踪的算法来绘制由镜面反射产生的面焦散效果。
发明内容
本发明的目的在于提供一种快速绘制由镜面反射产生的3D虚拟场景的面焦散效果的方法。本方法首先计算所有镜面反射三角形面片顶点位置处的反射光线,根据这些反射光线确定3D虚拟场景中的所有焦散照明体;在绘制3D虚拟场景时,如果待绘制场景点处于某个焦散照明体之中,则在该场景点的光照值中加入此焦散照明体的贡献,从而实现对面焦散效果的绘制。
本发明首先提供一种存储3D虚拟场景(A001)中的镜面反射三角形面片的顶点位置(A002)、顶点法向量(A003)以及顶点位置处的反射光线方向向量(A004)的数据结构(A005),在本发明中称数据结构(A005)为镜面反射顶点数据结构(A006);如图1所示,镜面反射顶点数据结构(A006)包括顶点位置的x坐标Px(101)、顶点位置的y坐标Py(102)、顶点位置的z坐标Pz(103)、顶点法向量的x分量nx(104)、顶点法向量的y分量ny(105)、顶点法向量的z分量nz(106)、顶点位置处的反射光线方向向量的x分量Rx(107)、顶点位置处的反射光线方向向量的y分量Ry(108)、顶点位置处的反射光线方向向量的z分量Rz(109)等9个成员变量。
本发明的方法(010)部分创建3D虚拟场景(A001)中的镜面反射顶点列表(B001),并计算各镜面反射顶点位置处的反射光线方向向量,具体步骤如下:
步骤(S011):将3D虚拟场景(A001)中的所有镜面反射三角形面片的顶点位置(B002)及其法向量(B003)存入镜面反射顶点列表(B001)中,其中镜面反射顶点列表(B001)的每个元素(B004)都是一个镜面反射顶点数据结构(A006)类型的变量;
步骤(S012):对镜面反射顶点列表(B001)中的每个元素(B004),做如下计算:
①计算从元素(B004)包含的顶点位置指向点光源(207)位置的向量(B005);
②对向量(B005)进行归一化运算;
③将元素(B004)包含的顶点法向量(B003)与向量(B005)进行点乘运算,如果点乘运算的结果小于或等于0,则将元素(B004)从镜面反射顶点列表(B001)中删除,否则以向量(B005)与元素(B004)包含的顶点法向量(B003)的夹角为入射角,根据镜面反射定律计算元素(B004)包含的顶点位置处的反射光线方向向量(B006),并将反射光线方向向量(B006)的x分量、y分量、z分量分别存储在元素(B004)的Rx(107)、Ry(108)、Rz(109)成员变量之中。
本发明的方法(020)部分创建产生焦散照明体的三角形列表(C001),具体步骤如下:
步骤(S021):将3D虚拟场景(A001)中的所有镜面反射三角形面片存入一个镜面反射三角形列表(C002)中;
步骤(S022):对于镜面反射三角形列表(C002)中的每个三角形面片(C003),如果在镜面反射顶点列表(B001)中不能一一找到与三角形面片(C003)的各个顶点位置对应的元素,则将三角形面片(C003)从镜面反射三角形列表(C002)中删除;
步骤(S023):将镜面反射三角形列表(C002)赋值给三角形列表(C001)。
本发明的方法(030)部分实现场景点(D001)的焦散光照值的计算,具体步骤如下:
步骤(S031):创建一个包含场景点(D001)的平面(D002),且平面(D002)的法向量平行于场景点(D001)的法向量;
步骤(S032):对于三角形列表(C001)中的每个三角形面片(D003),做如下计算:
①在镜面反射顶点列表(B001)中找出与三角形面片(D003)包含的三个顶点位置对应的元素的索引号,并分别赋值给索引变量id1、id2和id3;
②将索引变量id1对应的镜面反射顶点列表(B001)的元素赋值给变量V1,将索引变量id2对应的镜面反射顶点列表(B001)的元素赋值给变量V2,将索引变量id3对应的镜面反射顶点列表(B001)的元素赋值给变量V3;
③根据变量V1包含的顶点位置的x坐标Px(101)、顶点位置的y坐标Py(102)、顶点位置的z坐标Pz(103)、顶点位置处的反射光线方向向量的x分量Rx(107)、顶点位置处的反射光线方向向量的y分量Ry(108)、顶点位置处的反射光线方向向量的z分量Rz(109)等6个成员变量,创建一条起始于变量V1包含的顶点位置,方向平行于变量V1包含的顶点位置处的反射光线方向向量的射线(D004),并判断射线(D004)与平面(D002)是否相交,如果相交则计算出对应的交点(D005)并置Flag1=1,否则置Flag1=0;
④根据变量V2包含的顶点位置的x坐标Px(101)、顶点位置的y坐标Py(102)、顶点位置的z坐标Pz(103)、顶点位置处的反射光线方向向量的x分量Rx(107)、顶点位置处的反射光线方向向量的y分量Ry(108)、顶点位置处的反射光线方向向量的z分量Rz(109)等6个成员变量,创建一条起始于变量V2包含的顶点位置,方向平行于变量V2包含的顶点位置处的反射光线方向向量的射线(D006),并判断射线(D006)与平面(D002)是否相交,如果相交则计算出对应的交点(D007)并置Flag2=1,否则置Flag2=0;
⑤根据变量V3包含的顶点位置的x坐标Px(101)、顶点位置的y坐标Py(102)、顶点位置的z坐标Pz(103)、顶点位置处的反射光线方向向量的x分量Rx(107)、顶点位置处的反射光线方向向量的y分量Ry(108)、顶点位置处的反射光线方向向量的z分量Rz(109)等6个成员变量,创建一条起始于变量V3包含的顶点位置,方向平行于变量V3包含的顶点位置处的反射光线方向向量的射线(D008),并判断射线(D008)与平面(D002)是否相交,如果相交则计算出对应的交点(D009)并置Flag3=1,否则置Flag3=0;
⑥如果Flag1=1且Flag2=1且Flag3=1,则转⑦,否则三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献为0,结束三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献计算;
⑦如果场景点(D001)处于由交点(D005)、交点(D007)和交点(D009)确定的三角形之内(或者确定的直线段之上),则转⑧,否则三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献为0,结束三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献计算;
⑧首先创建一个包含场景点(D001)的平面(D010),且平面(D010)的法向量平行于三角形面片(D003)的法向量,然后计算射线(D004)与平面(D010)的交点(D011),计算射线(D006)与平面(D010)的交点(D012),计算射线(D008)与平面(D010)的交点(D013);根据变量V1、变量V2、变量V3包含的顶点位置处的反射光线方向向量,通过插值计算出,在由交点(D011)、交点(D012)和交点(D013)确定的三角形内(或者直线段上),场景点(D001)位置处的反射光线方向向量(D014);
⑨创建一条起始于场景点(D001)位置,方向平行于反射光线方向向量(D014)的反向向量的射线(D015);计算射线(D015)与三角形面片(D003)的交点(D016);创建一条起始于交点(D016),终止于点光源(207)位置的线段(D017);测试3D虚拟场景(A001)中是否有三角形面片(D018)与线段(D017)有交,如果无交则转⑩,否则三角形面片(D003)相对于点光源(207)被部分遮挡,其产生的焦散照明体对场景点(D001)的光照贡献为0,结束三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献计算;
⑩计算由交点(D011)、交点(D012)和交点(D013)确定的三角形的面积与三角形面片(D003)的面积之比α(D019);创建从交点(D016)指向点光源(207)位置的向量(D020);对向量(D020)进行归一化计算;根据三角形面片(D003)的三个顶点位置,计算三角形面片(D003)的表面法向量(D021);根据点光源(207)到交点(D016)的距离、向量(D020)与表面法向量(D021)的夹角以及点光源(207)的辐射亮度,计算三角形面片(D003)的照明度(D022),将照明度(D022)乘以面积之比α(D019)并赋值给变量I(D023);根据变量I(D023)的值、场景点(D001)的材质属性以及场景点(D001)的法向量与反射光线方向向量(D014)的反向向量的夹角,按照光照反射模型计算三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献值,并将其加到场景点(D001)的总光照值之中。
有益效果
本发明提供了一种由镜面反射产生的3D虚拟场景面焦散效果的绘制方法。本发明方法与光子映射方法相比,避免了对大量的从光源发射的光子的跟踪运算,提高了面焦散效果的绘制效率。另外,本发明方法能够很容易地集成到光线跟踪等全局光照绘制算法框架之中,可显著地提高3D虚拟场景画面绘制的真实感。
附图说明
图1是镜面反射顶点数据结构示意图。
具体实施方式
为了使本发明的特征和优点更加清楚明白,下面参照附图结合具体实施例对本发明作进一步的描述。
在本实施例中,使用光线跟踪算法绘制3D虚拟场景。由于光线跟踪算法只对镜面反射光线进行递归跟踪,因此无法绘制出漫反射表面上的面焦散效果。为此,需要在场景点的光照值计算中增加一个新过程,以便获得场景点的焦散光照值。计算出所有待绘制场景点的焦散光照值,就实现了对3D虚拟场景面焦散效果的绘制。将焦散光照值加到标准光线跟踪算法计算出的场景点光照值之中,可进一步地把面焦散效果合成到最终的3D虚拟场景绘制结果之中。下面将讲述这个新增加过程的具体实施方式。
本发明首先提供一种存储3D虚拟场景(A001)中的镜面反射三角形面片的顶点位置(A002)、顶点法向量(A003)以及顶点位置处的反射光线方向向量(A004)的数据结构(A005),在本发明中称数据结构(A005)为镜面反射顶点数据结构(A006);如图1所示,镜面反射顶点数据结构(A006)包括顶点位置的x坐标Px(101)、顶点位置的y坐标Py(102)、顶点位置的z坐标Pz(103)、顶点法向量的x分量nx(104)、顶点法向量的y分量ny(105)、顶点法向量的z分量nz(106)、顶点位置处的反射光线方向向量的x分量Rx(107)、顶点位置处的反射光线方向向量的y分量Ry(108)、顶点位置处的反射光线方向向量的z分量Rz(109)等9个成员变量。
本发明的方法(010)部分创建3D虚拟场景(A001)中的镜面反射顶点列表(B001),并计算各镜面反射顶点位置处的反射光线方向向量,具体步骤如下:
步骤(S011):将3D虚拟场景(A001)中的所有镜面反射三角形面片的顶点位置(B002)及其法向量(B003)存入镜面反射顶点列表(B001)中,其中镜面反射顶点列表(B001)的每个元索(B004)都是一个镜面反射顶点数据结构(A006)类型的变量;
步骤(S012):对镜面反射顶点列表(B001)中的每个元素(B004),做如下计算:
①计算从元素(B004)包含的顶点位置指向点光源(207)位置的向量(B005);
②对向量(B005)进行归一化运算;
③将元素(B004)包含的顶点法向量(B003)与向量(B005)进行点乘运算,如果点乘运算的结果小于或等于0,则将元素(B004)从镜面反射顶点列表(B001)中删除,否则以向量(B005)与元素(B004)包含的顶点法向量(B003)的夹角为入射角,根据镜面反射定律计算元素(B004)包含的顶点位置处的反射光线方向向量(B006),并将反射光线方向向量(B006)的x分量、y分量、z分量分别存储在元素(B004)的Rx(107)、Ry(108)、Rz(109)成员变量之中。
本发明的方法(020)部分创建产生焦散照明体的三角形列表(C001),具体步骤如下:
步骤(S021):将3D虚拟场景(A001)中的所有镜面反射三角形面片存入一个镜面反射三角形列表(C002)中;
步骤(S022):对于镜面反射三角形列表(C002)中的每个三角形面片(C003),如果在镜面反射顶点列表(B001)中不能一一找到与三角形面片(C003)的各个顶点位置对应的元素,则将三角形面片(C003)从镜面反射三角形列表(C002)中删除;
步骤(S023):将镜面反射三角形列表(C002)赋值给三角形列表(C001)。
本发明的方法(030)部分实现场景点(D001)的焦散光照值的计算,具体步骤如下:
步骤(S031):创建一个包含场景点(D001)的平面(D002),且平面(D002)的法向量平行于场景点(D001)的法向量;
步骤(S032):对于三角形列表(C001)中的每个三角形面片(D003),做如下计算:
①在镜面反射顶点列表(B001)中找出与三角形面片(D003)包含的三个顶点位置对应的元素的索引号,并分别赋值给索引变量id1、id2和id3;
②将索引变量id1对应的镜面反射顶点列表(B001)的元素赋值给变量V1,将索引变量id2对应的镜面反射顶点列表(B001)的元素赋值给变量V2,将索引变量id3对应的镜面反射顶点列表(B001)的元素赋值给变量V3;
③根据变量V1包含的顶点位置的x坐标Px(101)、顶点位置的y坐标Py(102)、顶点位置的z坐标Pz(103)、顶点位置处的反射光线方向向量的x分量Rx(107)、顶点位置处的反射光线方向向量的y分量Ry(108)、顶点位置处的反射光线方向向量的z分量Rz(109)等6个成员变量,创建一条起始于变量V1包含的顶点位置,方向平行于变量V1包含的顶点位置处的反射光线方向向量的射线(D004),并判断射线(D004)与平面(D002)是否相交,如果相交则计算出对应的交点(D005)并置Flag1=1,否则置Flag1=0;
④根据变量V2包含的顶点位置的x坐标Px(101)、顶点位置的y坐标Py(102)、顶点位置的z坐标Pz(103)、顶点位置处的反射光线方向向量的x分量Rx(107)、顶点位置处的反射光线方向向量的y分量Ry(108)、顶点位置处的反射光线方向向量的z分量Rz(109)等6个成员变量,创建一条起始于变量V2包含的顶点位置,方向平行于变量V2包含的顶点位置处的反射光线方向向量的射线(D006),并判断射线(D006)与平面(D002)是否相交,如果相交则计算出对应的交点(D007)并置Flag2=1,否则置Flag2=0;
⑤根据变量V3包含的顶点位置的x坐标Px(101)、顶点位置的y坐标Py(102)、顶点位置的z坐标Pz(103)、顶点位置处的反射光线方向向量的x分量Rx(107)、顶点位置处的反射光线方向向量的y分量Ry(108)、顶点位置处的反射光线方向向量的z分量Rz(109)等6个成员变量,创建一条起始于变量V3包含的顶点位置,方向平行于变量V3包含的顶点位置处的反射光线方向向量的射线(D008),并判断射线(D008)与平面(D002)是否相交,如果相交则计算出对应的交点(D009)并置Flag3=1,否则置Flag3=0;
⑥如果Flag1=1且Flag2=1且Flag3=1,则转⑦,否则三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献为0,结束三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献计算;
⑦如果场景点(D001)处于由交点(D005)、交点(D007)和交点(D009)确定的三角形之内(或者确定的直线段之上),则转⑧,否则三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献为0,结束三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献计算;
⑧首先创建一个包含场景点(D001)的平面(D010),且平面(D010)的法向量平行于三角形面片(D003)的法向量,然后计算射线(D004)与平面(D010)的交点(D011),计算射线(D006)与平面(D010)的交点(D012),计算射线(D008)与平面(D010)的交点(D013);根据变量V1、变量V2、变量V3包含的顶点位置处的反射光线方向向量,通过插值计算出,在由交点(D011)、交点(D012)和交点(D013)确定的三角形内(或者直线段上),场景点(D001)位置处的反射光线方向向量(D014);
⑨创建一条起始于场景点(D001)位置,方向平行于反射光线方向向量(D014)的反向向量的射线(D015);计算射线(D015)与三角形面片(D003)的交点(D016);创建一条起始于交点(D016),终止于点光源(207)位置的线段(D017);测试3D虚拟场景(A001)中是否有三角形面片(D018)与线段(D017)有交,如果无交则转⑩,否则三角形面片(D003)相对于点光源(207)被部分遮挡,其产生的焦散照明体对场景点(D001)的光照贡献为0,结束三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献计算;
⑩计算由交点(D011)、交点(D012)和交点(D013)确定的三角形的面积与三角形面片(D003)的面积之比α(D019);创建从交点(D016)指向点光源(207)位置的向量(D020);对向量(D020)进行归一化计算;根据三角形面片(D003)的三个顶点位置,计算三角形面片(D003)的表面法向量(D021);根据点光源(207)到交点(D016)的距离、向量(D020)与表面法向量(D021)的夹角以及点光源(207)的辐射亮度,计算三角形面片(D003)的照明度(D022),将照明度(D022)乘以面积之比α(D019)并赋值给变量I(D023);根据变量I(D023)的值、场景点(D001)的材质属性以及场景点(D001)的法向量与反射光线方向向量(D014)的反向向量的夹角,按照光照反射模型计算三角形面片(D003)产生的焦散照明体对场景点(D001)的光照贡献值,并将其加到场景点(D001)的总光照值之中。
Claims (1)
1.一种由镜面反射产生的3D虚拟场景面焦散效果的绘制方法,其特征在于,所需的数据结构及实现步骤如下:
所需的数据结构:提供一种存储3D虚拟场景A001中的镜面反射三角形面片的顶点位置A002、顶点法向量A003以及顶点位置处的反射光线方向向量A004的数据结构A005,称数据结构A005为镜面反射顶点数据结构A006;镜面反射顶点数据结构A006包括顶点位置的x坐标Px101、顶点位置的y坐标Py102、顶点位置的z坐标Pz103、顶点法向量的x分量nx104、顶点法向量的y分量ny105、顶点法向量的z分量nz106、顶点位置处的反射光线方向向量的x分量Rx107、顶点位置处的反射光线方向向量的y分量Ry108、顶点位置处的反射光线方向向量的z分量Rz109共9个成员变量;
实现步骤:
方法010部分创建3D虚拟场景A001中的镜面反射顶点列表B001,并计算各镜面反射顶点位置处的反射光线方向向量,具体步骤如下:
步骤S011:将3D虚拟场景A001中的所有镜面反射三角形面片的顶点位置B002及其法向量B003存入镜面反射顶点列表B001中,其中镜面反射顶点列表B001的每个元素B004都是一个镜面反射顶点数据结构A006类型的变量;
步骤S012:对镜面反射顶点列表B001中的每个元素B004,做如下计算:
①计算从元素B004包含的顶点位置指向点光源207位置的向量B005;
②对向量B005进行归一化运算;
③将元素B004包含的顶点法向量B003与向量B005进行点乘运算,如果点乘运算的结果小于或等于0,则将元素B004从镜面反射顶点列表B001中删除,否则以向量B005与元素B004包含的顶点法向量B003的夹角为入射角,根据镜面反射定律计算元素B004包含的顶点位置处的反射光线方向向量B006,并将反射光线方向向量B006的x分量、y分量、z分量分别存储在元素B004的Rx107、Ry108、Rz109成员变量之中;
方法020部分创建产生焦散照明体的三角形列表C001,具体步骤如下:
步骤S021:将3D虚拟场景A001中的所有镜面反射三角形面片存入一个镜面反射三角形列表C002中;
步骤S022:对于镜面反射三角形列表C002中的每个三角形面片C003,如果在镜面反射顶点列表B001中不能一一找到与三角形面片C003的各个顶点位置对应的元素,则将三角形面片C003从镜面反射三角形列表C002中删除;
步骤S023:将镜面反射三角形列表C002赋值给三角形列表C001;
方法030部分实现场景点D001的焦散光照值的计算,具体步骤如下:
步骤S031:创建一个包含场景点D001的平面D002,且平面D002的法向量平行于场景点D001的法向量;
步骤S032:对于三角形列表C001中的每个三角形面片D003,做如下计算:
①在镜面反射顶点列表B001中找出与三角形面片D003包含的三个顶点位置对应的元素的索引号,并分别赋值给索引变量id1、id2和id3;
②将索引变量id1对应的镜面反射顶点列表B001的元素赋值给变量V1,将索引变量id2对应的镜面反射顶点列表B001的元素赋值给变量V2,将索引变量id3对应的镜面反射顶点列表B001的元素赋值给变量V3;
③根据变量V1包含的顶点位置的x坐标Px101、顶点位置的y坐标Py102、顶点位置的z坐标Pz103、顶点位置处的反射光线方向向量的x分量Rx107、顶点位置处的反射光线方向向量的y分量Ry108、顶点位置处的反射光线方向向量的z分量Rz109共6个成员变量,创建一条起始于变量V1包含的顶点位置,方向平行于变量V1包含的顶点位置处的反射光线方向向量的射线D004,并判断射线D004与平面D002是否相交,如果相交则计算出对应的交点D005并置Flag1=1,否则置Flag1=0;
④根据变量V2包含的顶点位置的x坐标Px101、顶点位置的y坐标Py102、顶点位置的z坐标Pz103、顶点位置处的反射光线方向向量的x分量Rx107、顶点位置处的反射光线方向向量的y分量Ry108、顶点位置处的反射光线方向向量的z分量Rz109共6个成员变量,创建一条起始于变量V2包含的顶点位置,方向平行于变量V2包含的顶点位置处的反射光线方向向量的射线D006,并判断射线D006与平面D002是否相交,如果相交则计算出对应的交点D007并置Flag2=1,否则置Flag2=0;
⑤根据变量V3包含的顶点位置的x坐标Px101、顶点位置的y坐标Py102、顶点位置的z坐标Pz103、顶点位置处的反射光线方向向量的x分量Rx107、顶点位置处的反射光线方向向量的y分量Ry108、顶点位置处的反射光线方向向量的z分量Rz109共6个成员变量,创建一条起始于变量V3包含的顶点位置,方向平行于变量V3包含的顶点位置处的反射光线方向向量的射线D008,并判断射线D008与平面D002是否相交,如果相交则计算出对应的交点D009并置Flag3=1,否则置Flag3=0;
⑥如果Flag1=1且Flag2=1且Flag3=1,则转⑦,否则三角形面片D003产生的焦散照明体对场景点D001的光照贡献为0,结束三角形面片D003产生的焦散照明体对场景点D001的光照贡献计算;
⑦如果场景点D001处于由交点D005、交点D007和交点D009确定的三角形之内或者确定的直线段之上,则转⑧,否则三角形面片D003产生的焦散照明体对场景点D001的光照贡献为0,结束三角形面片D003产生的焦散照明体对场景点D001的光照贡献计算;
⑧首先创建一个包含场景点D001的平面D010,且平面D010的法向量平行于三角形面片D003的法向量,然后计算射线D004与平面D010的交点D011,计算射线D006与平面D010的交点D012,计算射线D008与平面D010的交点D013;根据变量V1、变量V2、变量V3包含的顶点位置处的反射光线方向向量,通过插值计算出,在由交点D011、交点D012和交点D013确定的三角形内或者直线段上,场景点D001位置处的反射光线方向向量D014;
⑨创建一条起始于场景点D001位置,方向平行于反射光线方向向量D014的反向向量的射线D015;计算射线D015与三角形面片D003的交点D016;创建一条起始于交点D016,终止于点光源207位置的线段D017;测试3D虚拟场景A001中是否有三角形面片D018与线段D017有交,如果无交则转⑩,否则三角形面片D003相对于点光源207被部分遮挡,其产生的焦散照明体对场景点D001的光照贡献为0,结束三角形面片D003产生的焦散照明体对场景点D001的光照贡献计算;
⑩计算由交点D011、交点D012和交点D013确定的三角形的面积与三角形面片D003的面积之比αD019;创建从交点D016指向点光源207位置的向量D020;对向量D020进行归一化计算;根据三角形面片D003的三个顶点位置,计算三角形面片D003的表面法向量D021;根据点光源207到交点D016的距离、向量D020与表面法向量D021的夹角以及点光源207的辐射亮度,计算三角形面片D003的照明度D022,将照明度D022乘以面积之比αD019并赋值给变量ID023;根据变量ID023的值、场景点D001的材质属性以及场景点D001的法向量与反射光线方向向量D014的反向向量的夹角,按照光照反射模型计算三角形面片D003产生的焦散照明体对场景点D001的光照贡献值,并将其加到场景点D001的总光照值之中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010597769A CN102074041B (zh) | 2010-12-21 | 2010-12-21 | 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010597769A CN102074041B (zh) | 2010-12-21 | 2010-12-21 | 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102074041A CN102074041A (zh) | 2011-05-25 |
CN102074041B true CN102074041B (zh) | 2012-10-10 |
Family
ID=44032569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010597769A Expired - Fee Related CN102074041B (zh) | 2010-12-21 | 2010-12-21 | 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102074041B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298792B (zh) * | 2011-08-08 | 2013-03-06 | 长春理工大学 | 包含由镜面反射产生的面焦散效果的3d虚拟场景的近似绘制方法 |
CN102981840A (zh) * | 2012-11-08 | 2013-03-20 | 苏州两江科技有限公司 | 基于光子映射图的整体光照计算机模拟处理方法 |
CN103400412A (zh) * | 2013-07-17 | 2013-11-20 | 天脉聚源(北京)传媒科技有限公司 | 一种资源展示方法、装置和终端 |
CN105335996B (zh) * | 2014-06-30 | 2018-05-01 | 北京畅游天下网络技术有限公司 | 一种光线照射效果的计算方法和装置 |
CN105096371B (zh) * | 2015-07-14 | 2017-08-22 | 长春理工大学 | 三维场景中由透明几何对象产生的面焦散效果的近似绘制方法 |
GB2599184B (en) | 2021-03-23 | 2022-11-23 | Imagination Tech Ltd | Intersection testing in a ray tracing system |
GB2599186B (en) * | 2021-03-23 | 2022-10-12 | Imagination Tech Ltd | Intersection testing in a ray tracing system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1410948A (zh) * | 2002-09-23 | 2003-04-16 | 清华大学 | 平面和球面非线性折射和反射的实时光线跟踪方法 |
US6556200B1 (en) * | 1999-09-01 | 2003-04-29 | Mitsubishi Electric Research Laboratories, Inc. | Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data |
CN101192309A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 进行光线跟踪的方法和系统 |
CN101458823A (zh) * | 2008-12-19 | 2009-06-17 | 北京航空航天大学 | 一种虚拟舞台环境下实时光照绘制的方法 |
CN101527052A (zh) * | 2008-03-03 | 2009-09-09 | 英特尔公司 | 用于提高光线跟踪性能的技术 |
-
2010
- 2010-12-21 CN CN201010597769A patent/CN102074041B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6556200B1 (en) * | 1999-09-01 | 2003-04-29 | Mitsubishi Electric Research Laboratories, Inc. | Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data |
CN1410948A (zh) * | 2002-09-23 | 2003-04-16 | 清华大学 | 平面和球面非线性折射和反射的实时光线跟踪方法 |
CN101192309A (zh) * | 2006-11-28 | 2008-06-04 | 国际商业机器公司 | 进行光线跟踪的方法和系统 |
CN101527052A (zh) * | 2008-03-03 | 2009-09-09 | 英特尔公司 | 用于提高光线跟踪性能的技术 |
CN101458823A (zh) * | 2008-12-19 | 2009-06-17 | 北京航空航天大学 | 一种虚拟舞台环境下实时光照绘制的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102074041A (zh) | 2011-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102074041B (zh) | 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 | |
CN102903146B (zh) | 用于场景绘制的图形处理方法 | |
CN106570929B (zh) | 一种动态体积云的构建与绘制方法 | |
CN104008563B (zh) | 利用虚拟点光源实现动画三维场景的全局光照绘制的方法 | |
CN109364481B (zh) | 游戏内的实时全局光照方法、装置、介质及电子设备 | |
CN103337093B (zh) | 一种基于Unity3D着色器实现三维机房实时温场效果的方法 | |
CN104392479A (zh) | 一种利用灯光索引号对像素进行光照着色的方法 | |
CN102855655A (zh) | Gpu并行光线追踪渲染方法 | |
CN103679802A (zh) | 基于屏幕空间的sph流体表面实时绘制方法 | |
CN110543013B (zh) | 一种调控光分布自由曲面光学系统的简化构建方法 | |
Lu et al. | Design and implementation of virtual interactive scene based on unity 3D | |
CN102346918A (zh) | 一种只包含物体变化的三维动画场景的绘制方法 | |
CN103645463B (zh) | 合成孔径雷达成像数据三维显示的方法 | |
CN102243769A (zh) | 3d体积光动态实现方法及装置 | |
CN111104702A (zh) | 一种基于ue4的堤防工程可视化仿真的实现方法 | |
CN109448084A (zh) | 一种基于体素化全局光照算法进行光贴图烘培的算法 | |
Song et al. | Virtual Reality (VR) technology and landscape architecture | |
CN101615300A (zh) | 一种屏幕空间微结构表面对象环境光遮挡方法 | |
CN105447905B (zh) | 基于可见性平滑滤波的三维场景近似柔和阴影绘制方法 | |
CN105096370B (zh) | 光线追踪的等价划分反锯齿方法 | |
CN113987659A (zh) | 一种基于bim技术的建筑设计方法 | |
CN112419511A (zh) | 三维模型文件处理方法、装置、存储介质及服务器 | |
CN102346919B (zh) | 在3d动画绘制中利用帧间时间相关的方法 | |
CN105117533B (zh) | 家装设计软件中光线跟踪算法的加速方法 | |
CN102298792B (zh) | 包含由镜面反射产生的面焦散效果的3d虚拟场景的近似绘制方法 |
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: 20121010 Termination date: 20141221 |
|
EXPY | Termination of patent right or utility model |