文章目录bvh_to_smpl_vis-master使用渲染单个npz把BVH转成SMPL.npz批量渲染.npz文件夹Blender 可视化方式somaXNpz2bvhsoma_retargetermjlabbvh_to_smpl_vis-master把 BVH 动作捕捉文件转换成 SMPL 人体模型动画然后渲染成视频。文件结构bvh_to_smpl_vis-master/ │ ├── bvh_to_smpl.py ← 核心①单个 BVH → npzSMPLX 参数 ├── bvhs2smpls.py ← 核心①批量版整个文件夹的 BVH → npz ├── bvhs2smpls_lafan1.py ← 核心①特化版针对 lafan1 数据集格式 │ ├── smpl_render.py ← 核心②单个 npz → 渲染视频 ├── smpls_render.py ← 核心②批量版整个文件夹的 npz → 视频 │ ├── import_motion_blender.py← 备选方案在 Blender 里可视化不用 PyTorch3D ├── mujoco_vis.py ← 备选方案在 MuJoCo 物理引擎里可视化 ├── npz_test.py ← 工具测试 npz 文件内容 │ ├── utils/ ← 工具库渲染器、坐标变换、SMPL 构建 │ ├── renderer.py → PyTorch3D 渲染器封装 │ ├── geo_transform.py → 3D 几何变换工具 │ ├── smpl_utils.py → SMPL/SMPLX 模型构建 │ └── renderer_tools.py → 渲染辅助函数 │ ├── body_model/ ← SMPL 模型依赖文件 │ ├── smpl_neutral_J_regressor.pt → 关节回归器 │ ├── smplx2smpl_sparse.pt → SMPLX→SMPL 转换矩阵 │ └── smpl_model/ → SMPL/SMPLX 原始模型参数 │ ├── SMPLSim/ ← 第三方库SMPL 物理仿真相关 ├── retarget/ ← 动作重定向将动作迁移到不同角色 │ ├── bvh_files/ ← 你自己的 BVH 动作文件中文命名 ├── lafan1/ ← lafan1 数据集 ├── data/ ← 其他测试数据 ├── video_output/ ← 渲染出的视频输出目录 │ └── requirements.txt ← Python 依赖列表使用渲染单个npz如果你已经有 SMPL 格式的 .npz 动作文件可以直接运行cd/home/zww/bvh_to_smpl_vis-master conda activate smpl_vis python smpl_render.py--filepath/你的路径/xxx.npz把BVH转成SMPL.npz如果你现在是 .bvh 文件需要先转成 SMPL 格式cd/home/zww/bvh_to_smpl_vis-master conda activate smpl_vis python bvhs2smpls.py /你的/bvh文件夹路径 /保存npz的路径zbpython bvhs2smpls.py /home/zww/下载/Date_set注意第一个参数是 BVH 文件夹不是单个 .bvh 文件。批量渲染.npz文件夹如果你已经有一整个文件夹的 .npz可以用python smpls_render.py--npzpath/你的npz文件夹路径Blender 可视化方式如果你想在 Blender 里看动作README 说需要安装 Blender 2.9.0安装 SMPL add-on在 Blender 里添加 SMPL 人体模型打开 Blender 的 Scripting 面板运行import_motion_blender.pysomaX这一步是将上一步转换出来的npz文件进行格式统一然后才能进入到soma_retargeter里面进行动作查看和修改。为了方便直接进行整个文件夹的转换然后文件输出的位置就是输入文件夹的下面然后名称加了_somaX的后缀。python-mtools.convert_amass_to_soma_REN_somaX\--input-dir /home/zww/下载/Date_set/Date_set_npz\--no-render\--batch-size32还额外加了一个保护因为输出文件夹是在输入文件夹里面如果第二次运行程序不会把已经转换出来的 *_somaX 文件夹再次当作输入去重复转换。否则会出现越转越多的问题。如果你想覆盖已经生成过的文件可以加--no-skip-existing完整命令python-mtools.convert_amass_to_soma_REN_somaX\--input-dir /home/zww/SOMA-X/out\--no-render\--no-skip-existingNpz2bvh然后使用npz2bvh_root_translation_keep_hips_base_Retageter_auto_output.py将文件转化成为bvh文件python npz2bvh_root_translation_keep_hips_base_Retageter_auto_output.py\--input/home/zww/下载/Date_set/Date_set_npz/Date_set_npz_somaX/move_front_small_normal_001_feng.npz\--template-bvh assets/motions/bvh/Neutral_walk_forward_002__A057.bvh\--translation-transform x-90\--position-transform same_as_translation\--model-rotate x-90\--ground-axis y\--zero-origin\--translation-joint-name Root\--root-joint-name Hips\--ground-offset-105\--position-channels-mode root_translation_keep_hips_basesoma_retargeter启动虚拟环境conda activate soma-retargeter打开newtonPYTHONPATH/home/zww/soma-retargeter:$PYTHONPATHpython ./app/bvh_to_csv_converter.py\--config./assets/default_bvh_to_csv_converter_config.json\--viewergl然后是进行一系列的参数调整其中在soma_to_x3_retargeter_config.json中t_weight 大 脚更贴近人体脚的位置 脚更不容易漂 但膝盖可能被拉弯、身体可能被压低 t_weight 小 脚位置更自由 膝盖更容易自然 但脚可能漂浮、穿地、滑动 r_weight 大 脚掌朝向更贴近人体动作 脚尖角度更准确 但可能导致脚掌侧翻、踝关节扭得厉害 r_weight 小 脚掌方向更自由 踝关节压力小 但脚尖方向可能不准mjlab在更换完成soma_retargeter的模型之后需要再增加mjlab的模型然后再进行训练。soma_retargeter输出的文件是csv形式的想要进行训练的话需要提前将文件转换成mjlab可以接受的npz模式uv run python src/mjlab/scripts/csv_to_npz_x03_fixed.py\--input-file /home/zww/soma-retargeter/output/date_walk.csv\--output-name date_walk\--input-fps30\--output-fps50\--devicecuda:0然后再使用如下命令进行训练MUJOCO_GLeglCUDA_VISIBLE_DEVICES0uv run train\Mjlab-Tracking-Flat-X03B\--registry-name1023949235-usst/csv_to_npz/date_walk:latest\--env.scene.num-envs1024使用如下命令进行训练uv run play Mjlab-Tracking-Flat-X03B\--wandb-run-path1023949235-usst/mjlab/709e1z2a使用如下命令进行训练结果查看uv run play Mjlab-Tracking-Flat-X03B\--wandb-run-path1023949235-usst/mjlab/709e1z2a