ViewPort Preview

63 votes
Date Updated: 
Author Name: 

Capture Viewport animation to any output video/image format that 3ds Max support, with an access to the I/O bitmap setup (quality and compression settings), with a few (similar to the renderer) timing options.

Viewport PreviewViewport Preview 1.2


    - version 1.4 change log:

  • Now custom-built sequence support negative ranges
  • You can use interval (space sign) in custom-built sequence
  • What that mean?

    Previously to enter range between -5 and +3
    you should type: "-5,-4,-3,-2,-1,0-3"
    Now you can just type "-5 - 3" (or "-5-3").

    Also using intervals (optional) made the input more clear.
    "-5 - 3" is more readable than "-5-3", and
    "-15 - -10" is more readable than "-15--10".


    -- next sequence:
    "-9 - -7, -5 - 2, 6, 9 - 11"
    -- will capture frames:
    #(-9, -8, -7, -5, -4, -3, -2, -1, 0, 1, 2, 6, 9, 10, 11)
    -- next sequence:
    "-9 - -7, -5 - -2, 6, 9 - 11"
    -- will capture frames:
    #(-9, -8, -7, -5, -4, -3, -2, 6, 9, 10, 11)

    - version 1.3 change log:

  • added Stop option (interrupt the process via Escape)
  • - version 1.2 change log:

  • added Maximize Viewport option
  • added Expert Mode On option
Additional Info: 

I saw a request about similar script that to end in various file formats with output compression access, i.e. for example, to end with small size movie instead of large uncompressed AVI's. Well, it's nothing fancy, the built in Max function selectSaveBitMap() just "fix" that. For more details read the usage notes below.

Well, you can run the script from everywhere but if you with to install it...

  • Download both script files (.ms + .mcr)
  • Put .ms file into your Max / Scripts folder
  • Run .mcr file once
  • Go to Customize User Interface dialog, Find "ViewPort Preview" under Tools category
  • Create a button or assign it to hotkey, menu, quad.

Usage Notes
Most features are self explaining (I hope).

  • "Make Preview" button is disabled until set output file.
  • Use "Save As..." to choose directory and output file format.
  • Max will bring up it Setup dialog for compression settings.
  • Reverse Animation option come in use (and have sense) when save to video (AVI/MOV)
  • In v.1.3 and below:

  • Optional Frames input sequence require a little bit more details:
    1. -- If you enter invalid value, it will be skiped without error messages
      -- Adding space interval after comma is not wrong but not necessary
      -- In intervals e.g. "3-6" (that equal to "3,4,5,6") space character is wrong, i.e. this "3-6" will be proceeded, but "3 - 6" value will be omited
      -- Due to the minus character ("-") that in use for intervals values like "3-6", the negative frames would be accepted only in ordering (e.g. "-3,-2,-1")
      -- The order of values is not important in comma sequence 'cause the script auto sort the string, e.g. "0-3,8,4,-2" will be sorted and goes out as "-2,0,1,2,3,4,8"

    In last v.1.4:

  • Optional Frames input sequence is more flexible (*READ Update log above)
Version Requirement: 
3ds Max 2008 (or AVG for previous)
vppreview_1.4.ms7.67 KB
VPPreview_1.3.ms6.36 KB
VPPreview_1.2.ms5.89 KB
macro_vppreview_1.4.mcr371 bytes
macro_VPPreview_1.3.mcr371 bytes
macro_VPPreview_1.2.mcr371 bytes


Comment viewing options

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

Hey John, sorry for the bad

Hey John, sorry for the bad news but the only way to "set" the view-port size is via gw.setPos(), and it actually create new GW (Graphic Window) which "works" (awesome broken feature).

my recent MAXScripts RSS (archive here)

JokerMartini's picture

As mentioned before, I talked

As mentioned before, I talked about it matching the render resolution. I was hoping it would crop the image to be actual res....

John Martini
Digital Artist (new site)

Anubis's picture

happy end then :)

I read your comment on my Grab Viewport Plus and see that you finally find what you looking for ;) About the GIFs - yes, not supported.

my recent MAXScripts RSS (archive here)

Violet's picture


Worked great, saving separate images to animation frames is what I was looking for! Thanks!

Violet's picture


Pity Max won't save to gif eh? :)

Anubis's picture

Thanks Pifitas! Hey

Thanks Pifitas!

Hey John,

thats not a big deal for coding but I worried to add this 'cause resizing of the view port itself is too buggest. If you like to test and use this feature though, just add this code to the script (in "on open" event for ex.):

if getViewSize() != [renderWidth, renderHeight] do (
	gw.setPos 0 0 renderWidth renderHeight
	forceCompleteRedraw doDisabled:off

Hey Ian,

I think that what you ask is already there. With SaveAs button you set where to save and just enter the name of the scene into the save-dialog. If you worried for typing mistakes when enter the name, just put the next line of code at the beginning of "on bt_save pressed do" event:

setclipboardText maxFileName

..and now when the save-dialog pop up you can just press Ctrl+V ;)

my recent MAXScripts RSS (archive here)

W DIGITAL's picture

great anubis! - would you

great anubis!

- would you have time to make a checkbox, that when checked makes a preview in the project folder where the .max file is sitting, with the scene name plus _001 incremenation at the end?

that would be great if it could automatically name the previews as the scene name!

JokerMartini's picture


anyway you could get the resolution to take into account the render output size?

John Martini
Digital Artist (new site)

pifitas's picture

OMG! You're amazing

You're amazing dude
thanks for your support :)
let's try it....

Anubis's picture

Hi Pifitas, yes, I see your

Hi Pifitas, yes, I see your point and update the script.
Now you can interrupt it at any time by pressing Escape.

my recent MAXScripts RSS (archive here)

Comment viewing options

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