2 台普通摄像头搞定 3D 动捕:FreeMoCap 完整入门指南
【免费下载链接】freemocapFree Motion Capture for Everyone 💀✨项目地址: https://gitcode.com/GitHub_Trending/fr/freemocap
想做 3D 人体动作数据,你大概第一时间想到的是价格不菲的动捕服和基站。FreeMoCap 是另一条路:一个免费开源的无标记点动捕系统,用 2 台及以上普通 USB 摄像头拍摄,在软件里完成标定、2D 关键点检测、多视角三角化重建,直接产出带骨骼的 3D 动作数据。
项目速览:它靠什么工作
FreeMoCap 以 AGPL 协议开源,定位是"研究级但零硬件门槛"的动捕工具,核心事实如下:
- 摄像头:任何能被 OpenCV 识别的 USB 摄像头都可以,2 台可用(适合单平面动作),3~4 台适合大多数全身动作
- 关键点:内置 MediaPipe 与 RTMPose 两套姿态检测器,MediaPipe 输出 33 个人体关键点
- 两种工作模式:实时采集(边拍边算,WebSocket 推送骨骼)与离线处理(对已录好的视频做事后重建)
- 产出:
.npy、.csv、.parquet三种格式的 3D 坐标、标注过的 2D 视频,以及可直接打开的 Blender 场景文件 - 架构:Python 后端(FastAPI)+ React/Electron 桌面界面,跨 Windows、macOS、Linux
15 分钟装好:两条命令起步
正式使用推荐走 pip 安装,要求 Python 3.11 及以上。有 NVIDIA 显卡时装 CUDA 版,macOS 或无独显机器装 CPU 版:
pip install "freemocap[cuda]" # macOS 或无独显改为 freemocap[cpu]安装完成后在终端输入freemocap,桌面窗口就会弹出,标定、采集、回放、处理都在界面里完成。
如果你想从源码跑开发版本,需要先装uv和 Node.js,然后:
git clone https://gitcode.com/GitHub_Trending/fr/freemocap cd freemocap && uv venv && uv sync接着分别在两个终端启动 Python 服务端和freemocap-ui里的前端,即可得到完整的开发版应用。
第一次采集:布相机与标定
硬件上只需相机和一块标定板。相机摆放有三点建议:
- 环向分布:相机围绕拍摄区域均匀排开,略微高于头顶、以 15~30 度角向下看,避免全挤在一侧
- 参数锁死:曝光、对焦、白平衡全部手动固定——自动曝光在录制中变化会让标定特征点位置漂移,精度跟着掉
- USB 带宽:多台相机尽量走不同的 USB 控制器;出现掉帧或断连时优先怀疑这里
标定用 ChArUco 板(棋盘格 + ArUco 编码块的组合板),打印在硬纸板上即可。仓库 shared/charuco/ 目录里有高分辨率的板子文件,打印尺寸要和界面里的标定配置一致。标定的本质是让系统解算出每台相机的内外参和相对空间位置,这些结果存成 TOML 文件,之后只要相机不动,就可以反复复用。
数据是怎么变成 3D 的:关键模块导读
一次离线处理的顺序是:标定 → 逐相机 2D 关键点检测 → 多视角三角化 → 平滑与刚体约束 → 输出。对应的代码入口都很直接:
- 标定任务:包含 Anipose 标定、ChArUco 角点提取与地面平面对齐
- 三角化模块:把各相机看到的同一关键点融合成 3D 坐标,内置离群点剔除
- Blender 导出脚本:调用 Blender 的
--background模式,把.npy数据读进场景并保存
想深入实时链路,可以再看freemocap/core/pipeline/realtime/下的采集节点与聚合节点,离线链路在freemocap/core/pipeline/posthoc/。
动捕数据导入 Blender 的两种方式
方式一:一键导出 .blend。处理完动捕数据后在界面开启 Blender 导出,系统会自动检测本机 Blender、注入导出插件、生成带骨骼网格、手部/面部网格、相机视锥和地面平面的完整场景。目前该导出只支持 MediaPipe 检测器的结果,RTMPose 的数据暂时只能走方式二。
方式二:自行解析数据文件。output_data/目录下的.npy是逐帧 3D 坐标数组,.csv、.parquet适合在 Python 里用 pandas 直接读,做重心分析、步态统计或喂给 Unity、Unreal 的导入管线都够用。
常见坑点与排错清单
- 相机挪动过就重新标定:标定文件只在相机位置与朝向不变时有效
- CUDA 版装不上或检测不到 GPU:说明环境装错版本,macOS 请用
freemocap[cpu],Windows/Linux 无独显同理 - 多相机丢帧、断连:换用独立 USB 控制器,或降一档分辨率
- RTMPose 结果导不了 Blender:当前限制,先切换回 MediaPipe
- 处理结果想换检测器重跑:重跑会覆盖部分输出文件,旧版标注视频可能带
.prev后缀,重要结果先备份
如果你跑通了或遇到了文档没覆盖的问题,CONTRIBUTING.md 列出的贡献流程就是下一步——报 bug、补文档、改代码都可以从这里开始。
【免费下载链接】freemocapFree Motion Capture for Everyone 💀✨项目地址: https://gitcode.com/GitHub_Trending/fr/freemocap
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考