#!/usr/bin/env python # -*- coding: utf-8 -*- """ 版权所有: 清泉时代科技有限公司 联系方式: q.100@qq.com 创建日期: 2024/03/20 """ import maya.cmds as cmds def sg_automatic_grouping(): """ 自动对模型进行分组 - 处理head_lod0到head_lod7的分组 - 处理body_lod0到body_lod3的分组 """ # 处理head模型的LOD分组 for i in range(8): # 获取当前LOD级别的网格体索引列表 lod_mesh_indices = cmds.SGGetMeshes(lod=i) group_name = f"head_lod{i}_grp" # 如果分组不存在则创建 if not cmds.objExists(group_name): cmds.group(empty=True, name=group_name) # 遍历当前LOD级别的所有网格体 for mesh_index in lod_mesh_indices: # 跳过索引大于等于50的网格体(body部分) if mesh_index >= 50: continue # 获取网格体名称 mesh = cmds.SGGetMeshes(m=mesh_index) # 如果网格体存在,将其放入对应分组 if cmds.objExists(mesh): try: cmds.parent(mesh, group_name) except: pass # 忽略可能的父子关系错误 # 处理body模型的LOD分组 body_groups = [ "body_lod0_grp", "body_lod1_grp", "body_lod2_grp", "body_lod3_grp" ] # 遍历处理body的4个LOD级别 for i in range(4): body_index = 50 + i mesh = cmds.SGGetMeshes(m=body_index) # 如果分组不存在则创建 if not cmds.objExists(body_groups[i]): cmds.group(empty=True, name=body_groups[i]) # 如果网格体存在,将其放入对应分组 if cmds.objExists(mesh): try: cmds.parent(mesh, body_groups[i]) except: pass # 忽略可能的父子关系错误