v4.0
character rigging
Creates a three-bone leg with an and up-vector control object,
and a rigged three bone foot (see MakeFoot). The leg and foot bones are created
from a collection of 9 or more guide objects (see the
GuideObjectCollection parameter below for guide
requirements).
MakeDogLeg can optionally add roll divisions to the thigh. Roll
divisions are used to distribute the roll difference between
adjacent bones over the length of a bone. When used as deformers on
an envelope they evenly distribute twist along the length of a bone
giving a more natural skin deformation. Roll divisions can also be
added separately using the MakeBicepRoll command.
Optionally a shadow rig can be attached to the leg. Shadow objects
are created for each chain element in the leg, and shadow bones are
pose constrained to the actual leg bones. Shadow rigs can be used
to plot animation off of a rig.
oDogLeg = MakeDogLeg( Model, Parent, FootParent, GuideObjectCollection, [ShortPrefix], [FullPrefix], Sliders, [NbThighDivisions], [ShadowType], [ShadowParent] ); |
Returns a DogLeg JScript object.
Parameter | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Model | String | The model that the dog leg will belong to. | ||||||||||||
Parent | String | The parent of the dog leg root. | ||||||||||||
FootParent | String | The parent of the dog leg's foot controls | ||||||||||||
GuideObjectCollection | String | A list of at least 9 objects to search for when making the leg: Femur; Tibia; Metarsal; Middle Pivot; Right Pivot; Left Pivot; and at least 3 objects running from the start of the foot to the end of the toe (this means the foot must be at least a two bone chain). Extra items are added onto the length of the foot. | ||||||||||||
ShortPrefix | String | The short name (typically "L" or "R") to be used in the new rig. If the prefix is not given a dialog box appears prompting for one. | ||||||||||||
FullPrefix | String | The long name (typically "Left" or "Right") to be used in the new rig. If the prefix is not given a dialog box appears prompting for one. | ||||||||||||
Sliders | String | A slider PPG for dog leg parameters. If none is supplied a slider page is created. | ||||||||||||
NbThighDivisions | Integer | The number of roll divisions on the upper leg. If the value is
zero no roll is created.
Default Value: 3 |
||||||||||||
ShadowType | Integer | The type of shadow rig to attach to the dog leg. Shadow rigs
can be used to transfer or remap animation.
Default Value: 0
|
||||||||||||
ShadowParent | String | Parent of the shadow rig hiearchy. If empty, no shadow rig is generated. |
/* This script creates a dog leg using a collection of nulls as the guide objects. */ var guidecoll = new ActiveXObject("XSI.Collection"); guidecoll.Add( GetPrim("Null", "Guide_Femur") ); guidecoll.Add( GetPrim("Null", "Guide_Tibia") ); guidecoll.Add( GetPrim("Null", "Guide_Metarsal") ); guidecoll.Add( GetPrim("Null", "Guide_MiddlePivot") ); guidecoll.Add( GetPrim("Null", "Guide_RightPivot") ); guidecoll.Add( GetPrim("Null", "Guide_LeftPivot") ); guidecoll.Add( GetPrim("Null", "Guide_Ankle") ); guidecoll.Add( GetPrim("Null", "Guide_Foot") ); guidecoll.Add( GetPrim("Null", "Guide_Toe") ); var lXfm = guidecoll(0).Kinematics.Global.Transform var lNull = GetPrim("Null", "Legs"); /* Left Leg */ //Leg lXfm.SetTranslationFromValues(1,11,-0.5); guidecoll(0).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(1.5,7.5,0.5); guidecoll(1).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(2,4,-1); guidecoll(2).Kinematics.Global.Transform = lXfm; //Pivots lXfm.SetTranslationFromValues(2,0,-0.5); guidecoll(3).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(2.5,0,-0.5); guidecoll(4).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(1.5,0,-0.5); guidecoll(5).Kinematics.Global.Transform = lXfm; //Foot lXfm.SetTranslationFromValues(2,1,0.25); guidecoll(6).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(2,0.5,1); guidecoll(7).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(2,0,2); guidecoll(8).Kinematics.Global.Transform = lXfm; var LLeg= MakeDogLeg(lNull, GetPrim("Null", "LLegParent"), GetPrim("Null", "LFootParent"), guidecoll, "L", "Left" ); DumpLeg(LLeg); function DumpLeg(inLeg) { logmessage ("Data in the returned leg:"); logmessage ("------------------------"); logmessage ("Root : " + inLeg.Root); logmessage ("Foot Root : " + inLeg.Foot.Root); logmessage ("UpVector : " + inLeg.Knee); logmessage ("Tarsus : " + inLeg.Tarsus); logmessage ("BaseGuide : " + inLeg.Foot.BaseGuide); logmessage ("UpVector : " + inLeg.UpVec); logmessage ("Skeleton : " + inLeg.Skel); logmessage ("Hidden : " + inLeg.Hidden); logmessage ("Envelope : " + inLeg.Envelope); logmessage ("ShadowsStart: " + inLeg.ShadowStart); logmessage ("ShadowsEnds : " + inLeg.ShadowEnds); logmessage ("Shadows : " + inLeg.Shadows); } //results from running this script: //INFO : Data in the returned leg: //INFO : ------------------------ //INFO : Root : LLegRoot //INFO : Foot Root : LFootRoot //INFO : UpVector : LkneeGuide //INFO : Tarsus : LtarsusGuide //INFO : BaseGuide : LFootGuide3 //INFO : UpVector : LUpVector //INFO : Skeleton : LLegRoot,LFemur,LTibia,LMetarsal,LLegEff //INFO : Hidden : LLegRoot,LLegEff,LUpVectorParent,LkneeGuide,LtarsusGuide,lastboneUpV,baseNull //INFO : Envelope : LTibia,LMetarsal,LBicepRoll1,LBicepRoll2,LBicepRoll3,LBicepRoll_4 //INFO : ShadowsStart: undefined //INFO : ShadowsEnds : undefined //INFO : Shadows : undefined |