1.3 3D图形的常见用途
在现代计算机应用程序中,三维图形具有广泛的应用。实时3D图形的应用范围包括交互式游戏和模拟以及数据的可视化显示(供科学、医学或商业应用)。高端3D图形在电影以及技术和教育出版物中也具有广泛的应用。
1.3.1 实时3D
如前面所述,实时3D图形是指活动的并与用户进行交互的图形。实时3D图形最早的用途之一是军事飞行模拟器。即使到了今天,飞行模拟器仍然为许多业余爱好者所热衷。图1.10所示显示了一个流行的飞行模拟器的屏幕截图,它使用OpenGL进行3D渲染(www.x-plane.com)。
图1.10 一个基于OpenGL的飞行模拟器,由x-plane.com提供
在个人计算机领域,3D图形的应用几乎没有止境。目前最为常见的用途或许是计算机游戏。今天,几乎所有发行的游戏都要求PC装有3D图形卡才能够运行。虽然3D图形在科学视觉和工程应用中也非常流行,但价廉物美的3D硬件的大量涌现使得这些应用空前流行。商业应用程序也利用了3D硬件的新功能,引入了越来越复杂的商业图形和数据库挖掘可视化技术。即使现代的GUI也受到了它的影响,开始利用3D硬件的功能。例如,新的Macintosh OS X使用OpenGL对所有窗口和控件进行渲染,从而创建了功能强大、引人入胜的可视化界面。
图1.11至图1.15所示展示了现代个人计算机上无数3D应用中的一些例子。这些图像绝大多数都是用OpenGL实时渲染的。
图1.11 用于计算机辅助设计(CAD)的3D图形(图像由Software Bisque提供)
图1.12 用于建筑或民用计划(图像由Real 3D Inc.提供)的3D图形
图1.13 用于医学图像应用(Kitware提供的VolView)的3D图形
图1.14 用于科学视觉的3D图形(图像由Software Bisque提供)
图1.15 用于娱乐(取自Outrage Entertainment Inc. 的Descent 3)的3D图形
1.3.2 非实时3D
在实时3D应用中,我们常常需要做出一些妥协。只要有足够的处理时间,我们可以创建更高质量的3D图形。在一般情况下,我们设计模型和场景,并用一个光线追踪器或扫描线渲染器来处理这些定义,产生高质量的3D图像。典型的处理过程是这样的:一个建模应用程序使用实时3D图形与艺术家进行交互,创建具体的内容;然后,它所创建的帧被发送到另一个应用程序(光线追踪器离线渲染器)或子程序,由它们对图像进行渲染,渲染可能要耗费很长时间。例如,在一台非常快速的计算机上,为一部电影(例如toy Story或Shrek)渲染一个单独的帧可能需要耗费几个小时。渲染并保存成千上万个帧的过程生成了一个可以回放的动画序列。尽管这个动画序列在回放时看上去像是实时的,但它的内容却不是交互性的。因此,它并不是实时的,而是预渲染的。
1.3.3 着色器
在实时计算机图形中,最前沿的艺术是可编程着色器(Programmable Shading)。今天的图形卡不再是低能的渲染芯片了,而是功能强大的高度可编程的渲染计算机。类似CPU(中央处理单元)的术语GPU也应运而生,它代表图形处理单元,特指当今图形卡上的可编程芯片。它们是高度并行的,并且具有非常快的速度。同样重要的是,程序员可以进行重新配置图形卡的工作方式,几乎可以实现任何可以想像得到的特殊效果。
每年,基于着色器的图形硬件不断侵占传统上由高端光线追踪器和前面所提到的软件渲染工具所完成的任务。图1.16所示展示了Software Bisque的Seeker太阳系模拟器上的一幅地球图像。这个应用程序使用了一个自定义的OpenGL着色器,以每秒60幅的速率生成了一幅逼真的地球动态图像。它还包括了大气效果、太阳在水中的倒影,甚至背景中的星星。本书插页的彩图1显示了这张图的彩色版本。
图1.16 着色器可以实现前所未有的实时逼真性(图像由Software Bisque, Inc.提供)