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 - Volume Trick
Channel_VolumeTrick.ls
*/
@version 2.2
@warnings
@script channel
@name *Volume Trick
// Title
sTitle = "*Volume Trick";
// Version
sVersion = "v1.1";
// Variable
nMin = 0.0;
nMax = 1.0;
create: channel
{
setdesc(sTitle);
// Info
info("*Volume Trick - Motion blur must be enabled.");
}
destroy
{
// take care of final clean-up activities here
}
process: ca, frame, time
{
nValue = ca.get(time);
if(Camera().blurLength(time) <> 0.0)
{
// Map Range
n01 = maprange01(frame * (1 / Scene().fps),(frame + 1) * (1 / Scene().fps),time);
nValue = linear1D(nValue + nMin,nValue + (nMax * (1 / Camera().blurLength(time))) - nMin,n01);
}
// ca
ca.set(nValue);
}
// INTERPOLATION
linear1D: n1,n2,i // i = interpolation point (0-1)
{
return(n1 * (1 - i) + n2 * i);
}
// MAP RANGE
maprange01: n1,n2,i
{
if(n2-n1 == 0.0){return(0.0);}
else
{return((1/(n2-n1)) * (i-n1));}
}
load: what,io
{
if(what == SCENEMODE) // processing an ASCII scene file
{
if(io.read().asStr() == sTitle + " " + sVersion)
{
nMin = io.read().asNum(); // Min
nMax = io.read().asNum(); // Max
}
}
}
save: what,io
{
if(what == SCENEMODE)
{
// Header
io.writeln(sTitle + " " + sVersion);
io.writeln(nMin); // Min
io.writeln(nMax); // Max
}
}
options
{
if(reqisopen())
{
reqend();
return;
}
reqbegin(sTitle + " " + sVersion);
ctrl_c0 = ctlnumber("Min",nMin);
ctrl_c1 = ctlnumber("Max",nMax);
// Developer
ctlsep();
ctrl_dev0 = ctltext("","developer: Stephen Culley","http://www.stephenculley.co.uk");
// Refresh
ctlrefresh(ctrl_c0,"refresh_c0"); // Min
ctlrefresh(ctrl_c1,"refresh_c1"); // Max
reqopen();
}
refresh_c0:value // Min
{
nMin = value;
}
refresh_c1:value // Max
{
nMax = value;
}
https://drive.google.com/open?id=1cR_q2GVUAJHumic1-A3eXV16acQnVTWs
No comments:
Post a Comment