【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2316|回复: 0

2D游戏中人物被遮挡的透明效果

[复制链接]
发表于 2006-10-31 11:41:09 | 显示全部楼层 |阅读模式
通常我们在2D游戏中经常使用人物的半透明效果来表示人物被建筑物所遮挡,这种效果做法不但画面效果较佳,而且能让玩家更好的了解自己所控制玩家当前位置,才不会被物件所遮挡,茫然失去方向。这里,我们就是来讲讲简单的处理方法。

我们的游戏场景一般由地表层、建筑(遮挡)层、人物层来进行管理,其中建筑和人物层必须经过排序处理来确定绘制的先后次序,这就产生了人物与建筑、建筑与人物的一种相互遮挡关系;我们来看看我们所需要的资源:

地表层图象

人物图象

遮挡物图象

我们现在要做的就是把这3者有机的结合起来,组成我们的游戏画面。

地表层通常不存在遮挡关系,因而一般都直接进行绘制,不需要多做处理,然后就是人物与物件遮挡的关系处理,一般情况下,我们都会得出这样一个结果:

图1

我们把最基本的东西实现了,但我们要如何实现人物部分的透明呢?这时候我们用一个很简单的技巧就能够实现,只要在人物原来的位置再绘制一边Alpha混合的人物图象,这样就能得到我们所需要的效果:

图2

我们马上就可以看到人物的脑袋已经半透明的,但身体部分还保持原来的色彩,这是个很简单的道理,如果两张图象一模一样,那Alpha混合出来的的图象还是图象本身。
呵呵,是不是很简单~~~~

有没有高级点的方法?这中方法好象很浪费机器性能。
的确,因为人物在绘制的时候多了重绘Alpha部分,性能上会有不少折扣,特别是在目前网络游戏盛行,如果在一棵大树下有几十上百个玩家,那我们的机器就 ……(准备好灭火器,以免CPU过热着火);当然,如果你的游戏人物不多或对性能要求不高,还是比较建议使用此方法,毕竟此方法简单,而且不容易出错。

现在,我们来讨论一下“高级”点的遮挡透明效果(由于方法众多,这里只讨论方法,没有实际的做法)。

我们可以事先制作好各遮挡物体的掩膜(这个也可以用2D图象中的ColorKey来代替或者用Alpha通道来实现),然后在绘制的时候根据掩膜进行相对判定,假设在绘制人物的过程中,程式遇到与遮挡物产生遮挡,此时人物图象又有部分被遮挡物所覆盖,那我们可以根据事先准备好的遮挡物掩膜来进行是否绘制人物各像素的判定;于此相同,在绘制Alpha部分的时候同样根据遮挡物掩膜来判定是否进行绘制,这样能够在一定程度上缓解绘图给程式带来的负担,但也给制作上带来了复杂的计算,如图:

图3

后语,我们在游戏中使用什么方式来实现游戏并不重要,关键是要在开发难度以及所获得效果中取得平衡点,用最少的力实现最佳的效果,提高整体游戏开发的制作势力。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 04:05

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表