maya教程之制作水波纹效果

maya教程之制作水波纹效果

ID:9945138

大小:267.00 KB

页数:5页

时间:2018-05-16

maya教程之制作水波纹效果_第1页
maya教程之制作水波纹效果_第2页
maya教程之制作水波纹效果_第3页
maya教程之制作水波纹效果_第4页
maya教程之制作水波纹效果_第5页
资源描述:

《maya教程之制作水波纹效果》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这个教程将教会你在粒子碰撞水面的准确位置产生波纹。  1.碰撞事件  首先打开rippleStart.ma文件。可以看到这个场景中用上一个例子中的方法设置水流,我们现在想让粒子在碰到水面时产生波纹。选择粒子和水面。执行particles->makecollide,再创建碰撞事件particle->particlecollisionevents  将新生成的粒子与重力连接,设置geoconnector的值如下图设置新生成的粒子(splash)的生命值为0.5  2.波纹的运行规则  现在我们需要知道粒子击中的是nurbs曲面的哪

2、个具体的位置。我们需要用collisionU和collisionV这两个属性。给粒子(P)添加collisionU和collisionV属性。  粒子在没有击中曲面的时候,它们的collisionU和collisionV的值都会是-1.你可以把粒子的rendertype设置成numeric然后在下面的attributeName里填上collisionU或者collisionV查看  我们想让粒子P一撞到曲面就让它消失,可以给粒子P写一个runtime表达式:if(collisionU!=-1)lifespanPP=0;  现在

3、播放,粒子仍然会穿过水面,并没有消失。把粒子的lifespanMode设置为lifespanPPonly.再播放,好了。  现在我们需要记录一些数据:碰撞点的UV坐标、碰撞发生的时间。  我们将用一个全局变量来记录这些数据,稍后用于波纹的纹理。用全局变量其它的表达式才可以调用这些数据。将前面的表达式替换为下面globalint$dropCount;globalvector$collisionData[];if(collisionU!=-1){$collisionData[size($collisionData)]=<

4、isionU,collisionV,frame>>;lifespanPP=0;$dropCount++;}  $dropCount是一个碰撞的计数器,在这里作用不大,可以去掉,更改表达式如下:globalvector$collisionData[];if(collisionU!=-1){$collisionData[size($collisionData)]=<>;lifespanPP=0;}size的作用是返回一个数组有多少个元素。通常情况下,会有许多粒子在同一个位置

5、与水面碰撞,因此我们让系统每隔5个粒子记录一次碰撞的数据。将表达式更改如下:globalvector$collisionData[];if(collisionU!=-1){if(particleId%5==0)$collisionData[size($collisionData)]=<>;lifespanPP=0;这样就可以减少一些不必要的计算。我们也可以在一个locator上添加一个属性,用来控制它。  选择rippleControlslocator modify->

6、addattribute  我们将用一个ramp纹理来产生水的波纹。先来看看ramp  现在新建一个ramp,更名为rippleRamp,删除这个ramp的place2dTexture。为ramp写一个表达式rippleRamp.vCoord=.5;  把ramp下面的颜色调成黑色,上面的颜色调成白色,中间的删除。将ramp贴到水面的材质的颜色上。  再建一个samplerInfo节点,更名为si。  将前面的表达式改成下面的:globalvector$collisionData[];if(frame<2)clear$coll

7、isionData;int$i;float$amplitude;float$totalAmplitude=0;//controlvariablesfloat$frequency=100;float$decay=4;float$timeDecay=.01;float$ampMult=.5;float$speed=.25;for($i=0;$i

8、;float$dist=mag(<>-<<($data.x),($data.y),0>>);float$x=($dist*$frequency-$tdist);$amplitude=(1-smoothstep(0,3,$x))*(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。