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