Maya Python 更新属性
Maya Python updating attributes
我有 3 个属性,其中 2 个将一起用于确定第 3 个的值。
三角函数 - 用户选择他们想要使用的三角函数。现在只有 sin 和 cos
弧度 - 用户输入三角函数的弧度值。
output - 该值将连接到噪声纹理上的属性。
我的问题是如何设置它以便当我更改 "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 )
我有 3 个属性,其中 2 个将一起用于确定第 3 个的值。
三角函数 - 用户选择他们想要使用的三角函数。现在只有 sin 和 cos
弧度 - 用户输入三角函数的弧度值。
output - 该值将连接到噪声纹理上的属性。
我的问题是如何设置它以便当我更改 "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 )