WebMax2.0实时材质技术浅谈(2)-水特效
虚拟实现技术中的[水特效]一直让大家都很困惑,如何才能创造美妙的水面效果呢?根据我的经验,我使用WebMax2.0创造了三种类型的水面,从最简单的动态叠层水面,到有波光粼粼的反射水面,到有高低起伏的海浪,总体而言,效果是比较让人满意的。对于美术设计师而言,WebMax2.0非常好用,因为它很简单,不需要懂复杂的编程和数学运算,就可以创造出漂亮的水特效。
下面是我使用WebMax2.0制作的三种水面特效,供大家了解和学习WebMax2.0作参考。为了让大家看到真实的效果,我这里不对图像进行任何放缩和后期处理,目的是为了让大家看到WebMax2.0呈现图像的原貌。
1. 简单的叠层水面
因为显卡运算性能的原因,叠层水面在最早期的游戏中经常使用,它的原理是使用两层贴图,一层向左移动,另一层向右移动,通过混色效果看到上下两层图都在移动,产生波动的感觉。这种水面的优点是对显卡没有任何特别要求,缺点是波动比较假,效果不真实。
2. 凹凸纹理水面
这种水面时通过凹凸贴图的原理实现的,通过计算正弦波函数来计算凹凸纹理的每个像素的值,来产生波动的效果。这种水面的效果比较理想,波动的效果很明显,而且运算量不大,对硬件的要求不高,缺点是离近看水面会发现,其实水面的波动没有产生高度差,实际上还是一个水平面。这种水面比较适合做小范围的水面(譬如小水池,水塘等)。
3. 真实的水面
真实的水面不仅水平方向的波动,还有垂直方向的高低起伏。WebMax2.0有一个RealWater模块,在软件中没有对外开放。但可以使用其API函数来创建。
函数用法如下:
VGS2.CreateRealWater("RealWater1", 0, 0, 0, 64, 128);
第1个参数是水面的名称,第2-4个参数是水面的位置,第5个参数是x方向的网格数,第6个参数是y方向的网格数。
4. 水面反射
水面的反射能够让水面的效果更加逼真,WebMax2.0可以设置反射模型,可以调节反射的强度。实时的反射可以得到比较理想的水面效果,但是如果控制得不好会比较消耗资源,最好的办法是只反射必须要反射的物体。
下图中的水面反射了天空,和水面上方的三个物体,这三个物体是动态运动的,可以看到实时反射的倒影。
5. 水面折射
水面的折射也能够大幅度的提升水面的真实感。WebMax2.0的RealWater水面的反射和折射实现得非常好。它可以让视点离水面较近时,折射加强反射减弱;而离水面较远时,反射加强而折射减弱,模拟了非常真实的水面效果。
整理:第三维度