论文部分内容阅读
近年来,在计算动画、游戏以及虚拟试衣等商业应用中布料仿真系统越来越重要。由于布料为完全柔性的物体,在仿真过程中会发生折叠,自身纠缠等情况。因此仿真过程中的碰撞检测过程是仿真系统性能的主要瓶颈之一。本文针对该难题展开研究,设计并实现了一个基于GPU(Graphics Processing Unit)的碰撞检测算法。该算法通过在空间哈希碰撞检测中引入自碰撞剔除能力,解决了传统空间哈希的性能瓶颈。同时利用空间哈希算法的低内存消耗的特点解决了传统的基于碰撞检测前线的BVH(Bounding Volume Hierarchy)解决方案的内存瓶颈。本文主要的工作及创新点概括如下:1.在GPU端设计实现了一种新型的均匀网格碰撞检测算法。通过引入法向锥标记和定义新的空间哈希键,将法向椎碰撞剔除和均匀网格空间哈希碰撞检测算法进行融合。该算法减少了传统空间哈希算法的Broad Phase(宽检测阶段)和Narrow Phase(窄检测阶段)的计算量,提高了碰撞检测阶段的性能。2.在GPU端设计了一种高效的层次空间哈希检测算法。为了使碰撞算法能够自适应于不同的碰撞场景,本文将原来的均匀网格算法拓展至层次网格,从而增加了该算法的实用性。本文设计并实现了一种GPU线程平衡方法,解决了传统算法线程GPU占有率低的问题。3.优化了布料仿真中碰撞检测管线的流程。在迭代式的碰撞响应流程中,本文利用了布料顶点位置的空间连续性,大幅提高了迭代中碰撞检测的效率和性能稳定性。4.在Windows 10平台下,使用Viisual Studio 2013对本文的碰撞检测算法进行实现。该系统使用NVIDIA GTX 1080,对多个高分辨率的场景进行测试,获得了 CAMA[1]系统5-6倍的加速。