Skip to content

nickyliux/nl_rigging_tools

Repository files navigation

nl-rigging-tools ( nlRT )

License Blog

nlRT Main

Declaimer

Note that the project is still under active development so please use it for study purpose.

Background

In my last job I encountered a project with characters in need of Ziva muscle. The very first step was to rig the skeleton mesh as the input of simulation. It required unusual skills like creating IK with backward initial knee, bone adjustment to avoid breaking the simulation... Wouldn't it be great to have an autorig tool for every vetebrate on Earth ? It seems a great way to learn anatomy and apply my knowledge in python.

Features

  • Modular : Support multiple limbs.
  • Skeletal : Support skeleton rigging.
  • Cartoony : Support bendy limbs.
  • Data Reuse : Reuse of templates, controls, proxies, weights.
  • Custom Marking Menus : Handy menus for rig creation.
  • Custom Framework : Much less redundant code during development.

Marking Menus

nlRT Tasks General Tasks
Ctrl + MMB Ctrl + Alt + MMB
nlRT Main nlRT Main

Installation

  1. Download and extract to somewhere you could keep the files.
  2. Find "install_by_drag_n_drop.py" and drag it onto Maya viewport.

The tool UI will show up at the left and "nlRT" appears in the main menu of Maya.

mayaMenu

Usage

Typical Workflow

  1. Set the character directory.
  2. Load the model.
  3. Create guides and fit into the model.
  4. Build rig.
  5. Gen proxy (For preview or skinning).
  6. Skin using proxy.
  7. Edit control shapes.

If you follow the naming convention below, file can be read with less browsing. e.g.

horse
horse_mdl*.ma
horse_tpl*.json
horse_ctl*.ma
horse_prx*.ma
weight
    horse_wgh*.json

Note that * is any number where the largest will be loaded

Custom Objects Classes

flowchart
    DepNode --> Condition
    DepNode --> DagNode
    DagNode --> GrpNode
    GrpNode --> CrvNode
    GrpNode --> JntNode
    GrpNode --> LocNode
    GrpNode --> SrfNode
    GrpNode --> MshNode

    Dimension
    AttributeHolder --> Attribute
Loading
from nl_modules.nodel.grp_node import GrpNode
from nl_modules.nodel.jnt_node import JntNode
from nl_modules.nodel.crv_node import CrvNode
from nl_modules.nodel.srf_node import SrfNode

grp = GrpNode('newGrp') # create group 'newGrp'
jnt = JntNode('newJnt') # create joint 'newJnt'
crv = CrvNode('newCrv') # create nurbs curve 'newCrv'
srf = SrfNode('newSrf') # create nurbs surface 'newSrf'

crv.weightTo([jnt]) # bind jnt to crv
srf.weightTo([jnt]) # bind jnt to srf

grp.a.t.set(0,10,0) # set position
jnt.alignTo(grp) # align jnt to grp
jnt.addOffsetGrp() # add offset group for jnt

Main Custom Component Classes

flowchart
    RigModule --> Head
    RigModule --> SpineBp
    SpineBp --> NeckBp
    RigModule --> ArmBp
    RigModule --> HandBp
    RigModule --> LegBp
Loading
flowchart
    RigModule --> Head
    RigModule --> SpineQd
    RigModule --> IkFkSpline
    RigModule --> LegQd
    IkFkSpline --> Tail
    IkFkSpline --> NeckQd
Loading
from nl_modules.build.leg_bp import LegBp

cpn = LegBp('lfLegBp0_RGN') # create legBp object given rigNode in scene
cpn.gen_sk() # generate skeleton
cpn.build() # build rig

Dev Environment

Maya 2023.3, Win 11 Pro

Reference

  1. Python for Maya : Beginner to Advanced Rigging Automation by Nick Hughes
  2. Ramon Arango's rigs
  3. BoneClones
  4. Ivlpaleontology
  5. Rigamajig2

Visit my blog at https://www.nickyliu.com

About

Another modular autorig system for Maya, featuring skeletal model support and custom rigging framework.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages