[上篇:精灵轮廓处理][下篇:精灵影子处理(实时篇)]
随着计算机的速度增长, 内存不再昂贵, 3D 游戏迅猛发展, 而 2D 游戏要想利用新机器的优势, 一是加入更多的声光效果, 二就是更加重视像影子这样的细节描述了.
物体有了影子, 和背景更有溶入感, 是现代游戏不可缺少的. 早期的影子(以包括现在的部分游戏) 都是以一个圆形来表现, 而如今大多使用3D 建模渲染的方法制作游戏中的景物, 得到真实形状的影子 也非常容易. 值得注意的是, 影子不可过大, 避免带来不必要的麻烦. 因为影子应该属于地面一层的景物, 与影子的主体不是一个层次上, 很容易发生遮挡问题, 只有影子足够小的时候才能避免这个问题. (另外的解决方法, 可以将影子单独拿出来处理, 或者将影子的 Alpha 值定为 50% 和背景混合, 50% 的 alpha 值是个奇妙的数值, 混合的两张图可以不分前后 ;-); 另外鹰翔的郭兄提出将物体的图象倒过来, 再做拉压这样的实时处理, 计算影子, 我思考多时, 觉得暂且不考虑速度的话, 似乎很难算出真实形状的影子, 当然如果实现的了, 也是有莫大的好处, 那样我们就可以实现影子的方向改变了.(这些在下篇里专题讨论)
影子需要有半透明处理吗? 以前的游戏大多因为硬件因素而没有这样做, 而弥补的是美工上的工夫, 这也可能是老游戏众多暗色调为主的原因吧, 那些游戏色调处理的相当好, 真让我们佩服. 如今我们美工的功力不够, 唉, 只好拿程序补. 半透明的影子实现起来大约有两种方案, 一是用网点, 即预处理, 无论是美工自己用 PhotoShop 干, 还是程序员写程序生成, 都是游戏制作时的辛苦, 玩的时候是感觉不出什么速度损失的. 只是网点的做法略显粗糙; 另一种是使用 Alpha 混合, 如果使用这个方案, 我的建议是一定要自己规划好合理的数据格式和相应的操作函数, 这样才可能满足速度上的要求.