You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maya Python网格相交检测触发TypeError: Object is invalid问题求助

Maya网格相交检测代码报错修复方案

错误原因

报错# Error: TypeError: file <maya console> line 14: Object pSphere1 is invalid #的核心诱因有3个:

  1. pmc.listRelatives返回的是PyNode类型对象,而原生cmds.polyCBoolOp接口只接收字符串格式的节点名称,直接传入PyNode会被识别为无效对象
  2. 你没有给polyCBoolOp开启保留原始网格的参数,布尔运算执行后会自动删除输入的两个原始网格,第一次循环结束后pSphere1已经被删除,第二次循环调用时自然报错无效
  3. 直接使用undo回退操作风险高,很容易误删原始场景数据,也可能打断节点引用逻辑

修复后代码

import maya.cmds as cmds
import pymel.core as pmc

def check_mesh_intersection():
    mesh_list = pmc.ls(type="mesh")
    # 过滤掉中间产物、隐藏网格,只取可见的可渲染网格
    valid_meshes = [m for m in mesh_list if m.isVisible() and not m.isIntermediate()]
    char_transform = pmc.listRelatives(valid_meshes, parent=True)
    # 转成字符串名适配cmds接口
    transform_names = [t.name() for t in char_transform]
    
    if len(transform_names) < 2:
        print("场景中有效网格不足2个,无需检测")
        return
        
    # 逐对检测所有网格的相交情况
    for i in range(len(transform_names)):
        for j in range(i+1, len(transform_names)):
            mesh_a = transform_names[i]
            mesh_b = transform_names[j]
            # 执行交集布尔,保留原始网格
            bool_result = cmds.polyCBoolOp(mesh_a, mesh_b, op=3, n="intersection_temp", ch=1, keepOriginalMeshes=1)
            if not bool_result:
                print(f"{mesh_a} 和 {mesh_b} 布尔运算失败,跳过检测")
                continue
            result_mesh = bool_result[0]
            # 取结果顶点数量
            vtx_count = cmds.polyEvaluate(result_mesh, vertex=True)
            # 删除临时生成的交集网格
            cmds.delete(result_mesh)
            # 输出结果
            if vtx_count > 0:
                print(f"相交检测:{mesh_a} 和 {mesh_b} *存在相交*")
            else:
                print(f"相交检测:{mesh_a} 和 {mesh_b} 无相交")

check_mesh_intersection()

修复点说明

  • 统一把PyNode转成字符串名称传入cmds接口,避免类型不匹配报错
  • 新增keepOriginalMeshes=1参数,布尔运算后不会删除原始网格,避免原物体丢失报错
  • 新增有效网格过滤逻辑,跳过隐藏、中间节点网格,减少无效运算
  • 把循环逻辑改成逐对检测所有网格的组合,避免漏检
  • 不再使用undo回退,直接删除临时生成的交集节点,操作更安全
  • 用polyEvaluate直接取顶点数量,比调用getPoints更高效稳定

内容的提问来源于stack exchange,提问作者galaxy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:45:01