# Sean Dooley # 22 February 2012 # http://www.smdooley.com # http://smdooley.com/Extras/Python/FGScripts/fgwalkthrough.html # http://smdooley.com/Extras/Python/FGScripts/fgscripts.html # asks the user for information related to the scene that is to be rendered # creates a Windows batch (.bat) file or text file (Linux) that will execute the render commands from the command line # this script will ask for some basic information and then if the user specifics that they want to run the loop again # it will reuse the basic information and only gather new render layer information import sys, string # ---------------------------------------------------------------------------------------- # change these values to customize this script for your environment TOKENpythonexe = '/usr/local/python-2.7/bin/python2.7' TOKENmayaexe = '/usr/autodesk/maya2012-x64/bin/Render' TOKENrenderma = '/home/sdoole20/mount/stuhome/fgScripts/readMA.py' TOKENrenderloc = '/home/sdoole20/mount/stuhome/' TOKENrenderthreads = 8 # ---------------------------------------------------------------------------------------- rept = 'y' # sets the loop to run to create the batch file s = str('') scene_name = raw_input('Enter a scene name: ') file_extension = raw_input ('Enter file extension (ma/mb): ') cam_name = raw_input("Enter a camera name (default - 'camera1'): ") write_dir = raw_input('Enter destination directory: ') rnd_logs = raw_input('Create render logs? (Y/N): ') system = sys.platform # check to see if linux or windows # render logs if (rnd_logs == 'yes') or (rnd_logs == 'Yes') or (rnd_logs == 'y') or (rnd_logs == 'Y'): if system.startswith('win'): s += 'if not exist "%s" md "%s"\n' % ( write_dir, write_dir ) s += 'if not exist "%s/_logs" md "%s/logs"\n' % ( write_dir, write_dir ) elif system.startswith('linux'): s += 'if [ ! -d "%s" ] ; then\n' % write_dir s += ' mkdir "%s"\n' % write_dir s += 'fi\n' s += 'if [ ! -d "%s/_logs" ] ; then\n' % write_dir s += ' mkdir "%s/_logs"\n' % write_dir s += 'fi\n' while (rept == 'yes') or (rept == 'Yes') or (rept == 'y') or (rept == 'Y'): render_layer_name = raw_input('Enter render layer (default - no layer): ') renderForPython = raw_input('Does this render layer need the python [readMA.py] script? (Y/N): ') renderer = raw_input ('Enter rendering engine (Software [sw], Hardware [hw], Mental Ray [mr], Vector [vr]): ') render_start = raw_input('Enter the first frame to render: ') render_end = raw_input('Enter the last frame to render: ') #img_name = input("Enter image name prefix: ") # if the python script is needed, use a for loop to allow for the edit of the maya scene file # single frame per command entry if (renderForPython == 'y') or (renderForPython == 'Y') or (renderForPython == 'yes') or (renderForPython == 'Yes'): for i in range(int(render_start), int(render_end)+1): s += '"%s" "%s" readMA ' % ( TOKENpythonexe, TOKENrenderma ) s += str(i) #sets the frame number for the readMA.py function to run correctly if system.startswith('win'): s += ' "%s\\%s.%s"' % ( r'%cd%', scene_name, file_extension ) elif system.startswith('linux'): s += ' "$PWD/%s.%s"' % ( scene_name, file_extension ) s += '\n' s += '"%s"' % TOKENmayaexe s += ' -r mr -rt %s' % TOKENrenderthreads # mental ray s += ' -s %s' % i # start frame s += ' -e %s' % i # end frame if (cam_name == ""): s += ' -cam camera1' else: s += ' -cam %s' % cam_name # camera name if (render_layer_name != ""): s += ' -rl %s' % render_layer_name # render selected render layer s += ' -log "%s/_logs/log_%s_%s.txt"' % ( write_dir, render_layer_name, i ) # creates a log file in the destination directory else: s += ' -log "%s/_logs/log_%s.txt"' % ( write_dir, i ) # creates a log file in the destination directory s += ' -rd "%s" ' % write_dir # destination directory s += scene_name # scene name s += '.%s' % file_extension # file extension s += '\n' else: s += '"%s"' % TOKENmayaexe if (renderer == "Sofware") or (renderer == "software") or (renderer == "sw") or (renderer == "Maya Software") or (renderer == "maya software"): s += ' -r sw -n %s' % TOKENrenderthreads # maya software elif (renderer == "Mental Ray") or (renderer == "mental ray") or (renderer == "mr") or (renderer == "MentalRay") or (renderer == "mentalray") or (renderer == ""): s += ' -r mr -rt %s' % TOKENrenderthreads # mental ray s += ' -v 5' elif (renderer == "Hardware") or (renderer == "hardware") or (renderer == "hw") or (renderer == "Maya Hardware") or (renderer == "maya hardware"): s += ' -r hw' # maya hardware elif (renderer == "Vector") or (renderer == "vector") or (renderer == "vr"): s += ' -r vr' # vector renderer s += ' -s %s' % render_start # start frame s += ' -e %s' % render_end # end frame if (cam_name == ""): s += ' -cam camera1' else: s += ' -cam %s' % cam_name # camera name if (render_layer_name != ""): s += ' -rl %s' % render_layer_name # render selected render layer s += ' -log "%s/_logs/log_%s_%s.txt"' % ( write_dir, render_layer_name, render_end ) # creates a log file in the destination directory else: s += ' -log "%s/_logs/log_%s.txt"' % ( write_dir, render_end ) # creates a log file in the destination directory s += ' -rd "%s" ' % write_dir # destination directory s += scene_name # scene name s += '.%s' % file_extension # file extension s += '\n' rept = raw_input('Run again (Y/N): ') render_file_name = '%s%s_render' % ( TOKENrenderloc, scene_name ) if system.startswith('win'): f = open( '%s.bat' % render_file_name, 'w' ) elif system.startswith('linux'): f = open( render_file_name, 'w' ) f.write(s) f.close()