RotoHelper
for DS 2,3,4
Rotohelper is a DazStudio script i created very quickly to help someone, it's not really user friendly
but after a few minutes of learning it does the job :)
There is no user interface, you must modify the code using a text editor like notepad or wordpad
( make a backup first )
the instructions are part of the script's code
Download links at the bottom of this web page
// DAZ Studio version 3.0 filetype DAZ Script
//--------------------------------------------------------------------
//------------------------- rotohelp v1.2 --------------------------
//--------------------------------------------------------------------
// lets say the timeline is at frame 7
//
// launching this script will load the image
// c:\job001\bkgpics\pic7.bmp
//
// ( note that since padds[0]=0, then number 7 is not padded with zeros )
//
// then this image will be applied to the "Diffuse Color" channel
// of the material named "Default"
// of the node named "Plane"
//
// and
//
// the script will load the image
// c:\job001\frgpics\pic07.png
//
// note how number 7 is padded with 2 zeros, as specified by padds[1]=2
//
// then apply it to the "Diffuse Color" channel
// of the material named "Default"
// of the node named "Plane 2"
//
// on a Mac, the values of paths[] should look something like
//var paths = new Array(
// "/Users/markv/Desktop/movie1/test",
// "/Users/markv/Desktop/movie2/test"
// );
//--------------------------------------------------------------------
// section to be modified by you!
//--------------------------------------------------------------------
var paths = new Array(
"C:\\job001\\bkgpics\\pic",
"C:\\job001\\frgpics\\pic"
);
var padds = new Array(
0,
2
);
var suffixes = new Array(
".bmp",
".png"
);
var nodenames = new Array(
"Plane",
"Plane 2"
);
var matnames = new Array(
"Default",
"Default"
);
var propnames = new Array(
"Diffuse Color",
"Diffuse Color"
);
//--------------------------------------------------------------------
// normally you dont need to modify anything below this line
//--------------------------------------------------------------------
var msg = "";
var num = Scene.getFrame();
for( var i = 0; i < 2; i++ )
{
processMaterials( paths[i], num, padds[i], suffixes[i], nodenames[i], matnames[i], propnames[i] );
}
App.statusLine( msg );
//------------------------------------------------------------------------------------
//----------------------------- end of program run -------------------------------
//------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
// build an image filename using path,num,suffix
//num is zero padded with the number of zeros specified in [padd]
// apply this image to property [propname] of material [matname]
// of the node named [nodename]
//--------------------------------------------------------------------------------------------------
function processMaterials( path, num, padd, suffix, nodename, matname, propname )
{
var oNode = Scene.findNodeByLabel( nodename );
if( !oNode )
{
msg = "cant find node named" + nodename;
return( false );
}
var mgr = App.getImageMgr();
var inPic = path + paddthis( num, padd ) + suffix;
var img = mgr.getImage( inPic );
if( !img )
{
msg = "cant find image" + inPic;
return( false );
}
var oObject = oNode.getObject(); //no errorcheck
var nShapes = oObject.getNumShapes();
for( var s = 0; s < nShapes; s++ )
{
var oShape = oObject.getShape( s );
if( oShape != undefined )
{
var oMaterial = oShape.findMaterial( matname );
if( oMaterial != undefined )
{
var oProperty = oMaterial.findProperty( propname );
if( oProperty != undefined )
{
oProperty.setMap( img );
}
return( true );
}
}
}
msg = "the property " + propname + " does not exist for the surface named " + matname + ".";
return( false );
}
//=============================================================
// zero-pad a number
//=============================================================
function paddthis( i, padd )
{
if( padd <= 1 )
return( i );
var str = "";
var decade = Math.pow(10,padd-1);
for( j = padd-1; j > 0; j-- )
{
if( i < decade )
{
str = str + "0";
}
decade = decade / 10;
}
str = str + i;
return( str );
}