从AI视频跟踪到2D骨骼动画制作
Meta伙同 牛津 开源CoTracker3:更简单、更好的跟踪一切**。**作为一款先进的点跟踪AI模型,在多个领域展现出应用价值:
- 三维重建:点跟踪是视频分析关键步骤,对需精确恢复对应关系的3D重建任务意义重大,CoTracker3能高效准确跟踪点,为其提供支持 。
- 视频编辑:在视频编辑里,它可精准跟踪视频中多帧的点,便于特效添加、画面合成等操作,提升视频编辑效率与质量 。
- 动作捕捉:能准确跟踪人体关键点,捕捉动作细节,为动画制作、游戏开发、体育训练等领域提供动作数据 。
# 应用案例
提示
追踪 视频上的 马身上的关键点(鼠标创建或从3dsMax导出),使用追踪关键点的运动轨迹驱动骨骼蒙皮的面片模型,制作成类似 Spine 那样的 2D骨骼动画。
使用
http://192.168.239.166:7860/ (opens new window) 已部署 美术开发部的主机上,欢迎测试使用。
上传需要跟踪的视频,上传从Max导出的跟踪点或者鼠标点击创建跟踪点,执行视频跟踪计算,接着下载跟踪数据即可。
# 1.1 追踪点
- 从3dsMax 中导出 追踪点,例如骨骼点。
- 网页上使用鼠标在画面上点击创建追踪点。
# 1.2 追踪数据
- 生成多种格式的2D轨迹数据,.npy 、.json 等方便不同DCC软件导入。
# 1.3 DCC软件支持
- 3dsMax 导入 json 格式的 轨迹数据(直接创建跟踪点并设置动画帧),仅支持 3dsMax 2018 等高级版本
CoTracker3-3dsMax 下载 (opens new window)
# 1.4 追踪视频建议
追踪数据是2D 效果,意味如果物体在运动过程有遮挡,会无法跟踪丢失关键点数据。
- 不要有镜头移动,轨迹数据的图片空间(相机空间),无法还原世界空间移动。
- 转身旋转遮挡会丢失目标,一些带转身的视频,追踪数据没太大意义。
# 3dsMax 使用流程
在3dsMax 创建骨骼,并导出 跟踪点,让 CoTracker3 对这些跟踪点进行 跟踪计算。
【Max2022-Tacker-2.py】
[TABLE]
# 3.1 3dsMax - Python - Numpy
目前生成的追踪数据是numpy 二进制格式,所以需要 在 (opens new window)3dsMax的python环境中也安装 numpy (opens new window) (opens new window) ,安装过程比较麻烦,建议使用 2021 等高版本 Max.
已支持 json 格式的追踪数据,不必在 3dsMax中安装 numpy 。
# 3.2 创建图片的面片模型
面片模型是指在 3dsMax 中创建和图片一样尺寸的面。
上传视频之后,应用会等比例调整视频,将其缩放到一个适合的尺寸,所以需要在页面上下载第一帧做面片模型。
- 面片模型的长
length
是图片的高度,宽width
是 图片的宽 。 - 创建的 面片 必须轴心居中,并且是在世界原点。
- Cotracker 导出的轨迹数据是从图片的左上角开始的图片坐标系。
- 在导入导出3dsMax 时【CoTracker3 跟踪点工具 v1】会用图片的长宽信息自动转换坐标系。
# 3.3 创建骨骼并导出跟踪点
例如下图,将创建的骨骼作为跟踪点。
选择全部骨骼,填上视频的尺寸,如我这里视频宽 768 ,高432 。
如果你不提前导出 跟踪点,也可以在网页应用上,直接鼠标点击 创建跟踪点。
# 3.4 使用跟踪点进行计算
【跟踪】按钮 执行 计算,等待片刻即可出结果。
# 3.5 下载跟踪点数据并导入3dsMax
追踪完成之后,可以下载 zip 文件包。
.mp4 | 渲染追踪效果的视频。 |
_first.webp | 视频的首帧 截图。 |
_query_points.json | 追踪点。 |
_tracks.json | 对视频追踪之后的所有追踪的轨迹数据, json格式,方便其他DCC软件导入。 |
_tracks.npy | 对视频追踪之后的所有追踪的轨迹数据,numpy 二进制格式。 |
如下图直接在插件上 【导入跟踪结果】
然后选择 下载的 _tracks.json
轨迹数据即可。
- 不需要填图片信息,json数据中有图片尺寸数据。
# 3.6 驱动面片或约束骨骼
当我们得到追踪点的轨迹数据后,就可以想办法当动画来使用,下图是两种方案。
- 追踪点约束骨骼,这种追踪点是从骨骼导出的,所以来约束骨骼很合适。
- 追踪点直接蒙皮,这种可以随便创建追踪点,然后选择部分合适点进行蒙皮。
# 3.7 骨骼约束工具
如下图,先选中单个骨骼,接着依次加选 位置点,方向注视点 ,点击【按钮】 即可让导入的跟踪点驱动骨骼。
【CoTracker3跟踪点骨骼约束工具.ms】
# 3.8 跟踪点数据平滑
导入的 跟踪点不可避免的存在一些抖动,建议使用 曲线过滤工具 ,平滑跟踪点。
动画曲线过滤C# | 天晴动作工具组文档 (opens new window)
# 3.9 3dsMax 导入视频参考
可将原始视频导入Max ,方便后续修改 骨骼动画。
Max仅支持 AVI,MOV(安装QuickTime (opens new window) )格式的视频导入场景中,不支持常见的MP4 格式.
- HandBrake (opens new window) 视频格式转换工具
创建面片,创建材质,将材质的贴图设置成视频即可,如下图。
注意,面片的长宽需要和视频的长宽一致。
# 部署
本次部署,直接是复制上次的 GVHMR 环境 (opens new window),python3.10 ,CUDA 12.1
#复制环境,省去各种库都再次安装
conda create --name CoTracker3 --clone GVHMR
进入 环境 路径下
cd /d CoTracker3
2
3
4
5
这个项目已经开源到第3 个版本,git 有多个分支,如果直接拉取 会是 main 版本。
Facebookresearch/co-tracker (opens new window)
个人是建议拉取 release_cotracker3 这个发行版本。
git clone -b release_cotracker3 https://github.com/facebookresearch/co-tracker.git
拉取项目之后,激活 CoTracker3 这个conda 环境,再使用 pip 进行安装。
#进入项目文件夹
cd /d co-tracker
#安装项目
pip install -e .
#安装依赖
pip install matplotlib flow_vis tqdm tensorboard
#安装 ffmpeg
pip install imageio[ffmpeg]
2
3
4
5
6
7
8
9
10
11
如果从 huggingface.co 下载模型太慢,可以尝试使用 国内镜像站 hf-mirror.com (opens new window) 。
又或者手动下载模型。
本地模型地址
C:\Users\Administrator\.cache\torch\hub\checkpoints
2
运行Gradio 网页应用,项目路径 gradio_demo\app.py 就可以在浏览器上输入 127.0.0.1:7860 访问使用。
#D:\Anaconda\envs\CoTracker3\co-tracker\gradio_demo\app.py
python app.py
2