本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
摘 要: 体绘制过程中等距离采样在显示效果不理想的情况下,每减少一个采样步长会增加大量采样点,大大增加了体绘制过程中的计算负担。针对这个问题,提出了一种基于Monte-Carlo积分方法的光线投射实现的实时体绘制算法,采用Monte-Carlo积分方法解决了光照明方程中的积分问题。实验结果表明,在显示效果几乎一样的前提下,采用本文的方法绘制效率提高了十多帧。
关键词: 体绘制; 光线投射; 蒙特卡洛
自20世纪80年代科学计算可视化(Visualization in Scientific Computing)的概念被提出后,三维体数据的可视化技术便开始成为一个独立的研究领域,并最终形成了体绘制技术体系[1]。科学计算可视化的基本含义是运用计算机图形学的原理和方法,将科学与工程计算产生的大规模数据转换为图形、图像,以直观的形式表现其物理属性或统计属性。直接体绘制技术是科学可视化的重要研究内容,目前在许多领域得到了广泛应用。传统的直接体绘制有着绘制速度慢、交互性差等缺点。
体绘制技术是依据三维数据,将所有的体细节同时展现在二维图像的技术,利用体绘制技术,可以在一幅图像中显示更多物质的综合分布情况,并且可以通过不透明度的控制,反映等值面的情况[2]。由于体数据通常具有信息量大、绘制复杂度高的特点,很难满足人们实时显示跟交互的需求,因此,体绘制必须与相应的加速技术和策略相结合。现有的体绘制加速技术主要分为空体素剔除、提前不透明度截止、硬件加速三类,其中前两类属于软件加速,利用对体数据的处理、体数据的渲染流程进行优化等方法来达到加速的目的,但是这种加速方法加速有限,很难达到实时交互。第三类硬件加速又可分为专用图形硬件加速与通用图形处理器加速,但是专用图形硬件成本高,而通用图形处理器比较普及,尤其是可编程GPU(Graphics Processing Uint)的出现,为实现实时体绘制技术提供了强大硬件支持。
基于GPU的加速技术首先由Cullip和Neumann[3]提出,Cabral等人对这项技术作了改进并验证了体绘制通过硬件加速的可行性[4], KRUGER J等人将提前不透明度截止、空体素剔除技术等应用到基于GPU的体绘制中,进一步提高了体绘制的速度。
本文采用了Monte-Carlo方法计算光照方程。本文描述了基于GPU的光线投射算法的总体流程,详细描述了如何将Monte-Carlo积分法运用于全局光照模型中, 实验表明,采用随机采样的Monte-Carlo方法比等步长采样的黎曼方法具有更好的可交互性。
1 光线投射算法
1.1光线投射算法
光线投射算法是一种基于图像序列的直接体绘制算法。其原理是从图像的每一个像素沿固定方向发射一条射线,沿着该射线对离散数据进行等距离采样。通常使用三线性插值作为重建滤波器。简言之,每个重采样点的值通过一个映射表产生一个RGBA四元组,该四元组封装了该点的发射与吸收参数等光学属性[5]。然后体渲染积分器会通过从前向后或者从后向前的方式将颜色与透明度混合来计算该点的像素颜色值,通常的方式是从前向后混合,原理图如图1所示。
早期的光线投射算法完全基于软件实现,绘制效率受到较大的限制。随着可编程图形硬件的发展,越来越多的光线投射算法开始基于硬件实现, 达到了比纯软件算法高出一个数量级的计算效率。
1.2 基于GPU的光线投射算法
基于GPU的光线投射技术是将整个渲染体(volume)存储在一个简单的3D纹理中,然后调用片段程序向渲染体中投射光线。在渲染体中的每一个像素/片段都对应了一条射线,这条射线的参数方程可用式(1)表示:
图2说明了通过光栅化对光线投射的入射点、射出点、方向进行初始化。从图3可知,光线的起点是由体包围盒的前表面决定,终点是由体包围盒的后表面决定的。光线在这个空间里进行采样,通常以一个恒定的采样速率进行。现在的GPU,一个简单的渲染通路和光线投射的片段着色程序,通过由前向后的顺序渲染渲染体,就可以生成深度图片(如图1所示)。基于GPU的光线投射算法是在此基础上应用了空体素剔除与提前不透明度等加速算法,其算法流程如图4所示。
|