/brignet

Automatic rigging using neural network from RigNet

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

bRigNet

Neural Rigging for blender using RigNet

Blender is the open source 3D application from the Blender Foundation. RigNet is the Machine Learning prediction for articulated characters. It has a dual license, GPL3 for open source projects, commercial otherwise. It was presented in the following papers

  @InProceedings{AnimSkelVolNet,
    title={Predicting Animation Skeletons for 3D Articulated Models via Volumetric Nets},
    author={Zhan Xu and Yang Zhou and Evangelos Kalogerakis and Karan Singh},
    booktitle={2019 International Conference on 3D Vision (3DV)},
    year={2019}
  }
  @article{RigNet,
    title={RigNet: Neural Rigging for Articulated Characters},
    author={Zhan Xu and Yang Zhou and Evangelos Kalogerakis and Chris Landreth and Karan Singh},
    journal={ACM Trans. on Graphics},
    year={2020},
    volume={39}
  }

Setup

bRigNet requires SciPy, PyTorch and torch-geometric, along with torch-scatter and torch-sparse.

Installation

Download the Neural Rigging add-on as a .zip file and install it from the blender addons window, or copy the code to the blender scripts path

Install dependencies via "Install" button

At present, the CUDA toolkit from nVidia is required, it can be found at the manufacturer website

A dependency installer is available in the preferences.

  • Install CUDA. At present prebuilt packages support versions 10.1, 10.2, 11.1
  • In the addon preferences, make sure that the Cuda version is detected correctly.
  • Hit the "Install" button. It can take time!

Alternatively, Environment managers, like conda or virtualenv can be used to ease the install.

Install dependencies using conda

Anaconda is a data science platform from Anaconda Inc., it can be downloaded from the company website.

A lightweight version called Miniconda is available. Both versions include the package manager 'conda' used in the following steps.

  • Open a Miniconda or Anaconda prompt
  • Create a Conda Environment and activate it
conda create -n brignet python=3.7
conda activate brignet_deps
  • Install PyTorch. If CUDA is installed, the CUDA version can be queried in a command prompt. For example
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:32:27_Pacific_Daylight_Time_2019
Cuda compilation tools, release 10.2, V10.2.89

In this case PyTorch can be installed in the command prompt via

conda install pytorch==1.8.1 cudatoolkit=10.2 -c pytorch

More complete information on the PyTorch command line can be found at the PyTorch website The install command on non-cuda devices is

conda install pytorch==1.8.1 cpuonly -c pytorch
  • Install torch utilities. The syntax follows the pattern
pip install [package-name] -f https://pytorch-geometric.com/whl/torch-[version]+cu[cuda-version].html
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.8.1+cu102.html
pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-1.8.1+cu102.html
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-1.8.1+cu102.html
pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-1.8.1+cu102.html
pip install torch-geometric

Alternatively, pip can try and build the libraries. Even if part of torch-sparse fails without a proper environment, the relevant modules are usually built

pip install torch-scatter
pip install torch-sparse
pip install torch-geometric

The directory of each environment can be obtained via

conda info --envs

The environment directory can be set in the "Additional Modules" setting of the bRigNet preferences

Install dependencies using virtualenv

virtualenv can be used to create a Python environment with the required packages. First, python 3.7 must be installed on the system. It can be found at https://www.python.org/downloads/

Make sure that Add Python 3.7 to PATH is checked in the setup options.

Usually, python comes with its package manager installed (pip). Please, refer to the pip documentation if pip is not present in your system.

Next step is to install virtualenv. Open a command prompt and reach a folder where python packages will be kept please execute.

pip install virtualenv

then create the virtual environment and activate it

virtualenv brignet_deps
cd brignet_deps
Scripts\activate

now we can install the torch library. At present, version 1.8.1 is provided. torch-geometric provides prebuilt packages for CUDA 10.1, 10.2, 11.1

CUDA 10.2 is used in this example:

pip install torch==1.8.1+cu102 -f https://download.pytorch.org/whl/torch_stable.html
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.8.1+cu102.html
pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-1.8.1+cu102.html
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-1.8.1+cu102.html
pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-1.8.1+cu102.html
pip install torch-geometric

the virtual environment directory can be set as the "Additional modules path" in the brignet preferences

Usage

Enable bRigNet in the blender addons, the preferences will show up. Set the Modules path properties to the RigNet environment from the previous step

RigNet requires a trained model. They have made theirs available at this address The checkpoint folder can be copied to the RigNet subfolder. A different location can be set in the addon preferences.

Rig Generation

the bRigNet tab will show up in the Viewport tools. Select a character mesh as target. Please make sure it doesn't exceed the 5K triangles. You can use the Decimator modifier to reduce the polycount on a copy of the mesh, and select a Collection of high res model on which to transfer the final weights

Load generated rigs

Rigs generated using RigNet from the command line can be loaded via the Load Skeleton panel. Please select the *.obj and *.txt file and press the button Load Rignet character

Training

The blender addon doesn't cover training yet. If you want to train your own model, please follow the instructions from the RigNet project.

Disclaimer

This blender implementation of RigNet and the author of this add-on are NOT associated with the University of Massachusetts Amherst.

This add-on has received a research grant from the Blender Foundation.

License

This addon is released under the GNU General Public License version 3 (GPLv3). The RigNet subfolder is licensed under the General Public License Version 3 (GPLv3), or under a Commercial License.