本帖最后由 n805 于 2025-1-5 03:35 编辑 ) U7 r, W" v, D! d2 Z2 G
9 B" H2 t" d) v
9 ]0 @2 u7 J) w. }! v5 R' \( b! N; T
如果要描绘一个站立式人物的图像,只要将底边中央设为原点,无论图像多大都可以简单地描绘出来。如果是飞行射击游戏的话,就将原点设置在中央。设定位置本身只需要进行简单的加法和减法的运算。在制作游戏时设定原点并不是必要功能。设定原点的功能在进行图像的扩大缩小时就会发挥真正的作用。% w4 `& g; W9 n) |4 y! ^! m
世嘉土星可以对精灵图进行扩大缩小处理,设置原点后,原点在扩大缩小时可以保持精灵图的位置不变。而在土星之前的游戏机,原点都是固定在左上角。这个功能很小,很不起眼,但是就是这些不起眼的小功能集结在一起,就会让游戏制作变得更加方便。这也是将土星称之为「2D游戏机的究极形态」的原因了。
7 e0 ]" a3 L5 X8 F& {& ^: S! q不仅是设定原点这个功能,土星还具备了以下这些功能。 _+ U/ ] t$ c- o3 }$ u- y
不设定图像,仅设定位置来描绘边框。( B+ H& E! H% F, z6 m2 Q" u: o$ N
利用上面的功能描绘出的边框里填充颜色。
5 h% n- |7 ]5 d; _" O+ t$ R设定两个坐标,绘制线。
; s$ a& n9 G5 P/ W3 S在四个顶点设定颜色,绘制渐变。并将这个渐变与精灵图合成。(Gouraud着色法,没有材质也可以使用)1 Y& @3 A! Y( s& M7 t3 b A- K
事后设定是否进行背景图层重叠时的半透明运算。- e" G. T5 @0 P+ E# y$ I# a
对已经描绘完的精灵图进行半透明运算。
' P9 j% ?/ ?, E5 s b" v4 v; z对图形进行网格化描绘。(仿真半透明). O' Y* K/ S1 ~; g5 B- ]
精灵图之间的半透明以及与背景图层间的半透明运算功能,就像上面阐述过的一样问题重重,实际运用较少。(笔者能短时间内想到的就只有Guardian Heroes)半透明功能在运用上还有其他的限制,比如变形精灵图绘制的原理上导致半透明功能无法运用在变形精灵图和其他精灵图叠加的状态。
v: {) W, `2 b; M j- @+ V: o ]变形精灵图的绘制方法要解释起来会非常麻烦,有兴趣的人可以去低下翻阅英文的开发技术文档和日文的Saturn Q&A。 I1 b& u* C5 N+ i
打个比喻,就像是拿个刷子去刷一面墙,要横着刷一条横线是很简单的,但是无法一次性刷完一面墙。涂完一行之后应该要接着涂下一行。但涂下一行的时候,难免会涂到上一行已经涂过的位置。如果不这样做涂色,那么涂色的区域内就可能出现缝隙。
: J7 Z. \1 V$ Z+ `& }8 R' Z土星的变形精灵图也是如此。在进行一次绘制之后,土星有时候会对精灵图进行再次绘制,以确保绘制区域不出现缝隙。而在变形精灵图上使用半透明时,就会出现问题。在重复描绘的过程中,第二次描绘的变形精灵图将会被识别为其他的精灵图,触发半透明处理。于是,半透明效果就会出现不均。本来是为了让效果更好而进行的重复绘制,结果却造成了处理问题。! h% h# f1 Y2 _1 ?! a4 f; H
这里就有一个PS和土星最大的差别。PS在处理精灵图时,是将其栅格化,但土星则是将精灵图进行映射处理。- F% K/ O. x2 O7 v5 n3 X4 P1 V
栅格化(rasterise)是根据显示对象的像素点来对照材质(texture)所在的位置读出并显示;映射(mapping)则是将材质(texture)取出,将其直接写入显示对象。刚才也有阐述过,2D游戏在设置半透明时,分别有「对其他的精灵图半透明」与「对背景半透明」两个选项,这两个选项的存在让半透明功能难以使用。而3D时,精灵图的半透明绘制算法,同样也让半透明功能无法使用。半透明功能岂不是全灭了?
1 f5 z. ^; r& u9 O# d' a但作为最后的救赎手段就是「仿真半透明」,网格化描绘。首先判断坐标X+Y的值为奇或偶,然后选择和为奇或偶的坐标去描绘。但是同为奇或偶的仿真半透明化精灵图重叠时,下方的精灵图就会被覆盖,失去透明感。而奇偶不同的仿真半透明化精灵图重叠时,上方的网格与下方的网格会刚好错开,上方网格的孔会被下方网格的网所填充,失去透明感。# d, P O2 G! R, I, O8 w) B# D4 v! p
仿真半透明终究只是仿真,并不是真的半透明,但确是最够用的机能。三种半透明功能,各有长短。但说到底如果能有完美的半透明功能,就最为理想。只是因为制造成本及电路板规模的问题,就只能提供这三个各有长短的功能,让程序员来想办法解决。) |+ }, ]9 [( n# j2 r
游戏机说到底是作为一种「玩具」被创造出来的。因为是玩具,就会受到成本等各种约束,这样一种情况下还能以2D游戏机为出发点却尽可能兼顾了3D功能,还搭载三种透明功能,他们已经尽力了。
1 y7 [! ~9 h7 v% x# O详解半透明
/ k; z' `0 _" r0 x5 U: \这篇文章已经说了太多次关于半透明的问题。而大部分人在拿PS与图形比较时也总会提起半透明的问题。所以在这里再说明一下土星的半透明问题。" K: \8 Q, [8 u
大部分人都会说,PS的半透明很漂亮,土星的半透明很糟糕。这是因为处理方式的区别而产生的。土星在处理半透明时,使用的是取颜色的平均值这样一个处理。加权平均计算,也就是说调节透明度也是可行的。通常处理透明度就会做这样的一个运算。PS的半透明处理不仅进行平均值计算,还会进行其他的一些运算。但我本身对PS兴趣不大,所以并没有特意去了解。9 n4 o! F, ^, k3 a3 g3 } @7 U
平均计算以外,比较有代表性的应该就是模拟光学式的运算了。很多人可能都发现过,将三原色的光叠加在一起的时候,会呈现白色,但是将三原色的颜料混合在一起之后则会变成灰色。5 F; y* |5 _( U8 ?3 _5 o
3 L2 b# r7 T# b5 Y8 I0 A' g6 d/ L
半透明的不同处理方式
* i- V% i7 Z$ K m0 @* a( m |