论文部分内容阅读
基于物理的计算机动画起步于上世纪八十年代并迅速成为图形学领域的热点;从上世纪九十年代开始在电影工业中得到应用。基于物理的计算机动画改变了传统的动画制作方法。它一方面使动画师们从手工绘制各种运动动画中解脱出来;另一方面更重要的是,它使得计算机动画中物体的运动更加自然真实,表现出仅靠人的想象难以表现的运动细节。这一点,在近年来发展迅速的视频游戏中得到了很好的体现。与传统电影不同的是,游戏中的许多动画必须被实时的渲染,且能够实时的依据玩家千变万化的操作产生互动。因而,基于物理的动画便成为游戏制作者们解决问题的途径。然而,物理动画在游戏中的应用还比较初级,仍然面临着两大困难:一方面,对于该领域的研究还不尽成熟,一些模拟方法甚至本身的物理理论都还有待探索;另一方面,许多现有的物理理论比较复杂,无法满足游戏对实效性的要求,为应用带来了困难。本文基于游戏物理引擎的思想对游戏中物理动画的应用进行了研究。本文所设计的物理引擎包括对刚体、粒子、布料、关节动画、流体、水流的模拟以及GPU加速技术。设计中首先需要考虑两点:一是如何对各类模型进行表现跟计算,在满足时效性的前提下满足统一性;二是各类模型之间应如何组织并能够产生合理的碰撞交互。针对第一点,我们将刚体,粒子,布料与关节动画都看作是粒子与约束条件的组合并采用Verlet积分法与高斯-塞德尔迭代法加以计算;对于流体与水流动画,则统一为基于GPU加速的流体计算。对于第二点,考虑到固定时间步长与三维图形表现,我们将各类模型的碰撞检测统一为直线与三角形相交性检测,并采用空间划分树进行组织。其次,针对一些复杂现象,也提出了自己的模拟方案;对于人体服饰布料首先假设一个实验性结论:布料的褶皱是由于布料受挤压所致且外形成凹凸曲线型。通过这个结论采取生成高度场的方法模拟皱褶生成。对三维流体的模拟,则使用Volume Texture进行数据化与渲染。除此,还考虑了各类模型在游戏中的可视化问题。