Biped Node Hierarchy

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.

For example,

--you can get the left hand as follows:

biped.getNode $ #lArm link:4

 

The top level and their link nodes in character studio 4 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

#lTighTwist

L TighTwist

L TighTwist1

L TighTwist2

L TighTwist3

 

 

L TighTwist4

L TighTwist5

L TighTwist6

L TighTwist7

 

 

L TighTwist8

L TighTwist9

 

 

106

#rTighTwist

R TighTwist

R TighTwist1

R TighTwist2

R TighTwist3

 

 

R TighTwist4

R TighTwist5

R TighTwist6

R TighTwist7

 

 

R TighTwist8

R TighTwist9

 

 

107

#lClafTwist

L CalfTwist

L CalfTwist1

L CalfTwist2

L CalfTwist3

 

 

L CalfTwist4

L CalfTwist5

L CalfTwist6

L CalfTwist7

 

 

L CalfTwist8

L CalfTwist9

 

 

108

#rClafTwist

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

 

 

R HorseTwist8

R HorseTwist9

 

 

Biped Node Hierarchy related methods

biped.maxNumNodes <biped | biped_ctrl>

Maximum nodes supported by Biped. In character studio 4, this value is 24. In future versions of character studio, additional top level nodes may be present. 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. In character studio 4 this value is 16. In future versions of character studio, additional link nodes may be present. 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

)

)

)

 

new.gif NEW in 3ds Max 9: The above example code will give you all of the Biped nodes.  But it will NOT get you the Biped twisty nodes.  In 3ds Max 7 it used to get the formarm twist nodes with 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 new IDs were added for all of the other twists.  But there were no methods to allow users to access the twists.

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. In 3ds Max 9, this value is 10.  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. In 3ds Max 9 this value is 10. In future versions, additional link nodes may be present. See the desrciption of biped.getNode() for a list of the link nodes.

Biped.getTwistStartId <biped | biped_ctrl>

Starting id for twist nodes. In max 9 this value is 101. 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