MY BLOG DIRECTORY:
YivanLee:专题概述及目录INTRODUCTION:
特效篇会比较综合性地把一个游戏特效的制作作为主题。游戏特效主要会用到材质系统,动画系统,粒子系统,所以特效篇涉及的方面会比较广。特效师感觉就是天生的技术美术,事实上行业内现在许多技术美术都是特效转的。
Hologram Effects在几乎所有游戏里都会用到,不管什么类型,都能看到各种Hologram Effects。本篇就来制作一些Hologram效果。全息效果总体来说表现为以下几个特征:
- 意义不明但是有节奏的信号干扰效果。
- 透明地浮在半空中,给人很高级的科技感。
- 自发光的诡异显示方式,类似霓虹灯。
MAIN CONTENT:
【1】信号干扰
全息效果一个非常典型的特征就是信号干扰,做这个特征的方法有很多,还是根据具体的效果来决定,信号干扰主要使用扰动的办法来做,下面就以全息文字为例。首先准备一张正常的文字图片,然后围绕上面三点做文章,首先是扰动。为了制作液晶显示器上的频率不稳定效果,我使用晶格状噪波
float2 Random(float2 uv)
{
float Magic = 3571;
float2 PixelPos = uv * 512;
float2 Random2 = ( 1.0 / 4320.0 ) * PixelPos + float2( 0.25, 0.0 );
float Random = frac( dot( Random2 * Random2, Magic ) );
Random = frac( Random * Random * (2 * Magic) );
return Random;
}
//main function
return Random(floor(uv * tile));


效果如下:

感觉已经达到了目的,一些奇怪的晶格细线的效果也有了。扰动一定要有节奏。
调整这些参数可以得到下面一系列效果:


把晶格西线参数调大一点就会感觉像老电视的信号不稳定的效果

换一张底图效果如下,当然可以考虑让地图文字流动。

程序化生成噪波的好处就是可以做很多变化,缺点就是不方便控制,制作思路不够artist。

有了最基础的扰动之后就是在扰动的基础上给Hologram本体加元素,用横向棋盘格表现液晶显示器上的二极管。


当然为了表现Hologram上不明意义的信号干扰效果,二极管的部分也需要做强弱变化干扰。最后就会成下图效果:

【2】漂浮在半空显示
首先漂浮在半空中的透明物体肯定会有透明乱序问题。

通常是只要模型最表面的一层像素,里面的所有像素需要统统提出掉。首先把物体以不透明模式,把深度渲染到CustomDepth上(勾上RenderCustomDepth就会渲染它了),然后再在渲染透明物体的时候读这个CustomDepth,用PixleDepth减去CustomDepth,这样内部的像素的值是正的,外部的是负的

CustomDepth对应a,Pixledepth对应b,如果是表面像素则a等于b,内部像素是a小于b。这里需要我们手动比较深度,切剔除像素的方法只有clip,透明物体和addtive物体刚好有。
下面是addtive模式下的节点:

这样就能把物体内部的像素剔除



稍微美化一下:

材质球:

如果使用Translucent的混合模式,可以使用下面的节点:


其实核心就是在材质里自己做深度比较,把没用的像素想办法剔除掉。有了这个基础之后下一步就是加上最开始讲的,加入意义不明的扰动。

这里面的抖动是故意做出来的,线框是shader算出来的,也不是采张图,只有这样才能做到这个效果

最后我的最终材质节点如下:

除此以外,用粒子直接做全息效果也时个不错的选择。

SUMMARY AND OUTLOOK:
总得来说做Hologram这种效果就以下几点注意事项:
- 意义不明但是有节奏的信号干扰效果。可以用程序算噪波干扰,也可以用贴图来制作扰动,各有优缺点,看自己权衡。
- 透明地浮在半空中,给人很高级的科技感。这种需要注意的就是透明乱序,大多情况下只需要模型最表层的一层像素即可。
- 自发光的诡异显示方式,类似霓虹灯。这种就是继续对效果进行打磨,可能给点mask做强度控制,亮度也需要扰动变化等等。
NEXT: