链接过程到每个按钮命令maya

时间:2017-10-02 17:34:52

标签: 3d maya mel

我创建了这个脚本,创建了两种不同颜色值的材质。如何附加此程序,以便当我点击颜色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;

1 个答案:

答案 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文档。