LScript (Layout) to filter envelopes to smooth it out based on time samples.
Compatible with Newtek LightWave 9.6 and above.
// LScript Channel Filter - www.StephenCulley.co.uk
//
// web address: http://www.stephenculley.co.uk
// email address: email@stephenculley.co.uk
/*
LScript Channel Filter - Filter
Channel_Filter.ls
*/
@version 2.2
@warnings
@script channel
@name *Filter
// Title
sTitle = "*Filter";
// Version
sVersion = "v1.0";
// Variable
iFilter = 5;
// Controls
ctrl_c0;
create: channel
{
setdesc(sTitle + " - " + iFilter);
}
destroy
{
// take care of final clean-up activities here
}
process: ca, frame, time
{
fps = (1 / Scene().fps);
iCount = 0;
nValue = 0.0;
for(iS = -iFilter; iS <= iFilter; iS++)
{
nValue += ca.get(time + (iS * fps));
iCount++;
}
if(iCount > 1){nValue = nValue * (1 / iCount);}
// ca
ca.set(nValue);
}
load: what,io
{
if(what == SCENEMODE) // processing an ASCII scene file
{
if(io.read().asStr() == sTitle + " " + sVersion)
{
iFilter = io.read().asInt(); // Filter
setdesc(sTitle + " - " + iFilter);
}
}
}
save: what,io
{
if(what == SCENEMODE)
{
// Header
io.writeln(sTitle + " " + sVersion);
io.writeln(iFilter); // Filter
}
}
options
{
if(reqisopen())
{
reqend();
return;
}
reqbegin(sTitle + " " + sVersion);
ctrl_c0 = ctlinteger("Filter",iFilter);
// Developer
ctlsep();
ctrl_dev0 = ctltext("","developer: Stephen Culley","http://www.stephenculley.co.uk");
// Refresh
ctlrefresh(ctrl_c0,"refresh_c0"); // Filter
reqopen();
}
refresh_c0:value // Filter
{
iFilter = min(max(0,value),100);
setvalue(ctrl_c0,iFilter);
setdesc(sTitle + " - " + iFilter);
}
https://drive.google.com/open?id=1cR_q2GVUAJHumic1-A3eXV16acQnVTWs
No comments:
Post a Comment