v4.0
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 |