3D芯片图形处理

  3D芯片的处理对象是多边形表示的物体。用多边形表示物体有两个优点:首先是直接(尽管繁琐),多边形表示的物体其表面的分段线性特征除轮廓外可以通过明暗处理(shading)技术消除;其次是仅存储多边形顶点的几何信息,多边形内部每个象素的明暗颜色计算所需的信息由这些顶点信息插值而来,这正是易于用图形硬件支持的快速明暗处理技术。支持多边形绘制的图形硬件同样也可以绘制由双三次曲面片表示的物体,通过对这种物体的表面进行三角剖分,用逼近的三角形网格代替原物体的曲面表示就可以做到这一点。当然,用多边形表示物体也有其缺点,如增加了纹理映射和阴影生成的难度,当需要详细表示复杂物体时所需的三角形数量将变得非常庞大。

过程

  将多边形表示的物体显示到计算机屏幕上,这一过程涉及物体在计算机内部的表示方式即物体的数据结构,由物体组成的场景的组织结构,物体从场景到屏幕空间要经过的一系列变换,以及产生最终屏幕图象要经过的一系列光栅化处理。这些方面都涉及到特定的处理算法,相应的算法又有许多不同的变种。下面仅就3D芯片涉及的图形处理过程及相关算法做一简单分析介绍,这些是理解3D图形处理及图形硬件的基础。

3D物体的表示法

  具有复杂外形的物体其表面可以由多边形面片来近似表示。以图1的圆柱为例,其柱面可以由2N个三角形近似,其两端可以由两个N边形来近似。多边形模型在其轮廓上的分段线性特征是这一表示法主要的视觉缺陷,改进的途径是增加多边形的分辨率。对于一个复杂形体来说,为了充分表示其细节,常常要用到十万个以上的多边形。这将耗费许多数据库访问时间和绘制时间。当将多边形模型进行放大处理时,会产生连接问题。这就是所谓的“几何走样”。物体的多边形表示既可以通过交互设计人工提取,也可以通过激光扫描设备得到。总之,多边形表示的物体并不特别适合于交互操作或做自由的形状改变。当改变物体的形状时很难保证多边形表示的完整性得到保持。

  对多边形明暗着色所需要的信息存储在一个分层的数据结构中,每一个物体表面由指向多边形表的指针定义,该多边形表包含了近似该表面的一组多边形,每一个多边形由指向顶点表的指针定义,顶点表包含了每个多边形的所有顶点。

象素处理

  经过以上一系列的变换之后,一个多边形已变换到屏幕坐标系下。将一个屏幕多边形在屏幕上绘制出来就是多边形的象素处理过程,它包括光栅化、隐藏面消除、明暗处理。光栅化、隐藏面消除、明暗处理是整个3D图形生成过程中最内层的处理。他们是三个二维插值过程。光栅化是用屏幕空间三角形的顶点坐标插值,以求得三角形的边所截取的三角形内扫描线段的端点坐标,并进而求得所截扫描线段上的象素坐标。隐藏面消除则是通过对屏幕空间三角形顶点的深度值(Z坐标)进行插值,从而获得三角形内扫描线段上每个象素的深度值。明暗处理是用同样的方法由顶点光强求得三角形内扫描段上每个象素的光强。这三种处理的算法具有相同的数学表示形式,只需将坐标、深度或光强代入该方程就可以得到相应的结果。总之,场景的绘制过程可概括为:

  对场景中的每个物体的每个多边形做几何变换将其变换到屏幕空间;

  对多边形内的每一个扫描段求出其端点及其上每个象素的坐标;

  对扫描段上的每个象素做隐藏面消除处理及明暗处理。

3D图形应用

  3D图形应用对计算和存储资源的巨大需求以及3D图形生成算法与传统计算机体系结构的不相适应产生了3D图形硬件。PC机上的3D图形硬件的出现只是最近几年的事,它是技术进步和市场推动的结果。目前,3D图形硬件既有高端的专用图形工作站也有入门级的图形加速卡,任何更好更快的图形效果的获得都需要付出巨大的硬件代价。

相关百科