66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
#!/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 # 忽略可能的父子关系错误 |