[小脚本] maya 命令行常用操作

其实这些代码大部分是从 chatgpt 中生成的。

骨骼命名

import maya.cmds as cmds

def rename_bones():
    selected_bones = cmds.ls(type="joint")  # 获取选中的骨骼

    for bone in selected_bones:
        if "_" in bone:
            new_name = bone.split("_")[0]  # 获取下划线前面的部分作为新的骨骼名称
            cmds.rename(bone, new_name)  # 重命名骨骼

rename_bones()

层级 rename

import maya.cmds as cmds

def rename_bones_with_suffix(bone, suffix):
    children = cmds.listRelatives(bone, children=True, type="joint") or []  # 获取骨骼的子骨骼

    for child in children:
        rename_bones_with_suffix(child, suffix)  # 递归调用,处理子骨骼
        
    new_name = bone + suffix  # 添加结尾字符串
    cmds.rename(bone, new_name)  # 重命名骨骼
    print("将骨骼 {} 重命名为 {}".format(bone, new_name))

selected_bones = cmds.ls(selection=True, type="joint")  # 获取选中的骨骼

for bone in selected_bones:
    rename_bones_with_suffix(bone, "_R")

属性赋值

左手旋转复制到右手上

import maya.cmds as cmds

def flip_z_rotation(source_bone, target_bone):
    # 获取源骨骼的旋转值
    source_rotation = cmds.getAttr(source_bone + ".rotate")[0]
    
    # 翻转旋转值的Z轴
    flipped_rotation = [source_rotation[0], source_rotation[1], -source_rotation[2]]
    
    # 将翻转后的旋转值赋值给目标骨骼
    cmds.setAttr(target_bone + ".rotate", flipped_rotation[0], flipped_rotation[1], flipped_rotation[2], type="double3")
    
    print("将骨骼 {} 的旋转值翻转并赋值到骨骼 {}".format(source_bone, target_bone))

all_bones = cmds.ls(type="joint")  # 获取所有骨骼

for bone in all_bones:
    if "_L" in bone:
        # 替换"_L"为"_R"的骨骼
        target_bone = bone.replace("_L", "_R")
        
        # 检查替换后的骨骼是否存在
        if cmds.objExists(target_bone):
            flip_z_rotation(bone, target_bone)

你可能感兴趣的:(常用代码备份,maya,动作生成)