RigNet自动绑定角色-AI- 部署测试
# RigNet自动绑定角色-AI- 部署测试
RigNet 是一个生成角色绑定的神经网络项目,发布于 2020 年,本文来做个部署测试笔记。
该网络有两个 预测功能,1 是从模型上生成骨骼结构, 2 是生成模型和骨骼的蒙皮权重。
原文翻译: 3DSIGGRAPH论文提出RigNet帮动画师做骨架绑定 (opens new window)
原论文:RigNet: Neural Rigging for Articulated Characters (opens new window)
# 结论:
因为本次测试使用原项目提供的数据模型,但是该项目的原始训练样本数据已被项目取消分享,无法验证生成的骨架和蒙皮与原始模型的差异量,同时该项目的样本模型风格和本次测试的角色模型也有较大差异,最终结果可能因数据模型不适应而相对的绑定效果更差。
- 本方案绑定骨骼由AI训练生成,生成过程中无法自定义骨骼的结构和数量,如果想要达到预期的可控结构,需要进行自己的训练才有可能接近预期效果。
- 蒙皮权重,是有自动化,但是效果较差,不能直接落地项目应用,还需手动修改。相比skin等软件自带的工具没有明显差异。关于自动蒙皮可以看GDC 腾讯 | 一键制作角色蒙皮 Aivatar GoSkinning (opens new window)
- 至于该项目中的展示的动画效果,完全是在RigNet 之后再使用其他工具做的动画重定向,不在本项目范围内。
故暂时不能提高在骨骼搭建与蒙皮方面的效率,本文的结论都是在无针对性训练而使用该项目提供的模型生成的结果而来。
# 深入方向
可以尝试做提供骨架然后预测蒙皮权重的应用发展,自动生成角色骨架在实际项目生产中需求不大,毕竟没几年工作经验的动画师摆骨架可能都摆不合理。
# 测试效果
本次测试的角色模型和生成的骨架 以及权重效果(非项目官方提供的 角色模型)。
项目官方提供的试例图,
事例模型重现的权重效果,quick_start\8333_ori.obj
从项目提供的使用代码来看,可控参数只有 bandwidth, threshold 两个,前者控制生成骨骼的密度数量,后者控制骨架整体准确度质量。
bandwidth | 值越小,骨骼越多。 |
threshold | 值越小,骨架整体分布更准确,但也会增加骨骼数量。 |
# 创建部署环境
先 在 Anaconda3 创建 环境,此过程不作赘述。
下面 几个包,官方建议安装 torch-1.12.0+cu113 环境的匹配包,从以下页面下子载 whl 包安装,避免因版本不匹配出错。
https://pytorch-geometric.com/whl/torch-1.12.0+cu113.html (opens new window)
# 安装 CUDA
CUDA 是可以多版本同存 的,安装时建议使用,自定以安装,如下图,只需要安装 CUDA 组件之前,其他组件都 在安装 NVIDIA显卡 驱动时带用。
RigNet 项目虽然不安装 CUDA 也能使用 CPU 模式运行,但还是建议安装上。
# 安装项目
https://github.com/zhan-xu/RigNet (opens new window)
下载项目到任意路径。然后下载项目提供的数据模型,rignet - model (opens new window) , 下载完成之后直接解压到项目文件夹中,如下图。
# 快速开始
# 打开 【quick_start.py】
- input_folder 路径是项目提供是案例 obj 角色模型的文件夹。
model_id 是obj 模型名字。
_ori.obj 后缀是你角色模型,_remesh.obj 是角色模型减面版本,用来生成体素做骨骼和权重预测的。这两个都可以在 3dsMax 处理好,需按此规则命名导出 obj 即可即。
# 运行 【quick_start.py】
一定要在项目文件夹中运行 命令行,如下图。
- D:\wwwNDTools\RigNet-master 是 RigNet 项目路径。
- D:\Anaconda\envs\rignet\python.exe 是创建的部署环境路径。
- D:\Anaconda\envs\rignet\python.exe D:\wwwNDTools\RigNet-master\quick_start.py 是用部署环境的python 运行 quick_start.py (opens new window) 这个脚本。
不出错,即可看到 生成的结果。
本环境已经部署在 研发部使用的公共主机中【 192.168.251.94 】,如需体验请联系 。
# 体素
该项目 使用 bincox (opens new window) 生成体素数据,生成的数据命名后缀 _normalized.binvox ,可以使用 viewvox3d (opens new window)查看。
如下图, -d 128 , 是生成体素网格的参数。
model_id, bandwidth, threshold = "8333", 0.04, 2e-5
仅仅是调整 体素 大小生成骨骼差异巨大。
如上图显示,体素网格越密,效果反而更差,
# 参数测试bandwidth
# 4. 导入Maya
虽然 rigNet 最后会自动适应 open3d 打开模型显示 骨骼,但是无法查看蒙皮效果,需要用 项目 提供的 maya_save_fbx.py 脚本导进Maya中。
项目官方建议是 Maya 2019 , 其实只要使用 支持 python2 的maya 版本即可。
# 4.1 安装 numpy
具体安装过程 请看 3dsMax 安装 NumPy (opens new window)
先使用 \Maya2017\bin\mayapy.exe 安装 pip , 安装好 pip ,
再使用Maya2017\Python\Scripts\pip.exe 安装 numpy-1.13.1+mkl-cp27-none-win_amd64.whl 这个包。
# 4.2 使用maya_save_fbx.py
需要简单 修改 下 【maya_save_fbx.py】,填上需要导入 的 模型 名字和路径,如下图
运行 【maya_save_fbx.py】导入模型和权重。