Maya Python skinCluster返回类型不是字符串?

2024-09-29 21:48:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着检查一个物体上是否有一个skinCluster。我的代码很基本。下面是一个例子:

cmds.select(d=True)
joint = cmds.joint()
skinnedSphere = cmds.polySphere(r=2)
notSkinnedSphere = cmds.polySphere(r=2)

skinTestList = [skinnedSphere, notSkinnedSphere]

# Bind the joint chain that contains joint1 to pPlane1
# and assign a dropoff of 4.5 to all the joints
#
cmds.skinCluster( joint, skinnedSphere, dr=4.5)

for obj in skinTestList:

    objHist = cmds.listHistory(obj, pdo=True)

    skinCluster = cmds.ls(objHist, type="skinCluster")

    if skinCluster == "":
        print(obj + " has NO skinCluster, skipping.")
    else:
        print obj, skinCluster
        #cmds.select(obj, d=True)

我的问题是,即使找不到skincluster,它仍然会输出“obj,skincluster”而不是找不到skincluster的错误。在

我以为skinCluster会返回一个字符串。所以如果字符串是空的,它应该打印出错误而不是“obj,skincluster”。在

任何帮助都将不胜感激!在


Tags: thetotrueobjselectprintcmdsjoint
1条回答
网友
1楼 · 发布于 2024-09-29 21:48:48

这是一个经典的Maya问题,问题是Maya经常希望给您列表,而不是单个项目,即使您知道结果应该是单个项目。这意味着您最终要编写一堆代码,要么从一个项目列表中获取一个项目,要么为了避免由于试图将索引放入空列表而导致的错误。在

你已经掌握了基本知识,是== ""把你搞砸了:

for obj in skinTestList:
     objHist = cmds.listHistory(obj, pdo=True)
     skinCluster = cmds.ls(objHist, type="skinCluster") or [None]
     cluster = skinCluster[0]
     print obj, cluster

or [None]保证您将始终得到一个包含内容的列表,因此可以安全地使用[0]来获取单个值。None在这里是一个很好的返回值,因为(正如注释中所指出的),您可以if cluster:并跳过空值。在

相关问题 更多 >

    热门问题