Maya Python: TypeError: Object is invalid
Maya Python: TypeError: Object is invalid
所以我有这段代码,我试图找出两个网格是否相交:
import maya.cmds as cmds
import pymel.core as pmc
mesh_list = pmc.ls(type="mesh")
char_transform = pmc.listRelatives(mesh_list,parent=True)
def vtxPose(mesh):
return pmc.general.PyNode(mesh).getPoints()
transform_list = iter(char_transform)
next_one = next(transform_list)
for one in transform_list:
cmds.polyCBoolOp(one, next_one, op=3, n="intersection")
vtx_list = vtxPose("intersection")
if len(vtx_list) > 0:
cmds.undo()
print("intersection found")
else:
cmds.undo()
print("no intersection found")
无论如何,当我执行它时,Maya 给出了这个错误:
# Error: TypeError: file <maya console> line 14: Object pSphere1 is invalid #
我找不到问题(我在编码方面不是很有经验,尤其是在 Maya 中:( )
我也考虑过用 OpenMaya 的 MFnMesh::allIntersections() 做同样的事情,但认为学习如何使用它可能很耗时。
所以,如果你能告诉我我的代码的问题,那就太好了;)
提前致谢
问题似乎是你混合了 pymel 和 maya.cmds。如果您将 cmds.polyCBoolOp() 更改为 pmc.polyCBoolOp() 它应该可以工作,或者如果您想使用 cmds,您可以将 pymel 对象转换为字符串。
所以我有这段代码,我试图找出两个网格是否相交:
import maya.cmds as cmds
import pymel.core as pmc
mesh_list = pmc.ls(type="mesh")
char_transform = pmc.listRelatives(mesh_list,parent=True)
def vtxPose(mesh):
return pmc.general.PyNode(mesh).getPoints()
transform_list = iter(char_transform)
next_one = next(transform_list)
for one in transform_list:
cmds.polyCBoolOp(one, next_one, op=3, n="intersection")
vtx_list = vtxPose("intersection")
if len(vtx_list) > 0:
cmds.undo()
print("intersection found")
else:
cmds.undo()
print("no intersection found")
无论如何,当我执行它时,Maya 给出了这个错误:
# Error: TypeError: file <maya console> line 14: Object pSphere1 is invalid #
我找不到问题(我在编码方面不是很有经验,尤其是在 Maya 中:( ) 我也考虑过用 OpenMaya 的 MFnMesh::allIntersections() 做同样的事情,但认为学习如何使用它可能很耗时。
所以,如果你能告诉我我的代码的问题,那就太好了;)
提前致谢
问题似乎是你混合了 pymel 和 maya.cmds。如果您将 cmds.polyCBoolOp() 更改为 pmc.polyCBoolOp() 它应该可以工作,或者如果您想使用 cmds,您可以将 pymel 对象转换为字符串。