【问题标题】:Maya Python updating attributesMaya Python 更新属性
【发布时间】:2017-12-08 22:33:52
【问题描述】:

我有3个属性,其中2个会一起用来确定第3个的值。

触发函数 - 用户选择他们想要使用的触发函数。现在只是罪和cos

弧度 - 用户输入三角函数的弧度值。

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

我的问题是如何设置,以便当我更改“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()

【问题讨论】:

  • 你有没有做过研究和尝试?
  • 您要代码示例吗?

标签: python attributes maya


【解决方案1】:

我能够找到解决此问题的方法。基本上它只是使用表达式。但如果有人知道另一种方法,我仍然很想听。

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 )

【讨论】:

    猜你喜欢
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多