我创建了这个脚本,创建了两种不同颜色值的材质。如何附加此程序,以便当我点击颜色1按钮时,当我点击第二个按钮时,它会创建材质颜色1和颜色2.如果有更好的颜色实现这一目标的方法是python。请让我知道
global string $list_of_names[];
global float $matColor[];
$list_of_names = {"color1","color2"};
$matColor = { 1.0,0.355,0.5,0.545,0.5,1.0};
global proc create() {
global string $list_of_names[];
global float $matColor[];
for ($i=0; $i<`size $list_of_names`; ++$i){
shadingNode -asShader VRayMtl -n $list_of_names;
setAttr ($list_of_names[$i] + ".color") -type double3 $matColor[($i*3)] $matColor[($i*3)+1] $matColor[($i*3)+2];
}
}
window -width 150;
columnLayout -adjustableColumn true;
for ($i=0; $i<`size $list_of_names`; ++$i){
button -label $list_of_names[$i] -command "create()";
}
showWindow;
答案 0 :(得分:0)
根据您对问题的评论,这应该是您正在寻找的内容:
import functools
import maya.cmds
buttons = {
'color1': (1.0, 0.0, 0.0),
'color2': (0.0, 1.0, 0.0),
}
def button_callback(shader_color):
print shader_color
maya.cmds.shadingNode(...)
maya.cmds.setAttr(...)
w = maya.cmds.window(width=150)
maya.cmds.columnLayout( adjustableColumn=True)
for btn in buttons:
maya.cmds.button(
label=btn,
command=functools.partial(button_callback, buttons[btn])
)
maya.cmds.showWindow()
基本上这段代码与你在MEL
中做的一样,但是使用python“structure”(因为python是Maya的独立语言,有一些像functools这样的库,可以帮助你做更复杂的事情, MEL允许你做的那个)。
要了解更多相关信息,请查看google for python 2.7.10+文档(即上一版Maya中使用的文档)。
Maya也有一些关于你可以使用的python函数的文档,而不是MEL文档。