Soulburnscripts For 3dsMax

Updated: March 24th 2021

SoulburnScripts Discontinued

The SoulburnScripts for 3dsmax have been discontinued as of March 24th 2021. Autodesk has made max 2022 their last piece of software you can buy, all future releases will be rental only, and I don't use rental only software. To read a more detailed explanation, please visit here: The scripts will remain on this page frozen in time, feel free to download them and continue to use them, but there won't be any more updates. Thank you for a wonderful 20 years, I appreciate all your support!


The SoulburnScripts for 3dsmax is a collection of scripts that I've written for my personal artwork at home. Some of their concepts are based on scripts I wrote during my time at Blur Studio and released publicly as BlurScripts (however the SoulburnScripts have been completely rewritten from scratch, giving them more features and better functionality), others are totally new concepts. Thanks to the blur folk for giving me the inspiration to learn how to code.


Feel free to install and use these scripts, however, I can't be held responsible for any problems that arise from their use. I will try and fix bugs or add features that people want, but I have limited free time and so can only promise to do my best. Thanks.


All the scripts come packaged into a single zip file of interconnected scripts,, which includes all the scripts in the rest of the table below. Please download the most recent zip file only, and extract them into your 3dsmax root directory, for example, c:\3dsmax. Make sure you have recurse sub directories on (it's also called "Use Folder Names" in more recent copies of winzip). You may need administrator privileges to install these scripts if running on Windows Vista or Windows 7. Windows should give you an error if you're not allowed to install the scripts, so if you don't get an error, then the scripts should be installed properly. If you do get an error, either contact your Administrator, or log on as Admin and then unzip the contents of the zipfile into a writable directory, then copy the contents into your 3dsmax root directory.

The zip will then install a bunch of files and directories (Max 2013 to Max 2019, this example using Windows 7)...
The zip will then install a bunch of files and directories (Max 9 to Max 2012, this example using Windows Vista)...
To uninstall the scripts, just delete all the files mentioned above. To install a new pack, just download the new zip and unzip them again into your 3dsmax directory, saying overwrite current files. Or to be safe, uninstall the old scripts first, then install the new pack. But overwiring the old pack should be fine.


All of these scripts are run as macroscripts, ie, as buttons, keyboard shortcuts, quad menus, etc, just go to Customize, Customize User Interface, category SoulburnScripts. The SoulburnScripts CANNOT be run by choosing the "MAXScript" menu and "Run Script" and then a script. You can also choose to run the macroscript called "soulburnScriptsLister" to run any SoulburnScript. All scripts can be run in one of three modes...
Make sure to choose the version of the script with a "UI" at the end of it's name when making a button, a quadmenu or keyboard shortcut if you want to run the UI version of the script.

For quick tutorials on how to use these scripts, click the "Help" button on the UI mode of any script.


If you encounter any bugs running these scripts, perform the following checklist...

Name Date Description

03/24/21 The SoulburnScripts Pack For 3dsMax version 112, compatible with max 2013-2022
Updated Scripts: pipeMaker, modifierUtilities, objectPainter, materialMover
Extra Notes: Updated for Max 2022

04/09/20 The SoulburnScripts Pack For 3dsMax version 111, compatible with max 2013-2021
Updated Scripts: modelPreparer, vrayMatteManager
Extra Notes: Updated for Max 2021 04/25/19 The SoulburnScripts Pack For 3dsMax version 110, compatible with max 2013-2020
New Script: vrayMatteManager
Updated Scripts:
groupWithPoint, iDSetter, materialInfoDisplayer, modelPreparer, objectDropper, objectPainter, vertPlacer
Extra Notes: Updated for Max 2020
Old Script Packs 12/14/14 An older pack that's compatible with 3dsmax 9 to 3dsmax 2012. 03/07/09
An older pack that's compatible with 3dsmax 8.
Scripts (86 scripts total)


Aligns one object to another. Similar to the Align tool in max, but optimized to allow a variety of aligns with the least number of mouse clicks necessary.

Aligns the viewport to the selected face.
Collects all the scene bitmaps and places them into a single directory, updating your scene to point to their new home.
Creates a Blended Box Map for your selected objects. Basically, it's box mapping, but the edges of the box are blended so you can place the map on a curved surface and not have horrible seams.

Lets you change parameters to any Blended Box Map inside the material you currently have active or the objects you have selected.
Applies 6 projections (Front, Back, Left, Right, Top, Bottom) to the selected objects, hooks the projections up to 6 maps, and then blends between each map. Great for projecting details onto a set of objects, like box mapping, but each side can be a seperate map, and the edges of the box are blended so you can place the map on a curved surface and not have horrible seams.
Lets you change parameters to any Blended Cube Projection inside the material you currently have active or the objects you have selected.

Launches the calculator. Great for having quick access to the calculator from inside the max interface, assign it to a hotkey.
Changes an active perspective viewport into a camera viewport.

Lets you set the lenses (Focal Length) on all scene or selected cameras based on 9 presets. The supplied presets are for a Panavision C Series Anamorphic Lens Package, but you can modify the presets to be your favorite values.

Will render out templates for all selected cameras or all cameras associated with a single cameraMapGemini modifier. Automates the process so you're not stuck rendering a lot of cameras and changing lots of render resolutions by hand.
Similar to array, but always rotates your objects to make a complete circle.

Selects edges of a mesh based on the angle between adjacent faces, and then converts them to a vertex map. For example, you can select all the corner edges of a mesh and then convert them to a vertex map for use with a bump map or a mask to blend between textures.

Lets you change parameters of any Curvature Data Channel on your selected objects. Also lets you propagate an existing curvature modifier to all selected objects. So say you have 3 objects that have a curvature Data Channel modifier and you add 2 objects to your model, propagating will copy and paste that modifier to all 5 objects.
Delete all Custom Attributes from selected or all scene objects.
Splits an Edge you select in an Editable Poly into equal parts.
Selects edges of a mesh based on the angle between adjacent faces. For example, you can select all the edges of a mesh for chamfer by placing a value of 90.

Once you've selected a face of an Editable Poly, it will select the entire element the face is associated with. Great for selecting elements without having to leave face mode.

Chooses a % of vertexes in an object and moves them around randomly. Good for adding subtle bangs and bumps to your geometry. The advantage this has over say the Noise modifier is it only affect some verts, which will give a more realistic result. Object Size Compensation tries to bang smaller objects less, and large objects more.

Takes selected objects and groups or ungroups them by linking them to a point helper instead of using the max group method. Very similar to the way maya handles grouping.

Takes all selected objects and applies a material modifier, modifies their object ID, or modifies their User Defined Properties to either a random ID between the high and low value, or a sequential set of IDs based on selection order.

Creates a set of 2d image planes you can use to create a 3d model.

Finds instances of the selected object and does various things to them such as selecting them, printing their names, isolating them, etc.

Takes a selection and reduces the selection to include only a single instance from each set of instances.

Deletes all empty layers from your scene.
Gets the material from the currently selected object and places it in the material editor. If multiple objects are selected, chooses the material from the first selected object.
Displays various pieces of information regarding material properties of selected objects or the active material (such as the name of the Material on the selected object, the used MatIDs on the selected object, the map channels the active material is currently using, etc).

Lets you move materials from one place to another. Some common uses: apply a flat grey material (standard, Raytrace, Brazil, mentalray, etc) to all scene objects in one button press. Clear out your material editor with blank materials. Move all the scene materials into the material editor. Move all scene materials to a matlib. Assign a random material from the material editor to a set of scene objects.
Removes the materials from the selected objects.
Collects all of the max files in a directory and its subdirectories and saves them as max files for older versions of max.

Mirrors the selected object along the X, Y or Z world axis, with options for copy or instance. Like the mirror tool, but lets you do some common mirror operations with far fewer mouseclicks.

Sets up your model to have materials applied to it from the Soulburn MaterialAssetPacks using SAL.

Lets you perform various modifier related tasks on a set of selected objects. For example, takes all the selected objects and adds / removes seperate instances of a specific modifier. Or lets you find any objects in the current selection that contains a specific modifier. Add modifiers to your Favorites area for faster access.

Lets you rename various things in your scene using a variety of functions.

Prints the Class or SuperClass of selected nodes.

Takes your current selection and attaches the objects together. Works on geometry and splines.

Takes selected objects (meshs, polys or splines) and seperates all their elements into seperate objects.

Lets you drop objects onto another object. For example, will drop a bunch of rocks onto an uneven ground surface.
This script lets you paint objects (geometry, splines, lights, helpers, etc) onto a piece of geometry. Like for example, you can make 10 different rocks, and then paint them in a random fashion onto a terrain.

Replaces a selection of objects with a new object, or randomly from a set of objects.

Finds all objects that are assigned the currently active material in the medit and does various things to them such as selecting them, isolating them, etc.

Takes any selected instanced / referenced geometry and makes it unique.

Allows you to change parameter values for all selected objects as a group. For example, you can change the radius of a bunch of spheres together, even though they're not instances of each other. Or you can change the bend value for all selected objects that have a bend modifier.

Selects any objects that are not parented to anything. This is really useful if you want to select all the top level parents in your scene or selection, maybe to later link them to a master dummy object.
Even after deleting a PFlow Source object from your scene, you can sometimes end up with cruft nodes that are invisible to you, but exist in your scene, and can be viewed if you try and merge your current scene into a fresh scene. This scene flushes all of those nodes out of the scene. Also includes some tools for finding and printing out the nodes in case you need to delete them by hand.

Creates a big mess of pipes. This script uses a lot of code from vidarn's "Pipe Dream" script (, I've taken the basics of his script and rebuilt it to do pipes that have more options on how dense the final geometry is, the full volume the pipes inhabit, etc. Maybe you'll find my changes useful too.

Places the pivot of the selected objects in one of 27 spots such as center, bottom, top, high left side, etc. You can also align pivot to currently selected vert, edge or face.

Selects objects based on their facecount.

Sometimes when you render you want to do a test render that's smaller. But changing the render size means you then have to remember what the old size was and re-enter it when you're done test rendering. This script allows you to render a smaller test render size (by percentage) without modifying your final render size.

Will randomly select objects based on a value provided.

Like the snapshot command, except turns your mesh to an editablePoly when done, and a couple of other goodies, like selecting the newly created objects. Only for unanimated objects, does not let you produce an object per frame like the max tool.
Toggles, or turns on or off the soft selection tool for objects.

A quick way to let you merge various assets into your scene from a nice icon based interface (including Environments that consist of lights and hdris, material presets and individual models). I got the idea from looking at keyshot, while keyshot is a nice piece of software, it's quite limiting when you want to do something more complex (like adding rust on an object for example.) But it's great at quickly swapping materials and rendering them in a realistic environment. So hopefully this script can help you achieve the speed but lets you to customize your materials and rigs more than keyshot allows. Works with any 3dsmax renderer.
Lets you run any of the SoulburnScripts from a handy dropdownlist.

Takes all selected splines and converts all their knots to a specific knot type such as "Smooth", "Corner", "Bezier" or "Bezier Corner".
Takes all selected splines and places a specified object at their knots.

Lets you modify various controls for all selected splines.

This script lets you paint splines on the surface of another piece of geometry.

Quickly assigns a subdiv modifier (meshsmooth or turbosmooth) to all scene or selected objects. This is good if say you want to have all objects in your scene converted into subdivs at rendertime without the need to constantly select objects, find the right modifier, assign the modifier, etc.
Lets you increase or decrease the number of subdiv iterations for selected objects.
Lets you modify various subdivision controls on all selected objects (both polyobjects and meshsmooth modifiers)

Bakes any arbitrary map tree on a series of selected objects. So say you have a vertex color map running through a warp texture, and you want to use it as a bump. Well, vertex maps don't create proper bumps, so you bake the texture using this script, and then plug the resulting bitmap into the bump slot, and now because it's a baked texture map instead of procedural, the bump map will work properly. Or say you have a super complex diffuse map, you can bake part of the diffuse map network into a texture to speed render times up. 
Does a render of the currently selected texmap from the material editor on the objects that it's applied to in the scene. Think of it as something similar to the "Show Map In Viewport" function, except it works with all procedurals (Show Map In Viewport does not always produce correct results) and does a full render instead of doing the openGL viewport preview.

Finds and selects faces that are really tall and thin. Good for finding thin faces in a complex mesh, faces that may be best to subdivide to make all your faces more square.

Lets you translate, rotate and scale a group of objects or modifier gizmos by a random amount.

Resets the position, rotation and / or scale of the selected objects.
Lets you select objects based on their position, rotation or scale.

Creates an orthogonal 2D Plan view of your scene, perfect for creating 2d elements using max's tools.

Finds objects in your selection that are unique, ie, that don't have any instances of themselves, and then does various things to them such as selecting them, printing their names, isolating them, etc.

Prints the area of the currently selected UV faces.

Lets you flatten a selection of UVs, or in other words aligns all selected UVs horizontally or vertically. The advantage of using this tool over the one provided in the Unwrap UVW editor is you can choose to align the UVs to the average, the min or the max.

Applies Flatten Mapping (also sometimes refered to as Automatic UVs), which is the same as the Flatten Mapping in the UVWUnwrap modifier, but unlike that one, can be applied to a selection of objects with each object using their own map, or all the objects sharing a single map. Good for just getting some sort of mapping on all scene objects in one button press, perhaps to then send to a paint app or to bake a texture map.

Lets you modify the positions of selected uvs using a handy dialog box.

Transfers uvs from one object to the next. Useful if you have two identical meshes, but their vertex order is messed up (like perhaps in the situation where you exported the object to a seperate application for uving and that application messed up the vertex order.) This script can transfer the uvs from the new object to your original object in max, even if the order is different.

Performs a number of Connect functionality in one script. For example, in vanilla max, you can't assign the same hotkey to both connect an edge and connect a vertex. You also can't have one hotkey that both connects in an EditablePoly and an EditPoly. This script allows you to have one hotkey to do all of that, and it detects what mode you're in to choose what action to perform.

Selects verts, edges or faces of a Editable Poly based on an angle threshhold. This is identical to the tool on the Modeling Ribbon, but now accessible as a macroscript since the one in the ribbon didn't have a macroscript available.
Toggles or turns on or off the vertex map viewport display for all scene or selected objects.

Allows you to move the vertexes in an object or the knots in a spline to a single value, either the average of the current values, or a specific value. Good for flattening out groups of vertexes.

Places objects at the positions of the currently selected vertexes.

Lets you control the view you're currently seeing in the viewport in a handy dialog box.

Gets the currently active viewport and loads it into the VFB. Most useful in Vray so you don't have to do a render to set your render region. Originally written by Dave Wortley (, I added limited support for the scanline renderer and a number of extra options like better resize quality and overriding the viewport draw mode.
Allows you to turn on or turn off the shadow catching Matte properites of selected objects for vray.
Allows you to adjust the Sampling Subdiv value for scene materials and lights all together, ensuring consistency.
Changes the wirecolor of all selected objects to a random value.
Creates a number of wires that travel through various target objects. Useful for making bundles of wires for robots or other mechanical devices in a few simple clicks.

Like the Reset Xform utility, but with a number of improvements: 1) Works on hierarchies without messing up the transformation, 2) Automatically flips the normals of any object with negative scales,  3) Can either turn instances to copies or references (like the Utility does), 4) Can Collapse Mesh To Poly after reset
Retired Scripts (9 scripts total)
Scripts I have retired because max now has a similar feature, or it was a beta script that I never finished.
The Bitmap Pager controls have been removed from the preferences of Max2010. This script gives you some of that control back, especially the ability to turn it off, which may speed up renders on 64bit OS's that have lots of RAM. These functions don't seem to do anything anymore in modern versions of max.
Will render out templates for all cameras associated with a single cameraMapGeminiRenderer modifier. Automates the process so you're not stuck rendering a lot of cameras and changing lots of render resolutions by hand. Replaced with cameraMapTemplateRenderer.
Toggles, or turns on or off the face normal display for objects. Worked incorrectly for too many objects inside max.
Takes all selected objects and applies a material modifier to them with a random ID between the high and low value. Replaced with iDRandomizer.
Attaches a point to a selected vertex and bakes out the position information. Never worked properly.
Lets you modify the render and viewport approximation controls on all selected Powersolids objects. Powersolids no longer exists for modern versions of max.
This script simulates the Selection Highlighting mode from Silo in max. The idea is if you hover over an object, the object is selected, if you hover over a vertex, it selects the vertex, if you hover over an edge, the edge is selected, etc. No need for extra mouseclicks. Autodesk has half added this feature, this script goes all the way to adding full silo style selection highlighting. Never worked reliably.
This script allows you to move one object along the surface of a second object. Great for placing objects on a terrain. Replaced with Placement tool in max.
Copies a UVWMapping Modifier from one object to the current selected objects. This works in world space (unlike the current method of copying the modifier in the modifier stack) so you can get exactly the same uvwmapping modifier in exactly the same worldspace position on all your objects. Never worked reliably.

Scripts I use the most for my own work (for the curious): aligner, blendedCubeProjectionMaker, blendedCubeProjectionManager, cameraFromPerspView, cameraMapTemplateRenderer, curvatureMaker, curvatureManager, edgeDivider, modelPreparer, modifierUtilities, nameManager, objectAttacher, objectDetacher, objectReplacer, pivotPlacer, soulburnAssetLoader, soulburnScriptLister, subdivisionAutomator, subdivisionIterationManip, texmapPreview, transformRandomizer, uVFlattener, vertexAndEdgeConnector, vertPlacer, xFormResetter

This site is ©2023 by Neil Blevins, All rights are reserved. Twitter Mastodon Bluesky Instagram Blogger Facebook LinkedIn ArtStation Kickstarter Gumroad YouTube IMDB