随笔 - 633,  文章 - 0,  评论 - 13,  阅读 - 48万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

一、先打印出要重命名的内容,不真正重命名

代码:

复制代码
import bpy

for arm in bpy.context.selected_objects:
    if arm.type != 'ARMATURE':
        print("%s bu shi gu jia" % str(arm.name))
        continue
    print('Dealing with', arm.name) 
    
    for object in arm.children:
        for vg in object.vertex_groups:
            new_name = arm.name +'_'+vg.name
            print('Renaming to', new_name)

print('Done!')
复制代码

带中文注释代码:

复制代码
import bpy

# 遍历当前选中的所有对象
for arm in bpy.context.selected_objects:
    # 如果当前对象不是骨架类型,则跳过
    if arm.type != 'ARMATURE':
        continue
    
    # 打印当前正在处理的骨架对象的名称
    print('正在处理', arm.name)
    
    # 遍历骨架的所有子对象
    for object in arm.children:
        # 遍历子对象的所有顶点组
        for vg in object.vertex_groups:
            # 创建新的名称,格式为骨架名称加下划线加顶点组名称
            new_name = arm.name + '_' + vg.name
            # 打印要重命名的新名称
            print('重命名为', new_name)

# 打印完成信息
print('完成!')
复制代码

注意:要先选中骨骼,然后再运行代码

二、真正重新命名代码:

复制代码
import bpy

# 遍历当前选中的所有对象
for arm in bpy.context.selected_objects:
    # 如果当前对象不是骨架类型,则跳过
    if arm.type != 'ARMATURE':
        continue
    
    # 打印当前正在处理的骨架对象的名称
    print('正在处理', arm.name)
    
    # 遍历骨架的所有子对象
    for object in arm.children:
        # 遍历子对象的所有顶点组
        for vg in object.vertex_groups:
            # 创建新的名称,格式为骨架名称加下划线加顶点组名称
            new_name = arm.name + '_' + vg.name
            # 打印要重命名的新名称
            print('重命名为', new_name)
            
            # 将骨架的相应骨骼名称改为新的名称
            arm.pose.bones[vg.name].name = new_name
            # 将顶点组的名称改为新的名称
            vg.name = new_name

# 打印完成信息
print('完成!')
复制代码

在这段代码中,除了打印出要重命名的新名称外,还添加了实际的重命名操作。具体来说:

  • arm.pose.bones[vg.name].name = new_name 这行代码将骨架中对应顶点组名称的骨骼名称改为新的名称。这里使用了骨架对象的 pose 属性来访问骨架的蒙皮绑定信息,然后通过顶点组的旧名称找到对应的骨骼对象,并将其名称更新为新的名称。

  • vg.name = new_name 这行代码将顶点组的名称更新为新的名称。

请注意,这段代码假设骨架的骨骼名称和顶点组的名称是一致的,这样才能正确地找到并重命名对应的骨骼。如果不一致,那么重命名操作可能会失败或者产生意料之外的结果。此外,重命名操作可能会影响依赖于特定名称的动画、约束或其他设置,因此在执行这样的操作前应当谨慎。

 

posted on   大话人生  阅读(117)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2022-04-18 操作yaml-5
2022-04-18 fixture固件装饰器做用例的前后置-4
2018-04-18 pycharm(pythoon3)_django2.0_xadmin创建测试用例后台管理系统
点击右上角即可分享
微信分享提示