Introduced
4.0
Description
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.
Scripting Syntax
MakeLeg( Model, Parent, [Prefix], GuideObjectCollection, [UpVectorBehindLeg], [NbThighDivisions], [ShadowType], [ShadowParent] )
Parameters
|
Parameter |
Type |
Description |
|
Model |
The model the leg will belong to. |
|
|
Parent |
The parent of the new leg. |
|
|
Prefix |
The naming prefix for the newly created leg objects. |
|
|
GuideObjectCollection |
A list of 3 objects to search for when making the leg: 1) Top of leg; 2)Knee joint; 3)Ankle. |
|
|
UpVectorBehindLeg |
Determines whether the upvector is places behind the leg (-z globally) or in front (+z globally). Default Value: False |
|
|
NbThighDivisions |
The number of roll divisions. If the value is zero no roll is created. Default Value: 3 |
|
|
ShadowType |
The type of shadow rig to attach to the leg. Shadow rigs can be used to transfer or remap animation. Default Value: 0 Possible Values: • 0: No shadow • 1: SI|3D Skeleton shadow rig • 2: XSI Skeleton shadow rig • 3: Null shadow rig • 4: Box shadow rig |
|
|
ShadowParent |
Parent of the shadow rig hiearchy. If empty, no shadow rig is generated. |
Return Value
Returns a Leg JScript object.
Examples
JScript Example
/*
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 : undefinedSee Also
Autodesk Softimage v7.5