主题:  MAYA材质系统的Utilities工具简介(转白驹贴)

在耕田呢

职务:版主
等级:2
金币:10.0
发贴:378
注册:2002/7/4 12:10:46
#162002/8/28 10:32:13
深入了解Hsv To Rgb和Rgb To Hsv

有朋友捎话说有上面那个Hsv To Rgb和Rgb To Hsv节点工具节点讲得不是很清楚。
下面我选择一个小例子,可以更清楚地理解Hsv To Rgb和Rgb To Hsv节点的用途。以后的教程我也许会用更多的实例深入理解一下MAYA的这些工具。

这个样例的目的是设计一个材质,并且我们可以用HSV方式随意控制最后的渲染效果。
首先做一Plane然后指定一lambert材质。
建一file纹理;
建一Rgb To Hsv节点;
建一Hsv To Rgb节点;
建一setRange节点

材质的连接方法如下:
file.outColor到rgbToHsv.inRgb;
RgbToHsv.outHsv到setRange.Max;
setRange.outvalue到hsvToRgb.inHsv;
hsvToRgb.outRgb到lambert.Color

给lambert材质添加三个自定义属性:
Hue:最小值=0、最大值=255、缺省值=128,float;
Saturation:最小值=0、最大值=255、缺省值=128,float;
value:最小值=0、最大值=255、缺省值=128,float;
然后将Hue、Saturation、value分别连接到setRange的valueX、valueY、valueZ上。
将setRange的OldMaxX、OldMaxY、OldMaxZ都设置为255,OldMin和Min都为0。
用IPR渲染场景,你会发现,我们随意更改Hue、Saturation、value的值就可以改变贴图的色相、饱和度和亮度。
解释一下这个材质的实现原理:
通过前面的教程我们知道,Set Range节点是将Old Min到Old Max范围之间的值,重新映射到Min到Max的范围内。三个通道分别代表着R、G、B。
将file.outColor通过rgbToHsv节点转换为H、S、V模式,然后送入setRange节点里,这时,setRange节点的通道从左到右就等于代表H、S、V。所以我们用lambert材质的三个自定义属性分别控制setRange节点的value值,就可以改变最后渲染结果的H、S、V。
因为lambert.Color要接受RGB模式的颜色,所以我们又通过hsvToRgb节点将已经变为HSV模式的颜色转换为RGB模式的颜色。

MAYA材质系统确实具有极大的灵活性,在MAYA中,现成的东西不是太多,但它给我们提供了思想、工具、空间并指明了道路。古人说过,“受之以鱼不如授之以渔”,我以为MAYA正象一位导师,教我们方法而不是替我们写作业。

材质的连接方式如图:

图片如下:



在耕田呢

职务:版主
等级:2
金币:10.0
发贴:378
注册:2002/7/4 12:10:46
#172002/8/28 10:37:29
Hue=128;Saturation=128;value=255。
这是贴图按原来颜色正常渲染。

图片如下:

Hue=0;Saturation=128;value=255。

图片如下:

Hue=255;Saturation=128;value=255。

图片如下:



在耕田呢

职务:版主
等级:2
金币:10.0
发贴:378
注册:2002/7/4 12:10:46
#182002/8/28 10:43:45
深入了解vectorProduct节点

这是从国外网站下载的一个材质,设计得极为精巧,是用来模拟全局光效果的,我稍微添加了一点儿内容。
建一球体并指定一lambert材质,在相机的左侧面打一方向光。
建两个vectorProduct节点;
建一setRange节点;
建一ramp节点。
建一sampleInfo节点。

连接方式如下:
sampleInfo.normalCamera到vectorProduct1.input1;
vectorProduct1.output到vectorProduct2.input1;
vectorProduct2.output到setRange.value;
setRange.outvalueX到ramp.vCoord;
setRange.outvalueZ到ramp.uCoord;
ramp.outColor到lambert.ambientColor

设置方式如下:
vectorProduct1的操作方式为Vector Matrix Product;
vectorProduct2的操作方式为Dot Product;
setRange的Max、OldMax都设为1;
给lambert添加三个自定义属性:
X_Light:最小值为-1、最大值为1、缺省值为0;
Y_Light:最小值为-1、最大值为1、缺省值为0;
Z_Light:最小值为-1、最大值为1、缺省值为0;
lambert的自定义属性连接方式如下:
lambert. X_Light到vectorProduct2.input2X;
lambert. Y_Light到vectorProduct2.input2Y;
lambert. Z_Light到vectorProduct2.input2Z;

ramp的Color0为白色,Color1为黑色,Color2删除。

图片如下:



在耕田呢

职务:版主
等级:2
金币:10.0
发贴:378
注册:2002/7/4 12:10:46
#192002/8/28 10:50:32
当改变X_Light、Y_Light、Z_Light的值时,就会驱动vectorProduct2的input2的相应参数。这时,可以控制场景中的球体任何方向的受光程度。
注意场景中只有左上方一个光源。
建议初学者认真做一下。

图片如下:



白驹

职务:普通成员
等级:1
金币:0.0
发贴:2
注册:2002/7/1 11:16:57
#202002/8/28 11:12:20
谢谢qinggong版主,受累。



309

职务:普通成员
等级:2
金币:1.0
发贴:547
注册:2002/5/19 21:24:38
#212002/9/2 20:32:12
精彩