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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:52:23