下面的 Maya python 代码通过首先获取两个 nurbs 球体 nurbsSphere1 和 nurbsSphere2 的差异来给出 nurbs 布尔曲面,从而给出 nurbs 曲面 nurbsBooleanSurface1。然后,它获取此曲面和第三个球体 nurbsSphere3 的差异。结果,如大纲所示,是三个 nurbs 球体加上一个 surfaceVarGroup,nurbsBooleanSurface1,它“父”三个变换节点 nurbsBooleanSurface1_1、nurbsBooleanSurface1_2 和 nurbsBooleanSurface1_3。
import maya.cmds as cmds
cmds.sphere(nsp=10, r=50)
cmds.sphere(nsp=4, r=5)
cmds.setAttr("nurbsSphere2.translateX",-12.583733)
cmds.setAttr("nurbsSphere2.translateY",-2.2691557)
cmds.setAttr("nurbsSphere2.translateZ",48.33736)
cmds.nurbsBoolean("nurbsSphere1", "nurbsSphere2", nsf=1, op=1)
cmds.sphere(nsp=4, r=5)
cmds.setAttr("nurbsSphere3.translateX",-6.7379503)
cmds.setAttr("nurbsSphere3.translateY",3.6949043)
cmds.setAttr("nurbsSphere3.translateZ",49.40595)
cmds.nurbsBoolean("nurbsBooleanSurface1", "nurbsSphere3", nsf=1, op=1)
print(cmds.ls("nurbsBooleanSurface1_*", type="transform"))
Strangley(对我来说),列表命令 cmds.ls("nurbsBooleanSurface1_*", type="transform") 只产生 [u'nurbsBooleanSurface1_1', u'nurbsBooleanSurface1_2']; nurbsBooleanSurface1_3 丢失。
但是,当执行完上述代码后,打印命令
print(cmds.ls("nurbsBooleanSurface1_*", type="transform"))
重新执行,结果为[u'nurbsBooleanSurface1_1', u'nurbsBooleanSurface1_2', u'nurbsBooleanSurface1_3']。
我尝试使用 time.sleep(n) 延迟执行最终打印命令,但无济于事。我曾经想过丢失的节点可能已经分离到另一个命名空间,然后在执行块完成时重新出现(绝望,我知道!)。我已经尝试使用函数和线程(后者只是表面上)重命名球体和曲面。第一次执行时未列出的nurbsBooleanSurface1_3的原因
print(cmds.ls("nurbsBooleanSurface1_*", type="transform"))
仍然是一个谜。任何帮助将非常感激。