User Tools

Site Tools


Render To Backdrop

Summary

Below is an example demonstrating how to render an image that is immediately set as the backdrop image for the scene, via script.

API Areas of Interest

Example

Render_To_Backdrop.dsa
// Define an anonymous function;
// serves as our main loop,
// limits the scope of variables
(function(){
 
	// Get the backdrop for the scene
	var oBackDrop = Scene.getBackdrop();
 
	// Clear the backdrop
	oBackDrop.clear();
 
	// Get the render manager
	var oRenderMgr = App.getRenderMgr();
 
	// Render the scene; using the current settings
	oRenderMgr.doRender();
 
	// Retrieve the path to the rendered image
	var sLastRender = oRenderMgr.getLastSavedRenderPath();
 
	// If the path is empty
	if( sLastRender.isEmpty() ){
		// We are done...
		return;
	}
 
	// Set the busy cursor to let the user know we are working
	setBusyCursor();
 
	// Create a file info object for easy pathing operations
	var oFile = new DzFileInfo( sLastRender );
 
	// Get the absolute path for the directory the image is in
	var sDirPath = oFile.path();
 
	// Construct the short name for the source file
	var sSrcFilename = String( "%1.%2" ).arg( oFile.baseName() ).arg( oFile.extension() );
 
	// Construct the short name for the target file
	var sTgtFilename = String( "%1.%2" ).arg( "background" ).arg( oFile.extension() );
 
	// Create a dir object for file access operations
	var oDir = new DzDir( sDirPath );
 
	// Copy the source file to the target file;
	// We step back a directory on the target file because we expect the render to be
	// in ./temp/render and that directory is cleared wholesale at each render,
	// but temp is not cleared until a new scene action, application quit or launch.
	oDir.copy( sSrcFilename, String( "../%1" ).arg( sTgtFilename ) );
 
	// Update the target directory path
	oDir.cdUp();
	sDirPath = oDir.path();
 
	// Get the image manager
	var oImgMgr = App.getImageMgr();
 
	// Get a texture object for the target file
	var oTexture = oImgMgr.getImage( String( "%1/%2" ).arg( sDirPath ).arg( sTgtFilename ) );
 
	// Create a file info object for easy pathing operations
	oFile = new DzFileInfo( sTgtFilename );
 
	// If the last render is a png
	if( oFile.extension() == "png" ){
		// Since png is converted to jpg before being sent to tdlmake,
		// replace the target path with the jpg extension.
		sTgtFilename = String( "%1.jpg" ).arg( oFile.baseName() );
 
		// Remove the jpg to force the tdl to be recreated when the png is refreshed
		oDir.remove( sTgtFilename );
	}
 
	// Refresh the image from disk
	oTexture.refresh();
 
	// Set the backdrop's image to the target image
	oBackDrop.setTexture( oTexture );
 
	// We are done working, let the user know
	clearBusyCursor();
 
// Finalize the function and invoke
})();