论文部分内容阅读
柔软织物与我们的生活息息相关,因此它成为了虚拟现实技术中一类重要的仿真对象。早在19世纪80年代,研究人员便开始关注基于物理的柔软织物的仿真研究。经过30多年的发展,广泛应用于游戏娱乐、影视动画、服装设计等多个领域。尽管柔软织物仿真的相关技术已经非常丰富,在某些方面,依旧面临巨大挑战,比如如何提升模拟织物的褶皱细节时的时间性能。而为了在不损失真实度的条件下显著提高仿真的时间性能,人们开始越来越多地关注基于GPUs对布料仿真进行并行化仿真的研究。本文便旨在基于CUDA架构对柔软织物仿真的相关算法进行并行化,优化仿真系统的时间性能。论文从以下几个方面进行展开:首先,介绍了柔软织物仿真相关的软件和硬件技术以及并行化编程的基础,例如GPU并行编程的硬件架构及并行编程思想等。为后面对数值解算及碰撞检测算法的并行化提供了理论依据。然后分为几个部分介绍仿真系统的主要构成部分及其算法研究。第一步为对柔软织物物理建模。并通过对比分析目前主流的三种柔软织物建模方法,选择了物理建模技术作为本文的重点研究方法。接下来详细描述物理建模方法中的质点-弹簧系统理论,从模型的构建、系统的受力分析两个方面阐述质点-弹簧系统,并分析解决质点-弹簧系统的“超弹性”问题。然后,对比质点弹簧模型的几种动力学积分解算方法,选择了易于进行并行化设计且相对较为稳定、高效的Verlet积分法。最后对Verlet积分法的并行化做了研究,提出共享内存与线程的动态映射方法以保证了并行化计算时的负载均衡。接下来是柔软织物仿真系统中的碰撞检测部分进行并行化。首先介绍并对比几种常用的碰撞检测方法,结合柔软织物易形变的特性,最终选择了 AABB层次包围盒方法。然后针对AABB层次树,提出了一种改进的二叉基数布局方法,以便能够用完全并行的方法创建AABB包围盒的层次结构,以及AABB包围盒的计算。另外,通过改进遍历树的并行递归算法,实现了并行迭代遍历算法,极大提升了该部分的时间性能。最后,给出基于CUDA柔软织物仿真系统的实现结果。为了便于分析论文中提出的数值解算及碰撞检测算法各自对系统性能的影响,通过设计合适的仿真场景,分别针对这两个算法进行了实验,并给出了用于对比的串行实现结果。最后是整个系统的仿真实现结果。