当前位置: 主页 > 平面设计 > Maya Sprite粒子应用高级教程

Maya Sprite粒子应用高级教程

  • 2022-02-05
  • 来源/作者: PS.ONEGREEN.ORG    / 佚名    
  • 9 次浏览

  首先看一下效果。

  Maya Sprite粒子应用高级教程

  人群是由sprite形态的粒子构成,我们在粒子的材质上贴上一个跑步循环的序列图片,再用表达式来控制跑动方向等参数,如图。

  Maya Sprite粒子应用高级教程

  现在我们开始吧。

  1、首先设置动画从0帧到250帧,然后创建一个Emitter,设置如下:

  Emitter Type: Volume
  Volume Shape:Cube
  Rate: 200
 
 Speed: 0
  Away From Center:0
  Away From Axis:0
  Scale X, Y, Z =4

  选择Particle设置如下:Max Count:50 (设置粒子在场景中的最大数,即存在50个粒子后将不再发射,除非有粒子消亡)

  Particle Render Type:Sprites (最重要的) 。

  Maya Sprite粒子应用高级教程

  2、给粒子一个lambert材质,为Color贴上跑步周期图片(在教程最后提供),由于提供的图片包含Alpha通道,所以自动与lambert 的Transparency 相关联了。勾选Use Image Sequence和Use Interactive Sequence Caching。

  第0

  4、 给spriteNumPP添加一个Runtime表达式(Before Dynamics或After Dynamics在这里无所谓,这里我们都用Before Dynamics):particleShape1.spriteNumPP += 1;相当于particleShape1.spriteNumPP = particleShape1.spriteNumPP +1;可以看到在前49帧,Sprite能显示动画了。

  5、我们将Particle Render Type设为Numeric,attributeName输入spriteNumPP播放动画,可以看到数值以每一帧都增加1 的方式变化,这就是我们这个表达式的作用。然后再切换回来Particle Render Type为Sprite。

  Maya Sprite粒子应用高级教程

  6、我们现在想要每50帧一个循环,即第49帧结束后又从第一张图片开始循环。现在我们再为spriteNumPP添加一个Runtime表达式particleShape1.spriteNumPP = particleShape1.spriteNumPP % 50;%即求余,返回两数相除的余数。如51%50=1;7%5=2;这时我们看到动画正确播放了。

  7、为了让每个粒子的跑动更随机化,我们为spriteNumPP添加一个Creation表达式particleShape1.spriteNumPP = rand (0,50);//这里rand 函数返回0到50间的一个随机值。

  8、同样的,我们将Particle Render Type设为Numeric,attributeName输入spriteNumPP,观察spriteNumPP数值的变化情况。

[NextPage]

  9、地面制作。建立一个40×10的Nurbs 平面,如图,随意雕刻一些起伏(自己随意),注意UV方向应和图上一致(可以按F8进入CV点层级观看UV向),以保证与后面的教程一致。

  Maya Sprite粒子应用高级教程

  10、先选择Particle,然后选择地面,设置Goal,Goal Weight 为1。

  Maya Sprite粒子应用高级教程

  这时选择Emitter,设回Emitter Type: Omin,并将particleShape1的Max Count设回-1,前面的设置只是为了便于观察,方便

图片序列设置。播放动画,观察。

  Maya Sprite粒子应用高级教程

  11、粒子寿命我们用lifespanPP来控制,选择粒子,在Lifespan Mode里选择lifespanPP only,然后在Per Particle Attributes里为lifespanPP添加一个Creation表达式particleShape1.lifespanPP = rand (6,8); 。

  12、现在我们要利用两个参数goalU 和goalV来控制粒子,同添加spriteNumPP的方式一样我们为粒子添加goalU和goalV两个属性播放动画,这时所有粒子都停在了一个点,为什么?因为我们添加了goalU和goalV,但还未为其赋值,默以则goalU=0;goalV=0;所以出现了这样的情形。

  Maya Sprite粒子应用高级教程

  13、根据地面Nurbs平面的UV向,我们为goalV添加一个Creation表达式particleShape1.goalV = rand (0,1); 即在V向上随机分布播放,如图。

[NextPage]

  Maya Sprite粒子应用高级教程

  14、现在我们想让粒子物体从视图右边跑到左边,很简单,只需为goalU建立一个Ramp来控制。右击goalU-Creat Ramp,我们可以很方便的通过改变Ramp上的滑块位置来改变粒子跑动的速度。

  Maya Sprite粒子应用高级教程

  15、现在我想让每个人有高矮胖瘦不同,让动画更自然。这需要添加spriteScaleXPP和spriteScaleYPP两个粒子属性(方法同上),然后创建Creation表达式particleShape1.spriteScaleXPP = rand (.75,1.25);particleShape1.spriteScaleYPP = rand (.9,1.1); 。

  16、差不多像了,现在需要做的是让每个人的脚踩到地面上,而不是让地面从腰间穿过。这时我们又需要添加一个goalOffset属性了,顾名思义,goalOffset就是goal的Offset(偏移),它的参数类型是vector(向量),如goalOffset=<<x,y,z>>

  添加Creation表达式partic

leShape1.goalOffset = <<0, particleShape1.spriteScaleYPP*.5, 0>>;因为之前的地面是从每个人的Y轴中心穿过,即spriteScaleYPP的中点,所以我们只需将粒子在Y轴上移动spriteScaleYPP的一半(即乘以0.5)。现在基本上正确了。

  Maya Sprite粒子应用高级教程

  17、为粒子添加不同的颜色。当然我们可以为Color属性添加一个Per Object Attribute来整体控制,这里我们使用Per Particle Attribute,然后为rgbPP加入一个Ramp,Input V选择rgbVPP,因为Particle’s Age用来控制goalU的ramp属性了,所以这里用rgbVPP。

[NextPage]

  Maya Sprite粒子应用高级教程

  18、设置ramp的Interpolation为None,随便调一些颜色。

  Maya Sprite粒子应用高级教程

  19、然后为rgbVPP添加Creation表达式particleShape1.rgbVPP = rand (0,1);这样粒子产生的随机的颜色,可以通过滑块位置来控制该颜色的显示比例。

  Maya Sprite粒子应用高级教程

 << 上一页  [11] [12] [13] [14] 下一页