论文部分内容阅读
进入信息化时代以来,计算机动画技术已渗透到人们日常生活的点点滴滴中,逼真的3D电影效果、炫目的三维广告、栩栩如生的游戏人物,这些都是计算机动画发展的产物。布料仿真可以有效地增强计算机动画中穿着服饰的人物真实感,以及受外力、摩擦力等外力影响而发生动态形变的窗帘、桌布、旗帜等布料的真实动态仿真效果,使得计算机动画的模拟效果更加接近于现实世界。由于布料具有大位移、大转动和大应变的运动和变形特征,加之布料复杂多变的交互环境,如模拟过程中要受到摩擦力、阻力等的影响,这些因素都会影响布料仿真的效率以及表现性能,但是将这些因素都加入到布料实时动画模拟系统中非常困难,因此如何对布料进行真实、高效的模拟对研究者们来说仍然是一个挑战。基于以上背景,本文对布料实时动画中的关键技术进行了研究,通过对布料模型的构建方法、动力学微分方程的数值解算方法以及碰撞检测与响应方法进行比较分析,构造了基于质点—弹簧模型的布料网格,建立牛顿力学布料模拟方程,利用Verlet数值积分方法对其进行求解,最后利用区域预处理的AABB层次包围盒碰撞检测与响应方法对布料的运动形态进行模拟,并提出了基于拉伸张量的质点排序算法解决布料模拟过程中出现的“超弹性形变”现象。具体研究内容如下:1.研究基于拉伸张量的质点排序算法解决质点—弹簧模型“超弹性形变”现象。基于质点—弹簧模型的布料在受到大力作用时,会发生“超弹性形变”现象。本文分析了“超弹性形变”现象发生的原因,并介绍了传统的解决方法,在传统方法的基础上提出了基于拉伸张量的质点排序算法。2.研究对比动力学常微分方程数值解算方法的模拟真实感以及实时性等特征。基于质点—弹簧的布料模型利用牛顿第二定律计算质点的形变与运动轨迹。在每一个时间步长里,通过使用数值解算方法对表示布料运动状态的一阶常微分方程进行求解,确定质点新的位置。常见的数值解算方法很多,本文将重点对显式积分方法、隐式积分方法、半隐式积分方法以及Verlet数值积分方法进行研究,通过在计算效率、真实感两个方面进行折衷,选取Verlet数值积分方法作为本文的数值解算方法。3.研究在碰撞检测与响应算法中区域预处理的AABB层次包围盒方法。为了表现更加真实自然的布料模拟效果,比如布料的褶皱等内部细节,需要使用碰撞检测与响应算法,然而碰撞检测与响应算法需要大量的计算时间,是实现布料模拟实时性的瓶颈,其碰撞检测和处理时间大约占总模拟时间的一半左右,因此碰撞检测算法的优劣至关重要。本文对常见的层次包围体方法中的经典算法进行了比较研究,提出了区域预处理的AABB层次包围盒方法作为本文的碰撞检测与响应算法。本文的创新点主要有以下两个:1.提出基于拉伸张量的质点排序算法解决质点—弹簧模型“超弹性形变”现象。拉伸张量值可以表征质点的拉伸程度,因此我们首先对质点按照拉伸张量值进行降序排列,优先选取拉伸张量值较大的质点采用Provot方法进行质点的位置修正,有效避免了传统方法在修正过程中引起的布料震荡问题。2.采用区域预处理的AABB包围盒方法,减少了存储空间,提高了碰撞检测与处理的效率,增强了模拟的真实感。在碰撞检测之前进行预处理,对AABB树的结点进行存储优化,减少了约一半的内存,在自碰撞模拟过程中我们利用如果某个区域的弯曲率足够小则该区域不可能发生自碰撞的特点对其进行优化,通过排除不可能发生自碰撞检测的区域减少自碰撞检测的工作量,提高了模拟的真实感和实时性。总之,本文基于计算机图形学、牛顿力学定律以及柔性物体模拟的理论方法,提出了在保证布料实时性的同时提高布料模拟真实感的布料仿真技术,为解决基于质点—弹簧模型的布料模拟过程中出现的“超弹性形变”现象以及提高布料的碰撞检测效率提供了新的方法和技术。研究成果在3D服装虚拟试衣、成衣制作与展示软件、电影、游戏、动画等领域具有非常广阔的应用空间。