有人可以帮我解决这个简单的脚本。
我只是想应用数组中的材质颜色。
这就是我现在所拥有的。
如何链接以便我的素材2(" colors2")查找值$dp_matColor[3]
,$dp_matColor[4]
,$dp_matColor[5]
?
看起来我需要一个if语句,但不确定我需要添加什么条件。
BTW我将有两种以上的材料
我的最终目标是根据$list_of_names[]
创建按钮,并从$dp_matColor[]
获取背景颜色。
当我点击时,它将通过使用相同的数组创建基于下面for循环的材料。
目前,我可以通过为每种颜色设置一个程序来实现这一点,但是有很多重复的脚本。
string $list_of_names[] = {"color1", "color2"};
float $dp_matColor[] = { 1.0, 0.5, 0.5,0.5, 0.5, 1.0};
for ($eachName in $list_of_names){
shadingNode -asShader VRayMtl -n $eachName;
setAttr ($eachName + ".color") -type double3 $dp_matColor[] $dp_matColor[] $dp_matColor[];
}
答案 0 :(得分:0)
如果你使用python,你可以构建你的数据,以便更容易地循环遍历它:
import maya.cmds as mc
data = [('color1', (1.0, 0.5, 0.5)), ('color2', (0.5, 0.5, 1.0))]
for name, values in data:
shader = mc.shadingNode(asShader='VRayMtl', n=name)
mc.setAttr('%s.color' %shader, values, type='double3')
我没有对其进行测试以确保其有效...您可能需要将值分别设置为:values[0], values[1], values[3]
。您还可以使用字典来存储数据,或者创建2个彼此同步的列表......以及开启和开启(这么多选项......)
但是尝试用梅尔来做,这可能会有效(因为我已经使用了梅尔已经有一段时间了......所以请原谅我,如果它不起作用......但概念就在那里......) :
string $list_of_names[] = {"color1", "color2"};
float $dp_matColor[] = { 1.0, 0.5, 0.5,0.5, 0.5, 1.0};
for (i=0;i<size($list_of_names);i++){
shadingNode -asShader VRayMtl -n $list_of_names[i];
int $index = i * 3;
setAttr ($list_of_names[i] + ".color") -type double3 $dp_matColor[$index] $dp_matColor[($index+1)] $dp_matColor[($index+2)];
}