三维影像渲染基本概要

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三维图像渲染基本概要

渲染(Render)是用软件从模型生成图像的过程。模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。图像是数字图像或者位图图像。渲染这个术语类似于“艺术家对于场景的渲染”。另外渲染也用于描述计算视频编辑文件中的效果以生成最终视频输出的过程。

渲染是三维计算机图形学中的最重要的研究课题之一,并且在实践领域它与其它技术密切相关。在图形流水线中渲染是最后一项重要步骤,通过它得到模型与动画最终显示效果。自从二十世纪七十年代以来随着计算机图形的不断复杂化,渲染也越来越成为一项重要的技术。

渲染的应用领域有:计算机与视频游戏、模拟、电影或者电视特效以及可视化设计,每一种应用都是特性与技术的综合考虑。作为产品来看,现在已经有各种不同的渲染工具产品,有些集成到更大的建模或者动画包中,有些是独立产品,有些是开放源代码的产品。从内部来看,渲染工具是都是根据各种学科理论经过仔细设计的程序,其中有:光学、视觉感知、数学以及软件开发。

三维计算机图形的预渲染或者实时渲染的速度都非常慢。预渲染的计算强度很大,通常是用于电影制作;实时渲染经常用于三维视频游戏,通常依靠带有三维硬件加速器的图形卡完成这个过程。

使用在图像初步建立(通常使用网格骨架构建)之后,就要进行

渲染了。渲染将会在上面添加位图纹理或者程序纹理、照明、凸凹纹理映射以及相对于其它物体的位置。得到的结果就是消费者或者观察者所能看到的完整图像。

对于电影动画来说,需要渲染几幅或几帧图像,并且将这些图像在动画制作程序中将它们连结在一起。大多数的三维图像编辑程序都能够完成这项工作。

特性

渲染的图像有许多显著的特性,渲染研究的领域也主要集中在寻找高效模拟这些特性的方法。有些特性只与特定的算法有关,有些却与多个算法相关。

●浓淡处理 — 表面颜色与亮度随光照的变化

●纹理映射 — 在表面生成细节的方法

●凸凹纹理映射 — 在表面模拟小凸凹的方法

●距离模糊 — 光照穿过不清澈的大气时的模糊

●阴影 — 阻挡光照的效果

●柔和阴影 — 非常微弱的光源生成的暗处

●反射 — 镜子或者非常光滑的反射

●透明 — 固体明显允许光线穿过

●半透明 — 光线通过固体高度散射

●折射 — 与透明相关的光线弯曲

●间接照明 — 表面由其它表面反射的光照亮,而非

光源直接照亮

●焦散(caustics)— 间接照明的一种形式,光滑物

体反射的光线或者通过透明物体生成的聚焦光线在其它

物体上形成照亮区域

●景深 — 当物体在焦距物体前后太远时出现模糊

●运动模糊 — 由于物体高速运动或者照相机运动而

导致的物体模糊

●真实感渲染 — 看起来较像现实世界的三维渲染

●非真实感渲染 — 用艺术风格渲染场景,使它看起

来象油画或者素描

技术

研究人员已经研究出了许多渲染算法,渲染软件可以使用多种不同的技术以生成最终图像。

对场景中的每束光线进行跟踪不太现实,并且需要耗费大得惊人的时间。如果没有采样进行很好的约束,即使是一部分光线的跟踪以生成图像也需要非常大量的时间。

所以,大致可以分为四类的更加高效的光线传输模型技术就应运而生。第一类是栅格化,包括扫描线渲染,这种方法考虑场景中的物体并将它们投影一幅图像,对于生成不同观察点的透视图没有任何帮

助;第二类是光线投射,将场景从不同视角观察,只根据几何与反射强度的基本光学原理计算观察到的图像,也可能使用蒙特・卡罗方法减少人为噪声;第三类是辐射着色,使用有限元分析方法模拟光线在表面的散射;第四类是光线跟踪,类似于光线投射,但是使用了更加先进的光学模拟方法,并且通常使用蒙特・卡罗方法以实现更加真实的结果,但是这样做的代价通常是速度的大幅度降低。

大多数高级软件使用多种技术的组合以在合理的开销范围内实现足够好的结果。

扫描线渲染与栅格化

图像的高层次表示有必要包含与像素不同的元素,这些元素称为基元。例如,在示意图中线段与曲线是基元;在图形用户界面中,窗口与按钮是基元;在三维渲染中,三角形与空间多边形是基元。

在像素到像素渲染速度很慢无法实现的任务中,基元到基元的实现方法可能就能排上用场。在这种方法中,循环遍历每个基元确定它将影响图像中的哪个像素,然后相应地修改那个像素。这种方法称为栅格化,这是当今所有图形卡都用的渲染方法。

栅格化经常要比像素到像素的渲染速度快。首先,图像中的大块区域可能根本没有基元,栅格化就可以忽略这些区域,而像素到像素的渲染方法却必须遍历这些区域;其次,栅格化可以提高缓存一致性并且可以利用图像中同一个基元占据的像素通常是连续的这样一个

事实从而减少冗余操作。正是由于这些原因,栅格化通常是需要交互式渲染的场合选择的一种方法,但是像素到像素的实现方法经常可以生成更高质量的图像,同时由于没有栅格化那么多的前提条件所以更加通用。

栅格化有两种主要的形式,不仅整个表面或者基元进行渲染,而且表面顶点全部进行渲染,以及用相邻顶点简单颜色混合来渲染位于顶点之间的表面上的像素,由于这种方法不使用复杂的纹理实现图像连续,所以这种方法已经取代了较旧的栅格化方法,并且由于简单的纹理可以节省内存空间,所以通过使用图形卡的已经繁重的浓淡效果处理功能仍然可以得到更好的性能。旧的方法如果不使用复杂的纹理就会在图像逐个表面覆盖纹理的时候形成块状效应,并且由于像素之间没有颜色渐变所以表面看起来也不光滑。有些情况下设计人员在某些表面上使用栅格化的方法,而根据其它表面相对于其它相交表面的角度使用其它的方法,这样一方面可以提高处理速度,另外也仍然可以保证整体效果。

光线投射

光线投射主要用于如三维电脑游戏以及动画等实时模拟场合,在这些场合下细节并不太重要或者是通过人为制造细节可以得到更好的计算效率。通常在需要多帧图像生成动画时就会出现这种情况。如果不使用其它的技巧,这种方法得到的物体表面通常看起来比较扁

相关文档
最新文档