CN102346919B - 在3d动画绘制中利用帧间时间相关的方法 - Google Patents
在3d动画绘制中利用帧间时间相关的方法 Download PDFInfo
- Publication number
- CN102346919B CN102346919B CN 201110369382 CN201110369382A CN102346919B CN 102346919 B CN102346919 B CN 102346919B CN 201110369382 CN201110369382 CN 201110369382 CN 201110369382 A CN201110369382 A CN 201110369382A CN 102346919 B CN102346919 B CN 102346919B
- Authority
- CN
- China
- Prior art keywords
- light source
- point light
- virtual point
- variable
- frame
- 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
- Processing Or Creating Images (AREA)
Abstract
本发明公开一种在3D动画绘制中利用帧间时间相关的方法,属于计算机三维动画技术领域。本发明方法在连续的动画帧间重用大部分虚拟点光源,同时更新一小部分失效的虚拟点光源,实现了利用虚拟点光源的帧间时间相关来加速3D动画的绘制。此外,由于在连续的帧间重用了大量虚拟点光源,因此解决了随机生成虚拟点光源造成的画面光照不稳定问题。在3D动画绘制中使用本发明方法,可以大大缩短3D动画的整体制片时间。
Description
技术领域
本发明属于计算机三维动画技术领域,涉及一种在3D动画绘制中利用帧间时间相关的方法。
背景技术
当前,3D动画在实际中的应用越来越广泛,然而高质量3D动画的绘制时间却依然非常长,这影响了3D动画产业的快速发展。连续的3D动画帧之间存在较强的相关性,即时间相关;利用帧间时间相关可以明显地加快3D动画的绘制速度。
为了生成真实感强的3D动画,必须在动画绘制中实现全局光照。对大多数3D场景而言,往往仅实现一次反射间接光照就可以得到真实感较强的绘制结果。从光源出发,发射一系列光线,在其与3D场景相交的地方生成一系列虚拟点光源;再利用这些虚拟点光源照射3D场景,即可模拟一次反射间接光照。3D动画的各帧对应的3D场景会发生变化,这些变化可能包括光源位置变化、几何面片变化、视点变化等。如果利用虚拟点光源来模拟间接光照,视点变化对虚拟点光源的位置、照射方向等属性没有影响。然而,光源位置变化和几何面片变化对虚拟点光源的位置、照射方向等属性会产生明显的影响。由于连续的3D动画帧之间存在明显的时间相关,因此在连续的两帧之间,会有很多虚拟点光源几乎不发生变化。如果在连续的两帧之间能够重用这些未发生变化的虚拟点光源,则可以显著提高3D动画的绘制速度。
发明内容
目的在于提供一种在3D动画绘制中利用帧间时间相关的方法。方法的技术解决方案:首先从光源向3D场景随机发射一系列光线,并计算其与3D场景的交点;在这些交点位置处创建虚拟点光源来照射3D场景,以模拟间接光照;为各虚拟点光源创建阴影图来实现间接光照的可见性计算;当绘制连续的动画帧时,在当前帧中重用前一帧中的一部分虚拟点光源及其阴影图,即利用帧间虚拟点光源的时间相关来提高绘制3D动画的速度和质量。另外,在当前帧中还需要更新一部分已失效的虚拟点光源,以反映场景的变化;如图1所示,第i帧对应的3D场景中有虚拟点光源A(101)、虚拟点光源B(102)、面片C(103)、面片D(100);在第i+1帧中,面片C(103)移动到了一个新位置,此时第i帧中的虚拟点光源A(101)仍然有效,在第i+1帧中可以被重用,但是第i帧中的虚拟点光源B(102)在第i+1帧中因被遮挡而失效,因此需要重新生成一个虚拟点光源D(104)。
方法首先提供一种数据结构DS,用于存储虚拟点光源的相关数据;数据结构DS包括虚拟点光源的光照入射方向、虚拟点光源所在面片的双向反射分布函数BRDF、虚拟点光源所在面片的面片号、虚拟点光源的阴影图、帧间虚拟点光源阴影图变化累计量、虚拟点光源的位置、虚拟点光源所在位置的法线方向共七个成员变量。
方法的第一部分计算3D动画的第一帧对应的3D场景的所有虚拟点光源及其相关数据,并绘制第一帧画面,具体步骤如下:
Step101:对光源的光线发射方向进行蒙特卡洛采样,生成一系列光源光线A001,计算每条光源光线A001与第一帧对应的3D场景的交点A002,在各交点A002位置处生成虚拟点光源A003,将所有虚拟点光源A003存放在一个列表A004中;
Step102:对列表A004中的每个虚拟点光源A005,做如下计算:
根据第一帧对应的光源的位置和虚拟点光源A005的位置,计算虚拟点光源A005的光照入射方向A006;计算虚拟点光源A005所在位置的法线方向A007;创建一个数据结构DS类型的变量V1,将光照入射方向A006赋值给变量V1的虚拟点光源的光照入射方向成员变量,将法线方向A007赋值给变量V1的虚拟点光源所在位置的法线方向成员变量,将虚拟点光源A005所在面片的双向反射分布函数BRDF赋值给变量V1的虚拟点光源所在面片的双向反射分布函数BRDF成员变量,将虚拟点光源A005所在面片的面片号赋值给变量V1的虚拟点光源所在面片的面片号成员变量,将虚拟点光源A005的位置赋值给变量歼的虚拟点光源的位置成员变量,将变量V1的帧间虚拟点光源阴影图变化累计量成员变量赋值为0;以虚拟点光源A005所在位置为视点,对虚拟点光源A005所在位置的正法线方向半空间中的几何面片按抛物投影方式进行投影,计算虚拟点光源A005的抛物投影阴影图A008;将抛物投影阴影图A008赋值给变量V1的虚拟点光源的阴影图成员变量;将变量V1和虚拟点光源A005相关联;
Step103:用光线投射算法计算第一帧动画对应的3D场景的直接光照结果,并将其保存在变量V2中;
Step104:对列表A004中的每个虚拟点光源A005,做如下计算:
用虚拟点光源A005照射第一帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V2中;
Step105:将变量V2中的光照数据转换为第一帧的帧画面图像数据输出到文件中。
方法的第二部分逐帧绘制3D动画,具体步骤如下:
Step201:将帧编号变量ID赋值为2;
Step202:计算出在第ID帧和第ID-1帧之间发生变化的所有几何面片,并存放到一个列表B001中;
Step203:对列表A004中的每个虚拟点光源A005,做如下计算:
连接虚拟点光源A005和第ID帧对应的光源的位置,生成一条线段B003,测试线段B003与第ID帧对应的3D场景是否相交,如果相交,则进一步判断与线段B003相交的面片的面片号是否等于与虚拟点光源A005相关联的数据结构DS类型的变量的虚拟点光源所在面片的面片号成员变量的值,如果不相等,则标记虚拟点光源A005为失效;
Step204:对列表A004中的每个虚拟点光源A005,做如下计算:
如果虚拟点光源A005没有失效,则:以虚拟点光源A005所在位置为视点,对列表B001中的位于虚拟点光源A005所在位置的正法线方向半空间中的所有几何面片按抛物投影方式进行投影,计算各投影的几何面片在虚拟点光源A005的阴影图上覆盖的各像素B003的位置;根据各像素B003的位置,计算与各像素B003相对应的列表B001中的几何面片上的点的位置B004;连接虚拟点光源A005所在位置与位置B004,得到一个方向向量B005;将方向向量B005和与虚拟点光源A005相关联的数据结构DS类型的变量的虚拟点光源的光照入射方向成员变量代入与虚拟点光源A005相关联的数据结构DS类型的变量的虚拟点光源所在面片的双向反射分布函数BRDF成员变量表示的双向反射分布函数BRDF中,计算出BRDF值B006,将计算出的所有BRDF值B006进行累加,并赋给变量V3;将变量V3和与虚拟点光源A005相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值相加,将相加之和再赋值给与虚拟点光源A005相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量;如果与虚拟点光源A005相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值大于阈值C,则标记虚拟点光源A005失效;
Step205:统计列表A004中的失效虚拟点光源的个数,将统计结果赋值给变量N;对光源的光线发射方向进行蒙特卡洛采样,生成N条光源光线B007,计算每条光源光线B007与第ID帧对应的3D场景的交点B008,在各交点B008位置处生成虚拟点光源B009,将所有虚拟点光源B009存放在一个列表B010中;
Step206:对列表B010中的每个虚拟点光源B011,做如下计算:
根据第ID帧对应的光源的位置和虚拟点光源B011的位置,计算虚拟点光源B011的光照入射方向B012;计算虚拟点光源B011所在位置的法线方向B013;创建一个数据结构DS类型的变量V4,将光照入射方向B012赋值给变量V4的虚拟点光源的光照入射方向成员变量,将法线方向B013赋值给变量V4的虚拟点光源所在位置的法线方向成员变量,将虚拟点光源B011所在面片的双向反射分布函数BRDF赋值给变量V4的虚拟点光源所在面片的双向反射分布函数BRDF成员变量,将虚拟点光源B011所在面片的面片号赋值给变量V4的虚拟点光源所在面片的面片号成员变量,将虚拟点光源B011的位置赋值给变量V4的虚拟点光源的位置成员变量,将变量V4的帧间虚拟点光源阴影图变化累计量成员变量赋值为0;以虚拟点光源B011所在位置为视点,对虚拟点光源B011所在位置的正法线方向半空间中的几何面片按抛物投影方式进行投影,计算虚拟点光源B011的抛物投影阴影图B014;将抛物投影阴影图B014赋值给变量V4的虚拟点光源的阴影图成员变量;将变量V4和虚拟点光源B011相关联;
Step207:删掉列表A004中的所有失效的虚拟点光源;将列表B010中的所有虚拟点光源添加到列表A004中;
Step208:用光线投射算法计算第ID帧对应的3D场景的直接光照结果,并保存在变量V5中;
Step209:对列表A004中的每个虚拟点光源B015,做如下计算:
用虚拟点光源B015照射第ID帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V5中;
Step210:将变量V5中的光照数据转换为第ID帧的帧画面图像数据输出到文件中;
Step211:将变量ID的值加1。
有益效果
本发明提供了一种在3D动画绘制中利用帧间时间相关的方法。本发明方法可以支持3D动画帧间的光源位置、几何面片、视点等变化。通过在连续的帧间重用虚拟点光源,本发明方法大大地提高了间接光照的计算速度。通过删除失效的虚拟点光源,并在每帧中生成一小部分新的虚拟点光源,实现了虚拟点光源的更新。此外,由于在连续的帧间重用了大量虚拟点光源,因此解决了随机生成虚拟点光源造成的画面光照不稳定问题。在3D动画绘制中使用本发明方法,可以大大缩短3D动画的整体制片时间。
附图说明
图1为相邻帧间对应的3D场景的虚拟点光源更新示意图。
具体实施方式
为了使方法的特征和优点更加清楚明白,下面结合具体实施例对方法作进一步的描述。
在本实施例中,利用GLSL来实现虚拟点光源照射3D场景时的着色器,利用NVIDIACUDA来编写运行在GPU上的光线投射程序,使用Metropolis随机采样算法来实现蒙特卡洛随机采样。目的在于提供一种在3D动画绘制中利用帧间时间相关的方法。方法的技术解决方案:首先从光源向3D场景随机发射一系列光线,并计算其与3D场景的交点;在这些交点位置处创建虚拟点光源来照射3D场景,以模拟间接光照;为各虚拟点光源创建阴影图来实现间接光照的可见性计算;当绘制连续的动画帧时,在当前帧中重用前一帧中的一部分虚拟点光源及其阴影图,即利用帧间虚拟点光源的时间相关来提高绘制3D动画的速度和质量。另外,在当前帧中还需要更新一部分已失效的虚拟点光源,以反映场景的变化。
方法首先提供一种数据结构DS,用于存储虚拟点光源的相关数据;数据结构DS包括虚拟点光源的光照入射方向、虚拟点光源所在面片的双向反射分布函数BRDF、虚拟点光源所在面片的面片号、虚拟点光源的阴影图、帧间虚拟点光源阴影图变化累计量、虚拟点光源的位置、虚拟点光源所在位置的法线方向共七个成员变量。
方法的第一部分计算3D动画的第一帧对应的3D场景的所有虚拟点光源及其相关数据,并绘制第一帧画面,具体步骤如下:
Step101:对光源的光线发射方向进行蒙特卡洛采样,生成一系列光源光线A001,计算每条光源光线A001与第一帧对应的3D场景的交点A002,在各交点A002位置处生成虚拟点光源A003,将所有虚拟点光源A003存放在一个列表A004中;
Step102:对列表A004中的每个虚拟点光源A005,做如下计算:
根据第一帧对应的光源的位置和虚拟点光源A005的位置,计算虚拟点光源A005的光照入射方向A006;计算虚拟点光源A005所在位置的法线方向A007;创建一个数据结构DS类型的变量V1,将光照入射方向A006赋值给变量V1的虚拟点光源的光照入射方向成员变量,将法线方向A007赋值给变量V1的虚拟点光源所在位置的法线方向成员变量,将虚拟点光源A005所在面片的双向反射分布函数BRDF赋值给变量V1的虚拟点光源所在面片的双向反射分布函数BRDF成员变量,将虚拟点光源A005所在面片的面片号赋值给变量V1的虚拟点光源所在面片的面片号成员变量,将虚拟点光源A005的位置赋值给变量V1的虚拟点光源的位置成员变量,将变量V1的帧间虚拟点光源阴影图变化累计量成员变量赋值为0;以虚拟点光源A005所在位置为视点,对虚拟点光源A005所在位置的正法线方向半空间中的几何面片按抛物投影方式进行投影,计算虚拟点光源A005的抛物投影阴影图A008;将抛物投影阴影图A008赋值给变量V1的虚拟点光源的阴影图成员变量;将变量V1和虚拟点光源A005相关联;
Step103:用光线投射算法计算第一帧动画对应的3D场景的直接光照结果,并将其保存在变量V2中;
Step104:对列表A004中的每个虚拟点光源A005,做如下计算:
用虚拟点光源A005照射第一帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V2中;
Step105:将变量V2中的光照数据转换为第一帧的帧画面图像数据输出到文件中。
方法的第二部分逐帧绘制3D动画,具体步骤如下:
Step201:将帧编号变量ID赋值为2;
Step202:计算出在第ID帧和第ID-1帧之间发生变化的所有几何面片,并存放到一个列表B001中;
Step203:对列表A004中的每个虚拟点光源A005,做如下计算:
连接虚拟点光源A005和第ID帧对应的光源的位置,生成一条线段B003,测试线段B003与第ID帧对应的3D场景是否相交,如果相交,则进一步判断与线段B003相交的面片的面片号是否等于与虚拟点光源A005相关联的数据结构DS类型的变量的虚拟点光源所在面片的面片号成员变量的值,如果不相等,则标记虚拟点光源A005为失效;
Step204:对列表A004中的每个虚拟点光源A005,做如下计算:
如果虚拟点光源A005没有失效,则:以虚拟点光源A005所在位置为视点,对列表B001中的位于虚拟点光源A005所在位置的正法线方向半空间中的所有几何面片按抛物投影方式进行投影,计算各投影的几何面片在虚拟点光源A005的阴影图上覆盖的各像素B003的位置;根据各像素B003的位置,计算与各像素B003相对应的列表B001中的几何面片上的点的位置B004;连接虚拟点光源A005所在位置与位置B004,得到一个方向向量B005;将方向向量B005和与虚拟点光源A005相关联的数据结构DS类型的变量的虚拟点光源的光照入射方向成员变量代入与虚拟点光源A005相关联的数据结构DS类型的变量的虚拟点光源所在面片的双向反射分布函数BRDF成员变量表示的双向反射分布函数BRDF中,计算出BRDF值B006,将计算出的所有BRDF值B006进行累加,并赋给变量V3;将变量V3和与虚拟点光源A005相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值相加,将相加之和再赋值给与虚拟点光源A005相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量;如果与虚拟点光源A005相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值大于阈值C,则标记虚拟点光源A005失效;
Step205:统计列表A004中的失效虚拟点光源的个数,将统计结果赋值给变量N;对光源的光线发射方向进行蒙特卡洛采样,生成N条光源光线B007,计算每条光源光线B007与第ID帧对应的3D场景的交点B008,在各交点B008位置处生成虚拟点光源B009,将所有虚拟点光源B009存放在一个列表B010中;
Step206:对列表B010中的每个虚拟点光源B011,做如下计算:
根据第ID帧对应的光源的位置和虚拟点光源B011的位置,计算虚拟点光源B011的光照入射方向B012;计算虚拟点光源B011所在位置的法线方向B013;创建一个数据结构DS类型的变量V4,将光照入射方向B012赋值给变量V4的虚拟点光源的光照入射方向成员变量,将法线方向B013赋值给变量V4的虚拟点光源所在位置的法线方向成员变量,将虚拟点光源B011所在面片的双向反射分布函数BRDF赋值给变量V4的虚拟点光源所在面片的双向反射分布函数BRDF成员变量,将虚拟点光源B011所在面片的面片号赋值给变量V4的虚拟点光源所在面片的面片号成员变量,将虚拟点光源B011的位置赋值给变量V4的虚拟点光源的位置成员变量,将变量V4的帧间虚拟点光源阴影图变化累计量成员变量赋值为0;以虚拟点光源B011所在位置为视点,对虚拟点光源B011所在位置的正法线方向半空间中的几何面片按抛物投影方式进行投影,计算虚拟点光源B011的抛物投影阴影图B014;将抛物投影阴影图B014赋值给变量V4的虚拟点光源的阴影图成员变量;将变量V4和虚拟点光源B011相关联;
Step207:删掉列表A004中的所有失效的虚拟点光源;将列表B010中的所有虚拟点光源添加到列表A004中;
Step208:用光线投射算法计算第ID帧对应的3D场景的直接光照结果,并保存在变量V5中;
Step209:对列表A004中的每个虚拟点光源B015,做如下计算:
用虚拟点光源B015照射第ID帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V5中;
Step210:将变量V5中的光照数据转换为第ID帧的帧画面图像数据输出到文件中;
Step211:将变量ID的值加1。
Claims (1)
1.在3D动画绘制中利用帧间时间相关的方法,其特征在于,所需的数据结构以及实现步骤如下:
首先从光源向3D场景随机发射一系列光线,并计算其与3D场景的交点;在这些交点位置处创建虚拟点光源来照射3D场景,以模拟间接光照;为各虚拟点光源创建阴影图来实现间接光照的可见性计算;当绘制连续的动画帧时,在当前帧中重用前一帧中的一部分虚拟点光源及其阴影图,即利用帧间虚拟点光源的时间相关来提高绘制3D动画的速度和质量;另外,在当前帧中还需要更新一部分已失效的虚拟点光源,以反映场景的变化;
方法首先提供一种数据结构DS,用于存储虚拟点光源的相关数据;数据结构DS包括虚拟点光源的光照入射方向、虚拟点光源所在面片的双向反射分布函数BRDF、虚拟点光源所在面片的面片号、虚拟点光源的阴影图、帧间虚拟点光源阴影图变化累计量、虚拟点光源的位置、虚拟点光源所在位置的法线方向共七个成员变量;
方法的第一部分计算3D动画的第一帧对应的3D场景的所有虚拟点光源及其相关数据,并绘制第一帧画面,具体步骤如下:
Step101:对光源的光线发射方向进行蒙特卡洛采样,生成一系列光源光线A001,计算每条光源光线A001与第一帧对应的3D场景的交点A002,在各交点A002位置处生成虚拟点光源A003,将所有虚拟点光源A003存放在一个列表A004中;
Step102:对列表A004中的每个虚拟点光源A005,做如下计算:
根据第一帧对应的光源的位置和虚拟点光源A005的位置,计算虚拟点光源A005的光照入射方向A006;计算虚拟点光源A005所在位置的法线方向A007;创建一个数据结构DS类型的变量V1,将光照入射方向A006赋值给变量V1的虚拟点光源的光照入射方向成员变量,将法线方向A007赋值给变量V1的虚拟点光源所在位置的法线方向成员变量,将虚拟点光源A005所在面片的双向反射分布函数BRDF赋值给变量V1的虚拟点光源所在面片的双向反射分布函数BRDF成员变量,将虚拟点光源A005所在面片的面片号赋值给变量V1的虚拟点光源所在面片的面片号成员变量,将虚拟点光源A005的位置赋值给变量V1的虚拟点光源的位置成员变量,将变量V1的帧间虚拟点光源阴影图变化累计量成员变量赋值为0;以虚拟点光源A005所在位置为视点,对虚拟点光源A005所在位置的正法线方向半空间中的几何面片按抛物投影方式进行投影,计算虚拟点光源A005的抛物投影阴影图A008;将抛物投影阴影图A008赋值给变量V1的虚拟点光源的阴影图成员变量;将变量V1和虚拟点光源A005相关联;
Step103:用光线投射算法计算第一帧动画对应的3D场景的直接光照结果,并将其保存在变量V2中;
Step104:对列表A004中的每个虚拟点光源A005,做如下计算:
用虚拟点光源A005照射第一帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V2中;
Step105:将变量V2中的光照数据转换为第一帧的帧画面图像数据输出到文件中;
方法的第二部分逐帧绘制3D动画,具体步骤如下:
Step201:将帧编号变量ID赋值为2;
Step202:计算出在第ID帧和第ID-1帧之间发生变化的所有几何面片,并存放到一个列表B001中;
Step203:对列表A004中的每个虚拟点光源A005,做如下计算:
连接虚拟点光源A005和第ID帧对应的光源的位置,生成一条线段B003,测试线段B003与第ID帧对应的3D场景是否相交,如果相交,则进一步判断与线段B003相交的面片的面片号是否等于与虚拟点光源A005相关联的数据结构DS类型的变量的虚拟点光源所在面片的面片号成员变量的值,如果不相等,则标记虚拟点光源A005为失效;
Step204:对列表A004中的每个虚拟点光源A005,做如下计算:
如果虚拟点光源A005没有失效,则:以虚拟点光源A005所在位置为视点,对列表B001中的位于虚拟点光源A005所在位置的正法线方向半空间中的所有几何面片按抛物投影方式进行投影,计算各投影的几何面片在虚拟点光源A005的阴影图上覆盖的各像素B003的位置;根据各像素B003的位置,计算与各像素B003相对应的列表B001中的几何面片上的点的位置B004;连接虚拟点光源A005所在位置与位置B004,得到一个方向向量B005;将方向向量B005和与虚拟点光源A005相关联的数据结构DS类型的变量的虚拟点光源的光照入射方向成员变量代入与虚拟点光源A005相关联的数据结构DS类型的变量的虚拟点光源所在面片的双向反射分布函数BRDF成员变量表示的双向反射分布函数BRDF中,计算出BRDF值B006,将计算出的所有BRDF值B006进行累加,并赋给变量V3;将变量V3和与虚拟点光源A005相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值相加,将相加之和再赋值给与虚拟点光源A005相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量;如果与虚拟点光源A005相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值大于阈值C,则标记虚拟点光源A005失效;
Step205:统计列表A004中的失效虚拟点光源的个数,将统计结果赋值给变量N;对光源的光线发射方向进行蒙特卡洛采样,生成N条光源光线B007,计算每条光源光线B007与第ID帧对应的3D场景的交点B008,在各交点B008位置处生成虚拟点光源B009,将所有虚拟点光源B009存放在一个列表B010中;
Step206:对列表B010中的每个虚拟点光源B011,做如下计算:
根据第ID帧对应的光源的位置和虚拟点光源B011的位置,计算虚拟点光源B011的光照入射方向B012;计算虚拟点光源B011所在位置的法线方向B013;创建一个数据结构DS类型的变量V4,将光照入射方向B012赋值给变量V4的虚拟点光源的光照入射方向成员变量,将法线方向B013赋值给变量V4的虚拟点光源所在位置的法线方向成员变量,将虚拟点光源B011所在面片的双向反射分布函数BRDF赋值给变量V4的虚拟点光源所在面片的双向反射分布函数BRDF成员变量,将虚拟点光源B011所在面片的面片号赋值给变量V4的虚拟点光源所在面片的面片号成员变量,将虚拟点光源B011的位置赋值给变量V4的虚拟点光源的位置成员变量,将变量V4的帧间虚拟点光源阴影图变化累计量成员变量赋值为0;以虚拟点光源B011所在位置为视点,对虚拟点光源B011所在位置的正法线方向半空间中的几何面片按抛物投影方式进行投影,计算虚拟点光源B011的抛物投影阴影图B014;将抛物投影阴影图B014赋值给变量V4的虚拟点光源的阴影图成员变量;将变量V4和虚拟点光源B011相关联;
Step207:删掉列表A004中的所有失效的虚拟点光源;将列表B010中的所有虚拟点光源添加到列表A004中;
Step208:用光线投射算法计算第ID帧对应的3D场景的直接光照结果,并保存在变量V5中;
Step209:对列表A004中的每个虚拟点光源B015,做如下计算:
用虚拟点光源B015照射第ID帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V5中;
Step210:将变量V5中的光照数据转换为第ID帧的帧画面图像数据输出到文件中;
Step211:将变量ID的值加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110369382 CN102346919B (zh) | 2011-11-21 | 2011-11-21 | 在3d动画绘制中利用帧间时间相关的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110369382 CN102346919B (zh) | 2011-11-21 | 2011-11-21 | 在3d动画绘制中利用帧间时间相关的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102346919A CN102346919A (zh) | 2012-02-08 |
CN102346919B true CN102346919B (zh) | 2013-08-21 |
Family
ID=45545566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110369382 Expired - Fee Related CN102346919B (zh) | 2011-11-21 | 2011-11-21 | 在3d动画绘制中利用帧间时间相关的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102346919B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104008563B (zh) * | 2014-06-07 | 2017-02-22 | 长春理工大学 | 利用虚拟点光源实现动画三维场景的全局光照绘制的方法 |
CN104077799B (zh) * | 2014-06-29 | 2017-04-12 | 长春理工大学 | 通过重用动态三维场景帧间光照传输路径采样来减小画面闪烁的方法 |
CN105447905B (zh) * | 2015-11-17 | 2018-03-06 | 长春理工大学 | 基于可见性平滑滤波的三维场景近似柔和阴影绘制方法 |
US10740954B2 (en) | 2018-03-17 | 2020-08-11 | Nvidia Corporation | Shadow denoising in ray-tracing applications |
US10991079B2 (en) | 2018-08-14 | 2021-04-27 | Nvidia Corporation | Using previously rendered scene frames to reduce pixel noise |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101982838A (zh) * | 2010-11-02 | 2011-03-02 | 长春理工大学 | 一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 |
CN102243768A (zh) * | 2011-06-17 | 2011-11-16 | 长春理工大学 | 一种三维虚拟场景立体画面的绘制方法 |
-
2011
- 2011-11-21 CN CN 201110369382 patent/CN102346919B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101982838A (zh) * | 2010-11-02 | 2011-03-02 | 长春理工大学 | 一种加速被面光源照射的3d虚拟场景的光线跟踪的方法 |
CN102243768A (zh) * | 2011-06-17 | 2011-11-16 | 长春理工大学 | 一种三维虚拟场景立体画面的绘制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102346919A (zh) | 2012-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102346919B (zh) | 在3d动画绘制中利用帧间时间相关的方法 | |
EP3308359B1 (en) | Rendering using ray tracing to generate a visibility stream | |
US7773087B2 (en) | Dynamically configuring and selecting multiple ray tracing intersection methods | |
US8004518B2 (en) | Combined spatial index for static and dynamic objects within a three-dimensional scene | |
US8018453B2 (en) | Deferred acceleration data structure optimization for improved performance | |
CN102402791B (zh) | 一种基于gpu的三维流体模拟方法 | |
CN101819684B (zh) | 一种动画电影虚拟三维场景的空间加速结构及其创建与更新方法 | |
US20080074416A1 (en) | Multiple Spacial Indexes for Dynamic Scene Management in Graphics Rendering | |
CN109448137B (zh) | 交互方法、交互装置、电子设备及存储介质 | |
US9684997B2 (en) | Efficient rendering of volumetric elements | |
US8339398B2 (en) | Integrated acceleration data structure for physics and ray tracing workload | |
CN103337093B (zh) | 一种基于Unity3D着色器实现三维机房实时温场效果的方法 | |
CN102426691A (zh) | 一种基于gpu的实时火焰效果的模拟方法 | |
CN102074041A (zh) | 一种由镜面反射产生的3d虚拟场景面焦散效果的绘制方法 | |
CN103136399A (zh) | 面向室内场景的辐射度并行绘制系统和方法 | |
US20080192046A1 (en) | Box Casting Using an Integrated Acceleration Data Structure | |
CN104537706A (zh) | 一种基于代码移动的着色器简化方法、装置及图形渲染方法 | |
CN105447905A (zh) | 基于可见性平滑滤波的三维场景近似柔和阴影光线跟踪绘制方法 | |
CN105023289A (zh) | 图形图像三维处理平台 | |
CN102298792A (zh) | 包含由镜面反射产生的面焦散效果的3d虚拟场景的近似绘制方法 | |
CN112132962A (zh) | 基于虚拟现实的城轨车辆检修作业工艺研究方法 | |
CN102074038A (zh) | 一种由光滑表面折射产生的3d虚拟场景面焦散效果的绘制方法 | |
CN106228599B (zh) | 基于两级可见性平滑滤波的近似柔和阴影绘制方法 | |
JP5864474B2 (ja) | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 | |
CN102298796B (zh) | 大数据量cad模型实时绘制方法 |
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: 20130821 Termination date: 20141121 |
|
EXPY | Termination of patent right or utility model |