1、首先生成一个海面,摆一个比较舒服的机位,见图11。

图11(点击上图浏览大图)
细心调解oceanShader,在这里给出我的调节参数仅供大家做参考,见图12。

图12
然后就是制作波涛汹涌的波浪,这里我们用到了粒子系统,众所周知MAYA的粒子系统是十分强大的,下面看看我们是如何实现的。
首先我们先做一个NUBRSplane这个物体将作为粒子的发射面,见图13。

图13(点击上图浏览大图)
2、选择从物体发射粒子;
3、对单位时间粒子的发射数量,和粒子的发射速度进行调节,见图14-15。

图14(点击上图浏览大图)

图15(点击上图浏览大图)
粒子出现了,但是位置好象不对,浪花应该出现在浪尖上才对,那么这里我们需要用表达式对粒子的位置进行控制,见图16。
//creation expression floats partcles
vector $ppos = spray_particleShape.position;
float $pu = $ppos.x;
float $pv = $ppos.z;
float $samp[] = `colorAtPoint -o RGBA -u $pu -v $pv oceanShader1`;
float $py = $samp[3];
//set initial particle position on ocean surface
spray_particleShape.position = <<$pu, $py, $pv>>;

图16(点击上图浏览大图)
我们还要对粒子的寿命进行控制,见图17。
spray_particleShape.lifespanPP = rand(0.5, 2);

图17(点击上图浏览大图)
对粒子的速度进行控制,见图18。
//runtime expression for ocean spray
//check wave surface height
vector $ppos = spray_particleShape.position;
float $pu = $ppos.x;
float $pv = $ppos.z;
float $samp[] = `colorAtPoint -o A -u $pu -v $pv oceanShader1`;
float $py = $samp[0];
//clamp lower particle altitude to wave height
if($ppos.y <= $py) {
spray_particleShape.position = <<$pu, $py, $pv>>;
}
//drive particle down when it's too high
else if($ppos.y > $py + ocean_emitterPlane.sprayHeight) {
vector $pvel = spray_particleShape.velocity;
spray_particleShape.velocity = <<$pvel.x, $pvel.y - ocean_emitterPlane.sprayPull, $pvel.z>>;
};

图18(点击上图浏览大图)
注意这里,见图19。

图19
加入重力场、空气场、扰乱场,使粒子变的运动更加真实,见图20。

图20(点击上图浏览大图)
开启硬件渲染预览一下效果,马上要成功了。