maya2009教程:maya nparticles制作烟雾特效
在maya 2009中这是一套全新的粒子系统,我们称之为 maya® nparticles. nparticles 使用 maya® nucleus™系统 , 这套系统与我们之前接触过的ncloth系统极为相似。 nucleus 系统的最大特点在于,粒子不但可以和ncloth布料进行碰撞,而且支持粒子碰撞与粒子堆积效果。 你可以使用基于nucleus系统的 nparticles 进行nconstraints(新的动力学约束系统)来创造出更多的粒子特效,这和以前的粒子系统大相径庭。就好比其他nucleus物体, nparticle 可以被分配到一个系统进行迭代方式求解。
图1
此外,基于nucleus的动力学系统, nparticles 同样可以以maya 经典粒子系统进行goal运算, 几何体替代, 以及精灵替代特效. nparticles也可以操纵外部非nucleus力场,例如风场与重力场等。
图2
nparticle 碰撞
当nparticles创建时,它们能够自动撞击ncloth布料,被动的对象,和其他nparticle粒子. 当nparticles 与ncloth进行碰撞时, 你可以对nparticles进行立场添加以驱使ncloth进行形变. 例如, 你可以创建一个 nparticle 制作的雨滴特效溅在一个由ncloth 制作的雨伞上,来模拟雨中前行特效. nparticles 同样支持自碰撞, 也就是说, nparticles可以与来自同一发射器的nparticle对象产生碰撞和互动. nparticle 同样也只能在 nparticles 与 ncloth 或被动物体之间进行碰撞。 ( 当然也必须是在同一maya nucleus 系统下)
nparticle 约束
你可以使用 nconstraints 去约束与控制nparticles的运动路径 以及 nparticle 与其它的nucleus 系统影响物. 例如,您可以约束nparticles 到一个有动画的ncloth或一个nmesh被动物,使粒子产生喷溅、燃烧以及模拟烟雾的效果。. nparticles同样可以被transform(位置), component to component(元素间), point to Surface(店面), slide on Surface(面滑行), 以及force field(强制场)等约束。
图3
每粒子属性的内部渐变
nparticles 都会有一个每粒子属性内部渐变在nparticleshape 节点上. 内部渐变可以控制每个粒子的半径、质量、颜色、不透明度以及自发光属性. nparticle 的工作原理类似于 maya 的ramp纹理, 但是可以为变化范围与输入极值以及随机乘数输出极值提供额外的控制。
当你想用表达式进行控制时,每粒子属性的内部渐变节点同样可以被删除。
nparticles与强制场
nparticles 提供强制场。 强制场属性可以让你的粒子与ncloth物体产生吸附或排斥。 npartice 强制场以 场强决定影响范围。当然,前提是这个场的影响物必须是激活状态。
图4
nparticles的流体解算
nparticles 提供流体结算属性,用来模拟水流、岩浆等流体效果. 用来控制流体效果的属性有很多,比如 viscosity(粘稠度), 这样你既可以创建出湍急的瀑布,也可以制造出滚烫粘稠的熔岩。
图5
nparticle 转换多边形
当一个nparticles形成一个形态,并且当我们想把这个静止的融合形态转换成为一个多边形物体时,maya 2009支持nparticle向多边形转换。 nparticle 转换的多边形网格和一般多边形一样可以编辑与命令操作. 在转换操作前,你可以对精度进行控制. nparticle 输出网格同样可以模拟类似realflow的mesh输出。
案例准备
为了保证工作流程顺利稳定的进行,请按下列操作进行准备:
请自备一个maya场景,这里我使用已经制作好的场景,该场景文件包含了已经赋予材质的模型,包括桌子、烟灰缸、香烟以及所有多边形网格。
图6
创建nparticle与发射物体
1. 选择 nparticles > create nparticles, 并且勾选 cloud云方式创建。
图7
勾选 cloud 模式时预设了很多 nparticle的形状节点属性用来创建例如沿、沙尘以及雾等效果的参数。
2. 创建一个nparticle 发射物体, 选择 nparticles > create nparticles > create emitter >
emitter options (create) 窗口出现。
图8
3. 在emitter options (create) 窗口中, 选择edit > reset settings重置设置。
4. 在 emitter name 框中, 输入 emitter_smoke. 当你在outliner中想选择物体发射器的属性并调整时,发射器的命名就显得尤为重要了。
5. 在solver 列表中, 选择 create new solver创建新的解算器. 这项操作可以为你的nparticle系统创建一个从属关系的核心解算器。
6. 在emitter type列表中,选择 volume体积类型. 当您尝试从一个特定区域均匀喷出粒子,体积类型发射非常适合模拟从香烟顶部发射的效果。
7. 设置rate (particle/sec) 发射率为100. 这个参数设置的数目表示粒子排放的速率而不是速度。这直接影响场景中粒子发射的密度。rate值越高,排放的烟雾就会越浓密。
8. 在distance/direction attributes (距离、方向属性)卷展栏中, 做以下调整:
• 设置directionx 为 0.
• 设置 directiony 为 1.
direction 表示发射器发射的粒子与发射器之间的相对位置与方向. 当 directiony 设置为 1时, nparticle 将会沿着y轴进行发射粒子,用来模拟烟雾在空气中飘的方向。
9. 在basic emission speed attributes卷展栏中, 设置speed random 为 5. 当速度随机值设置为一个值时,发射产生的随机速度将会影响每个nparticle 系统。
图9
10. 在volume emitter attributes卷展栏中, 做如下操作设置:
• 在volume shape 列表中, 选择 sphere.
• 设置 volume sweep 为 180.
此设置将会创建一个半球形发射,用来模拟香烟顶部的形状。
11. 在volume speed attributes 卷展栏中, 做以下操作:
• 设置along axis 为 1.
• 设置random direction为 0.1.
这将创建一些方向上的噪波随机值发射出的n粒子并且促使它们可以形成一个锥状发射。
• 设置directional speed 为 10.
这个设置将会添加一个方向上的速度,它对xyz三个轴以及所有类型的体积发射器都有效。
12. 点击create创建发射器.
产生一个 emitter_smoke1, nparticleshape1, 以及一个nucleus1 节点出现在属性编辑器中 。
图10
nparticle 发射器的移动
当你开始进行动力学解算的时候, 你将会发现nparticles正在原点开始喷射,这时你需要把发射器移动到香烟的顶部。
移动nparticle 发射器
1. 在outliner大纲视图中, 选择emitter_smoke1。
2. 选择display > ui elements > channel box/layer editor 以显示the channel box通道栏。
3. 在channel box通道栏中输入以下数值:
• translate x: 49.3
• translate y: 120
• translate z: -27.3
• rotate y: -90
• scale z: 1.5
4. 在场景视图中, 推拉摇移你的视图以便更近的观察香烟顶部。现在nparticle发射器已经被移动到香烟的顶部了。
5. 进行动力学解算。
nparticles现在已经从香烟的顶部喷射出烟雾了. 但是其大小和颜色都是默认值. 在下一节中您将会设定nparticle的大小,使粒子的外观更像烟。
图11
编辑生命值与粒子半径
你开始播放解算动力学运算时, 你将会发现nparticles 并没有在升到空中时消散掉. 这是因为nparticles寿命还没有被指定. 使用nparticle lifespan attributes(生命周期属性) 你就可以调节nparticle 何时死亡。 你同样可以设置nparticle 的粒子半径以及粒子半径随生命值的变化而如何变化。
设置nparticle 的生命周期
1. 打开outliner大纲窗口, 选择nparticle1。
2. 打开attribute editor属性编辑器, 点击nparticleshape1选项卡。
3. 在lifespan中, 在lifespan mode中选择 random range。
4. 进行动力学解算。
nparticles 现在发射出来以后很快就消亡了. nparticle lifespan是一个以秒为单位的数据, 这就意味着如果lifespan 为1.0时, nparticles将会在1秒钟之后消亡。
图12
5. 设置lifespan 为 10。
6. 讲时间滑条退回第一帧,并且从新进行动力学解算. nparticles 将会在其喷射出10秒钟后消亡. 在本教学案例中,我们设置lifespan 为 20。
7. 让我们给nparticle’s 的生命周期加入一些随机值,这样我们设置lifespan random为15。
8. 将时间滑条退回第一帧并从新播放解算。
nparticle的死亡已经随机了,但是 nparticle 并不像烟一样浓密. 你可以使你的 nparticle 变得更密集一点,这样我可以增大nparticle 的radius。
图13
为了使效果更像一个烟雾的效果, nparticles 必须在它们升到空气中时逐渐的散开。你可以使用radius scale ramp这个值去增加每粒子半径, 直到他们看起来像是在空中消散的效果。
设置nparticle尺寸
1. 在particle size中,设置radius为1.0。
2. 在radius scale中, 点击一个位置,这样可以增加一个可调节的点。
图14
创建一个新的标记点,这样你就可以调节它的位置与大小. 举例来说,每个选定的价值指定一个尺度值为nparticle对象的radius属性。默认情况下ramp规定一个值为1, 也就是说只有一个值标记在ramp上的时候,这个值全部取1. 再设置一个标记点为0.5那么每个粒子随着时间的变化,半径会从1降低到0.5进行类似消散的渐变动画。
3. 选择第一个标记点设置 selected position 为 0, 并且selected value为0.50。
4. 点击第二个标记点. 设置selected position为1, 并且selected value为1.5。
图15
5. 让nparticles的半径沿自身寿命而变化, 设置radius scale input为normalized age. 当normalized age被使用时, 每粒子半径就会随着nparticle的生命周期变化而变化。
6. 设置interpolation为smooth。
7. 进行动力学解算. 你可以继续调整曲线,直到效果满意为止。
图16
8. 对每粒子半径添加随机值, 设置 radius scale randomize为 0.25。
设置nparticle 材质属性
为了将nparticles调节的更像烟雾,你可以调节不透明度以达到更类似于在空气中消散的效果,这就好比我们调节粒子寿命时那样进行调节。
如nparticle半径属性, nparticle的颜色与不透明度同样可以在每粒子属性中进行设置。使用nparticle 的 shading ramps, 就可以调节每粒子颜色与不透明度。
设置nparticle颜色属性
1. 在outliner大纲窗口中, 选择nparticle1.
2. 打开attribute editor, 点击nparticleshape1卷展栏.
3. 在shading选项卡中, 打开 color 栏.
4. 设置其最左侧的标记为白色.
图17
5. 设置中间色为灰色, 或者调整色彩模式为hsv (hue-saturation-value):
• h: 0
• s: 0
• v: 0.5
播放解算你的粒子,这样你会发现它更像一个烟雾的效果.
图38
6. 点击颜色曲线中最右侧的标记点,并且打开颜色选择器.
7. 在颜色选择器中选择一个更深的灰色,或者调整hsv (hue-saturation-value) 为:
• h: 0
• s: 0
• v: 0.25
8. 设置color input为normalized age. 当每个nparticle在其发射后, 它的颜色会像之前调节的颜色曲线一样从白色变为深灰色 。
9. 为了将nparticles的颜色像它们的寿命一样融合的更好,我们需要做以下操作:
• 设置interpolation为smooth(每个标记点都要做).
• 设置color randomize 为0.75.
当你进行动力学解算时, 会发现烟雾好像有点过于密集和厚实. 为了把它变得更薄更透一些, 我们就可以调整nparticle的不透明度.
图39
设置nparticle的不透明度
1. 在opacity scale 选项中, 点击渐变曲线图, 并且设置opacity曲线图上的三个标记点:
• position: 0, value: 1
• position: 0.63, value: 0.22
• position: 1, value: 0
2. 设置interpolation为smooth(每个标记点都要做).
3. 设置opacity scale input 为 normalized age.
图40
4. 播放并进行动力学解算.
在本案例中, 你可以使用nucleus系统的风去影响烟雾以便它在上升的时候有青烟飘渺的效果. 无论哪个nucleus影响物体(ncloth物体或者其他nparticle物体) t被赋予同样的nucleus结算系统都同时被强制场(风场)所影响.
设置nucleus wind风到你的场景中.
1. 打开attribute editor,点击nucleus1 选项卡.
2. 在gravity and wind栏中, 设置wind speed 为2.0. wind speed 决定了风的强度与大小. 值越大表示风速越强.
3. 设置风的方向, 需要做以下设置:
• 设置wind direction 为 1 (x axis).
• 设置wind direction 为0 in(y axis).
• 设置wind direction为 -1 (z axis).
4. 设置wind noise为3.0. 这个操作是为了增加风的随机效果.
5. 播放并解算动力学.
图41
现在我们的烟雾已经在空气中自由的扩散了.
你同样可以调整烟雾的解算设置, 比如提高nparticle发射速率(rate)为150 或者调节radius scale的变化曲线图, 颜色、不透明度的变化曲线图等.
本3d教程完。