论文部分内容阅读
大规模装配场景仿真是计算机图形学与虚拟现实技术中非常重要的研究课题。随着数字化设计、数字化工厂的广泛应用,三维模型的渲染作为它们的关键支撑技术,被赋予了更高的要求。此外,军事上的虚拟作战系统、工业界的虚拟制造系统和娱乐界的三维动漫游戏无不要有一个强大而快速的场景渲染引擎,但是与日俱增的场景数据给这项技术的进一步应用带来了障碍。为了解决大规模装配场景仿真中所出现的各种问题,本文主要从以下几个方面进行研究:针对大规模装配模型中几何数据信息过大的问题,提出了装配模型轻量化方法。首先对三维建模软件进行二次开发,遍历装配体的层次结构树,找出装配体中的所有零件模型,计算其位姿信息并将其导出为网格模型,实现了实体模型向网格模型的转换。然后从导出的网格模型中选择需要简化的子装配体,利用OpenGL函数库对其从多个视点进行无光照渲染,统计分析多次渲染结果,判断出子装配体中隐藏的零件和面片。对于隐藏的零件,直接从子装配体中剔除;对于隐藏的面片,则采用边折叠的方法进行简化。针对大规模装配场景仿真中碰撞检测计算量大的问题,设计了基于层次包围体(Hierarchical Bounding Volumes,BVH)的碰撞检测算法流程,并对运动物体的BVH构建算法进行了研究。BVH构建算法的难点在于节点分割面的选择,本文通过分析最优BVH的构建标准,提出了节点最优分割所在子区间的计算方法,减少了最优分割面的查找时间,从而提高BVH的构建效率;为消除因BVH重建时间过长而造成的仿真系统陷入临时性中断的问题,本文采用多线程的方法异步重建BVH,在两次BVH重建的时间段之内,本文设计了两种BVH调整操作,有效的提高了调整后的BVH碰撞检测效率。针对光线跟踪渲染计算量较大,很难满足实时交互式渲染需求的问题,设计了基于CUDA(Compute Unified Device Architecture)的光线跟踪渲染算法流程。当前的光线跟踪渲染算法中,95%的时间用于计算光线与面片的交点,而在GPU中实现基于BVH的光线与面片求交计算的主要问题是无堆栈遍历BVH结构。本文通过在BVH节点中添加指向父节点的指针和节点类型标记,实现了无堆栈遍历过程。另外,为减少GPU程序的数据读取时延,采用纹理存储器来保存几何数据及其BVH结构。从CPU内存向GPU内存拷贝数据时,本文提出用数组索引来代替指针,较好的解决了指针对象的拷贝问题。针对大规模装配场景渲染速度慢的问题,设计了基于延迟着色的并行渲染算法。现有的并行渲染架构在复杂光照计算条件下很难实现渲染节点之间的负载平衡,而且对大规模装配场景进行渲染的时候,每一帧都有大量的图元是不可见的。采用延迟着色的方法可以避免对不可见图元的着色工作,从而提高大规模装配场景的渲染效率。现阶段延迟着色主要通过两次渲染的方法来实现,这样就可以将渲染步骤中的几何处理与像素着色分隔开来,再把两阶段的任务均匀分配到集群系统的渲染节点,最终实现复杂光照计算条件下的渲染任务均匀分配。针对高功率激光驱动器装置数字化仿真项目需求,综合运用本文的研究成果,开发了大规模装配场景仿真原型系统,该原型系统对本文提出的针对大规模装配场景仿真中所出现问题的解决方案进行了验证。通过仿真,发现了多处辅助工装在工作过程中与设备的干涉问题;为零部件的供货顺序提出建议,避免设备的积压与短缺。