python - Maya Python 更新属性

标签 python attributes maya

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

三角函数 - 用户选择他们想要使用的三角函数。现在只是正弦和余弦

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

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

我的问题是如何设置,以便当我更改“三角函数”和“弧度”的值时输出值会更新?

示例代码:

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 )

关于python - Maya Python 更新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47723127/

相关文章:

html - HTML 标签属性有 ORDER

python - numpy(Python)中按组排列的数组元素的乘积

python - 我如何在 django rest 序列化程序中批量创建

asp.net - 当我尝试强制 401 时,自定义授权过滤器总是返回 404

python - 为什么我的凸包算法返回错误的点?

swift - SceneKit - 如何获取 .dae 模型的动画?

python - 使用回调来使用类中的当前值运行函数

python - 使用 Python 和 Numpy 将 RGB 图像与自定义邻居内核进行卷积

python - 是否有解决线性方程组的python模块?

javascript - hasAttribute 与 hasOwnProperty