三维计算机图形(3D Computer Graphics)是
计算机和特殊三维
软件帮助下创造的作品。一般来讲,该术语可指代创造这些图形的过程,或者三维计算机图形技术的研究领域,及其相关技术。
简介
三维计算机图形和
二维计算机图形的不同之处在于计算机内存储了几何数据的三维表示,用于计算和绘制最终的二维图像。
一般来讲,为三维计算机图形准备几何数据的三维建模的艺术和雕塑及照相类似,而二维计算机图形的艺术和绘画相似。但是,三维计算机图形依赖于很多二维计算机图形的相同算法。
计算机图形软件中,该区别有时很模糊;有些二维应用程序使用三维技术来达到特定效果,譬如灯光,而有些主要用于三维的应用程序采用二维的视觉技术。二维图形可以看作三维图形的子集。
技术
OpenGL和Direct三维是两个用于产生实时图象的流行的
API。(实时表示图象的产生在‘真实的时间’中,或者说‘随时’)。很多现代
显卡提供了基于这些API的一定程度的
硬件加速,经常使得复杂的三维图象
实时产生。但是,真正产生三维景象并不一定要使用其中的任何一个。
创建
创建三维计算机图形的过程可以顺序分为三个基本阶段:
建模
场景布局
绘制
建模
建模阶段可以描述为“确定后面场景所要使用的对象的形状”的过程。有很多建模技术,他们包括(但不仅仅是):
隐函数曲面
建模过程可能也包括编辑物体表面或材料性质(例如,颜色,荧光度,漫射和镜面反射分量—经常被叫做粗糙度和光洁度,反射特性,透明度或不透明度,或者折射指数),增加纹理,凹凸映射和其它特征。
建模可能也包括各种和准备动画的三维模型相关的各种活动(虽然在复杂的任务建模中,这将自己成为一个阶段,称为索具(rigging))。对象可能用一个骨架撑起来,一个物体的中央框架,它可以影响一个对象的形状或运动。这个对动画构造过程很有帮助,骨架的运动自动决定模型相关部分。参看正运动动画和逆运动动画。在索具阶段,模型也可以给定特定的控制,使得运动的控制更为简便和直观,例如用于声音嘴唇同步的面部表情控制和嘴形(
音素)。
建模可以用以此为目的设计的程序(例如,
Lightwave建模软件,Rhinoceros 三维,
Moray),应用的模块(Shaper,三维 Studio Max的Lofter)或者某些场景描述语言(例如
POV-Ray)。在有些情况,这些阶段之间没有严格的区别;在这些情况下,建模只是场景创建过程的一部分(例如Caligari trueSpace就属于这种情况)。
加工
场景布局设置
场景设置涉及安排一个场景内的虚拟物体,灯光,摄像机和其他实体,它将被用于制作一幅静态画面或一段动画。如果用于
动画,该阶段通常采用叫做“
关键帧”(key frame)的技术,它使得场景内复杂的运动的创建变得简单。使用关键帧的帮助,而不是必须对于动画中的每一帧设定对象的位置,方向或比例,只需设立一些关键的帧,它们之间的状态可以用
插值得到。
照明是场景布置中一个重要的方面。就象在实际场景布置的时候一样,光照是最终作品的审美和视觉质量的关键因素之一。因而,它是一项很难掌握的艺术。光照因素可以对一个场景的氛围和情绪反映作出重大贡献,这是为摄影师和舞台照明师所熟悉的事实。
三角剖分和网格
把物体的表示(例如
球面的中点
坐标和它的
表面上的一个点所表示的球面),转换到一个(球面的)多边形表示的过程,称为剖分(tesselation)。该步骤用于基于多边形的绘制,其中对象从象球面,
圆锥面三角网格(而不是
正方形等形状)比较流行,因为它们易于采用扫描线绘制进行绘制。
多边形表示不是所有绘制技术都必须的,而在这些情况下,从抽象表示到绘制出的场景的转换不包括剖分步骤。
绘制
渲染是从准备的场景创建实际的二维景象或动画的最后阶段。这可以和现实世界中在布景完成后的照相或摄制场景的过程相比。
用于诸如游戏或模拟程序这样的交互式媒体的绘制需要实时计算和显示,速度约为20到120帧每秒。非交互式媒体(譬如录象或电影),绘制的慢得多。非实时绘制使得有限的计算能力得以放大以获得高质量的画面。复杂场景的单帧的绘制速度可能从几秒到一个小时或者更多。绘制完成的帧存贮在硬盘,然后可能转录到其它媒介,例如电影胶卷或者光盘。然后这些帧以高帧率播放,通常为24,25,或30帧每秒,以达成运动的假象。
最后的作品经常会需要达到真实感图形质量,要达到这个目的,很多不同和专门的绘制技术被发展出来。这些技术的范围包括相当非真实感的
线框模型绘制技术,到基于多边形的绘制,到更高级的技术,例如:
扫描线渲染、
光线跟踪或者辐射着色。
绘制软件可以模拟例如镜头光晕、
景深或者
运动模糊这样的视觉效果。这些技术试图模拟镜头和人眼的光学特性所造成的视觉现象。这些技术可以增加场景的真实程度,虽然该效果可能只是镜头的人造模拟现象。
为模拟其他自然发生的效应的各种技术被发展出来,例如光和不同形式的物质的相互作用。这些技术的例子包括
粒子系统(它可以模拟雨,烟,或者火),体采样(用于模拟雾,尘或者其它空间大气效果),焦散效果(用于模拟光被不均匀折射性质的表面所聚焦的现象,例如游泳池底部的光的涟漪), 还有
次表面散射(subsurface scattering)(用于模拟光在人的皮肤这样的实体对象内部反射的现象)。
绘制过程计算上很昂贵,特别是所模拟的物理过程复杂且多样时。计算机的处理能力逐年上升,使得真实感绘制的质量渐进的提高。生产计算机动画的电影工作室可能用
渲染农场(render farm)来进行及时的绘制。但是,硬件费用的下降使得在家庭计算机系统上产生少量的三维动画完全成为可能。
绘制器经常包含在三维软件包中,但是有一些绘制系统作为流行三维应用程序的插件使用。这些绘制系统包括Final-Render,Brazil r/s,
V-Ray,
Mental Ray,
POV-Ray, 和Pixar Renderman。
这些绘制程序的输出经常用于最终电影场景的一小部分。很多材料的层次可以分别绘制,然后采用
合成软件集成到最终的画面中。
反射和明暗模型
现代三维计算机图形严重的依赖于一个简化的反射模型称为Phong反射模型,它和Phong明暗图是完全不同的主题,不能混淆二者。
在光的折射中,有一个重要的概念称为
折射率。在多数三维编程实现中,该值“index of refraction”(折射率)通常简写为“IOR”。
三维计算机图形中流行的反射绘制技术包括:
平直着色(Flat shading):使用多边形的法矢量和位置以及光源的位置和强度对于物体的每一个多边形给出一个明暗值的技术。
Gouraud着色:H。Gouraud于1971年发明,一个快速的基于顶点和光源的关系的着色技术,用于模拟光滑着色的曲面。
纹理映射:通过把图像(纹理)映射到多边形上来模拟曲面的大量细节的技术。
Phong着色:由Bui Tuong Phong发明,用于模拟光滑着色曲面的镜面反射高光效果
凸凹纹理映射:由Jim Blinn发明,用法向扰动技术模拟带褶皱的曲面。
Cel着色:用于模拟手绘动画的观感的一种技术。
应用程序接口
三维图形已经非常流行,特别是在
电子游戏中,这使得专门化的
应用程序接口(API)被创建出来用于简化计算机图形产生的各个阶段的处理。这些API对于计算机图形
硬件厂商也是极为重要的,因为他们提供给
程序员一种使用硬件的抽象方式,而依然能够利用这个那个
显卡的特定硬件的长处。
这些三维计算机图形的API颇为流行:
也有一些高层的三维场景图API,他们提供在底层绘制API之上的附加功能。处于活跃的发展中的这类程序库包括:
Quesa
Java 三维
JSR 184(M3G)
NVidia Scene Graph