论文部分内容阅读
在各种真实场景和人物动画的虚拟现实应用中,织物模拟都是必不可少的关键环节之一,其模拟效率和模拟效果往往对场景整体的效率和真实感起决定性作用。大量实践表明,实现织物动态实时模拟的关键在于加速物理模拟计算过程和碰撞检测过程,然而,由于基于物理的织物模拟计算量很大,仅仅依赖CPU的计算能力很难使其达到实时。近年来,GPU卓越的并行计算能力以及自身的高速发展越来越受到研究者的关注,"CPU+GPU"的桌面超级计算模式已成为计算机体系结构的重要发展方向。因此,本文以复杂织物的实时模拟为目标,利用GPU的并行计算能力,研究并提出织物模拟及碰撞检测的并行算法,进而实现一个实时的织物模拟系统。文中采用了经典的弹簧.质点模型对织物建模,并通过显式欧拉迭代更新质点状态。在所提出的并行算法中,组成系统的质点与GPU线程一一对应,质点的速度和位置信息从而得以并行更新。算法通过运用线性存储器纹理解决了越界问题,并借助CUDA的共享内存以减少对全局内存的访问次数。为了使各线程负载均衡地填充共享内存,论文进一步提出了nPass方法。在碰撞检测阶段,论文采用了层次四叉树结构对潜在碰撞集合作快速剔除,将其并行化以满足GPU的并行计算模型。针对层次四叉树的更新问题,算法在预处理阶段对其进行重构,使四叉树的叶子节点与GPU的线程标号相对应;随后,论文分别给出了用数组/B+树表示的层次四叉树的并行更新算法,算法对层次四叉树进行自底向上的更新,在每一个层次上,所有节点的更新是并行发生的。在层次四叉树构造完毕之后,所有图元同时与其进行碰撞检测,该方法使得每个图元的碰撞检测算法复杂度最低。在所实现的织物模拟系统中,CPU完成初始化工作之后,整个模拟过程都在GPU上完成,避免了CPU与GPU之间数据传递的额外开销。实验结果表明,模拟阶段的GPU算法性能比CPU实现平均提高了30倍,包含GPU碰撞检测的整体模拟效率也平均提高了20倍。