EasyMocap 实时 3D 可视化 3 步跑通
【免费下载链接】EasyMocapMake human motion capture easier.项目地址: https://gitcode.com/gh_mirrors/ea/EasyMocap
算完几百帧姿态,还得翻 json 逐帧核对?EasyMocap 的实时 3D 可视化把关键点直接送进 Open3D 窗口,边算边看。🎬
它到底能替你省什么
不用自己写渲染代码,也不用开一堆文本文件核对结果。数据一发出,人就直接站在 3D 场景里,转视角、换颜色都是窗口顺手的事。
- 多人同屏,每人一个独立 ID 和颜色,谁和谁重叠一目了然
- 骨架、SMPL 网格、带脸带手的完整人体,三档显示随配置切换
- 客户端与服务器分离,算姿态的机器和开窗口的机器可以是两台
三步跑通(只留必要命令)
先装依赖,Open3D 锁定 0.9.0:
pip install open3d==0.9.0开一个终端,启动可视化窗口,默认监听 9999 端口:
python apps/vis/vis_server.py --cfg config/vis3d/o3d_scene.yml再开一个终端,把某个目录下的关键点 json 逐帧发进窗口:
python apps/vis/vis_client.py --path /path/to/keypoints3d这几个能力最值得关注
多人同屏,各自编号着色
每个人按 id 分配独立颜色,多人体场景里不再分不清谁是谁。适合群舞、对抗运动这类多人交互分析。
骨架、网格随时切换
想验证形变质量时,改用config/vis3d/o3d_scene_smpl.yml启动服务,客户端加--smpl参数,窗口里就从关节棍变成完整网格。
一键自动转圈
窗口里按 A 键,视角自动绕场景旋转,录屏、汇报都不用手动拖。
接进你项目的最小代码
自己的 pipeline 里,6 行就能把每帧数据推给窗口:
import numpy as np from easymocap.socket.base_client import BaseSocketClient client = BaseSocketClient('127.0.0.1', 9999) # 每人一帧数据: id + (关节数, 4) 的 keypoints3d frame = [{'id': 0, 'keypoints3d': np.random.rand(25, 4)}] client.send(frame) client.close()send与send_smpl已在 easymocap/socket/ 里封装好协议,业务侧只管传 dict。
配置里的隐藏开关
config/vis3d/o3d_scene.yml里两个开关最实用:
block: False # True 每帧等一等;False 走实时流 write: True # 自动把每帧截图存到 out 目录 out: 'output_frames'改完拿到的是:窗口永远显示最新一帧,还顺带存出一组可回看的截图。
踩坑急救包
- 客户端连上了但窗口不动→ 检查两端 host 与端口是否一致(默认 9999),服务终端应有连接提示。
- 发数据后人始终不出现→ 配置的
range会过滤越界个体,收紧minr/maxr或核对坐标系。 - 想要网格却只出骨架→ 服务改用
config/vis3d/o3d_scene_smpl.yml启动,客户端加--smpl。
不用翻 json 逐帧核对了:窗口一开、数据一发,动作就站在你眼前。现在就把服务跑起来 🚀
【免费下载链接】EasyMocapMake human motion capture easier.项目地址: https://gitcode.com/gh_mirrors/ea/EasyMocap
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考