v4.0
Creates a two bone leg with an up vector control object. The leg bones are created from a collection
of guide objects, containing a guide for the hip socket, the knee joint, and the ankle respectively.
MakeLeg 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 acutal leg bones. Shadow rigs can be used to plot animation
off of a rig.
oLeg = MakeLeg( Model, Parent, [Prefix], GuideObjectCollection, [UpVectorBehindLeg], [NbThighDivisions], [ShadowType], [ShadowParent] ); |
Returns a Leg JScript object.
Parameter | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Model | String | The model the leg will belong to. | ||||||||||||
Parent | String | The parent of the new leg. | ||||||||||||
Prefix | String | The naming prefix for the newly created leg objects. | ||||||||||||
GuideObjectCollection | String | A list of 3 objects to search for when making the leg: 1) Top of leg; 2)Knee joint; 3)Ankle. | ||||||||||||
UpVectorBehindLeg | Boolean |
Determines whether the upvector is places behind the leg (-z globally) or in front (+z globally). Default Value: False |
||||||||||||
NbThighDivisions | Integer |
The number of roll divisions. If the value is zero no roll is created. Default Value: 3 |
||||||||||||
ShadowType | Integer |
The type of shadow rig to attach to the 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 two legs, left and right Left leg has thigh roll divisions Right leg has a box shadow hierarchy */ var guidecoll = new ActiveXObject("XSI.Collection"); guidecoll.Add( GetPrim("Null", "Guide_HipJoint") ); guidecoll.Add( GetPrim("Null", "Guide_KneeJoint") ); guidecoll.Add( GetPrim("Null", "Guide_AnkleJoint") ); var lXfm = guidecoll(0).Kinematics.Global.Transform var lNull = GetPrim("Null", "Legs"); /* Right Leg */ lXfm.SetTranslationFromValues(2,4,0); guidecoll(0).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(2,0,-1); guidecoll(1).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(2,-4,0); guidecoll(2).Kinematics.Global.Transform = lXfm; var RLeg= MakeLeg(lNull, GetPrim("Null", "RLegParent"),"R", guidecoll, true, 0, 4, GetPrim("Null", "RShadowParent") ); Logmessage("Right Leg"); DumpLeg(RLeg); /* Left Leg */ lXfm.SetTranslationFromValues(-2,4,0); guidecoll(0).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(-2,0,-1); guidecoll(1).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(-2,-4,0); guidecoll(2).Kinematics.Global.Transform = lXfm; var LLeg = MakeLeg(lNull , GetPrim("Null", "LLegParent"),"L", guidecoll); Logmessage("Left Leg"); DumpLeg(LLeg); function DumpLeg(inLeg) { logmessage ("Data in the returned leg:"); logmessage ("------------------------"); logmessage ("Root : " + inLeg.Root); logmessage ("Effector : " + inLeg.Eff); logmessage ("UpVector : " + inLeg.upV); logmessage ("Skeleton : " + inLeg.Skel); if(inLeg.ThighDivisions>0) {logmessage ("Thigh Divs : " + inLeg.ThighRoll.Divisions);} logmessage ("Hidden : " + inLeg.Hidden); logmessage ("Envelope : " + inLeg.Envelope); logmessage ("ShadowsStart: " + inLeg.ShadowStart); logmessage ("ShadowsEnds : " + inLeg.ShadowEnds); logmessage ("Shadows : " + inLeg.Shadows); } //results of running this command: //INFO : Right Leg //INFO : Data in the returned leg: //INFO : ------------------------ //INFO : Root : RRoot //INFO : Effector : RlegEff //INFO : UpVector : RlegUpV //INFO : Skeleton : RRoot,RThigh,RShin,RlegEff //INFO : Hidden : RRoot,RlegEff //INFO : Envelope : RThigh,RShin //INFO : ShadowsStart: RThigh1 //INFO : ShadowsEnds : RForeleg //INFO : Shadows : RThigh1,RForeleg // //INFO : Left Leg //INFO : Data in the returned leg: //INFO : ------------------------ //INFO : Root : LRoot //INFO : Effector : LlegEff //INFO : UpVector : LlegUpV //INFO : Skeleton : LRoot,LThigh,LShin,LlegEff //INFO : Thigh Divs : LBicepRoll1,LBicepRoll2,LBicepRoll3,LBicepRoll_4 //INFO : Hidden : LRoot,LlegEff //INFO : Envelope : LShin,LBicepRoll1,LBicepRoll2,LBicepRoll3,LBicepRoll_4 //INFO : ShadowsStart: undefined //INFO : ShadowsEnds : undefined //INFO : Shadows : undefined |