如何在 Python 脚本中为 Autodesk Maya 2016 中的对象添加颜色?
Posted
技术标签:
【中文标题】如何在 Python 脚本中为 Autodesk Maya 2016 中的对象添加颜色?【英文标题】:How to add a color to an object in Autodesk Maya 2016 in Python scripts? 【发布时间】:2015-10-11 16:39:47 【问题描述】:我是 Autodesk Maya 的新手。 我在互联网上查找了一些有关如何在 python 脚本中命令的详细信息,以在选择对象时更改其颜色。 我知道如何查看选定的对象,但是,我没有成功更改颜色。 我使用了这个功能 -
enter code here
'result = cmds.ls(orderedSelection =True)
Trans = result[0]
cmds.color(Trans,userDefined =8 ) '
当我按下一个对象时,它被选中,但它的颜色没有改变。
如果你能帮助我会很有帮助.. :)
【问题讨论】:
你想换什么颜色?线框颜色还是整个材质颜色? 您好,感谢您的回答。 我想改变整个颜色。确切的颜色并不重要,但我们可以说红色...... 【参考方案1】:这是一个大致的方法:
import maya.cmds as cmds
selections = cmds.ls(sl=True)
for sel in selections:
# get shape of selection:
sel_shape = cmds.ls(o=True, shapes=True)
# get shading groups from shape:
shadingGrps = cmds.listConnections(sel_shape,type='shadingEngine')
# get the shaders:
shaders = cmds.ls(cmds.listConnections(shadingGrps),materials=True)
# change the color of the material to red
cmds.setAttr(shaders[0]+".color", 1, 0, 0, type="double3")
选择你想要的并运行脚本。
注意:如果多个对象共享相同的材质,选择一个会改变所有其他对象的颜色。
(如果你想在不运行脚本的情况下选择对象时改变材质颜色,你必须看看maya python命令scriptJob)
【讨论】:
我会更好地解释它 - 我有一块由 8*8 的 polyCubs 制成的板。我想更改靠近我按下位置的 2 个立方体的颜色。在我选择另一个多维数据集或双选选定的多维数据集后,我希望这些多维数据集返回到它们的上一个。颜色。【参考方案2】:您可以使用两步过程设置线颜色:
# there are 32 wire color numbered 0 to 31
cmds.setAttr(your_object + ".displayOverride", 1)
cmds.setAttr(your_object + ".overrideColor", color)
要设置表面颜色,您必须有一种方法可以为每种材料分配单独的颜色。简单的答案是为每个对象提供自己的材质并通过设置材质的 .color 属性来控制颜色,如@Ale_32 的示例中所示。您可以按照那里的建议使用 selectionChanged scriptJob 来更改颜色。
如果您不希望周围有太多材质,您还可以创建一个着色器,使用tripleShadingSwitch 节点来驱动其颜色。 TripleShadingSwitch 将为您的每个对象提供输入,您可以使用开关中对象的索引直接设置颜色:
def set_indexed_color(switchNode, index, color):
cmds.setAttr(switchNode+ ".input[%i]" % index, *color)
# note: that asterisk is important, since color is a 3-piece
# value like [1,0,1]
如果你不是手动设置,你可以找出传入的对象正在使用什么
def get_input_shapes(switchNode):
input_count = cmds.getAttr(switchNode + ".input", size=True)
results =
for item in range(input_count):
inshape = cmds.listConnections(switchNode + ".input[%i].inShape" % item)[0]
results[inshape] = item
return results
这会给你一个字典,将形状映射到它们的索引号
【讨论】:
以上是关于如何在 Python 脚本中为 Autodesk Maya 2016 中的对象添加颜色?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 脚本中为导入的类获得相同的范围? [复制]
在 Autodesk Forge Viewer 中为对象着色的最佳方法
Havok Vision 游戏引擎:在 Visual Studio 中为 Android 编译 Autodesk Scaleform