Maya Python更新属性

Maya Python更新属性,python,attributes,maya,Python,Attributes,Maya,我有3个属性,其中2个属性将一起用于确定第3个属性的值 触发功能-用户选择要使用的触发功能。现在,这只是罪恶和原因 弧度-用户输入触发功能的弧度值 输出-此值将连接到噪波纹理上的属性 我的问题是如何设置它,以便在更改“Trig Function”和“Radians”的值时更新输出值 示例代码: import maya.cmds as cmds import math cmds.window(title="Simple UI in Maya", width=300 ) theMasterLayo

我有3个属性,其中2个属性将一起用于确定第3个属性的值

触发功能-用户选择要使用的触发功能。现在,这只是罪恶和原因

弧度-用户输入触发功能的弧度值

输出-此值将连接到噪波纹理上的属性

我的问题是如何设置它,以便在更改“Trig Function”和“Radians”的值时更新输出值

示例代码:

import maya.cmds as cmds
import math

cmds.window(title="Simple UI in Maya", width=300 )
theMasterLayout = cmds.columnLayout()
groupName = "testGrp"
cmds.group(empty=True, name=groupName)
cmds.addAttr(ln="WaveType", at='enum', en="sin:cos")
cmds.addAttr(ln="radians", at='double', min=0, max=10, dv=0.2, k=True)
cmds.addAttr(ln='WaveValue', at='double', dv=0)
if cmds.getAttr(groupName + ".WaveType") == "sin":
    wave = math.sin(cmds.getAttr(groupName + ".radians"))
else:
    wave = math.cos(cmds.getAttr(groupName + ".radians"))
cmds.setAttr(groupName + ".WaveValue", wave)

# Display the window
cmds.showWindow()

我找到了解决这个问题的办法。基本上,它只是使用表达式。但如果有人知道另一种方法,我还是很想听听

import maya.cmds as cmds

groupName = "testGrp"
cmds.group(empty=True, name=groupName)
cmds.addAttr(ln="WaveType", at='enum', en="sin:cos")
cmds.addAttr(ln="radians", at='double', min=0, max=10, dv=0.2, k=True)
cmds.addAttr(ln='WaveValue', at='double', dv=0)
expString = 'if ('+ groupName + '.WaveType == 0){\n'
expString += groupName + '.WaveValue = sin(' + groupName + '.radians);\n}'
expString += '\nelse {\n' + groupName + '.WaveValue = cos(' + groupName + '.radians);\n}'
cmds.expression( s=expString,
                 o=groupName,
                 n="WaveResult",
                 ae=1,
                 uc=all )

你做过研究并尝试过什么吗?你是在要求代码样本吗?