2
$\begingroup$

Suppose there is a highly advanced rig (human "skeleton") with many functions like a face rig etc... And there is no documentation at all. How can I find/list/explore the function of certain "entity" (bone) in that rig - how can I find/list/explore all (for example but not exclusive) actions, it is used in, all bone constraints, in which it is used, all parents, all children, all drivers and so on, in other ways then by clicking each single bone of the rig separtely and look for exactly that?

$\endgroup$

2 Answers 2

2
$\begingroup$

The outliner offers the best overview of your scene data that is available.

You can search the contents, one drawback is that the list stops at matches. That means you can search for bones that have constraints, but you won't see the constraints listed. The other thing is that it shows and searches by the name of items, you can rename an IK constraint to be "mydoohickey" and searching for "IK" will then not find it.

finding constraints

Searching for ik can show bones that have an IK constraint. Note that bone constraints only show when the rig is on pose mode.

list ik constraints

To find bones used in an action, you probably want to look at the graph editor where you can search for bone names to see if they have any animation data.

filtering the graph editor channels

For listing other info, we are left to using python scripts. For example to list bones that have an IK constraint -

import bpy

for b in bpy.context.object.pose.bones:
    for c in b.constraints:
        if c.type == 'IK':
            print(f'{b.name} has an IK constraint')
$\endgroup$
1
  • $\begingroup$ Thanks for that! :) I know the outliner but...if I could, I would give you extra points for "when the rig is on pose mode." I didn't know that before. $\endgroup$
    – user60781
    Sep 4, 2019 at 18:21
0
$\begingroup$

I know this is kind of an old question (from 2019, it’s 2024 now), but it wasn’t answered to my subjective satisfaction.

Here is a script that allows you to select a bone in pose mode and lists all the other bones that have constraints referencing the selected bone.

find-bone-constraints.py

import bpy

#
# Select a bone, run this to see all the bone constraints that reference it
#

aname = bpy.context.object.name
bname = bpy.context.active_pose_bone.name

cs = list()

for b in bpy.context.object.pose.bones:
    for c in b.constraints:
        try:
            if c.target.name == aname:
                if c.subtarget == bname:
                    cs.append( (b.name, c.type, c.name) )
        except:
            pass

if len(cs) == 0:
    print( "Bone '" + bname + "' does not appear in any other bone's constraints" )
else:
    print( "Bone '" + bname + "' found in the following bone constraints:" )
    blen = 0
    for (bname, ctype, cname) in cs:
        blen = max(blen, len(bname))
    for (bname, ctype, cname) in cs:
        print( f'  {bname:<{blen}}  {ctype}({cname})' )

Using this script and Bone Properties > Relations panel in the Properties Editor you can get quite a lot of an armature’s design and function.

I’m pretty sure this requires Python 3.x and a modern version of Blender (2.8+). I wrote and used it with 3.5, so... don’t expect it to work without some help on older versions.

$\endgroup$

You must log in to answer this question.