[发明专利]在3D动画绘制中利用帧间时间相关的方法无效
申请号: | 201110369382.1 | 申请日: | 2011-11-21 |
公开(公告)号: | CN102346919A | 公开(公告)日: | 2012-02-08 |
发明(设计)人: | 陈纯毅;杨华民;蒋振刚;范静涛;冯欣;底晓强;李岩芳;李华;陈占芳 | 申请(专利权)人: | 长春理工大学 |
主分类号: | G06T13/20 | 分类号: | G06T13/20;G06T15/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 130022 *** | 国省代码: | 吉林;22 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种在3D动画绘制中利用帧间时间相关的方法,属于计算机三维动画技术领域。本发明方法在连续的动画帧间重用大部分虚拟点光源,同时更新一小部分失效的虚拟点光源,实现了利用虚拟点光源的帧间时间相关来加速3D动画的绘制。此外,由于在连续的帧间重用了大量虚拟点光源,因此解决了随机生成虚拟点光源造成的画面光照不稳定问题。在3D动画绘制中使用本发明方法,可以大大缩短3D动画的整体制片时间。 | ||
搜索关键词: | 动画 绘制 利用 时间 相关 方法 | ||
【主权项】:
在3D动画绘制中利用帧间时间相关的方法,其特征在于,所需的数据结构以及实现步骤如下:本发明方法的目的在于提供一种在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中的每个虚拟点光源A009,做如下计算:用虚拟点光源A009照射第一帧对应的3D场景,用阴影映射方法计算可见性,编写着色器计算3D场景的光照结果,并将其累加到变量V2中;Step105:将变量V2中的光照数据转换为第一帧的帧画面图像数据输出到文件中;本发明方法的第二部分逐帧绘制3D动画,具体步骤如下:Step201:将帧编号变量ID赋值为2;Step202:计算出在第ID帧和第ID‑1帧之间发生变化的所有几何面片,并存放到一个列表B001中;Step203:对列表A004中的每个虚拟点光源B002,做如下计算:连接虚拟点光源B002和第ID帧对应的光源的位置,生成一条线段B003,测试线段B003与第ID帧对应的3D场景是否相交,如果相交,则进一步判断与线段B003相交的面片的面片号是否等于与虚拟点光源B002相关联的数据结构DS类型的变量的虚拟点光源所在面片的面片号成员变量的值,如果不相等,则标记虚拟点光源B002为失效;Step204:对列表A004中的每个虚拟点光源B002,做如下计算:如果虚拟点光源B002没有失效,则:以虚拟点光源B002所在位置为视点,对列表B001中的位于虚拟点光源B002所在位置的正法线方向半空间中的所有几何面片按抛物投影方式进行投影,计算各投影的几何面片在虚拟点光源B002的阴影图上覆盖的各像素B003的位置;根据各像素B003的位置,计算与各像素B003相对应的列表B001中的几何面片上的点的位置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失效;Step205:统计列表A004中的失效虚拟点光源的个数,将统计结果赋值给变量N;对光源的光线发射方向进行蒙特卡洛采样,生成N条光源光线B007,计算每条光源光线B007与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。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于长春理工大学,未经长春理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201110369382.1/,转载请声明来源钻瓜专利网。