mcjLiveTex

it's a rotoscoper's wet dream !

kidding kidding a rotoscoper has the same dreams as Bob in Denver.

caveat: when software-rendering a scene using this script, the results are not consistant, meaning, sometimes it works sometimes it doesn't. I hope to correct this soon ( i tried the "Scene.aboutToRender(r)" signal ), i know it's related to that fact that the renderer or Daz uses the TDLMake to prepare the images for the 3delight rendering.

in Daz Studio, using a script you can tell Daz Studio to call a specific script (.dsa) each time a specific event happens, in our case, each time the current frame changes.

the following script is called InstallMat001.dsa

once it has been executed,

each time the current frame changes

Daz Studio will launch the script

content/scripts/mcasual/matscript001.dsa

var sScript = App.getContentMgr().getContentDirectoryPath(0) + "/scripts/mcasual/matscript001.dsa";

var oCallBackMgr = App.getCallBackMgr();

var oCallBack = oCallBackMgr.createCallBack( "matscript001", sScript, false );

oCallBack.setConnection( Scene, "timeChanged (DzTime)" );

matscript001.dsa contains "jobs" similar to what we were using in TexAnim. The jobs are hard coded, i.e. part of the script itself. So if you want to adapt it to your needs, you must use notepad/wordpad/DazScriptIDE

Code:

var imgr = App.getImageMgr();

var separator;

var nPlatform = App.platform();

if( nPlatform == App.Windows )

separator = "\\"

else // MacOSX and i suppose, unix/linux

separator = "/"

var N_Object = 0; //note the fixed order of the job fields

var N_Surface = 1;

var N_Property = 2;

var N_Path = 3;

var N_Prefix = 4;

var N_Padd = 5;

var N_Suffix = 6;

var N_LoopStart = 7;

var N_LoopEnd = 8;

var jobs =

[

[

/*"Object" */ "Backdrop",

/*"Surface" */ "Backdrop",

/*"Property" */ "Backdrop",

/*"Path" */ "F:\\zi6_0590\\pic",

/*"Prefix" */ "pic",

/*"Padd" */ 0,

/*"Suffix" */ "jpg",

/*"LoopStart" */ 0,

/*"LoopEnd" */ 29

],

[

/*"Object" */ "Plane",

/*"Surface" */ "Default",

/*"Property" */ "Diffuse Color",

/*"Path" */ "F:\\zi6_0590\\pic",

/*"Prefix" */ "pic",

/*"Padd" */ 0,

/*"Suffix" */ "jpg",

/*"LoopStart" */ 0,

/*"LoopEnd" */ 29

]

]

doJobs();

//================================================================================

//

//================================================================================

function doJobs()

{

var numJobs = jobs.length;

for( var i = 0; i < numJobs; i ++ )

{

var fr = Scene.getFrame();

fr = fr % ( jobs[i][N_LoopEnd] - jobs[i][ N_LoopStart ] + 1 );

fr = fr + jobs[i][ N_LoopStart ];

debug( fr );

doJob( jobs[ i ] , fr );

}

}

//================================================================================

//

//================================================================================

function doJob( job, picno )

{

var inPic =

job[ N_Path ]

+ separator

+ job[ N_Prefix ]

+ paddthis( picno, job[ N_Padd ] )

+ "."

+ job[ N_Suffix ];

var imgr = App.getImageMgr();

var img = imgr.getImage( inPic );

if( job[ N_Object ] == "Backdrop" )

{

Scene.getBackdrop().setTexture( img );

processEvents();

return;

}

var oNode = Scene.findNodeByLabel( job[ N_Object ] );

if( oNode == undefined )

{

return;

}

var oObject = oNode.getObject();

if( oObject == undefined )

{

return;

}

var oShape = oObject.getCurrentShape();

if( oShape == undefined )

{

return;

}

var oMaterial = oShape.findMaterial( job[ N_Surface ] );

if( oMaterial == undefined )

{

return;

}

var oProperty = oMaterial.findProperty( job[ N_Property ] );

if( oProperty == undefined )

{

return;

}

oProperty.setMap( img );

processEvents();

}

//======================================================

// zero-pad a word

//======================================================

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 );

}