今日科普:介绍常见的游戏特效
特效是游戏中增加交互印象的很重要一方面,一个好的特效系统能够很大程度上提高游戏的特色。这里简单整理总结一些游戏中较为常见的特效:
一、公告板
公告板效果就是直接使用公告板来渲染出一定的特殊效果。常规公告板的面方向始终与视线的方向垂直,但是也可以增加其属性设置为不必与视线垂直,此时即相当于在某些位置绘制一个面形出来,这样也可以完成一些特殊的效果,比如静止面上的纹理动画等(这需要引擎支持动态的纹理,比如gif等;或是帧贴图的合并与提取等)。
二、粒子
粒子特效中引擎中最为常见也是必须的一种效果,包括各种灰尘、火焰、烟雾等效果的实现均是由粒子系统来完成。粒子系统是一种过程模型,将造型与动画结合为一个整体,用单个随时间变化的粒子作为场景的基本元素。每个粒子都有自己的生命周期,比如“出生”、"生长"、“死亡”等基本属性。在实现过程中需要采用随机的方法来实现粒子的不确定性,从而增加更为真实的模拟。每个粒子本身的实现又是用公告板的渲染方式并结合不同的Alpha操作来完成。
三、拖尾
拖尾效果在动作游戏中比较常见,其一般的实现是在要渲染的模型中设置出一些对应的绑定点来,然后在动画播放的过程中记录这些绑定点的位置,并在其上生成相应的不同类型的连接面生,并以丰富的Alpha操作模型进行渲染而实现。在动画更新的过程中也同时完成这些生成的面片的更新以便实现出动态变化的效果。其通常会结合一定的环境反射或扭曲等来增强其表现力。该特效常见于动作游戏中的刀光或角色的运动中,实现较好可以很大程度上增加引擎的表现力,比如下述战神中武器上面的拖尾效果就很炫丽。
四、贴花
贴花效果严格意义上来说可以并不完全属于特效的范畴,比如可能在场景编辑器中同样需要,因为其不是动态变化的而属于静态场景的一部分。当前的贴花实现既可以用基于前向渲染的传统方式来实现,同样也可以用后处理的方式来实现,不过这就要求引擎使用了延迟渲染的架构,具体差异就跟引擎的细节相关了(之前也有简单介绍的实现)。贴花在游戏中主要使用在一些动态产生的图像或痕迹的表面上,比如射击游戏中的弹孔、走在雪地上的脚印、因攻击而溅到地面上的血迹等各种,这些实现通常也需要与引擎中的逻辑部分相结合从而在特定的场合特定的时间上合理产生以增强表面力。
五、残影
残影主要用来表现角色的快速移动效果,而其实现方式既可以用后处理方式也可以用非后处理方式。一般来说使用前向的基于几何实体的实现方式可能得到更好的效果。在后处理实现中主要是利用后备的累积buffer来实现基于屏幕空间的角色累积,其优点是实现效率较高,毕竟是基于图像空间的,但也有一个明显的缺点就是效果不是太好,特别是当摄像机的位置变化较为剧烈时,另外还有就是使用这种方式的话累积出的效果的材质可控性较差,变化不太丰富;另外一个方式就是前向的基于模型渲染的实现,这个通常是将模型进行虚拟的复制然后再下一帧进行还原绘制,这种方法不会受Camera变化的影响,而且由于是直接进行几何体的渲染因而材质的控制就为简单,也使用其效果较好。另外在这种方法中也可以将其与其它的特效相结合,比如使用拖尾对多个残影间进行连接可以得到另外一种更加炫丽的效果。
六、屏幕特效
屏幕特效一般是在后处理过程中施加的一个基于图像空间的用来模拟摄像机上一些效果的操作,比如FPS游戏中弹屏幕眩晕、动作游戏中的屏幕溅血等。这个操作的实现其实还是很简单的,只需在后得理过程中增加个目标贴图的Alpha混合即可,但是比较重要的是控制其基于Alpah的渐变、同引擎中逻辑相结合的触发以及各种状态下触发的随机性控制等,而且还需要美工制作出不错的屏幕以及Alpha通道贴图来供使用。
以上内容整理取自CSDN BugRunner