LScript (Layout) to shift channels by another objects or parent motion. It is a easier way to setup offsets for shifted pivot setups where an object parented to another can shift its pivot back to place to allow its parent pivot to move freely.
Compatible with Newtek LightWave 9.6 and above.
// LScript Item Animation - www.StephenCulley.co.uk
//
// web address: http://www.stephenculley.co.uk
// email address: email@stephenculley.co.uk
/*
LScript Item Animation - Shift
Motion_Shift.ls
*/
@version 2.2
@warnings
@script motion
@name *Shift
// Title
sTitle = "*Shift";
// Version
sVersion = "v1.0";
// Item
ControlItem = nil;
ControlItemName = "nil";
// Variable
nMultiplierX = 0.0;
nMultiplierY = 0.0;
nMultiplierZ = 0.0;
nMultiplierH = 0.0;
nMultiplierP = 0.0;
nMultiplierB = 0.0;
nMultiplierSX = 0.0;
nMultiplierSY = 0.0;
nMultiplierSZ = 0.0;
create
{
setdesc(sTitle + " - Parent");
info("Shift - Parent used unless Item is selected");
}
destroy
{
}
process: ma, frame, time
{
// Variables
vPosition = ma.get(POSITION,time);
vRotation = ma.get(ROTATION,time);
vScale = ma.get(SCALING,time);
vControlItemPosition = <0,0,0>;
vControlItemRotation = <0,0,0>;
vControlItemScale = <0,0,0>;
if(ControlItemName != "nil") {ControlItem = Mesh(ControlItemName); ControlItemName = "nil";}
if(ControlItem)
{
setdesc(sTitle + " - " + ControlItem.name);
vControlItemPosition = ControlItem.getPosition(time);
vControlItemRotation = ControlItem.getRotation(time);
vControlItemScale = ControlItem.getScaling(time);
}
else
{
Item = ma.objID;
ItemParent = Item.parent;
if(ItemParent)
{
setdesc(sTitle + " - Parent");
vControlItemPosition = ItemParent.getPosition(time);
vControlItemRotation = ItemParent.getRotation(time);
vControlItemScale = ItemParent.getScaling(time);
}
}
// Position / Rotation / Scale
vPosition.x += (vControlItemPosition.x * nMultiplierX);
vPosition.y += (vControlItemPosition.y * nMultiplierY);
vPosition.z += (vControlItemPosition.z * nMultiplierZ);
vRotation.x += (vControlItemRotation.x * nMultiplierH);
vRotation.y += (vControlItemRotation.y * nMultiplierP);
vRotation.z += (vControlItemRotation.z * nMultiplierB);
vScale.x += (vControlItemScale.x * nMultiplierSX);
vScale.y += (vControlItemScale.y * nMultiplierSY);
vScale.z += (vControlItemScale.z * nMultiplierSZ);
// ma
ma.set(POSITION,vPosition);
ma.set(ROTATION,vRotation);
ma.set(SCALING,vScale);
}
load: what,io
{
if(what == SCENEMODE) // processing an ASCII scene file
{
ControlItemName = io.read().asStr();
nMultiplierX = io.read().asNum();
nMultiplierY = io.read().asNum();
nMultiplierZ = io.read().asNum();
nMultiplierH = io.read().asNum();
nMultiplierP = io.read().asNum();
nMultiplierB = io.read().asNum();
nMultiplierSX = io.read().asNum();
nMultiplierSY = io.read().asNum();
nMultiplierSZ = io.read().asNum();
}
}
save: what,io
{
if(what == SCENEMODE)
{
if(ControlItem != nil)
{
io.writeln(string(ControlItem.name));
}
else
{
io.writeln("nil");
}
io.writeln(nMultiplierX);
io.writeln(nMultiplierY);
io.writeln(nMultiplierZ);
io.writeln(nMultiplierH);
io.writeln(nMultiplierP);
io.writeln(nMultiplierB);
io.writeln(nMultiplierSX);
io.writeln(nMultiplierSY);
io.writeln(nMultiplierSZ);
}
}
options
{
reqbegin(sTitle + " " + sVersion);
ctrl_c0 = ctlmeshitems("Control Item",ControlItem);
ctrl_c1 = ctlnumber("Position Multiplier X",nMultiplierX);
ctrl_c2 = ctlnumber("Position Multiplier Y",nMultiplierY);
ctrl_c3 = ctlnumber("Position Multiplier Z",nMultiplierZ);
ctrl_c4 = ctlnumber("Rotation Multiplier H",nMultiplierH);
ctrl_c5 = ctlnumber("Rotation Multiplier P",nMultiplierP);
ctrl_c6 = ctlnumber("Rotation Multiplier B",nMultiplierB);
ctrl_c7 = ctlnumber("Scale Multiplier X",nMultiplierSX);
ctrl_c8 = ctlnumber("Scale Multiplier Y",nMultiplierSY);
ctrl_c9 = ctlnumber("Scale Multiplier Z",nMultiplierSZ);
// Developer
ctlsep();
ctrl_dev0 = ctltext("","developer: Stephen Culley","http://www.stephenculley.co.uk");
return if !reqpost();
ControlItem = getvalue(ctrl_c0);
nMultiplierX = getvalue(ctrl_c1);
nMultiplierY = getvalue(ctrl_c2);
nMultiplierZ = getvalue(ctrl_c3);
nMultiplierH = getvalue(ctrl_c4);
nMultiplierP = getvalue(ctrl_c5);
nMultiplierB = getvalue(ctrl_c6);
nMultiplierSX = getvalue(ctrl_c7);
nMultiplierSY = getvalue(ctrl_c8);
nMultiplierSZ = getvalue(ctrl_c9);
reqend();
}
https://drive.google.com/open?id=1cR_q2GVUAJHumic1-A3eXV16acQnVTWs
No comments:
Post a Comment