Bullet Time

1 vote
Date Updated: 

Bullet Time is a script used to simulate a camera moving around an object - with little or no passage of time. An example would be seeing a vase shatter. In the midst of it shattering - the scene either freezes or slows down considerably. The camera then rotates around the vase - stops - and the vase continues to shatter. The effect of this can be seen in commercials as well as 'THE MATRIX'.

Additional Info: 

To use this script - you must execute it - then customize your UI. Under the
macroScripts category 'rezin_digital' - you will find Bullet Time. Click on this
and drag the button to your desktop or to a one of the tabs.

I. Ok - here we go... Bullet Time 1.x was made to ease the process of creating the “time-slice” effect - popularized in films such as The Matrix. This would be a very easy task if 3ds max supported sub-frame rendering - but it doesn’t - hence the script :)

II. Alright - load the bt_scene.max file supplied in the zip. Now you’re ready to launch the script.

III. When the script window is open - you’ll see three selection boxes. These should be pretty self explanatory but I’ll walk through it anyway. In the Selections group - Click:
>Pick Camera and select the camera in the viewport.
>Pick Path and select the path you want your camera to travel along.
>Pick Focal Node and select what you want the camera to look at (in this scene I used a dummy object). Note: The Focal Node may be animated and Bullet Time will take this into account :)

IV. Ok - now for the math and we’ll be ready to go. Set the frame which you’d like the “time-slice” to begin. Now - set the durration of the “time-slice” effect. Note: This value is based on the real-time scene. In other words - it should represent the durration which you would like to slow down.
Frame Rate before Time Slice reflects just that. So - change it to 25 if you’re working in PAL - keep it at 30 if your working with NTSC - or change it to some other value which best suites your needs.
Frame Rate during Time Slice is kinda tricky... It basically tells the camera to speed up its frame rate - thusly slowing the footage down when played back at a normal rate. Note: Just figure that the the durration - in frames - of the time slice will be: Frame Rate during Time Slice devided by Frame Rate before Time Slice multiplied by RealTime Duration of Time Slice. ;) eg. (1200/30)*5=200. So you’ll have 200 frames of “time-slice” animation.
Animation Range is whatever frame range you want to render. It is also useful if 3ds max crashes for any reason. You can pick up from where you left off.
Once youre done - press Process Scene - and Bullet Time will create a camera with the specified settings.

V. In the File Manager group - you will set the directory - location - and type of image you’re about to render out. Use this just like any other file dialogue you’ve ever used :)

VI. You now have the option of saving your Bullet Time settings to a .bts file. It is good practice to save a file after you have created your settings. This way it is possible to load the file back into max and you’re ready to go without having to remember your previous settings.

VII. That’s it... Click Configure Renderer and change the parameters to your liking. Note: The Time Output and Render Output groups in the Render Dialogue will be ignored.

VII. Once you have finished with the above settings - you are ready to render out the final “time-slice” animation. Click Render Animation and Bullet Time will do the rest. Note: Prior to clicking Render Animation - the Path - and Focal Node - and Camera Settings may be changed or animated and Bullet Time will take these into account.

If you have any questions or comments - you may reach me at [email protected]. I hope this script helps out and feel free to send me any animations you have done using it.

Version Requirement: 
Video URL: