python 调用 blender 脚本实现缩放,旋转,删除多余节点,重心点修改

import bpy,math


# 清空场景中原有的所有对象
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()

# 导入 BVH 文件
bpy.ops.import_anim.bvh(filepath=r"D:\zrx\EDGE\SMPL-to-FBX\fbx_retarget\test_gaoji.fbx_rtg.fbx.bvh")

# 缩小骨骼尺寸
# 遍历场景中的所有对象,查找骨骼结构
for obj in bpy.data.objects:
    if obj.type == 'ARMATURE':
        # 切换到编辑模式以修改骨骼
        bpy.context.view_layer.objects.active = obj
        bpy.ops.object.mode_set(mode='EDIT')

        # 遍历骨骼,缩小尺寸
        for bone in obj.data.edit_bones:
            bone.head *= 0.01  # 缩小骨骼头部的尺寸
            bone.tail *= 0.01  # 缩小骨骼尾部的尺寸

            # bone.head.z = -bone.head.z
            # bone.tail.z = -bone.tail.z

        # 切换回对象模式
        bpy.ops.object.mode_set(mode='OBJECT')


# 删除多余谷骨骼点
# 选择 BVH 对象并切换到编辑模式
obj = bpy.context.object
bpy.context.view_layer.objects.active = obj
bpy.ops.object.mode_set(mode='EDIT')

# 列出你想要删除的骨头
data = ['Bip001_R_Toe0Nub','Bip001_L_Toe0Nub','Bone_sk007_Mq_00','Bip001_HeadNub']

# 删除不需要的骨头
for bone in obj.data.edit_bones:
    if '_Twist' in bone.name or bone.name in data:
        obj.data.edit_bones.remove(bone)

# 使地板点为 脚下 而不是 腰部
# 获取一只脚的骨头/节点(这里我们假设它的名字是 "foot")
foot_bone = obj.data.edit_bones.get("Bip001_R_Toe0")

if foot_bone is not None:
    # 计算需要移动的量,让脚的尾部移到原点 (0, 0, 0)
    offset = -foot_bone.tail

    # 移动骨架使得脚部位于原点
    for bone in obj.data.edit_bones:
        bone.head += offset
        bone.tail += offset


bpy.ops.object.mode_set(mode='OBJECT')


# 旋转整个 模型
armature = bpy.context.object
armature.rotation_euler = (0, math.radians(-90), math.radians(180))  # X轴旋转90度,Z轴旋转180度

# 切换回对象模式
# 应用旋转
bpy.ops.object.transform_apply(location=False, rotation=True, scale=False)

# 导出新的 BVH 文件
bpy.ops.export_anim.bvh(filepath=r"D:\zrx\EDGE\SMPL-to-FBX\fbx_retarget\test_s_r_g.bvh")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值