v4.0
character rigging
Creates a two-point slide setup (a bind null two-point
constrained to two control objects, see Make2PointSlide) and a spherical thigh
volume object that bounding volume constrains the bind null. The
collection of guide objects passed to MakeThighSlide determines the
position of the slide, and the proportions of the thigh
volume.
The guide collection contains 5 objects. The first two objects are
to position the top and bottom control objects of the slide. The
bind point will be the midpoint between these two objects, and also
determines the center of the thigh volume. The third object is the
bottom of the hip, and will determine the radius of the thigh
volume. The fourth and fifth objects are the base and tip of the
thigh bone (leg and knee joints). The vector created by these two
points defines the thigh bone and is used to align the thigh volume
with the thigh bone.
oThighSlide = MakeThighSlide( [Prefix], GuideObjectCollection, UpperParent, LowerParent ); |
Returns a ThighSlide JScript object.
Parameter | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Prefix | String | The name prefix for the newly created slide nulls. | ||||||||||||
GuideObjectCollection | String | A list of items to search for when making the thigh slide. It
must have a minimum of 5 items where:
|
||||||||||||
UpperParent | String | The parent object for the upper part of the thigh slide assembly, typically the hip. | ||||||||||||
LowerParent | String | The parent object for the lower part of the thigh slide assembly, typically the thigh bone. |
/* This example creates a thigh slide setup on a one bone chain. MakeThighSlide needs a collection of five guide objects as an argument. Build a collection of five guide nulls and position them. */ var guidecoll = new ActiveXObject("XSI.Collection"); guidecoll.Add( GetPrim("Null", "SlideTop") ); guidecoll.Add( GetPrim("Null", "SlideBottom") ); guidecoll.Add( GetPrim("Null", "SlideSideHip") ); guidecoll.Add( GetPrim("Null", "SlideThighLeg") ); guidecoll.Add( GetPrim("Null", "SlideThighKnee") ); // // Make the slide control nulls red // MakeLocal(guidecoll(0)+".display", siDefaultPropagation); SetValue( guidecoll(0)+".display.wirecol", 15, null); MakeLocal(guidecoll(1)+".display", siDefaultPropagation); SetValue( guidecoll(1)+".display.wirecol", 15, null); // // Position the guide objects // var lXfm = guidecoll(0).Kinematics.Global.Transform; // slide control guides lXfm.SetTranslationFromValues(-2,3,0); guidecoll(0).Kinematics.Global.Transform = lXfm; lXfm.SetTranslationFromValues(-1,-1,0); guidecoll(1).Kinematics.Global.Transform = lXfm; // hip bottom lXfm.SetTranslationFromValues(-6,0,0); guidecoll(2).Kinematics.Global.Transform = lXfm; // thigh bone base and tip var vThighBase = XSIMath.CreateVector3(); var vThighTip = XSIMath.CreateVector3(); vThighBase.Set(-3,3,0); vThighTip.Set(-3.5,-4,0); lXfm.SetTranslation(vThighBase); guidecoll(3).Kinematics.Global.Transform = lXfm; lXfm.SetTranslation(vThighTip); guidecoll(4).Kinematics.Global.Transform = lXfm; // Create a bone where the thigh bone is var ThighChain = ActiveSceneRoot.Add2DChain(vThighBase, vThighTip); var ThighSlide = MakeThighSlide("THIGH_", guidecoll, GetPrim("Null", "UpperParent"), ThighChain.Bones(0) ); logmessage ("Data in the returned thigh slide object:"); logmessage ("---------------------------------------"); logmessage ("Bind Null : " + ThighSlide.BindNull); logmessage ("Top Null : " + ThighSlide.TopNull); logmessage ("Base Null : " + ThighSlide.BaseNull); logmessage ("Volume : " + ThighSlide.Volume); //INFO : "Data in the returned thigh slide object:" //INFO : "---------------------------------------" //INFO : "Bind Null : THIGH_Bind" //INFO : "Top Null : THIGH_Top" //INFO : "Base Null : THIGH_Base" //INFO : "Volume : THIGH_ThighVolume" |