58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
"""
|
||
|
版权所有: 深圳时光科技有限公司
|
||
|
联系方式: q.100@qq.com
|
||
|
创建日期: 2023/08/08
|
||
|
"""
|
||
|
|
||
|
import maya.cmds as cmds
|
||
|
|
||
|
def sg_transfer_maps():
|
||
|
"""
|
||
|
传递所有LOD级别网格的材质映射
|
||
|
"""
|
||
|
# 处理头部相关网格的LOD级别
|
||
|
for i in range(1, 8):
|
||
|
# 获取当前LOD级别的网格索引列表
|
||
|
mesh_indices = cmds.SGGetMeshes(lod=i)
|
||
|
|
||
|
# 处理前9个网格
|
||
|
for j in range(9):
|
||
|
mesh = cmds.SGGetMeshes(m=j)
|
||
|
if cmds.objExists(mesh):
|
||
|
# 获取网格类型前缀
|
||
|
mesh_type = mesh.split('_')[0]
|
||
|
|
||
|
# 查找相同类型的LOD网格
|
||
|
for m in mesh_indices:
|
||
|
lod_mesh = cmds.SGGetMeshes(i=m)
|
||
|
if lod_mesh.startswith(mesh_type):
|
||
|
lod = cmds.SGGetMeshes(m=m)
|
||
|
# 传递材质
|
||
|
cmds.transferShadingSets(
|
||
|
mesh,
|
||
|
lod,
|
||
|
sampleSpace=0,
|
||
|
searchMethod=3
|
||
|
)
|
||
|
|
||
|
# 处理身体网格的LOD级别
|
||
|
body = cmds.SGGetMeshes(m=50)
|
||
|
if cmds.objExists(body):
|
||
|
# 处理身体的3个LOD级别
|
||
|
for i in range(1, 4):
|
||
|
body_index = 50 + i
|
||
|
lod = cmds.SGGetMeshes(m=body_index)
|
||
|
# 传递材质
|
||
|
cmds.transferShadingSets(
|
||
|
body,
|
||
|
lod,
|
||
|
sampleSpace=0,
|
||
|
searchMethod=3
|
||
|
)
|
||
|
|
||
|
# 如果直接运行此脚本
|
||
|
if __name__ == '__main__':
|
||
|
sg_transfer_maps()
|