maya制作水波纹效果

eaways111

eaways111

2016-03-18 17:11

想要天天向上,就要懂得享受学习。图老师为大家推荐maya制作水波纹效果,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

 这个教程将教会你在粒子碰撞水面的准确位置产生波纹。
  1.碰撞事件
  首先打开rippleStart.ma文件。可以看到这个场景中用上一个例子中的方法设置水流,我们现在想让粒子在碰到水面时产生波纹。选择粒子和水面。执行particles-make collide,再创建碰撞事件particle-particle collision events

  将新生成的粒子与重力连接,设置geoconnector的值如下图

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/shejiruanjian/)

设置新生成的粒子(splash)的生命值为0.5
  2.波纹的运行规则
  现在我们需要知道粒子击中的是nurbs曲面的哪个具体的位置。我们需要用collisionU和collisionV这两个属性。给粒子(P)添加collisionU和collisionV属性。
  粒子在没有击中曲面的时候,它们的collisionU和collisionV的值都会是-1.你可以把粒子的render type 设置成numeric然后在下面的attributeName里填上collisionU或者collisionV查看

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/shejiruanjian/)

  我们想让粒子P一撞到曲面就让它消失,可以给粒子P写一个runtime表达式:
if(collisionU!=-1)lifespanPP=0;
  现在播放,粒子仍然会穿过水面,并没有消失。把粒子的lifespanMode设置为lifespanPP only.再播放,好了。
  现在我们需要记录一些数据:碰撞点的UV坐标、碰撞发生的时间。
  我们将用一个全局变量来记录这些数据,稍后用于波纹的纹理。用全局变量其它的表达式才可以调用这些数据。将前面的表达式替换为下面

global int $dropCount;
global vector $collisionData[];
if (collisionU != -1) {

$collisionData[size($collisionData)] = collisionU, collisionV, frame;
lifespanPP = 0;
$dropCount++;

}

  $dropCount是一个碰撞的计数器,在这里作用不大,可以去掉,更改表达式如下:
global vector $collisionData[];
if (collisionU != -1){

$collisionData[size($collisionData)] = collisionU, collisionV, frame ;
lifespanPP = 0;

}
size的作用是返回一个数组有多少个元素。
通常情况下,会有许多粒子在同一个位置与水面碰撞,因此我们让系统每隔5个粒子记录一次碰撞的数据。将表达式更改如下:
global vector $collisionData[];
if (collisionU != -1) {

if (particleId%5 == 0) $collisionData[size($collisionData)] = collisionU, collisionV, frame ;
lifespanPP = 0;

这样就可以减少一些不必要的计算。我们也可以在一个locator上添加一个属性,用来控制它。

  选择rippleControls locator modify-add attribute

  我们将用一个ramp纹理来产生水的波纹。先来看看ramp

  现在新建一个ramp,更名为rippleRamp,删除这个ramp的place2dTexture。为ramp写一个表达式rippleRamp.vCoord=.5;
  把ramp下面的颜色调成黑色,上面的颜色调成白色,中间的删除。将ramp贴到水面的材质的颜色上。
  再建一个samplerInfo 节点,更名为si。
  将前面的表达式改成下面的:
global vector $collisionData[];
if (frame2) clear $colwww.Tulaoshi.comlisionData;

int $i;
float $amplitude;
float $totalAmplitude = 0;

// control variables
float $frequency=100;
float $decay=4;
float $timeDecay=.01;
float $ampMult = .5;
float $speed = .25;

for ($i=0; $i size($collisionData); $i++) {

vector $data = $collisionData[$i];

float $tdist = (

12下一页
展开更多 50%)
分享

猜你喜欢

maya制作水波纹效果

设计软件 平面设计软件 广告设计软件
maya制作水波纹效果

PS滤镜制作水波纹

PS
PS滤镜制作水波纹

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Photoshop制作蓝色水波纹

PS PS基础 ps平面设计教程 ps去水印教程
Photoshop制作蓝色水波纹

教你制作独特的水波纹

PS PS基础 ps平面设计教程 ps去水印教程
教你制作独特的水波纹

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

怎么使用ps制作水波纹

网络
怎么使用ps制作水波纹

滤镜制作制作抽象3D水波纹

PS PS基础 ps平面设计教程 ps去水印教程
滤镜制作制作抽象3D水波纹

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Photoshop调出室内人物相片梦幻的暗紫色教程

Photoshop调出室内人物相片梦幻的暗紫色教程

maya中女孩头像的建模过程

maya中女孩头像的建模过程
下拉加载更多内容 ↓