DAZ Studio RIB Animation - Render Settings

I'm looking for a way to output a RIB file which contains an animation (multiple frames). Even multiple one frame RIB files in sequence are OK. I tested this in 4.8 and 4.9, it seems the RIB files constantly gets overwritten after each frame.

The workaround to this is a mcasual DAZ script which I modified to create a RIB file per frame. It is clunky but I'd rather have the built in DAZ render functionality do this (so I can cancel if I change my mind).

Any ideas are welcome.

Comments

  • Mustakettu85Mustakettu85 Posts: 2,933

    Welcome to the club :) It's a longstanding issue. Goes way back than 4.8.

    I'm not familiar with that particular mCasual script. What I use is "scripted rendering" (actually for my own stuff it's the only way I render in DS, even for static images), and I added some code that gives every RIB file a new name based on frame number.

    This goes into the actual scripted renderer command list in the "scripts" folder, before RiBegin ( which looks like this

    Renderer.riBegin( sRibPath );

    )

    Sorry for haphazard variable naming and other crude hacks.

    // Are we rendering to a single frame or image series?// This only invokes new names if to seriesvar nRenderToSerY = 0;	if (RenderOptions.renderSerFilename != ""){App.log("rendertype is series");nRenderToSerY = 1;}		if (nRenderToSerY != 0) {			var fileCopyTo = "";			var nCurFrame = Scene.getFrame();			var sTempStr = String(nCurFrame);			App.log("Frame No " + sTempStr);			var sNewPath = sRibPath;			var sLeadZeros;			if (nCurFrame > 1000) {sLeadZeros = ""};							if (nCurFrame < 1000) {sLeadZeros = "0"};							if (nCurFrame < 100) {sLeadZeros = "00"};				if (nCurFrame < 10) {sLeadZeros = "000"};			var sFinFileNum = String(nCurFrame);			var sNewFinalExt = String (sLeadZeros + sFinFileNum + ".rib");			fileCopyTo = sNewPath.replace(".rib", sNewFinalExt);			sRibPath = fileCopyTo;				App.log("this is new path " + sRibPath);					}

     

  • cain-xcain-x Posts: 197

    Thanks!

    Oh... I know how far it goes back, which is frustrating that it has never been fixed. Is the above script to be referenced in that scripted rendering option? I've never used it.

    My version is below if you're interested. It's just a mod to https://sites.google.com/site/mcasualsdazscripts5/mcjribrender without the GUI. I then use 3delight renderman to run renders on separate machines.

    // DAZ Studio version 4.8.0.9 filetype DAZ Scriptvar outDir = "X:/3D Projects/1-PROJECTS/GTA V - VW Bus/RENDERS";var oRenderMgr = App.getRenderMgr();var oRenderer = oRenderMgr.findRenderer( "DzDelightRenderer" );var g_sToolKey = "3Delight";var g_sRenderRibKey = "RenderToRIB";var g_sRibPathKey = "RIBFilename";var g_oSettingsHelper = new DzSettingsHelper;var tick = Scene.getTimeStep();var range = Scene.getPlayRange();var startFr = Math.round( range.start / tick );var endFr = Math.round( range.end / tick );oRenderMgr.setActiveRenderer( oRenderer );g_oSettingsHelper.set( g_sToolKey, g_sRenderRibKey, true );oRenderOptions = oRenderMgr.getRenderOptions();oRenderOptions.renderType = oRenderOptions.Software;oRenderOptions.renderImgToId = oRenderOptions.DirectToFile;oRenderOptions.showPreview = false;//startFr = 941;//endFr = 942;	var filename = outDir + "/render_me" + ".bat"; 			var file = new DzFile( filename );	if( !file )	{		return;	}		var err = file.open( file.WriteOnly );	file.writeLine("@echo off");	file.writeLine("@echo BEGIN RENDERING!");		for( var i = startFr; i <= endFr; i++ )	{		file.writeLine("renderdl -progress frame" + i + ".rib");		file.writeLine("rename render.tiff render" + i + ".tiff");	}		file.close();for( var i = startFr; i <= endFr; i++ ){	var outRib = 					outDir + "/frame" + 					i + 					".rib";						oRenderOptions.renderImgFilename = outDir + "/garbage" + i + ".jpg";		g_oSettingsHelper.set( g_sToolKey, g_sRibPathKey, outRib );	Scene.setFrame(i);	oRenderMgr.doRender( oRenderOptions );		var fi = new DzFileInfo( outDir + "/garbage" + i + ".jpg" );		if( fi.exists() )		{			fi.remove();		}		/*var fi = new DzFileInfo( outDir + "/frame" + i + ".rib" );		if( fi.exists() )		{			//fi.remove();		}	*/			//file.writeLine("renderdl -progress frame" + i + ".rib");	//file.writeLine("rename render.tiff render" + i + ".tiff");}

     

  • Mustakettu85Mustakettu85 Posts: 2,933

    Yes, it's to be used with "scripted rendering". Depending on what you want 3Delight to do, it may be well worth it to become more familiar with it - since outside of creating multi-frame RIBs, it's the only DS gateway to access most of useful 3Delight options.

    You could just paste the code into the "standard example" (found somewhere here: [your DS install]\scripts\support\DAZ\ScriptedRenderer\Standard Example\StandardExampleRenderScript.dsa ), but it gets overwritten when DS upgrades, I think. So if you want to try this and have a version that stays, I could show you how (more like tomorrow, gotta run now).

    Thanks for your example and the link... that batch file creation is a neat option.

Sign In or Register to comment.