Maya硬件渲染粒子与软件渲染元素结合(6)
2006-04-05 19:41:05 来源:WEB开发网V.创建尘土粒子外观
选择使用rgbPP
添加下面的到creation表示式:
//rgbPP
//
float$intensity=rand(0.6,1.0);
intensityPP=$intensity
对于rgbPP,我们将用一个HSV模式确定尘土的颜色,不用传统的红绿蓝模型。每个粒子有各自的值或亮度,粒子在一个简单的阴影技术基础上获得颜色,粒子是否改变颜色要看是否被阴影,并将保留一个完整的密度值。该信息被合成器用来单独扭曲粒子(从粒子密度)阴影。
添加下面东西到runtime表达式:
//opacityPP
//
opacityPP=opacityMultPP*opacityOrgPP*opacity;
利用通道盒里的透明度属性,使用者现在可以全部调整所有粒子物体的透明度,同时保持每个粒子的独特的opacityOrgPP。并修改粒子生命周期的透明度(使用连接到opacityMultPP的ramp)。
体积阴影
体积阴影是获得真实云和尘土效果的关键因素。体积阴影是通过粒子投射阴影到每个粒子身上而获得的(通过透明度)。不幸的是,这种技术只有在软件云粒子渲染中可以有效,而且耗时之多,令人难以置信。有成打的技术可以模仿这类效果,而且只花很少的时间。
你要用到的技术是我的一个同事EyalErez教我的,他和我一起合作制作TheKolektiv。将现在粒子所在位置和粒子“出生”的位置birthWorldPosition相比较,看现在粒子增加了多少高度,你就可以计算出一个值,粒子越低,值就越低。该技术对粒子系统来说很不错,从相对等高的高度发射的粒子不会升或者降太多(和粒子最初位置相比较)。
LEGO投射方面的“领头羊”合成器----GaryJackamuk需要一个粒子路径,这样就可以调整颜色,以和CG背景元素的阴影及灯光匹配。通常,当软件为合成渲染一个元素时候,你可以输出一个单独的shadowpass,它可以被合成器单独调整。Gray要给粒子上多少色,这要看粒子获得的阴影数量。
我们可以提供一个给粒子上色和阴影的解决办法,使它效果更好。
在AddDynamicAttributes栏里点击General按钮,到Particle栏。
1、创建birthWorldPosition属性
2、添加下面东西到runtime表达式:
//rgbPP
//
vector$pos=position;
vector$birthPos=birthWorldPosition;
float$hue=(240 120*smoothstep(-1,1,$pos.Y-$birthPos.y))/360;
rgbPP=hsr_to_rgb(<<$hue,1.0,intensityPP>>);
为了控制粒子颜色,我们规格化粒子所在位置和粒子产生位置之间的差数,该规格发生在-1和1之间,这意味着如果一个粒子比它产生的位置低于1个单位,我们就会得到一个0的值;如果高于1个单位,则会得到一个1的值,然后,这些值要被调整为沿着色轮----100蓝色和100红色之间,或者240和360之间。参考颜色选择窗口,找到其它颜色的色彩值。
粒子物体的rgbPP属性读取rgb值,而不是hsv值,所以,你需要利用hsv_to_rgb函数将hsv转换成rgb。该功能视一个矢量为输入,那也是为什么我们用<<>>来为色彩、饱和度、密度压缩这些值的原因。色彩值最好为0-1,而不是0-360,所以我们要用360来除hue值。饱和度仍为1.0,但是,你有个机会:通过修改饱和度(在你决定的值的基础上),添加路径附加消息到合成器上,最后,粒子的亮度都被考进hsv的value中。
在这一点上,仍然可以对各种各样的rumps贴图和场做大量的扭曲,以此获得你想要的外观。
打开wheeOnPath_Part6.ma文件,看看我拿出的结果。
更多精彩
赞助商链接