本文使用的方法是把关键点转换成3d关键点,然后再使用脚本转换成bvh。bvh转fbx可以直接使用blender转。
环境准备
- MotionBERT(2D关键点转换到3D关键点)
- AlphaPose(提取2D关键点)。
- 转换脚本,https://github.com/TnoobT/pose2bvh/tree/main
步骤
- 安装好AlphaPose,使用其中的脚本提取关键点,结果会保存到alphapose-results.json中。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8c84ed20972f16fcad49c82231d16859.png)
- 使用MotionBERT把关键点转换成h36m格式的3D pose,使用如下脚本转换,结果默认保存到res/X3D.npy。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a4bcf987461eabcc616fac0ab996c0e2.png)
- 使用转换脚本,生成bvh
import numpy as np
from pathlib import Path
from bvh_skeleton import *
bvh_file = 'pose2bvh/out/' + 'test.bvh'
pose3d_world = np.load('res/X3D.npy')
h36m_skel = h36m_skeleton.H36mSkeleton()
channels, header = h36m_skel.poses2bvh(pose3d_world, output_file=bvh_file)
- bvh转fbx,直接使用blender转换
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6be69f0f3aad4263d8168d6528a20753.png)