在3d动画绘制中利用帧间时间相关的方法

文档序号:6438817阅读:167来源:国知局
专利名称:在3d动画绘制中利用帧间时间相关的方法
技术领域
本发明属于计算机三维动画技术领域,涉及一种在3D动画绘制中利用帧间时间相关的方法。
背景技术
当前,3D动画在实际中的应用越来越广泛,然而高质量3D动画的绘制时间却依然非常长,这影响了 3D动画产业的快速发展。连续的3D动画帧之间存在较强的相关性,即时间相关;利用帧间时间相关可以明显地加快3D动画的绘制速度。为了生成真实感强的3D动画,必须在动画绘制中实现全局光照。对大多数3D场景而言,往往仅实现一次反射间接光照就可以得到真实感较强的绘制结果。从光源出发,发射一系列光线,在其与3D场景相交的地方生成一系列虚拟点光源;再利用这些虚拟点光源照射3D场景,即可模拟一次反射间接光照。3D动画的各帧对应的3D场景会发生变化,这些变化可能包括光源位置变化、几何面片变化、视点变化等。如果利用虚拟点光源来模拟间接光照,视点变化对虚拟点光源的位置、照射方向等属性没有影响。然而,光源位置变化和几何面片变化对虚拟点光源的位置、照射方向等属性会产生明显的影响。由于连续的3D动画帧之间存在明显的时间相关,因此在连续的两帧之间,会有很多虚拟点光源几乎不发生变化。如果在连续的两帧之间能够重用这些未发生变化的虚拟点光源,则可以显著提高3D动画的绘制速度。

发明内容
本发明方法的目的在于提供一种在3D动画绘制中利用帧间时间相关的方法。本发明方法的技术解决方案首先从光源向3D场景随机发射一系列光线,并计算其与3D场景的交点;在这些交点位置处创建虚拟点光源来照射3D场景,以模拟间接光照;为各虚拟点光源创建阴影图来实现间接光照的可见性计算;当绘制连续的动画帧时,在当前帧中重用前一帧中的一部分虚拟点光源及其阴影图,即利用帧间虚拟点光源的时间相关来提高绘制 3D动画的速度和质量。另外,在当前帧中还需要更新一部分已失效的虚拟点光源,以反映场景的变化;如图1所示,第i帧对应的3D场景中有虚拟点光源A(IOl)、虚拟点光源B (102)、 面片C(103)、面片D(IOO);在第i+Ι帧中,面片C(103)移动到了一个新位置,此时第i帧中的虚拟点光源A (101)仍然有效,在第i+Ι帧中可以被重用,但是第i帧中的虚拟点光源 B (102)在第i+Ι帧中因被遮挡而失效,因此需要重新生成一个虚拟点光源D (104)。本发明方法首先提供一种数据结构DS,用于存储虚拟点光源的相关数据;数据结构DS包括虚拟点光源的光照入射方向、虚拟点光源所在面片的双向反射分布函数BRDF、虚拟点光源所在面片的面片号、虚拟点光源的阴影图、帧间虚拟点光源阴影图变化累计量、虚拟点光源的位置、虚拟点光源所在位置的法线方向等成员变量。本发明方法的第一部分计算3D动画的第一帧对应的3D场景的所有虚拟点光源及其相关数据,并绘制第一帧画面,具体步骤如下
SteplOl 对光源的光线发射方向进行蒙特卡洛采样,生成一系列光源光线A001, 计算每条光源光线AOOl与3D场景的交点A002,在各交点A002位置处生成虚拟点光源 A003,将所有虚拟点光源A003存放在一个列表A004中;St印102 对列表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相关联;St印103 用光线投射算法计算第一帧动画对应的3D场景的直接光照结果,并将其保存在变量V2中;St印104 对列表A004中的每个虚拟点光源A009,做如下计算用虚拟点光源A009照射第一帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V2中;乂印105:将变量V2中的光照数据转换为第一帧的帧画面图像数据输出到文件中。本发明方法的第二部分逐帧绘制3D动画,具体步骤如下St印201 将帧编号变量ID赋值为2 ;St印202 计算出在第ID帧和第ID-I帧之间发生变化的所有几何面片,并存放到一个列表BOOl中;Step203 对列表A004中的每个虚拟点光源B002,做如下计算连接虚拟点光源B002和第ID帧对应的光源的位置,生成一条线段B003,测试线段 B003与第ID帧对应的3D场景是否相交,如果相交,则进一步判断与线段B003相交的面片的面片号是否等于与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源所在面片的面片号成员变量的值,如果不相等,则标记虚拟点光源B002为失效;Step204 对列表A004中的每个虚拟点光源B002,做如下计算如果虚拟点光源B002没有失效,则以虚拟点光源B002所在位置为视点,对列表 BOOl中的位于虚拟点光源B002所在位置的正法线方向半空间中的所有几何面片按抛物投影方式进行投影,计算各投影的几何面片在虚拟点光源B002的阴影图上覆盖的各像素 B003的位置;根据各像素B003的位置,计算与各像素B003相对应的列表BOOl中的几何面片上的点的位置B004 ;连接光源B002所在位置与位置B004,得到一个方向向量B005 ;将方向向量B005和与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源的光照入射方向成员变量代入与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源所在面片的双向反射分布函数BRDF成员变量表示的双向反射分布函数BRDF中,计算出 BRDF值B006,将计算出的所有BRDF值B006进行累加,并赋给变量V3 ;将变量V3和与虚拟点光源B002相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值相加,将相加之和再赋值给与虚拟点光源B002相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量;如果与虚拟点光源B002相关联的数据结构 DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值大于阈值C,则标记虚拟点光源B002失效;St印205 统计列表A004中的失效虚拟点光源的个数,将统计结果赋值给变量N ; 对光源的光线发射方向进行蒙特卡洛采样,生成N条光源光线B007,计算每条光源光线 B007与3D场景的交点B008,在各交点B008位置处生成虚拟点光源B009,将所有虚拟点光源B009存放在一个列表BOlO中;Step206 对列表BOlO中的每个虚拟点光源BOl 1,做如下计算根据第ID帧对应的光源的位置和虚拟点光源BOll的位置,计算虚拟点光源BOll 的光照入射方向B012 ;计算虚拟点光源BOll所在位置的法线方向B013 ;创建一个数据结构DS类型的变量V4,将光照入射方向B012赋值给变量V4的虚拟点光源的光照入射方向成员变量,将法线方向B013赋值给变量V4的虚拟点光源所在位置的法线方向成员变量,将虚拟点光源BOll所在面片的双向反射分布函数BRDF赋值给变量V4的虚拟点光源所在面片的双向反射分布函数BRDF成员变量,将虚拟点光源BOll所在面片的面片号赋值给变量V4 的虚拟点光源所在面片的面片号成员变量,将虚拟点光源BOll的位置赋值给变量V4的虚拟点光源的位置成员变量,将变量V4的帧间虚拟点光源阴影图变化累计量成员变量赋值为 0 ;以虚拟点光源BOll所在位置为视点,对虚拟点光源BOll所在位置的正法线方向半空间中的几何面片按抛物投影方式进行投影,计算虚拟点光源BOll的抛物投影阴影图B014 ;将抛物投影阴影图B014赋值给变量V4的虚拟点光源的阴影图成员变量;将变量V4和虚拟点光源BOll相关联;St印207 删掉列表A004中的所有失效的虚拟点光源;将列表BOlO中的所有虚拟点光源添加到列表A004中;St印208 用光线投射算法计算第ID帧对应的3D场景的直接光照结果,并保存在
变量V5中;Step209 对列表A004中的每个虚拟点光源B015,做如下计算用虚拟点光源B015照射第ID帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V5中;St印210 将变量V5中的光照数据转换为第ID帧的帧画面图像数据输出到文件中;St印211 将变量ID的值加1。有益效果本发明提供了一种在3D动画绘制中利用帧间时间相关的方法。本发明方法可以支持3D动画帧间的光源位置、几何面片、视点等变化。通过在连续的帧间重用虚拟点光源, 本发明方法大大地提高了间接光照的计算速度。通过删除失效的虚拟点光源,并在每帧中生成一小部分新的虚拟点光源,实现了虚拟点光源的更新。此外,由于在连续的帧间重用了大量虚拟点光源,因此解决了随机生成虚拟点光源造成的画面光照不稳定问题。在3D动画绘制中使用本发明方法,可以大大缩短3D动画的整体制片时间。


图1为相邻帧间对应的3D场景的虚拟点光源更新示意图。
具体实施例方式为了使本发明的特征和优点更加清楚明白,下面结合具体实施例对本发明作进一步的描述。在本实施例中,利用GLSL来实现虚拟点光源照射3D场景时的着色器,利用 NVIDIACUDA来编写运行在GPU上的光线投射程序,使用Metropolis随机采样算法来实现蒙特卡洛随机采样。本发明方法的目的在于提供一种在3D动画绘制中利用帧间时间相关的方法。本发明方法的技术解决方案首先从光源向3D场景随机发射一系列光线,并计算其与3D场景的交点;在这些交点位置处创建虚拟点光源来照射3D场景,以模拟间接光照; 为各虚拟点光源创建阴影图来实现间接光照的可见性计算;当绘制连续的动画帧时,在当前帧中重用前一帧中的一部分虚拟点光源及其阴影图,即利用帧间虚拟点光源的时间相关来提高绘制3D动画的速度和质量。另外,在当前帧中还需要更新一部分已失效的虚拟点光源,以反映场景的变化。本发明方法首先提供一种数据结构DS,用于存储虚拟点光源的相关数据;数据结构DS包括虚拟点光源的光照入射方向、虚拟点光源所在面片的双向反射分布函数BRDF、虚拟点光源所在面片的面片号、虚拟点光源的阴影图、帧间虚拟点光源阴影图变化累计量、虚拟点光源的位置、虚拟点光源所在位置的法线方向等成员变量。本发明方法的第一部分计算3D动画的第一帧对应的3D场景的所有虚拟点光源及其相关数据,并绘制第一帧画面,具体步骤如下SteplOl 对光源的光线发射方向进行蒙特卡洛采样,生成一系列光源光线A001, 计算每条光源光线AOOl与3D场景的交点A002,在各交点A002位置处生成虚拟点光源 A003,将所有虚拟点光源A003存放在一个列表A004中;St印102 对列表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相关联;St印103 用光线投射算法计算第一帧动画对应的3D场景的直接光照结果,并将其保存在变量V2中;St印104 对列表A004中的每个虚拟点光源A009,做如下计算用虚拟点光源A009照射第一帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V2中;St印105 将变量V2中的光照数据转换为第一帧的帧画面图像数据输出到文件中。本发明方法的第二部分逐帧绘制3D动画,具体步骤如下St印201 将帧编号变量ID赋值为2 ;St印202 计算出在第ID帧和第ID-1帧之间发生变化的所有几何面片,并存放到一个列表BOOl中;Step203 对列表A004中的每个虚拟点光源B002,做如下计算连接虚拟点光源B002和第ID帧对应的光源的位置,生成一条线段B003,测试线段 B003与第ID帧对应的3D场景是否相交,如果相交,则进一步判断与线段B003相交的面片的面片号是否等于与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源所在面片的面片号成员变量的值,如果不相等,则标记虚拟点光源B002为失效;Step204 对列表A004中的每个虚拟点光源B002,做如下计算如果虚拟点光源B002没有失效,则以虚拟点光源B002所在位置为视点,对列表 BOOl中的位于虚拟点光源B002所在位置的正法线方向半空间中的所有几何面片按抛物投影方式进行投影,计算各投影的几何面片在虚拟点光源B002的阴影图上覆盖的各像素 B003的位置;根据各像素B003的位置,计算与各像素B003相对应的列表BOOl中的几何面片上的点的位置B004 ;连接光源B002所在位置与位置B004,得到一个方向向量B005 ;将方向向量B005和与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源的光照入射方向成员变量代入与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源所在面片的双向反射分布函数BRDF成员变量表示的双向反射分布函数BRDF中,计算出 BRDF值B006,将计算出的所有BRDF值B006进行累加,并赋给变量V3 ;将变量V3和与虚拟点光源B002相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值相加,将相加之和再赋值给与虚拟点光源B002相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量;如果与虚拟点光源B002相关联的数据结构 DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值大于阈值C,则标记虚拟点光源B002失效;St印205 统计列表A004中的失效虚拟点光源的个数,将统计结果赋值给变量N ; 对光源的光线发射方向进行蒙特卡洛采样,生成N条光源光线B007,计算每条光源光线 B007与3D场景的交点B008,在各交点B008位置处生成虚拟点光源B009,将所有虚拟点光源B009存放在一个列表BOlO中;Step206 对列表BOlO中的每个虚拟点光源BOl 1,做如下计算根据第ID帧对应的光源的位置和虚拟点光源BOll的位置,计算虚拟点光源BOll 的光照入射方向B012 ;计算虚拟点光源BOll所在位置的法线方向B013 ;创建一个数据结构DS类型的变量V4,将光照入射方向B012赋值给变量V4的虚拟点光源的光照入射方向成员变量,将法线方向B013赋值给变量V4的虚拟点光源所在位置的法线方向成员变量,将虚拟点光源BOll所在面片的双向反射分布函数BRDF赋值给变量V4的虚拟点光源所在面片的双向反射分布函数BRDF成员变量,将虚拟点光源BOll所在面片的面片号赋值给变量V4 的虚拟点光源所在面片的面片号成员变量,将虚拟点光源BOll的位置赋值给变量V4的虚拟点光源的位置成员变量,将变量V4的帧间虚拟点光源阴影图变化累计量成员变量赋值为 0 ;以虚拟点光源BOll所在位置为视点,对虚拟点光源BOll所在位置的正法线方向半空间中的几何面片按抛物投影方式进行投影,计算虚拟点光源BOll的抛物投影阴影图B014 ;将抛物投影阴影图B014赋值给变量V4的虚拟点光源的阴影图成员变量;将变量V4和虚拟点光源BOll相关联;St印207 删掉列表A004中的所有失效的虚拟点光源;将列表BOlO中的所有虚拟点光源添加到列表A004中;St印208 用光线投射算法计算第ID帧对应的3D场景的直接光照结果,并保存在
变量V5中;Step209 对列表A004中的每个虚拟点光源B015,做如下计算用虚拟点光源B015照射第ID帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V5中;St印210 将变量V5中的光照数据转换为第ID帧的帧画面图像数据输出到文件中;St印211 将变量ID的值加1。
权利要求
1.在3D动画绘制中利用帧间时间相关的方法,其特征在于,所需的数据结构以及实现步骤如下本发明方法的目的在于提供一种在3D动画绘制中利用帧间时间相关的方法;本发明方法的技术解决方案首先从光源向3D场景随机发射一系列光线,并计算其与3D场景的交点;在这些交点位置处创建虚拟点光源来照射3D场景,以模拟间接光照;为各虚拟点光源创建阴影图来实现间接光照的可见性计算;当绘制连续的动画帧时,在当前帧中重用前一帧中的一部分虚拟点光源及其阴影图,即利用帧间虚拟点光源的时间相关来提高绘制3D 动画的速度和质量;另外,在当前帧中还需要更新一部分已失效的虚拟点光源,以反映场景的变化;本发明方法首先提供一种数据结构DS,用于存储虚拟点光源的相关数据;数据结构DS 包括虚拟点光源的光照入射方向、虚拟点光源所在面片的双向反射分布函数BRDF、虚拟点光源所在面片的面片号、虚拟点光源的阴影图、帧间虚拟点光源阴影图变化累计量、虚拟点光源的位置、虚拟点光源所在位置的法线方向等成员变量;本发明方法的第一部分计算3D动画的第一帧对应的3D场景的所有虚拟点光源及其相关数据,并绘制第一帧画面,具体步骤如下SteplOl 对光源的光线发射方向进行蒙特卡洛采样,生成一系列光源光线A001,计算每条光源光线AOOl与3D场景的交点A002,在各交点A002位置处生成虚拟点光源A003,将所有虚拟点光源A003存放在一个列表A004中;St印102 对列表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相关联;St印103 用光线投射算法计算第一帧动画对应的3D场景的直接光照结果,并将其保存在变量V2中;St印104 对列表A004中的每个虚拟点光源A009,做如下计算 用虚拟点光源A009照射第一帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V2中;St印105 将变量V2中的光照数据转换为第一帧的帧画面图像数据输出到文件中; 本发明方法的第二部分逐帧绘制3D动画,具体步骤如下 St印201 将帧编号变量ID赋值为2 ;St印202 计算出在第ID帧和第ID-I帧之间发生变化的所有几何面片,并存放到一个列表BOOl中;St印203 对列表A004中的每个虚拟点光源B002,做如下计算 连接虚拟点光源B002和第ID帧对应的光源的位置,生成一条线段B003,测试线段 B003与第ID帧对应的3D场景是否相交,如果相交,则进一步判断与线段B003相交的面片的面片号是否等于与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源所在面片的面片号成员变量的值,如果不相等,则标记虚拟点光源B002为失效; St印204 对列表A004中的每个虚拟点光源B002,做如下计算 如果虚拟点光源B002没有失效,则以虚拟点光源B002所在位置为视点,对列表BOOl 中的位于虚拟点光源B002所在位置的正法线方向半空间中的所有几何面片按抛物投影方式进行投影,计算各投影的几何面片在虚拟点光源B002的阴影图上覆盖的各像素B003的位置;根据各像素B003的位置,计算与各像素B003相对应的列表BOOl中的几何面片上的点的位置B004 ;连接光源B002所在位置与位置B004,得到一个方向向量B005 ;将方向向量B005和与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源的光照入射方向成员变量代入与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源所在面片的双向反射分布函数BRDF成员变量表示的双向反射分布函数BRDF中,计算出BRDF 值B006,将计算出的所有BRDF值B006进行累加,并赋给变量V3 ;将变量V3和与虚拟点光源 B002相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值相加,将相加之和再赋值给与虚拟点光源B002相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量;如果与虚拟点光源B002相关联的数据结构DS类型的变量的帧间虚拟点光源阴影图变化累计量成员变量的值大于阈值C,则标记虚拟点光源 B002失效;St印205 统计列表A004中的失效虚拟点光源的个数,将统计结果赋值给变量N;对光源的光线发射方向进行蒙特卡洛采样,生成N条光源光线B007,计算每条光源光线B007与 3D场景的交点B008,在各交点B008位置处生成虚拟点光源B009,将所有虚拟点光源B009 存放在一个列表BOlO中;Step206 对列表BOlO中的每个虚拟点光源B011,做如下计算 根据第ID帧对应的光源的位置和虚拟点光源BOll的位置,计算虚拟点光源BOll的光照入射方向B012 ;计算虚拟点光源BOll所在位置的法线方向B013 ;创建一个数据结构DS 类型的变量V4,将光照入射方向B012赋值给变量V4的虚拟点光源的光照入射方向成员变量,将法线方向B013赋值给变量V4的虚拟点光源所在位置的法线方向成员变量,将虚拟点光源BOll所在面片的双向反射分布函数BRDF赋值给变量V4的虚拟点光源所在面片的双向反射分布函数BRDF成员变量,将虚拟点光源BOll所在面片的面片号赋值给变量V4的虚拟点光源所在面片的面片号成员变量,将虚拟点光源BOll的位置赋值给变量V4的虚拟点光源的位置成员变量,将变量V4的帧间虚拟点光源阴影图变化累计量成员变量赋值为0 ;以虚拟点光源BOll所在位置为视点,对虚拟点光源BOll所在位置的正法线方向半空间中的几何面片按抛物投影方式进行投影,计算虚拟点光源BOll的抛物投影阴影图B014 ;将抛物投影阴影图B014赋值给变量V4的虚拟点光源的阴影图成员变量;将变量V4和虚拟点光源 BOll相关联;St印207 删掉列表A004中的所有失效的虚拟点光源;将列表BOlO中的所有虚拟点光源添加到列表A004中;St印208 用光线投射算法计算第ID帧对应的3D场景的直接光照结果,并保存在变量 V5中;St印209 对列表A004中的每个虚拟点光源B015,做如下计算 用虚拟点光源B015照射第ID帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V5中;Step210 将变量V5中的光照数据转换为第ID帧的帧画面图像数据输出到文件中; St印211 将变量ID的值加1。
全文摘要
本发明公开一种在3D动画绘制中利用帧间时间相关的方法,属于计算机三维动画技术领域。本发明方法在连续的动画帧间重用大部分虚拟点光源,同时更新一小部分失效的虚拟点光源,实现了利用虚拟点光源的帧间时间相关来加速3D动画的绘制。此外,由于在连续的帧间重用了大量虚拟点光源,因此解决了随机生成虚拟点光源造成的画面光照不稳定问题。在3D动画绘制中使用本发明方法,可以大大缩短3D动画的整体制片时间。
文档编号G06T15/50GK102346919SQ20111036938
公开日2012年2月8日 申请日期2011年11月21日 优先权日2011年11月21日
发明者冯欣, 底晓强, 李华, 李岩芳, 杨华民, 范静涛, 蒋振刚, 陈占芳, 陈纯毅 申请人:长春理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1