Two Rigging Tools

I wish I made these tools a long time ago.     Script #1 is “Create Null as Parent”.  I especially like this one.  You can make fast hierarchies with this.

Script #1


/*
SELECT THE OBJECTS YOU WANT PARENTED TO A NULL, THEN RUN.
MATCHES THE NULL TO THE FIRST CHILD'S POSITION AND ROTATION.
*/
/*--------------------
User Input
--------------------*/
var oRoot = Application.ActiveProject.ActiveScene.Root;
var oSel = Application.Selection;
/*--------------------
FUNCTIONS
--------------------*/
fRun(oSel);
function fRun(oSel){
var oNull = oRoot.AddPrimitive("Null", oSel(0).Name+"_null")
oNull.Kinematics.Local.PosX.Value = oSel(0).Kinematics.Local.PosX.Value;
oNull.Kinematics.Local.PosY.Value = oSel(0).Kinematics.Local.PosY.Value;
oNull.Kinematics.Local.PosZ.Value = oSel(0).Kinematics.Local.PosZ.Value;
oNull.Kinematics.Local.RotX.Value = oSel(0).Kinematics.Local.RotX.Value;
oNull.Kinematics.Local.RotY.Value = oSel(0).Kinematics.Local.RotY.Value;
oNull.Kinematics.Local.RotZ.Value = oSel(0).Kinematics.Local.RotZ.Value;
oNull.AddChild(oSel)
SelectObj(oNull);
}



Script #2

Create Null as Parent at First Point on Curve


/*--------------------
SELECT CURVE(S) AND RUN
User Input
--------------------*/
var oRoot = Application.ActiveProject.ActiveScene.Root;
var oSel = Application.Selection;
var oCurveList = XSIFactory.CreateActiveXObject("XSI.Collection");
/*--------------------
FUNCTIONS
--------------------*/
fCollectCurves(oSel);
function fCollectCurves(oSel){

for(var en = new Enumerator (oSel); !en.atEnd(); en.moveNext())
{
oEn = en.item()
oCurveList.Add(oEn);
}

for(k=0; k < oCurveList.Count; k++)
{
fTranslateNull(oCurveList(k));
}
}

function fTranslateNull(inPath)
{
var oPntX = new Array();
var oPntY = new Array();
var oPntZ = new Array();
var oNull = oRoot.AddPrimitive("null");
oVB = new VBArray(inPath.ActivePrimitive.Geometry.Points.PositionArray);
oPntArray = oVB.toArray();
for(i=0; i < oPntArray.length; i += 3)
{
oPntX[i] = oPntArray[i];
oPntY[i] = oPntArray[i+1];
oPntZ[i] = oPntArray[i+2];
if(i == 0){

oNull.Kinematics.Local.PosX.Value = oPntX[0];
oNull.Kinematics.Local.PosY.Value = oPntY[0];
oNull.Kinematics.Local.PosZ.Value = oPntZ[0];
}
}

oNull.AddChild(inPath);
}

Tags: ,

Leave a Reply

You must be logged in to post a comment.