Maya中多选USD Prims时脚本仅处理单个对象的解决方法求助
解决Maya中批量处理选中USD Prims的问题
因为pa.getSelectedDagAndPrim()仅返回第一个选中的USD对象信息,要批量处理多个选中项,你可以改用mayaUsd.lib.selection模块的getSelection()方法,它会返回所有选中USD Prims的stagePath和sdfPath元组列表。
修改后的批量隐藏脚本如下:
from mayaUsd.lib import selection as usd_sel import maya.cmds as cmds # 获取所有选中的USD Prim信息列表 selected_prims = usd_sel.getSelection() # 遍历每个选中的Prim进行隐藏操作 for stage_path, sdf_path in selected_prims: # 拼接完整的属性路径 prim_attr_path = f"{stage_path},{sdf_path}.visibility" # 设置可见性为隐藏 cmds.setAttr(prim_attr_path, "invisible")
补充说明
如果你的场景中存在混合选中常规Maya对象和USD对象的情况,可以在循环里加判断,只处理USD相关的项:
from mayaUsd.lib import selection as usd_sel from mayaUsd.lib import proxyAccessor as pa import maya.cmds as cmds # 获取Maya所有选中节点 maya_selected = cmds.ls(sl=True, long=True) for dag_path in maya_selected: # 判断当前节点是否是USD Proxy节点 if pa.isUsdProxy(dag_path): # 获取该节点对应的stage和prim路径 stage_path, sdf_path = pa.getDagAndPrim(dag_path) prim_attr_path = f"{stage_path},{sdf_path}.visibility" cmds.setAttr(prim_attr_path, "invisible")
这种方式兼容常规Maya对象和USD对象的混合选择,只会处理USD Proxy对应的Prim。
内容的提问来源于stack exchange,提问作者jaimex127
相关产品推荐
相关产品推荐

