JQC Blender addon

 

What’s boring in rigging ? Rigging

Let’s redo it with code

 
 

 

Automated quick panel

Constrain a bone or a set of bones in one click from the automatically generated quick buttons

 

Extremely powerful

The addon reads user created constraints in a Json file and adds quick constraint buttons in the animation panel. In one click you can constrain a bone or a set of bones

The addon is extremely powerful and allows you to create all the different constraint types. You are not limited to your character. You can constrain to other objects or even other armatures

Save your time

The addon supports hotloading. The presets are read everytime the buttons are pressed. You just need to save your JSON file, no extra step is required

 

Extremely convenient

The JSON files are tied to the armature names and can be shared between multiple duplicate linked armatures

You can save your presets in a property of your object. That property can be modified within Blender. This allows sharing the .blend file and its preset without sending the JSON file.

The support for aliases allows you to share the presets between multiple common rigs without having to make another JSON file. You can just change the bone aliases and the constraints will work for your new rig

 
 

 

Documentation

 

Example

This is the panel that will be generated by the JSON file on the right

 

Setup

The JSON file needs to be in the same folder as your BLEND file and have the same name as your armature. The JSON file is tied to the Armature name and not the Object name

In that case the JSON needs to be called Character_Armature.json and not Character.json

Object panel on the left and Armature panel on the right

Affichage JSON avec Commentaires et Hyperliens
{
    "Alias": optional
    {
        "calf_l": "Leg.L", calf_l will be replaced by Leg.L
        "calf_r": "Leg.R" calf_r will be replaced by Leg.R
    },
    
    "Left leg IK": preset/button name
    {
        clears all constrains for these bones
        "Remove": ["Arm.L","ikArm.L","Arm.R","ikArm.R"],
    
        "Constraints": documentation
        [
            {
                "constraint", "IK", constraint type
                "bone": "Arm.L",
                "subtarget" : "ikArm.L", specific to IK constraint
                "chain_count" : 1, specific to IK constraint
            }
        ]
    }
}
    
 

Different blocks

Affichage JSON avec Commentaires et Hyperliens
{
    "Alias": optional
    {
        "calf_l": "Leg.L", calf_l will be replaced by Leg.L
        "calf_r": "Leg.R" calf_r will be replaced by Leg.R
    }
}
    

Alias

The addon allows you to use aliases

If you have multiple characters with a similar rig, you could use the same preset or a similar preset without remaking the entire JSON

 
Affichage JSON avec Commentaires et Hyperliens
        "Left leg IK": preset/button name
    

Preset name

The name of the button that will be automatically created

 

Constraints

The list of all your constraints. You can add multiple constraints and bones to constrain in a single preset

 
Affichage JSON avec Commentaires et Hyperliens
{
    clears all constrains for these bones
    "Remove": ["Arm.L","ikArm.L","Arm.R","ikArm.R"],
}
    

Remove

In a preset you can clear all the constrains in a list of bones

 
Affichage JSON avec Commentaires et Hyperliens
        "Constraints":
        [
            {
                "constraint" : "IK", mandatory
                "bone": "Arm.L", mandatory
                "subtarget" : "ikArm.L", specific
                "chain_count" : 1, specific
            }
        ]
    

Mandatory attributes

The attributes “constraint” and “bone” are mandatory. “constraint” determines the constraint type, and “bone” determines which bone will be constrained

Specific attributes

Most of the attributes will be specific to the type of constraint you are adding. In that case the “subtarget” and “chain_count” attributes are specific to IK constraints

 

Finding the attributes in Blender

In the properties tab where the constrains are displayed, right clicking on the name bone🟥 with the value ikArm.L🟥 shows a menu highlighting the name of the type Sub-Target🟥

 

The Copy Data Path🟨 button returns pose.bones["Arm.L"].constraints["IK"].subtarget

Affichage JSON avec Commentaires et Hyperliens
        "subtarget" : "ikArm.L", specific to IK constraint
    
  • “Arm.L" : the name of the bone

  • “IK” : the constraint type

  • “subtarget” : the attribute we’re looking for

 

Finding the attributes with the documentation

You can find on the Blender website the appropriate documentation

  • General documentation

    • Links to the specific constraints

    • Informations on how to fill certain attributes

    • Floats need to be written in float format and not integer

      • “pole_angle” : 180 ❌

      • “pole_angle” : 180.0 ✅

Affichage JSON avec Commentaires et Hyperliens
        "constraint": "IK", constraint type
    
  • Constraint types

    • This link can be found by scrolling on the General documentation page

    • This is the value you should fill the “constraint” attribute

 

“target” attribute

Affichage JSON avec Commentaires et Hyperliens
        "constraint": "IK",
        "bone": "Arm.L",
        "subtarget": "ikArm.L",
        "chain_count": 1
    

In the Blender documentation for IK constraints there is an attribute called “target” that is not filled in, for the example

We want to constrain the character’s bone “Arm.L” to another one of his bone, the “ikArm.L”

For this purpose the “target” is the character, and the subtarget is “ikArm.L”

 

he “target” Attribute as shown in the Blender documentation

The target attribute is not filled in, in our code. It can be set in three different ways. If your target is the currently selected object; you do not even need to set it in the JSON. It is implied and will be automatically filled in

Affichage JSON avec Commentaires et Hyperliens
        "target" : "Character", will search for an object matching the name
        "target" : "self", currently selected object
        "target" : , not adding the line will be equivalent to having "target" :"self"
    
 

Saving to character

The presets saved as custom properties

You can save the preset in a custom property of your character. This avoids having to have a JSON file everytime you add your character to your BLEND file

If your character has a JSON file and a custom property, the JSON file takes priority

 
Next
Next

Draugr - The Fool