2d关键点转bvh fbx

本文介绍了如何通过安装AlphaPose提取2D关键点,然后使用MotionBERT将其转换为3D关键点(H36M格式),并进一步将BHV文件转换为FBX格式,借助Blender工具实现整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文使用的方法是把关键点转换成3d关键点,然后再使用脚本转换成bvh。bvh转fbx可以直接使用blender转。

环境准备

  1. MotionBERT(2D关键点转换到3D关键点)
  2. AlphaPose(提取2D关键点)。
  3. 转换脚本,https://github.com/TnoobT/pose2bvh/tree/main

步骤

  1. 安装好AlphaPose,使用其中的脚本提取关键点,结果会保存到alphapose-results.json中。在这里插入图片描述
  2. 使用MotionBERT把关键点转换成h36m格式的3D pose,使用如下脚本转换,结果默认保存到res/X3D.npy。在这里插入图片描述
  3. 使用转换脚本,生成bvh
import numpy as np
from pathlib import Path
from bvh_skeleton import *

bvh_file = 'pose2bvh/out/' + 'test.bvh'
# numpy array with shape (..., 3)
pose3d_world = np.load('res/X3D.npy')
h36m_skel = h36m_skeleton.H36mSkeleton()
channels, header = h36m_skel.poses2bvh(pose3d_world, output_file=bvh_file)
  1. bvh转fbx,直接使用blender转换
    在这里插入图片描述
### 将BVH文件换为FBX格式 为了在Blender中实现从BVHFBX换,需遵循一系列具体的操作流程。首先,在Blender环境中成功导入BVH文件之后,再将其导出为FBX格式。 #### 导入BVH文件至Blender 确保已启动最新版本的Blender应用。通过菜单栏中的`File` -> `Import`选项找到并选择`.bvh (BioVision BVH)`来加载目标BVH文件[^3]。这一步骤会把动作数据引入场景内的骨架对象上。 #### 调整骨骼方向与比例 由于不同软件间可能存在坐标系差异以及单位设置的不同,可能需要调整导入后的骨骼模型的方向和大小以匹配预期效果。可以通过编辑模式下手动旋或缩放骨骼完成初步校正;对于更精细的比例控制,则可以在导出阶段利用自定义缩放功能处理[^2]。 #### 设置导出参数并将项目保存为FBX 当确认所有动画帧都正确无误后,到顶部菜单条目的`File`->`Export`部分选取`.fbx`作为输出类型。此时会出现一个弹窗允许设定详细的导出属性: - **Scale**: 应用适当的缩放因子以适应其他应用程序的需求。 - **Axis Forward/Up**: 修改轴向配置使得最终产物能够兼容外部平台的要求。 - **Bake Animation**: 勾选此框可将当前选定物体的关键帧烘焙成连续的时间序列以便更好地移植到第三方程序里去。 最后点击右下角的`Export FBX`按钮即可完成整个过程[^1]。 ```python import bpy # 清除现有网格和其他不必要的元素 for obj in bpy.data.objects: if obj.type != 'ARMATURE': bpy.data.objects.remove(obj) # 加载.bvh 文件 bpy.ops.import_anim.bvh(filepath="path_to_your_file.bvh") # 选择刚导入的人体骨架 armature = bpy.context.selected_objects[0] # 添加简单的立方体用于绑定蒙皮权重测试(可选) bpy.ops.mesh.primitive_cube_add(size=2, location=(0, 0, 0)) cube = bpy.context.object mod = cube.modifiers.new(name='Armature', type='ARMATURE') mod.object = armature # 出口.fbx 文件前准备 bpy.ops.export_scene.fbx( filepath="output_path_and_name.fbx", use_selection=True, add_leaf_bones=False, bake_space_transform=True, axis_forward='-Z', axis_up='Y' ) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值