python - 获取着色器分配给的网格的名称

标签 python geometry maya

如何使用 python 获取分配给着色器的网格的名称?

例如,lambert02 --> AreaA_01_geo, lambert03 --> AreaA_03_geo, lambert04 --> AreaA_04_geo

我试过用

Shader = cmds.ls(type = 'surfaceShader')
for i in Shader:
    con = mc.listConnections('%s.outColor' % i)
    name = cmds.listConnections(Shader, type="mesh")

但是我无法从 name 变量中得到任何东西

最佳答案

着色器连接到一个或多个包含分配的着色集。所以这不是 1:1 的分配,而是一对多,然后又是一对多(当然你不会经常看到它)。请注意,当您只需要一个 namespace 时,您使用了 2 个 namespace 。

import maya.cmds as mc

Shader = mc.ls(type = 'surfaceShader')
for i in Shader:
    con = mc.listConnections('%s.outColor' % i)
    names = mc.listConnections(con, type="mesh")
    print i, "->", ", ".join(names)

关于python - 获取着色器分配给的网格的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24301989/

相关文章:

python - Visual Studio Code Intellisense 非常慢 - 我能做些什么吗?

css - SVG - 具有笔划宽度的圆圈未填充 Chrome

Swift 函数不更新绘图

ios - 用贝塞尔曲线绘制圆弧

three.js - Maya 导出到 Three.js JSON

python - Maya 中多个对象的顶点中心在哪里?

python - 为什么在使用 Python 2.7.11 IDLE 时无法保存中文文件?

python - 改变python中时间序列的格式?

python - 将 random.choice 与 if/elif/else 语句一起使用

maya - 如何让所有节点都受到 Maya 中某个节点的影响?