NewsRhzhi | 先创资讯 | 旧版入口
rhzhi.net
网站首页 | NewsRhzhi | 先创资讯 | 操作系统 | 工具软件 | 办公软件 | 网站设计 | 组网专栏 | 平面设计 | 多 媒 体 | 程序开发 | 硬件资料 | 聊天软件
您现在的位置: 先创网 >> 媒体动画 >> Maya >> 文章正文
Maya 硬件渲染粒子与软件渲染元素结合(5)
网络文摘
2005-10-16 11:48:28文/佚名
    

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 一个值。

打印此页 投稿与建议 返回顶部
栏 目 索 引
软件应用 SOFTWARE
Win XP | NT/2003
Win2000 | DOS/Win9x
PowerPoint | Office
Excel | Word
网络软件 | 实用软件
媒体软件 | 系统软件
常用软件 | 办公软件
聊天软件 | 网络安全
新软试用 | Vista
设计在线 DESIGN
Dreamweaver | 3DMax
Photoshop | Flash
平面设计 | 网页设计
多 媒 体 | 精品画廊
精彩专区 SPECIAL
Q Q 专区 | 热门专题
组网玩网 | 程序开发
应用集锦 |

没有任何图片文章
相关文章
关于我们 - 联系方式 - 合作伙伴 - 网站大事记 - 网站地图 - 我要投稿
Copyright ©1997-2008 先创网 All Rights Reserved.
先创科技 版权所有