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 do not 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 description of biped.getNode() for a list of the top level nodes.

biped.maxNumLinks <biped | biped_ctrl>

Maximum link nodes supported by Biped.

See the description 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 NOT give you the Biped twisty nodes.

In 3ds Max 7 it used to get the forearm 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, calves, horse legs, and thighs.

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

The IDs of the forearm 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 description of biped. biped.getNode() for a list of the link nodes.

Biped.getTwistStartId <biped | biped_ctrl>

Starting id for the twist nodes.

See the description 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
               )
           )
       )
   )