electroNIX
05-26-2003, 11:02 AM
Hi!
I just learned to use Powergons ;) and I used the script "multi-camera batch render" from Al Street at http://www.ats-3d.com...
But, it only has 5 possible cameras and the batchfile overwrites the older renders with the new ones if you render the same frame...
I am new to lscript, so please be nice :p
This is the original lscript from Al Streets Page...
/* mcbr.ls
* (c) 2002 Al Street www.ats-3d.com
* multi-camera batch render (MCBR)
* tested ok with UNC drives
* tested ok with mapped network drives
* tested ok on stand-alone system
*/
@version 2.2
@warnings
@script generic
// globals
cam; cam1..5; rendercam;
sf1..5; ef1..5; segmentStartFrame;
segmentEndFrame;
scriptName="(MCBR)";
scriptVer="v 0.1";
textFile; line; sf1 = 1; ef1;
insdir; sf; ef; contentdir; scenefilename;
base; drivePath; BaseName; sceneFilename;
curcamPrefix; scenefile; lines; curcamPrefixLoc;
camsize; camObj; AnyPrefix = nil;
generic
{
i = 1;
camera = getfirstitem(CAMERA);
camObj[1] = camera;
while(camera != nil)
{
camera = camera.next();
i++;
if(camera != nil) camObj[i] = camera;
else i--;
}
camsize = size(camObj);
insdir = getdir("Install");
contentdir = getdir("Content");
scenefilename = getfirstitem(SCENE);
scene = Scene();
cam = Camera();
ef1 = scene.frameend;
for(j = 1; j<= 5; j++) {rendercam[j] = nil;}
read_master();
if(!AnyPrefix)
{
warn("Save RGB Images not activated in master scene!"," Processing terminated.");
return;
}
requester();
sceneFilename[1] = drivePath + BaseName + "_segment_1.lws";
sf[1] = sf1; ef[1] = ef1; rendercam[1] = cam1;
if(cam2 != nil) {sf[2] = sf2; ef[2] = ef2; rendercam[2] = cam2; sceneFilename[2] = drivePath + BaseName + "_segment_2.lws";}
if(cam3 != nil) {sf[3] = sf3; ef[3] = ef3; rendercam[3] = cam3; sceneFilename[3] = drivePath + BaseName + "_segment_3.lws";}
if(cam4 != nil) {sf[4] = sf4; ef[4] = ef4; rendercam[4] = cam4; sceneFilename[4] = drivePath + BaseName + "_segment_4.lws";}
if(cam5 != nil) {sf[5] = sf5; ef[5] = ef5; rendercam[5] = cam5; sceneFilename[5] = drivePath + BaseName + "_segment_5.lws";}
write_scene();
write_bat(); // write the ScreamerNet batch file
}
/* -----------------------------------------------------------
* read_master() reads the master scene file
* ----------------------------------------------------------- */
read_master
{
SaveScene();
// scene = Scene();
// master = scene.filename; // info("master is ",master);
scenefilename = getfirstitem(SCENE);
filename = scenefilename.filename;
textFile = fullpath(filename);
// info("textFile = ",textFile);
base = split(textFile);
if(!base[1])
{
drivePath = base[2];
}
else
{
drivePath = base[1] + base[2];
}
BaseName = base[3];
// info(base[3]);
scenefile = File(filename); lines = scenefile.linecount();
// info("master file ",scenefile," has ",lines," lines.");
linePrefix = "SaveRGB 1"; // we'll need this later
curcamPrefix = "CurrentCamera"; // need to find this location also
len = sizeof(linePrefix);
len2 = sizeof(curcamPrefix);
for(i = 1;i <= lines; i++)
{
line[i] = scenefile.read() ;
if(strleft(line[i],len) == linePrefix)
{
linePrefixLoc = i; AnyPrefix = 1;
// info("SaveRGBImagesPrefix found on line ",i);
}
if(strleft(line[i],len2) == curcamPrefix)
{
curcamPrefixLoc = i;
// info("curcamPrefix found on line ",i);
}
}
}
/* -----------------------------------------------------------
* write_scene() writes the individual scene files
* for each render
* ----------------------------------------------------------- */
write_scene
{
// debug();
// write out the new file
// ** don't forget to check for UNC file compatibility **
for(j = 1; j <= 5; j++)
{
if(rendercam[j] != nil)
{
// get number of camera object
for(x = 1; x <= camsize; x++)
{
if(rendercam[j].id == camObj[x].id)
{
//info("camera is item ", x - 1);
renderCamNum = x - 1;
}
}
scenefile.open(sceneFilename[j],"w");
for(i = 1;i <= lines; i++)
{
if(i == 4) { scenefile.writeln("FirstFrame ",sf[j]); i++; }
if(i == 5) { scenefile.writeln("LastFrame ",ef[j]); i++; }
if(i == curcamPrefixLoc)
{
// info("rendercam = ",rendercam[j]);
scenefile.writeln(curcamPrefix, " ", renderCamNum);
//i++; // skip to the next line
}
else
{
scenefile.writeln(line[i]);
}
}
}
}
}
/* -----------------------------------------------------------
* write_bat() writes the ScreamerNet batch file
* LWSN -3 [-c<config file>] [-d<content dir>] [-q]
* <scene file> <first frame> <last frame> [<frame step>]
* ----------------------------------------------------------- */
write_bat
{
base = split(textFile);
if(!base[1])
{
drivePath = base[2];
}
else
{
drivePath = base[1] + base[2];
}
renderFilename = drivePath + "render.bat";
if((renderFile = File(renderFilename, "w")) == nil)
{ //error msg
error("could not open render batch file ",renderFilename);
return;
}
for(i=1; i<=5; i++)
{
if(rendercam[i] != nil)
{
SN = insdir + "\\LWSN -3 -d" + contentdir + " " + sceneFilename[i] + " " + string(sf[i]) + " " + string(ef[i]);
renderFile.writeln(SN);
}
}
renderFile.close();
}
/* -----------------------------------------------------------
* Requester
* ----------------------------------------------------------- */
requester
{
// reqbegin(scriptName+" "+scriptVer);
if(!reqbegin(" MCBR (c) 2002 by Al Street ver 1.0 "))
return;
reqsize(440,230);
row0 = 5; row1 = 35; row2 = 65; row3 = 95; row4 = 125; row5 = 155;
tx1 = ctltext("","Multi-Camera Batch Render -- www.ats-3d.com"); ctlposition(tx1,100,row0);
c1 = ctlinteger("Start Frame", sf1); ctlposition(c1,10,row1,100);
c2 = ctlinteger("End Frame", ef1); ctlposition(c2,130,row1,100);
c3 = ctlcameraitems("Camera",cam); ctlposition(c3,260,row1,150);
c4 = ctlinteger("Start Frame", 0); ctlposition(c4,10,row2,100);
c5 = ctlinteger("End Frame", 0); ctlposition(c5,130,row2,100);
c6 = ctlcameraitems("Camera"); ctlposition(c6,260,row2,150);
c7 = ctlinteger("Start Frame", 0); ctlposition(c7,10,row3,100);
c8 = ctlinteger("End Frame", 0); ctlposition(c8,130,row3,100);
c9 = ctlcameraitems("Camera"); ctlposition(c9,260,row3,150);
c10 = ctlinteger("Start Frame", 0); ctlposition(c10,10,row4,100);
c11 = ctlinteger("End Frame", 0); ctlposition(c11,130,row4,100);
c12 = ctlcameraitems("Camera"); ctlposition(c12,260,row4,150);
c13 = ctlinteger("Start Frame", 0); ctlposition(c13,10,row5,100);
c14 = ctlinteger("End Frame", 0); ctlposition(c14,130,row5,100);
c15 = ctlcameraitems("Camera"); ctlposition(c15,260,row5,150);
if (!reqpost()) return 0;
sf1 = getvalue(c1); ef1 = getvalue(c2); cam1 = getvalue(c3);
sf2 = getvalue(c4); ef2 = getvalue(c5); cam2 = getvalue(c6);
sf3 = getvalue(c7); ef3 = getvalue(c8); cam3 = getvalue(c9);
sf4 = getvalue(c10); ef4 = getvalue(c11); cam4 = getvalue(c12);
sf5 = getvalue(c13); ef5 = getvalue(c14); cam5 = getvalue(c15);
reqend();
}
I just learned to use Powergons ;) and I used the script "multi-camera batch render" from Al Street at http://www.ats-3d.com...
But, it only has 5 possible cameras and the batchfile overwrites the older renders with the new ones if you render the same frame...
I am new to lscript, so please be nice :p
This is the original lscript from Al Streets Page...
/* mcbr.ls
* (c) 2002 Al Street www.ats-3d.com
* multi-camera batch render (MCBR)
* tested ok with UNC drives
* tested ok with mapped network drives
* tested ok on stand-alone system
*/
@version 2.2
@warnings
@script generic
// globals
cam; cam1..5; rendercam;
sf1..5; ef1..5; segmentStartFrame;
segmentEndFrame;
scriptName="(MCBR)";
scriptVer="v 0.1";
textFile; line; sf1 = 1; ef1;
insdir; sf; ef; contentdir; scenefilename;
base; drivePath; BaseName; sceneFilename;
curcamPrefix; scenefile; lines; curcamPrefixLoc;
camsize; camObj; AnyPrefix = nil;
generic
{
i = 1;
camera = getfirstitem(CAMERA);
camObj[1] = camera;
while(camera != nil)
{
camera = camera.next();
i++;
if(camera != nil) camObj[i] = camera;
else i--;
}
camsize = size(camObj);
insdir = getdir("Install");
contentdir = getdir("Content");
scenefilename = getfirstitem(SCENE);
scene = Scene();
cam = Camera();
ef1 = scene.frameend;
for(j = 1; j<= 5; j++) {rendercam[j] = nil;}
read_master();
if(!AnyPrefix)
{
warn("Save RGB Images not activated in master scene!"," Processing terminated.");
return;
}
requester();
sceneFilename[1] = drivePath + BaseName + "_segment_1.lws";
sf[1] = sf1; ef[1] = ef1; rendercam[1] = cam1;
if(cam2 != nil) {sf[2] = sf2; ef[2] = ef2; rendercam[2] = cam2; sceneFilename[2] = drivePath + BaseName + "_segment_2.lws";}
if(cam3 != nil) {sf[3] = sf3; ef[3] = ef3; rendercam[3] = cam3; sceneFilename[3] = drivePath + BaseName + "_segment_3.lws";}
if(cam4 != nil) {sf[4] = sf4; ef[4] = ef4; rendercam[4] = cam4; sceneFilename[4] = drivePath + BaseName + "_segment_4.lws";}
if(cam5 != nil) {sf[5] = sf5; ef[5] = ef5; rendercam[5] = cam5; sceneFilename[5] = drivePath + BaseName + "_segment_5.lws";}
write_scene();
write_bat(); // write the ScreamerNet batch file
}
/* -----------------------------------------------------------
* read_master() reads the master scene file
* ----------------------------------------------------------- */
read_master
{
SaveScene();
// scene = Scene();
// master = scene.filename; // info("master is ",master);
scenefilename = getfirstitem(SCENE);
filename = scenefilename.filename;
textFile = fullpath(filename);
// info("textFile = ",textFile);
base = split(textFile);
if(!base[1])
{
drivePath = base[2];
}
else
{
drivePath = base[1] + base[2];
}
BaseName = base[3];
// info(base[3]);
scenefile = File(filename); lines = scenefile.linecount();
// info("master file ",scenefile," has ",lines," lines.");
linePrefix = "SaveRGB 1"; // we'll need this later
curcamPrefix = "CurrentCamera"; // need to find this location also
len = sizeof(linePrefix);
len2 = sizeof(curcamPrefix);
for(i = 1;i <= lines; i++)
{
line[i] = scenefile.read() ;
if(strleft(line[i],len) == linePrefix)
{
linePrefixLoc = i; AnyPrefix = 1;
// info("SaveRGBImagesPrefix found on line ",i);
}
if(strleft(line[i],len2) == curcamPrefix)
{
curcamPrefixLoc = i;
// info("curcamPrefix found on line ",i);
}
}
}
/* -----------------------------------------------------------
* write_scene() writes the individual scene files
* for each render
* ----------------------------------------------------------- */
write_scene
{
// debug();
// write out the new file
// ** don't forget to check for UNC file compatibility **
for(j = 1; j <= 5; j++)
{
if(rendercam[j] != nil)
{
// get number of camera object
for(x = 1; x <= camsize; x++)
{
if(rendercam[j].id == camObj[x].id)
{
//info("camera is item ", x - 1);
renderCamNum = x - 1;
}
}
scenefile.open(sceneFilename[j],"w");
for(i = 1;i <= lines; i++)
{
if(i == 4) { scenefile.writeln("FirstFrame ",sf[j]); i++; }
if(i == 5) { scenefile.writeln("LastFrame ",ef[j]); i++; }
if(i == curcamPrefixLoc)
{
// info("rendercam = ",rendercam[j]);
scenefile.writeln(curcamPrefix, " ", renderCamNum);
//i++; // skip to the next line
}
else
{
scenefile.writeln(line[i]);
}
}
}
}
}
/* -----------------------------------------------------------
* write_bat() writes the ScreamerNet batch file
* LWSN -3 [-c<config file>] [-d<content dir>] [-q]
* <scene file> <first frame> <last frame> [<frame step>]
* ----------------------------------------------------------- */
write_bat
{
base = split(textFile);
if(!base[1])
{
drivePath = base[2];
}
else
{
drivePath = base[1] + base[2];
}
renderFilename = drivePath + "render.bat";
if((renderFile = File(renderFilename, "w")) == nil)
{ //error msg
error("could not open render batch file ",renderFilename);
return;
}
for(i=1; i<=5; i++)
{
if(rendercam[i] != nil)
{
SN = insdir + "\\LWSN -3 -d" + contentdir + " " + sceneFilename[i] + " " + string(sf[i]) + " " + string(ef[i]);
renderFile.writeln(SN);
}
}
renderFile.close();
}
/* -----------------------------------------------------------
* Requester
* ----------------------------------------------------------- */
requester
{
// reqbegin(scriptName+" "+scriptVer);
if(!reqbegin(" MCBR (c) 2002 by Al Street ver 1.0 "))
return;
reqsize(440,230);
row0 = 5; row1 = 35; row2 = 65; row3 = 95; row4 = 125; row5 = 155;
tx1 = ctltext("","Multi-Camera Batch Render -- www.ats-3d.com"); ctlposition(tx1,100,row0);
c1 = ctlinteger("Start Frame", sf1); ctlposition(c1,10,row1,100);
c2 = ctlinteger("End Frame", ef1); ctlposition(c2,130,row1,100);
c3 = ctlcameraitems("Camera",cam); ctlposition(c3,260,row1,150);
c4 = ctlinteger("Start Frame", 0); ctlposition(c4,10,row2,100);
c5 = ctlinteger("End Frame", 0); ctlposition(c5,130,row2,100);
c6 = ctlcameraitems("Camera"); ctlposition(c6,260,row2,150);
c7 = ctlinteger("Start Frame", 0); ctlposition(c7,10,row3,100);
c8 = ctlinteger("End Frame", 0); ctlposition(c8,130,row3,100);
c9 = ctlcameraitems("Camera"); ctlposition(c9,260,row3,150);
c10 = ctlinteger("Start Frame", 0); ctlposition(c10,10,row4,100);
c11 = ctlinteger("End Frame", 0); ctlposition(c11,130,row4,100);
c12 = ctlcameraitems("Camera"); ctlposition(c12,260,row4,150);
c13 = ctlinteger("Start Frame", 0); ctlposition(c13,10,row5,100);
c14 = ctlinteger("End Frame", 0); ctlposition(c14,130,row5,100);
c15 = ctlcameraitems("Camera"); ctlposition(c15,260,row5,150);
if (!reqpost()) return 0;
sf1 = getvalue(c1); ef1 = getvalue(c2); cam1 = getvalue(c3);
sf2 = getvalue(c4); ef2 = getvalue(c5); cam2 = getvalue(c6);
sf3 = getvalue(c7); ef3 = getvalue(c8); cam3 = getvalue(c9);
sf4 = getvalue(c10); ef4 = getvalue(c11); cam4 = getvalue(c12);
sf5 = getvalue(c13); ef5 = getvalue(c14); cam5 = getvalue(c15);
reqend();
}