相关分类
MAYA入门教程
MAYA建模教程
MAYA材质灯光
MAYA渲染教程
MAYA角色动画教程
MAYA经典教程
MAYA场景教程
MAYA视频教程
飞特网 顶部通栏广告

Maya 硬件渲染粒子与软件渲染元素结合

刺客发布于:2012-3-10 00:17 |原作者: 飞特网络信息采编| |来自:网络收集整理
刺客
河北省 衡水市 网页设计师
发私信 + 关注
简介: 本教程向FEVTE的朋友们介绍Maya 硬件渲染粒子与软件渲染元素结合方法和具体的使用,教程介绍的方法很实用,喜欢的朋友可以学习一下!

IV. 创建尘土粒子运动

1 、重新命名 particle1 为 dustParticles

2 、设置 Particle Render Type 为 Sprites

3 、设置 Inherit Factor 为 0.2

4 、点击 play

  粒子紧随车后,注意粒子能随在车后多长距离,那些以随意爆发速度发射的粒子是怎样漂浮远去的。粒子保存属性设置为 1 ,意味着每帧保持 100% 运动。既然粒子继承了发射器 20% 的运动,粒子就收到初始的爆发速度。粒子绝不会丢失速度,会继续沿着那个方向运动。

1 、选择 dustParticles

2 、设置 conserve 为 0.9

  现在回放场景,你会看见粒子最初随着汽车运动,但是它们会很快就丢失向前运动的动力并开始落后,最后停止运动。

  降低 conserve ,你可以用场来更好地控制粒子的运动。

1 、创建一个紊乱场并指派到尘土粒子

2 、设置 Magnitude 为 100

3 、设置 Attenuation 为 0

4 、设置 Frequency 为 3

5 、点击 play

  粒子在紊乱场内继续运动并在随意方向扩展范围。紊乱场是 3D Noise ,就像一个三维程序上的纹理。将声音视为一个大理石质地的纹理,如果你动画纹理布置,你就会在空间运动三维声音。

  选择 dustControls 节点,添加一个 turbulenceRise 属性,设置其值为 0.1 。

  打开你一直在用于发射的表达式,在它的最后添加一行:

//Turbulence Rise

//

TurbulenceField1.ty=dustControls.turbulenceRise*frame;

  当你回放场景时候,你看见尘土粒子沿 Y 轴向上运动,这是因为紊乱纹理随着场的变换而向上运动,粒子继续被这些纹理吸引。

  依靠你正试图创建的尘土类型,不管它是一种细而轻的像粉笔一样的东西,还是更重的像被汽车踢起的泥土,在 Y 轴运动的紊乱场参数都会给你的粒子重力感觉:

Maya 硬件渲染粒子与软件渲染元素结合 飞特网 MAYA角色动画教程

  不像气态物质,比如烟雾或者蒸汽(固体或液体变化成一种气体并升上天),尘土会保持固体状,但它是一种非常轻的固体,可以踢到空气中,并逗留在最轻的空气流上,最后落地。尘土越厚,就越重,落地越快。要获得尘土落地运动状态,做到以下两点:

1 、创建一个重力场并指定给 dustParticles

2 、设置重力场 magnitude 为 2

  回放时候,即使紊乱场继续将粒子向上拉,粒子看起来还是更重。对于这种效果,重力场的大小与场景大小不相关。对重力场的 magnitude 调整,应该建立在你追求的外观基础上。

  粒子现在穿透了地面,如果是一个非常细小的尘土,粒子落到地面就 ok 了,但是对于一个更厚重的尘土,你希望地上尘土堆积得厚重一点。

1 、选择地面平面、粒子,并碰撞。

2 、设置 Tessenllation Factor 为 2000

3 、设置 Resilience 为 0.1

4 、设置 Friction 为 0.3

  粒子堆积在地上,它们就像是被重力拉下来的,接着又被紊乱场拉上天。赋予紊乱,粒子就像是液体在运动。

Maya 硬件渲染粒子与软件渲染元素结合
V. 创建尘土粒子外观

  几个属性一起作用,以创建一个粒子模拟外观。

Maya 硬件渲染粒子与软件渲染元素结合 飞特网 MAYA角色动画教程

粒子的生命周期

  粒子在模拟中,什么时候消失怎样消失,这在创建模拟形状和任何场一样重要。如果所有粒子以同样的速度消失,模拟就会看起来非常线性,非常假。体积效果就像烟雾和尘土用到 sprite 时,粒子的消失应该是不容易注意到的,它会在不同时间消失,而不管粒子什么时候从哪里发射出来。

  为了简化,我们将要用 lifespanRandom 模式开始:

1 、设置 lifespan Mode 为 Lifespan Random

2 、设置 Lifespan Random 为 1.5

3 、设置 Lifespan 为 2

  回放时,粒子会以随意方式消失。

Sprites-Assigning a Sprite Image Sequence

  打开属性编辑器,改变粒子渲染类型属性为 sprite 。

1 、点击 Add Attributes for Current Render Type 按钮

2 、设置 spriteScaleXPP 为 25

3 、设置 spriteScaleYPP 为 25

4 、打开 Multillster 或超图窗口

5 、创建一个 Lambert 材质

6 、添加一个纹理文件到 Lambert 材质的色彩属性

7 、将文件纹理的图像名字贴图到第一部分里你渲染过的 sprite 序列

8 、打开 Use Cache

9 、打开 Use Frame Extension

10 、第 1 帧,为 frame extension 设置一个值为 1 的关键帧

11 、第 60 帧,为 frame extension 设置一个值为 60 的关键帧(也可以是序列中的最后一幅图像 # )

12 、打开 Use Hardware Texture Cycling

13 、设置 Start Cycle Extension 为 1

14 、设置 End Cycle Extension 为 60

15 、指派 Lambert 材质到粒子

16 、打开纹理显示模式(热帧: 6 )

  回放时, sprite 是看不见的,当用硬件纹理循环时,你需要给 spritNumPP 指派一个数字,数字大小在纹理循环范围内。

  打开用于粒子的属性编辑器。

1 、在 Add Dynamic Attributes 栏下点击 General 按钮

2 、出现 Add Attubute 窗口,点击 Particle 栏

3 、选择 spriteNumPP

4 、点击 ok

5 、在 Attribute Editor 里,右键点击挨着 spritNumPP 属性的文字域,并选择 Create Ramp.

6 、在 arrayMapper1/outValuePP 域,点击鼠标右键并选择 Edit Array Mapper.

7 、设置 Min Value 为 1

8 、设置 Max Value 为 60

9 、 Ramp 节点负方向,设置 ramp 底端值为 black, 顶端为 white 。

  当你回放动画时,你会发现:直到 sprites 在汽车正后面的时候才显出来。为了修改这种现象,调整底端颜色入口的密度,增加它的值,直到你希望 sprites 出现的时候,。你也可以调整插入或者添加其他的颜色 entry 到 ramp ,以此控制粒子循环如何通过 sprites images 。

  注意:如果 sprites 图像边上有一个黑色轮廓, sprites 图像看起来就会像是燃烧的汽油或者是浓浓的烟雾。调整正在使用的文件纹理的 Alpha Offset ,设置它的值,小于 0 , -0.1 ,这样更好。另外,可以增加 colorOffset ,或者,也可以调整 sprites 的整个 alpha ,利用 color gain 或者合成包。

Maya 硬件渲染粒子与软件渲染元素结合
V. 创建尘土粒子外观

  Sprites- 调整 sprite Scale 和 Twist

  效果开始合成一起,但是还有改进的余地。当创建一个 sprite 基础上的效果的时候, sprites 顶部每个分层都赋予它最终效果。利用不同的缩放值和扭曲值并在此基础上动画,可添加角色到模拟。

  为粒子物体添加以下的动力学属性,方法和你添加 spritNumPP 属性一样:

spriteScaleXPP

spriteScaleYPP

spriteTwistPP

  在 Add Attibute 窗口 New 栏目里,保留 Float,Per Particle 属性添加以下属性:

randXPP

randYPP

randTwistPP

spriteTwistMultPP

spriteScaleMultPP

  给 spriteTwistMultPP 和 spriteScaleMultPP 贴上凹凸贴图,重新命名这些贴图,名字要能正确反映他们要连接的属性,可以命名为 spriteTwistramp , spriteScaleRamp 等等。反过来,于 spriteTwistMultPP 有联系的 rump 贴图,底端设为 black ,顶端设为 white 。

  打开粒子物体需要的 creation Expression 并键入:

//generate random numbers for X and X

//

float $randx=rand(0.3,1.3)

float $randy=rand(0.8,1.2)

//store a random number for X and Y

//

//

randXPP=$randx

randYPP=$randY

//set spriteScaleXPP and SpriteYPP

//

spriteScaleXPP=0

spriteScaleYPP=0

//set randTwistPP

//

randTwistPP=rand(-180,180)

  每个粒子 X,Y,Twist 的数值都是任意指派的,这些值会赋予每个粒子独特的特征,并会被用在 Runtime Expression 里。既然我们用 rand 功能生成值并且边缘功能返回结果总是不一样,那么,我们就在单粒子属性里保存这些值,以便以后使用。

  用 rump 给 spriteTwistMultPP 和 spriteScaleMultPP 贴图,也可将它们作为增效器,并给我们一个插值,但是,能否给我们一个 interpolation ,那就要看粒子的年龄如何。可以用常规表达式控制扭曲和放缩值,但是在控制基于时间的属性改变上,增加一个由 rump 控制的乘数,会给我们更大的控制灵活性。

  为什么用 0 值初始化 spriteScaleYPP 和 spriteScaleYPP ?因为 cg/image/ 的一个 bug , rump 在 Creation 上没有正确估算,产生了不可预料的结果。

  打开粒子物体需要的 Runtime Expression 并键入:

//set spriteScaleXPP and spriteScaleYPP

//

spriteScaleXPP =spriteScalex* spriteScaleMultPP*randXPP;

spriteScaleYPP=spriteXcaleY*spriteScaleMultPP*randYPP*randXPP

  为 sprite 渲染类型创建默认属性时, cg/image/ 添加了一个 spriteScaleX, spriteScaleY 和 spriteTwist 属性。如果没有这些属性的单粒子版本,比如 spriteScaleXPP , cg/image/ 就会用 scalar 属性代替,例如 spriteScale 。既然有了这些属性的单粒子版本,缩放版本就被忽略了。我不忽略它们,在全局增效器中,我习惯用他们作为表达式的一部分。用一个你众所周知的属性名字,这个名字不仅用在保存创建一个新属性阶段(作为增效器),也展示给使用者一个属性——具有相似的方式相似的功能。在通道盒里改变 spriteScaleX 或 spriteScaleY ,这会改变粒子总值。

在下面一行中:

spriteScaleXPP= spriteScaleY* spriteScaleMultPP*randYPP*randXPP;

spriteScaleYPP 和 spriteScaleXPP 的值大体相当,回到 creation expression, randYPP ,随意初始化一个值—— 0.8 至 1.2 之间,这会导致 sprite 在 x 轴成矩形的—— +/-20% 。

  添加下面几行到 runtime Expression :

//spriteTwistPP

//

spriteTwistPP+= spriteTwistMultPP*sign(spriteTwistPP)* spriteTwist;

  如果值是正的,用 sign 功能返回 1 ;如果值是负的,用 sign 功能返回 -1 。 spriteTwist 属性是用用默认 Sprite 属性创建的,在这种情况下,我们添加它的值到当前 sprite 的 twist 上,引起 sprite 每帧旋转。利用 spriteTwistMultPP ,你可以改变每个 sprite twist 的速率, sprite 越大,自转越慢。

  此时,你可以开始回放场景,交互式地调整被当作 spriteTwist, spriteScaleX 和 spriteSclaeY 属性创建的 rmaps 值。该阶段有很大的扭曲空间,要得到 sprites 正确的缩放和扭曲值需要花点时间,但是,利用 ramp 贴图,就可以创建一些非常有趣的效果。

  打开尘土粒子属性编辑器,在 Add Dynamic Attribute 栏点击 Opacity 按钮。

1 、为透明度创建 Per Object 和 Per Particle 属性

2 、点击 color 按钮,为色彩添加 Per Particle 属性

3 、点击 General 按钮,作为 Float,Per Particle 添加属性:

intensityPP

opacityOrgPP

opacityMultPP

4 、用 ramp 贴图为 opacityMulPP 贴图,正确重新命名。

5 、在 creation 表达式中键入

//opacityPP

//

opacityOrgPP=rand(0.1,0.4)

opacityPP=0

  用相对较低的值初始化透明度,该值保存在 opacityOrgPP 里, Runtime 表达式要用到它。

既然 spriteScaleXPP 和 spriteScaleYPP 属性已经设置 0 ,当 sprite 缩放到 0 并无法看见时,就没有必要初始化 opacityPP 一个值。

Maya 硬件渲染粒子与软件渲染元素结合
V. 创建尘土粒子外观

  选择使用 rgbPP

  添加下面的到 creation 表示式:

//rgbPP

//

float $intensity=rand(0.6,1.0);

intensityPP=$intensity

  对于 rgbPP ,我们将用一个 HSV 模式确定尘土的颜色,不用传统的红绿蓝模型。每个粒子有各自的值或亮度,粒子在一个简单的阴影技术基础上获得颜色,粒子是否改变颜色要看是否被阴影,并将保留一个完整的密度值。该信息被合成器用来单独扭曲粒子(从粒子密度)阴影。

  添加下面东西到 runtime 表达式:

//opacityPP

//

opacityPP= opacityMultPP* opacityOrgPP* opacity;

  利用通道盒里的透明度属性,使用者现在可以全部调整所有粒子物体的透明度,同时保持每个粒子的独特的 opacityOrgPP 。并修改粒子生命周期的透明度(使用连接到 opacityMultPP 的 ramp )。

11

好评
10

差评

刚表态过的朋友 (21 人)

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

  • 飞特游客

刺客
河北省 衡水市 网页设计师
+关注 发私信

最新评论

您需要登录后才可以评论和提交作业 登录 | 立即注册
本周热点文章
2020 新飞特 从心开始
关于飞特| 广告服务| 付款方式| 版权申明| 网站地图| 联系我们| 加入我们| 举报| 帮助中心| 移动版| 手机版| 飞特网

委托设计