MAXScript Extensions > MAXScript Extensions for character studio > Biped MAXScript Extensions > Biped General Topics >

# Biped Node Hierarchy

| Character Studio - Quick Navigation

    biped.getNode <biped | biped_ctrl> <name | index> [link:<int_link>]

Returns the specified limb node where the second argument can be a named limb (like #larm, #rarm, or #lfingers) or an integer index. If you don't specify the link argument the top (first) node is returned. If the specified node does not exist, a value of undefined is returned.

EXAMPLE
    --you can get the left hand as follows:
    biped.getNode $ #lArm link:4

The top level and their link nodes in a Biped are:

Index | Limb Name | Link Nodes in Link Index Order |  |  |
1 | #larm | L Clavicle | L UpperArm | L Forearm | L Hand
2 | #rarm | R Clavicle | R UpperArm | R Forearm | R Hand
3 | #lfingers | L Finger0 | L Finger01 | L Finger02 | L Finger1
|  | L Finger11 | L Finger12 | L Finger2 | L Finger21
|  | L Finger22 | L Finger3 | L Finger31 | L Finger32
|  | L Finger4 | L Finger41 | L Finger42 |
4 | #rfingers | R Finger0 | R Finger01 | R Finger02 | R Finger1
|  | R Finger11 | R Finger12 | R Finger2 | R Finger21
|  | R Finger22 | R Finger3 | R Finger31 | R Finger32
|  | R Finger4 | R Finger41 | R Finger42 |
5 | #lleg | L Thigh | L Calf | L HorseLink | L Foot
6 | #rleg | R Thigh | R Calf | R HorseLink | R Foot
7 | #ltoes | L Toe0 | L Toe01 | L Toe02 | L Toe1
|  | L Toe11 | L Toe12 | L Toe2 | L Toe21
|  | L Toe22 | L Toe3 | L Toe31 | L Toe32
|  | L Toe4 | L Toe41 | L Toe42 |
8 | #rtoes | R Toe0 | R Toe01 | R Toe02 | R Toe1
|  | R Toe11 | R Toe12 | R Toe2 | R Toe21
|  | R Toe22 | R Toe3 | R Toe31 | R Toe32
|  | R Toe4 | R Toe41 | R Toe42 |
9 | #spine | Spine | Spine1 | Spine2 | Spine3
|  | Spine4 |  |  |
10 | #tail | Tail | Tail1 | Tail2 | Tail3
|  | Tail4 |  |  |
11 | #head | Head |  |  |
12 | #pelvis | Pelvis |  |  |
13 | #vertical | Biped COM |  |  |
14 | #horizontal | Biped COM |  |  |
15 | #turn | Biped COM |  |  |
16 | #footprints | Footsteps |  |  |
17 | #neck | Neck | Neck1 | Neck2 | Neck3
|  | Neck4 |  |  |
18 | #pony1 | Ponytail1 | Ponytail11 | Ponytail12 | Ponytail13
|  | Ponytail14 |  |  |
19 | #pony2 | Ponytail2 | Ponytail21 | Ponytail22 | Ponytail23
|  | Ponytail24 |  |  |
20 | #prop1 | Prop1 |  |  |
21 | #prop2 | Prop2 |  |  |
22 | #prop3 | Prop3 |  |  |
101 | #lfArmTwist | L ForeTwist | L ForeTwist1 | L ForeTwist2 | L ForeTwist3
|  | L ForeTwist4 | L ForeTwist5 | L ForeTwist6 | L ForeTwist7
|  | L ForeTwist8 | L ForeTwist9 |  |
102 | #rfArmTwist | R ForeTwist | R ForeTwist1 | R ForeTwist2 | R ForeTwist3
|  | R ForeTwist4 | R ForeTwist5 | R ForeTwist6 | R ForeTwist7
|  | R ForeTwist8 | R ForeTwist9 |  |
103 | #lUparmTwist | L UpTwist | L UpTwist1 | L UpTwist2 | L UpTwist3
|  | L UpTwist4 | L UpTwist5 | L UpTwist6 | L UpTwist7
|  | L UpTwist8 | L UpTwist9 |  |
104 | #rUparmTwist | R UpTwist | R UpTwist1 | R UpTwist2 | R UpTwist3
|  | R UpTwist4 | R UpTwist5 | R UpTwist6 | R UpTwist7
|  | R UpTwist8 | R UpTwist9 |  |
105 | #lThighTwist | L ThighTwist | L ThighTwist1 | L ThighTwist2 | L ThighTwist3
|  | L ThighTwist4 | L ThighTwist5 | L ThighTwist6 | L ThighTwist7
|  | L ThighTwist8 | L ThighTwist9 |  |
106 | #rThighTwist | R ThighTwist | R ThighTwist1 | R ThighTwist2 | R ThighTwist3
|  | R ThighTwist4 | R ThighTwist5 | R ThighTwist6 | R ThighTwist7
|  | R ThighTwist8 | R ThighTwist9 |  |
107 | #lCalfTwist | L CalfTwist | L CalfTwist1 | L CalfTwist2 | L CalfTwist3
|  | L CalfTwist4 | L CalfTwist5 | L CalfTwist6 | L CalfTwist7
|  | L CalfTwist8 | L CalfTwist9 |  |
108 | #rCalfTwist | R CalfTwist | R CalfTwist1 | R CalfTwist2 | R CalfTwist3
|  | R CalfTwist4 | R CalfTwist5 | R CalfTwist6 | R CalfTwist7
|  | R CalfTwist8 | R CalfTwist9 |  |
109 | #lHorseTwist | L HorseTwist | L HorseTwist1 | L HorseTwist2 | L HorseTwist3
|  | L HorseTwist4 | L HorseTwist5 | L HorseTwist6 | L HorseTwist7
|  | L HorseTwist8 | L HorseTwist9 |  |
110 | #rHorseTwist | R HorseTwist | R HorseTwist1 | R HorseTwist2 | R HorseTwist3
|  | R HorseTwist4 | R HorseTwist5 | R HorseTwist6 | R HorseTwist7
|  | RHorseTwist8 | R HorseTwist9 |  |

## Biped Node Hierarchy RelatedMethods

    biped.maxNumNodes <biped | biped_ctrl>

Maximum nodes supported by Biped.

See the desrciption of biped.getNode() for a list of the top level nodes.

    biped.maxNumLinks <biped | biped_ctrl>

Maximum link nodes supported by Biped.

See the desrciption of biped.getNode() for a list of the link nodes.

EXAMPLE
    bipObj = biped.createNew 100 0 [0,0,0]  arms:true  neckLinks :5\
    spineLinks:5 legLinks:4 tailLinks:5 ponyTail1Links:5 \
    ponyTail2Links:5 fingers:5 fingerLinks:3 toes:5\
    toeLinks:3 ankleAttach:0.3 trianglePelvis:True \
    prop1Exists:True prop2Exists:True prop3Exists:True \
    forearmTwistLinks:4

    nn = biped.maxNumNodes bipObj
    nl = biped.maxNumLinks bipObj
    for i = 1 to nn do
    (
    anode = biped.getNode bipObj i
    if anode != undefined do
    (
    format "% :\t%\n" i anode.name
    for j = 1 to nl do
    (
    alink = biped.getNode bipObj i link:j
    if alink != undefined do
    format "% : % \t%\n" i j alink.name
    )
    )
    )

The above example code will give you all of the Biped nodes, but it will NOTgive you the Biped twisty nodes.

In 3ds Max 7 it used to get the forearm twist nodeswith ID 24 and 25, but that was all the twist nodes a Biped had.

In 3ds Max 8, twist nodes were added for the upper arms, the calves, the horse legs, and the thighs.

maxNumNodes was changed to return 22 instead of 24, so one could no longer access the forarm twists.

The IDs of the forarm twists were changed, and newIDs were added for all of the other twists, but there were no methods to allow users to access the twists.

## Twisty Bones Methods

The following methods were added in 3ds Max 9 to allow user access to the twisty bones in a Biped. They each take a Biped controller as their only parameter:

    Biped.maxTwistNodes  <biped | biped_ctrl>

Number of twist node tracks supported by Biped.

See the description of biped.getNode() for a list of the top level twist nodes.

    Biped.maxTwistLinks  <biped | biped_ctrl>

Maximum number of link nodes for each twist track supported by Biped.

See the desrciption of biped. biped.getNode() for a list of the link nodes.

    Biped.getTwistStartId <biped | biped_ctrl>

Starting id for twist nodes.

See the desrciption of biped.getNode() for a list of the twist nodes and their ids.

Below is an example which gets all of the twisty nodes in a Biped.

EXAMPLE
    nn = biped.maxTwistNodes bipObj
    format "num twist nodes: %\n" nn
    nl = biped.maxTwistLinks bipObj
    format "max twist links: %\n" nl
    ts = biped.getTwistStartId bipObj
    format "twist start id: %\n" ts

    for i = ts to ts+nn-1 do
    (
        anode = biped.getNode bipObj i
       if anode != undefined do
        (
            format "% :\t%\n" i anode.name
           for j = 1 to nl do
            (
                alink = biped.getNode bipObj i link:j
               if alink != undefined do
                (
                    format "% : % \t%\n" i j alink.name
                )
            )
        )
    )

#### See Also

- Biped MaxScript Extensions

- MAXScript Extensions in character studio