Maya 添加数值复合属性 (non-API)
Maya Adding Numerical Compound attribute (non-API)
我一直在网上寻找解决方案,但无济于事。我目前正在尝试添加一个基于索引的复合属性(即“object.attribute[0]、object.attribute[1]、object.attribute[2] 等...)类似于如何使用顶点和 uv 属性。查看文档似乎没有明确的方法来实现这一点。
尝试:
我如何定义 parent:cmds.addAttr(nodeType, ln=theParent, nc=x, at='compound')
-addAttr中复合标志的常用用法
-使用带有字符串格式的 for 循环:
for i in range(x):
cmds.addAttr(ln='object.attribute[%s]' %i, p=theParent)
-评估:
for i in range(x):
mel.eval("addAttr -ln attribute["+str(i)+"] -p theParent;")
用字符串格式化我运行进入这个错误。
# Traceback (most recent call last):
# File "<maya console>", line 2, in <module>
# RuntimeError: Error occurred during execution of MEL script
# line 1: Long name 'attribute[0]' contains invalid characters. //
此复合属性最终将包含任意数量的 Int32Array 数据类型。
我可以创建自己的节点并通过 API 创建必要的属性,但我不想创建任何额外的依赖项。
对于我的问题中的任何漏洞或不清楚的地方,我深表歉意。请询问,我可以进一步解释。
谢谢。
使用 -m
标志将父属性设置为多属性:
cmds.addAttr("polyCube1", ln = "example", at="compound", nc = 2, m=True)
cmds.addAttr("polyCube1", ln = "atx", at="float", p="example")
cmds.addAttr("polyCube1", ln = "aty", at="float", p="example")
这将 polyCube1.compound 设置为两部分属性(UV 是两部分的方式)和多属性。您可以通过索引您的 setAttr
或连接来添加对:
cmds.setAttr("polyCube1.example[0].atx", 1)
cmds.setAttr("polyCube1.example[0].aty", 1)
cmds.setAttr("polyCube1.example[1].atx", 2)
cmds.setAttr("polyCube1.example[1].aty", 2)
print cmds.getAttr("polyCube1.example[1].aty")
# 2.0
我一直在网上寻找解决方案,但无济于事。我目前正在尝试添加一个基于索引的复合属性(即“object.attribute[0]、object.attribute[1]、object.attribute[2] 等...)类似于如何使用顶点和 uv 属性。查看文档似乎没有明确的方法来实现这一点。
尝试:
我如何定义 parent:cmds.addAttr(nodeType, ln=theParent, nc=x, at='compound')
-addAttr中复合标志的常用用法
-使用带有字符串格式的 for 循环:
for i in range(x):
cmds.addAttr(ln='object.attribute[%s]' %i, p=theParent)
-评估:
for i in range(x):
mel.eval("addAttr -ln attribute["+str(i)+"] -p theParent;")
用字符串格式化我运行进入这个错误。
# Traceback (most recent call last):
# File "<maya console>", line 2, in <module>
# RuntimeError: Error occurred during execution of MEL script
# line 1: Long name 'attribute[0]' contains invalid characters. //
此复合属性最终将包含任意数量的 Int32Array 数据类型。
我可以创建自己的节点并通过 API 创建必要的属性,但我不想创建任何额外的依赖项。
对于我的问题中的任何漏洞或不清楚的地方,我深表歉意。请询问,我可以进一步解释。
谢谢。
使用 -m
标志将父属性设置为多属性:
cmds.addAttr("polyCube1", ln = "example", at="compound", nc = 2, m=True)
cmds.addAttr("polyCube1", ln = "atx", at="float", p="example")
cmds.addAttr("polyCube1", ln = "aty", at="float", p="example")
这将 polyCube1.compound 设置为两部分属性(UV 是两部分的方式)和多属性。您可以通过索引您的 setAttr
或连接来添加对:
cmds.setAttr("polyCube1.example[0].atx", 1)
cmds.setAttr("polyCube1.example[0].aty", 1)
cmds.setAttr("polyCube1.example[1].atx", 2)
cmds.setAttr("polyCube1.example[1].aty", 2)
print cmds.getAttr("polyCube1.example[1].aty")
# 2.0