本帖最后由 n805 于 2025-1-4 22:04 编辑 4 @5 X9 h. L0 }) p/ }) q0 M6 e
/ s C5 B+ G* l4 u) `. N; I7 @) v; z
立体多边形(polygon)
! F7 S& R- F3 D, c. O$ d$ Z; J土星通过将精灵图变形来展现多边形。这是上一篇文章已经提到过的事情。
: S9 w7 @% I, ?" G三次元坐标通过旋转矩阵(请自行百度谷歌),在空间内自由移动;通过单应性变换,将坐标变为2次元。重复这一运算,将4个点变为2次元坐标,并以这四个坐标为顶点绘制四边形。这就成了立体多边形。这个多边形可以给四个顶点设置颜色计算出渐变,也可将事先准备好的图形贴上。只是这些运算需要时间,所以图像显示是能会有所下降。! C/ j$ Q; `! }3 C- }' P
PS则是可以选择绘制三角形或是四边形。但基本原理和刚才说的差不多。所以绘制多边形能力的差,和绘制精灵图能力的差是相同的。 A3 i2 n7 T, w3 H: \
上回写到,土星的图像显示能力接近PS2倍。虽然这个事实可能很意外,但土星绘制多边形的能力强于PS。) [7 J' z+ i! l2 B) T! D
这时候大家会想了「不是说土星比PS不擅长3D游戏么?」。& {% Z! h: g! x- v, a; n, r
下文会详细说明,不过这里先提一下。计算在3D空间里元件的位置,并考虑摄影机的角度将这些元件的位置转换成2D坐标的处理能力,PS是压倒性地占上风。! G8 q0 \+ |5 c$ u& Q
有部分人认为变形精灵图不算多边形。笔者不这么认为。土星绘制的也是多边形。但为什么会被称作「假多边形」呢?在土星上,CPU计算3D空间内的顶点,并将顶点转换成2D坐标。然后将任意的4个顶点作为四个角,使精灵图变形并显示。这样就能绘制出一个面。根据绘制需求,通过刚才的流程制作所有面,就绘制出了立体图形。
G p4 k' J7 M) \上回在写精灵图时提到过,精灵图在描绘的时候可以选择「描绘线框」或是「填充颜色」还可以显示普通的图形,以及设定四个角的颜色绘制渐变与精灵图合成。这就相当于材质的有无及Gouraud着色法。
4 z- K& h! [) Y% L4 S精灵图的图形是以横向8个点为一个单位,纵向1个像素点为单位,增减大小。如果是2D游戏,并使用透明色的话,这样一个机制没有任何问题, 你几乎可以绘制各种各样的图形。但是要绘制3D的时候,这样一个机制就显得缺乏变通。你绘制的精灵图的尺寸很容易会和你想要制作的面有尺寸上的差异。于是就会出现这样一个结果,一个立体图形,但是每个面的材质,他们的解析度都稍有不同。
' M4 ^6 r& z) p- P+ N1 V虽然3D图形画面上会有很多立体多边形,需要绘制非常多面,但是开发工具通常情况下会解决这些问题。这个可以回头再谈。
1 F0 u4 X' A" T2 j也就是说土星在绘制立体图形时,「计算顶点」和「绘制面」的操作是分离开来的,通过反复绘制面来生成「立体多边形」。土星的立体多边形绘制的原理就是这样了。并不是什么特别的方法。当年没有专门的3D演算硬件的电脑也是用这种方法来制作3D游戏。但是也没有人说那些电脑游戏不是立体多边形啊。
9 R' v$ p" x5 r0 Q一个题外话,笔者印象里图形加速卡像雨后春笋一样出现是从1993年开始。当时的一些公司,比如Cirrus Logic之流做的那些所谓加速卡其实都没有针对3D做什么特殊结构。直到3dfx推出了Voodoo,3D硬件才算是真正登场。笔者使用的电脑PC-9801 BX4搭载了Cirrus Logic的GD5430。解析度1024x760之后就只能使用16色,800x640的分辨率就开始变慢。Cirrus Logic真的不行,后来就放弃图形处理器市场开始做音频了。
7 Y4 s; O+ d! Q, ~' a回过头来看看作为对手的PS吧。
" l! E. }6 }1 ]0 S1 t相较于土星将「面」和「顶点」分开处理的方式,PS则是在硬件层面上就确立了「直接描绘面」的方式。PS的3D游戏大多会出现「多边形的面之间有间隙」这样一个现象,这是因为没有共享3D图形顶点所造成的。
+ s+ W7 z; T0 u) ^: U& j在绘制多边形时,PS内部会讲所有的面作为「三角形」来处理,这是硬件内部的问题。当然,在绘制面的时候,四边形的效率会更高。在制作建模时,通常也会选择使用四边形来绘制。这样看来,PS和土星并没有那么大的差别。/ b' @6 U+ V$ O, Z* j* n% ^3 t" ?, W
假设我们准备一个256x256的材质。然后指定材质在画面上相应的坐标位置(UV坐标)。坐标可以以1个像素点为单位设定,所以就不会出现不同地方的解析度不同的问题。这种方式在当时的3D-CAD中已经广泛应用,制作数据也更为简单。
. W8 }7 L, z4 w3 C没有图片进行说明的话还是很麻烦,所以找点图来。* H$ R8 s- y$ H) C1 |
: n* Q" c; o W4 U3 l5 J
|