> 文章列表 > BVH ==>SMPL for Unified

BVH ==>SMPL for Unified

BVH ==>SMPL for Unified

BVH to SMPL

BVH文件转换为SMPL模型,需要使用专业的3D建模软件。

例如
Blender或Maya。

Steps

  1. 导入BVH文件到建模软件中。
  2. 将BVH文件应用于一个适当的人体模型。
  3. 将人体模型转换为SMPL模型。
  4. 导出SMPL模型文件。

BVH ==>SMPL for Unified

Realization

https://github.com/Meshcapade/SMPL_blender_addon

https://smpl-x.is.tue.mpg.de/

https://github.com/Rokoko/rokoko-studio-live-blender

  • 下载 SMPL Model
  • 安装 (edit–>preference)
  • 应用(add ons

SMPL ==> Frame 保存

Realize SMPL to Frame.npy through Scripting

Import

  • NumPy
  • Blender Python
import bpy
import numpy as np

SMPL list

SMPLX_JOINT_NAMES = ['pelvis','left_hip','right_hip','spine1','left_knee','right_knee','spine2','left_ankle','right_ankle','spine3', 
]

Frame list

frame_len = bpy.context.scene.frame_endframes = []

Frame Synthesis

for fIdx in range(frame_len):print(fIdx)bpy.context.scene.frame_set(fIdx)##obj = bpy.data.objects.get('SMPLX-mesh-female')if obj is None:print("WARN: no obj {}".format(tar_name))breakif obj.type == 'MESH':armature = obj.parentelse:armature = obj# Get armature pose in rodrigues representationpose = [0.0] * (NUM_SMPLX_JOINTS * 3)for index in range(NUM_SMPLX_JOINTS):joint_name = SMPLX_JOINT_NAMES[index]joint_pose = rodrigues_from_pose(armature, joint_name)pose[index*3 + 0] = joint_pose[0]pose[index*3 + 1] = joint_pose[1]pose[index*3 + 2] = joint_pose[2]##frames.append(pose)

Save

seq_name = "ABCD."
np.save("PATH{}.npy".format(seq_name), frames)