3D 术语速查手册
一、 3D API
API 是 Application Programming Interface 应用程序接口的缩写 , 是许多程序的大集合。一个 3D API 能让编程人员所设计的 3D 软件只要调用其 API 内的程序,从而让 API 自动和硬件的驱动程序沟通,启动 3D 芯片内强大的 3D 图形处理功能,从而大幅度地提高了 3D 程序的设计效率。目前普遍应用的 3D API 有 DirectX 、 OpenGL 、 Glide 、 Heidi 。
?DirectX
微软公司专为 PC 游戏开发的 API ,与 Windows 95 和 Windows NT 操作系统兼容性好,可绕过图形显示接口( GDI )直接进行支持该 API 的各种硬件的底层操作,大大提高了游戏的运行速度,而且目前基本上是免费使用的。由于要考虑与各方面的兼容性, DirectX 用起来比较麻烦、在执行效率上也未见得最优。
?OpenGL ( 开放式图形接口 )
由 Silicon Graphics 公司开发,能够在 Windows 95 、 Windows NT 、 Macos 、 Beos 、 OS/2 、以及 Unix 上应用的 API 。由于 OpenGL 起步较早,一直用于高档图形工作站,其 3D 图形功能很强,超过
DirectX ,能最大限度地发挥 3D 芯片的巨大潜力。在 Windows 98 中已经支持 Direct X 和 OpenGL 。在 OpenGL 的 1.2 版中增加了对 3DNow! 标准的支持。
?Glide
这是 3Dfx 公司为 VOODOO 系列 3D 加速卡设计的专用 3D API ,它可以最大限度发挥 VOODOO 系列芯片的 3D 图形处理功能,由于不考虑兼容性,其工作效率远比 OpenGL 和 Direct 3D 高,所以 Glide 是各 3D 游戏开发商优先选用的 3D API 。不过,这样一来就使得许多精美的 3D 游戏在刚推出时,只支持 3Dfx 公司的 VOODOO 系列 3D 加速卡,而其它类型的 3D 加速卡则要 等待其生产厂商提供该游戏的补丁程序。
?Heidi
Heidi 是一个由 Autodesk 公司提出来的规格。目前,采用 Heidi 系统的应用程序包括 3D Studio MAX 动画制作程序、 Autodesk 公司为 AutoCAD R13 开发的 WHIP 加速驱动程序。
二、 3D 特性
?Alpha Blending (α 混合 )
简单地说这是一种让 3D 物件产生透明感的技术。屏幕上显示的 3D 物件,每个像素中有红、绿、蓝三组数值。若 3D 环境中允许像素能拥有一组 α 值,我们就称它拥有一个 α 通道。 α 值的内容,是记载像素的透明度。这样一来使得每一个物件都可以拥有不同的透明程度。比如说,玻璃会拥有很高的透明度,而一块木头可能就没什么透明度可言。 α 混合这个功能,就是处理两个物件在 萤 幕画面上叠加的时候,还会将 α 值列入考虑,使其呈现接近真实物件的效果。
?Fog Effect ( 雾化效果 )
雾化效果是 3D 的比较常见的特性,在游戏中见到的烟雾、爆炸火焰以及白云等效果都是雾化的结果。它的功能就是制造一块指定的区域笼罩在一股烟雾弥漫之中的效果,这样可以保证远景的真实性,而且也减小了 3D 图形的渲染工作量。
?Shading( 着色处理 )
绝大多数的 3D 物体是由多边形( polygon )所构成的,它们都必须经过某些着色处理的手续,才不会以 线结构 ( wire frame )的面目示人。着色处理分为 Flat Shading 平面着色、 Gouraud Shading 高洛德着色
1.Flat Shading ( 平面着色 ): 平面着色是最简单也是最快速的着色方法,每个多边形都会被指定一个单一且没有变化的颜色。这种方法虽然会产生出不真实的效果,不过它非常适用于快速成像及其它要求速度重于细致度的场合。
2.Gouraud Shading ( 高洛德着色 ): 这种着色的效果要好得多,它可对 3D 模型各顶点的颜色进行平滑、融合处理,将每个多边形上的每个点赋以一组色调值,同时将 多边形着 上较为顺滑的渐变色,使其外观具有更强烈的实时感和立体动感,不过其着色速度比平面着色慢得多。
?Mapping( 贴图处理 )
分为 Texture Mapping 材质贴图、 Mip Mapping Mip 贴图、 Bump Mapping 凹凸贴图、 Video Texture Mapping 视频材质贴图。
1.Texture Mapping ( 材质贴图 ) :是在物体着色方面最引人注意、也是 最 拟真的方法,同时也多为目前的游戏软件所采用。一张平面图像(可以是数字化图像、小图标或点阵位图)会被贴到多边形上。例如,在赛车游戏的开发上,可用这项技术来绘制轮胎胎面及车体着装。
2.Mip Mapping ( Mip 贴图 ) :这项材质贴图的技术,是依据不同精度的要求,而使用不同版本的材质图样进行贴图。例如:当物体移 近使用 者时,程序会在物体表面贴上较精细、清晰度较高的材质图案,于是让物体呈现出更高层、更加真实的效果;而当物体远离使用者时,程序就会贴上较单纯、清晰度较低的材质图样,进而提升图形处理的整体效率。
3.Bump Mapping ( 凹凸贴图 ) :这是一种在 3D 场景中模拟粗糙外表面的技术。将深度的变化保存到 一 张贴图中,然后再对 3D 模型进行标准的混合贴图处理,即可得到具有凹凸感的表面效果,
4.Video Texture Mapping ( 视频材质贴图 ) :这是目前最好的材质贴 图效果 。具有此种功能的图形图像加速卡,采用高速的图像处理方式,将一段连续的图像(可能是即时运算或来自一个 AVI 或 MPEC 的档案)以材质的方法处理,然后贴到 3D 物件的表面上去。
?Texture Map Interpolation( 材质影像过滤处理 )
当材质被贴到屏幕所显示的一个 3D 模型上时,材质处理器必须决定哪个图素要贴在哪个像素的位置。由于材质是 2D 图片,而模型是 3D 物件,所以通常图素的范围与像素范围不会是恰好相同的。此时要解决这个像素的贴 图问题 ,就得用插补处理的方式来解决。而这种处理的方式共分三种: “ 近邻取样 ” 、 “ 双线过滤 ” 以及 “ 三线过滤 ” 。
1.Nearest Neighbor ( 近邻取样 )
是一种较简单材质影像插补的处理方式。会使用包含像素最多部分的图素来贴图。换句话说就是哪一个图素占到最多的像素,就用那个图素来贴图。这种处理方式因为速度比较快,常被用于早期 3D 游戏开发,不过材质的品质较差。
2.Bilinear Interpolation ( 双线过滤 )
这是一种较好的材质影像插补的处理方式,会先找出最接近像素的四个图素,然后在它们之间作差补效果,最后产生的结果才会被贴到像素的位置上,这样不会看到 “ 马赛克 ” 现象。这种处理方式较适用于有一定景深的静态影像,不过无法提供最佳品质,也不适用于移动中的物件。
3.Trilinear Interpolation ( 三线过滤 ) :这是一种更复杂材质影像插补处理方式,会用到相当多的材质影像,而每张的大小恰好会是另一张的四分之一。例如有一张材质影像是 512×512 个图素,第二张就会是 256×256 个图素,第三张就会是 128×128 个图素等等,总之最小的一张是 1×1 。凭借这些多重解析度的材质影像,当遇到景深极大的场景时(如飞行模拟),就能提供高品质的贴 图效果 。一个 “ 双线过滤 ” 需要三次混合,而 “ 三线过滤 ” 就得作七次混合处理,所以每个像素就需要多用 21/3 倍以上的计算时间。还需要两倍大的存储器时钟带宽。但是 “ 三线过滤 ” 可以提供最高的贴图品质,会去除材质的 “ 闪烁 ” 效果。对于需要动态物体或景深很大的场景应用方面而言,只有 “ 三线过滤 ” 才能提供可接受的材质品质。
.Perspective Correction ( 透视角修正处理 )
它是采用数学运算的方式,以确保贴在物件上的部分影像图,会向透视的消失方向贴出正确的收敛。
?Anti - aliasing ( 反锯齿处理 )
简单地说主要是应用调色技术将图形边缘的 “ 锯齿 ” 缓和,边缘更平滑。反锯齿是相对 来来说 较复杂的技术,一直是高档加速卡的一个主要特征。目前的 3D 加速卡大多不支持反锯齿,但在下一代 3D 加速卡如 RIVA TNT 、 G200 中将支持这项技术。
?Z Buffer (Z 缓存 )
Z - buffering 是在为物件进行着色时,执行 “ 隐藏面消除 ” 工作的一项技术,所以隐藏物件背后的部分就不会 被显示 出来。
在 3D 环境中每个像素中会利用一组数据资料来定义像素在显示时的纵深度(即 Z 轴 座标 值)。 Z Buffer 所用的位数越高,则代表 该显示卡所 提供的物件纵深感也越精确。目前的 3D 加速卡一般都可支持 16 位的 Z Buffer ,新推出的一些高级的卡已经可支持到 32 位的 Z Buffer 。对一个含有很多物体连接的较复杂 3D 模型而言,能拥有较多的位数来表现深度感是相当重要的事情。
?Double Buffering ( 双重缓冲区处理 )
绝大多数可支持 OpenGl 的 3D 加速卡都会提供两组图形画面信息。这两组图形画面信息通常被看着 “ 前台缓存 ” 和 “ 后台缓存 ” 。 显示卡用 “ 前台缓存 ” 存放正在显示 的这格画面 ,而同时下一格画面已经在 “ 后台缓存 ” 待命。然后显示卡会将两个缓存互换, “ 后台缓存 ” 的画面会显示出来, 且同时 再于 “ 前台缓存 ” 中画好下一格待命,如此形成一种互补的工作方式不断地进行,以很快的速度对画面的改变做出反应。