8 votes
Date Updated: 
Author Name: 


render multiple max files very easy with this script.


how to use :

Drag this script in Max or run via MAXScript -> Run Script.

Render settings will be used from the files unless you overwrite them.

If you need more info, just comment. I hope the interface is obvious.


-15/09/2012 : added option to shutdown/logoff/quitmax after rendering (user request)

Version Requirement: 
3ds Max 2011, 2012, 2013
mfrender.ms16.7 KB


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
NicolasC's picture

BackBurner submission, please :)


Great script, but BackBurner support is really needed ... do you think it could be added ?

Thanks !


sergo's picture

MFRender + BatchCameraRender

Hi Jos!

I have batch rendering script here on scriptspot -

I've got feature request from users to make my script work with yours. Do you mind if I edit your script a little so that it can render scenes through my script?
This will enable rendering different cameras from each scene with different settings for each camera, including submitting each scene to network render.

multimedsguy's picture

MF render Multi Cam

Hi Nik, I came across your post, this would be a great tool to have. Were you able to get the camera renders per file portion of the code working?

jos's picture

Thanks for the fix. I'll have

Thanks for the fix. I'll have a look to integrate this after the holidays.
I'll also add support for multiple camera's. So if you have some idea's or code to share please send it to me. Cheers Jos

NiK684's picture

It's a macroScript

This is because it's a macroScript. Check Customize UI > Toolbars > cat. Custom > Render multiple files

morpheus's picture

This is the code for Mfrender

This is the code for Mfrender V1, but when I run it with 3ds max 2012 nothing happens!!! PLease any help?

Script for rendering multiple files easy
made by Jos Balcaen

version 1.0

how to use :
select the files you want to render. the files have to be ready!
including : output path, size, renderer, ... complete render setup.
this script just push the render button

macroScript render_for_spano
tooltip:"Render multiple files"
rollout myRoll "Render multiple files"
local number_of_files = 0
local ListOfMaxFiles = #()

button btnBrowseFile "Browse for files" width: 370
multilistbox mlbMaxFiles
label lbNumberOfFiles " No files selected"
button btnRender "Render all files" width: 370 height:30

on btnBrowseFile pressed do
--path = (getSavePath caption:"Select Save File directory")
path = getMAXOpenFileName()
if path != undefined then
append ListOfMaxFiles path
mlbMaxFiles.items = ListOfMaxFiles
number_of_files = mlbMaxFiles.items.count
lbNumberOfFiles.text = number_of_files as string + " files selected"

theDialog = dotNetObject "System.Windows.Forms.OpenFileDialog" --create a OpenFileDialog
theDialog.title = "PLEASE Select One Or More Files" --set the title
theDialog.Multiselect = true --allow multiple files to be selected
theDialog.Filter = "MAX Files (*.max)|*.max|All Files (*.*)|*.*" --specify the filter
theDialog.FilterIndex = 1 --set the filter drop-down list to All Files
result = theDialog.showDialog() --display the dialog, get result into variable
result.ToString() --when closed, convert the result to string
result.Equals result.OK --returns TRUE if OK was pressed, FALSE otherwise
result.Equals result.Cancel --returns TRUE if Cancel was pressed, FALSE otherwise
join ListOfMaxFiles theDialog.fileNames --the selected filenames will be returned as an array
mlbMaxFiles.items = ListOfMaxFiles
number_of_files = mlbMaxFiles.items.count
lbNumberOfFiles.text = number_of_files as string + " files selected"

on btnRender pressed do
starttime = timeStamp()
theTimer = dotNetObject "System.Windows.Forms.Timer" --create a Timer
fn printTime = (print localTime) --define a MAXScript function to be called by the Timer.
dotnet.addEventHandler theTimer "tick" printTime --add ON TICK event hander to call the function
theTimer.interval = 1000 --set the tick interval to 1 second (1000 milliseconds)
theTimer.start() --start the Timer
timerstringstart = printTime() --NEW CODE
--theTimer.stop() --use this method to stop the Timer.
for i = 1 to (mlbMaxFiles.items.count) do
loadMaxFile (mlbMaxFiles.items[i] as string) quiet:true
actionMan.executeAction 0 "50031" -- Render: Render
theTimer.stop()--NEW CODE
printTime() --NEW CODE
timerstringend = printTime() --NEW CODE
total_time = theTimer.interval as string
endtime = timeStamp()
tijdsinterval = ((endtime - starttime) / 1000.0)
tijdinuur = ((endtime - starttime) / 1000.0)/3600
--messagebox("succeeded, het renderen duurde \n" + tijdsinterval as string + " seconden \n" + tijdinuur as string+ " uur" )
messagebox("succeeded, \n" + "start time : " + timerstringstart + "\n end time : " + timerstringend)-- + "\n total time : " + total_time)

groupbox boxinfo "Info" height: 150 width:370
label lblinfo "Important : \n each file must be ready to render. (complete render setup) \n beware of fileoverriding!" height:100 width: 300 pos:[25,240]
label jos "Made by [email protected]" pos:[250,370]


createdialog myRoll width:400 height:390


NiK684's picture

For those who got ouput error

Hi there. I'm not a developer of this script but I got an ouput error too. So I fixed it a little.
You need to replace this string

if rendSaveFile do (sOutputfile =  "outputfile:\"" + rendOutputFilename+ "\" ")

With this piece of code copied from script itself.

if rendSaveFile do (
	sOutputfile =  "outputfile:\"" + rendOutputFilename+ "\""
	tokens = filterstring sOutputfile "\\"
	sOutputfile = ""
	for i = 1 to tokens.count do
	if i != 1 then (sOutputfile += "\\\\" + tokens[i])
	else (sOutputfile += tokens[i])

If I will add some extra features, I will post it here later.

UPDATE: I almost finished piece of code that allows to render each camera in each scene.
to byaminaraz, you want globally select render preset or individually for each scene?

byaminaraz's picture

select the render preset

Hello guys this amazing script but ıf you add select render preset button it is more amazing

dub73's picture


same for us :(

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.