Here you can see some of the Scripts in action that I've written. Some of them are also already in use in other Companies. I put all scripts up for download, you can grap them here, so you can put them to use in your pipeline if you want to.


All scripts have a similar setup, containing a Header, that contains the Logo of the company and the Name and Version of the script.
At the bottom there is always a Help RollOut that includes the creators credentials and Help to explain how the tool works.

Codewise all scripts are written as .ms files which enables them to use the include functionality and therefore use common functions. All Scripts are made available through a custom toolbar that is created when 3ds Max is started.

The Modeling ToolSet is a Script that I've written to enhance the productivity of the modeling process.
It includes the Box Attach functionality. It basically creates a Box and attaches the selected mesh to the box. This is only applied to mesh and spline shapes. Additional parameters define if the object translation should be reset or kept as it is. The function also takes the layer into account. The result of the function is a clean mesh without any unwanted transforms, distorted normals or other weird mesh issues.
Another functionality is the possibility import ref meshes from files in a predefined folder. This way it possible to access assets faster that are used more often.
The Advanced Object Modification includes functionalities to move complete objects/sub object to a particular position. The flatten Ring functionality flattens the selected edges and all the edges that are in a ring.
GS Specific Group contains a small functionality to setup a mesh the way is was needed for Giana Sisters - Twisted Dreams. It creates a Morpher Modifier and keys the first morph target appropriately, additionally it creates two Flex modifiers, one for each morph direction.

The Mapping ToolSet is a Script that I've written to enhance the productivity of the UV Mapping process.
It includes simple helpers like Apply UV Modifier, which applies a UV Unwrap modifier and opens the UVW Editor window. Other Helpers like the Select Borders which keeps only the UV Borders selected or the Select UV Shell Borders, which selects Borders by extending the current selection and in the end keeping only the UV Borders selected.
The most useful functions this tool provides is the possibility to Move and Scale the selection by a given value. In the context of the scale, the scale origin can be defined as ether one of the corners or the center of the selection.
It also provides some more complex but still very useful functionalities when the UV workflow relies more on stitching and welding of vertices or edges.

The Perforce InterOp ToolSet is a Script that I've written to be able to work with Perforce directly out of 3ds Max.
It provides the possibility to add the currently open file to Perforce or open it for edit if it is already under the source control. There is also an extended functionality of that, that also Adds/opens the textures that are linked in the Max file, also searching for the psd file by using the name of the colormap.
It is also possible to choose in which changelist the files should be added or which changelist should be submitted.
When submitting you have the possibility to reopen the files and to revert the unchanged files before submitting reducing the amount of data that has to be updated on the server therefore making the process faster.

The Rigging ToolSet contains functionalities that help during the rigging process.
The script is currently heavily in development and missing a lot of planned features. All already available and later on added features are designed in a way that they allow for use independent of the type of asset that is rigged or if it is not possible then type specific features are available. In general it provides additional constrain possibilities like the Vertex Constrain which constrains a given object to a particular Vertex of a given Object.
There are also several asset independent controllers like the Star, Circle and Square Controller, that has a particular setup in which the star is constrained to both the Square and the Circle but one is overwriting the other. This can be used for instance for passing one object from one character to another.
The script also supports several other generic Controllers like the Slider, Rectangle and Circle Controller.

The Animation ToolSet contains functionalities that help during the animation process and mostly provides functions to automate certain steps.
The script is currently heavily in development and missing a lot of planned features. The ToolSet mostly focuses on non character animation helpers, Toggles for Geometry, Bones or Controls. It includes also an extended and modified version of the Animation Align Script written by JJ. The extended version supports the transfer of only the set keys and it transfers also the animation of several objects at once.
The majority of the script is composed of small tools that were needed for some specific tasks.

The Camera ToolSet is a custom tool that was specifically developed to be able to export cameras into the game especially needed for cut scenes.
The ToolSet mostly focuses on setting up and exporting predefined camera sequences into an xml format that the engine can use. It provides a possibility to define the sequence start and end and it's name and export file.
Further camera functions will be added at a later point but this has a quite low priority as the content of this script is complete and currently there is no need for further development.

The Character Compositing ToolSet is a tool that was developed to be able to prototype how different body parts fit with each other.
The parts can be defined and stored as a xml file to be used and modified. This way it is possible to use it not only for characters but basically for anything that is composed of several objects.
It also includes Morphing Composition. It provides the possibility to blend several Morph Targets into each other and using additional local transformations. The result can then be written into a file, writing the offsets from the base, only storing the vertices that have been modified. Also here the parts can be defined and stored as a xml file to be used and modified. This way it is possible to use it not only for characters but basically for anything that is composed of several Morph Targets.

The Data Transfer ToolSet is a tool that was developed during the production of Giana Sisters - Twisted Dreams, specifically. It is the script I am most proud of as I came up with the idea of how to transfer data from one object to another.
Basically the tool works with the topology instead of Vertex IDs, this way it is possible to reinstate the Vertex ID order when it got mixed up. I wrote the initial proof of concept by using symmetrical objects where the symmetry needed to be recreated without using the symmetry or mirror modifier. Additionally the tool can also transfer UVs for both the symmetry and between two different objects. Eventually I plan to have the tool to also support the transfer of Vertex colors and ultimately skinning, where the skeleton can be different and is mapped by using a definition created by the user.

The Exporter ToolSet is a collection of tools that I developed to speed up the exporting step.
There are basic functionalities that move the selected objects to the scene origin or checks if the object has the correct lightmap UVs setup.
The Main feature of the tool is that you can export several assets at once to different paths. It is also possible to define what asset should be exported to what path. The differentiation is done by the name of the asset. Currently the tool supports export presets for the now deprecated Vision exporter that not just defines the properties how the object should be exported but also what material assignment it should be assigned to. It does support other formats though these do not use any presets. There is also the possibility to export the selection as one mesh with a specific name.

The Traffic Simulation ToolSet is a tool that I've written for the Driving Simulation Project. It is meant to be used in conjunction with http://www.cszb.net/ though we used a modified version of the tool.
The script basically provides the same functionalities as the tool plus some additional properties that we needed for the project. The default properties for the spline points are Stop sign and Traffic light behavior and also the definition of start and end points of Traffic volumes. The default properties for the segments are the Line priority, Speed, and additional minimal and maximal speed values. It is also possible to define what types of vehicles are allowed on the selected lines.
Initially it was intended to also assign specific Lesson scripts to the points but this was eventually skipped due to the vast amount of possible situations that could happen at these points.

Photoshop Scripts

All Scripts were written in a way so functions can be reused by other scripts placing them outside of the UI Scripts allowing for easy reputability. The common Scripts include a variety of functions created from the Photoshop Script Listener, extending Photoshop Script by the missing functions.

The majority of the scripts that were written for Photoshop work without any UI as they simply provide a quick function or don't need any additional user input. One of these scripts is the UV toggle script. This script simply searches in the currently open document for a group named guides and toggles its visibility on or off. Simple but very efficient if you work a lot with references and UVs.
There are also other scripts that save out the color-, normal- or specularmap based on the naming conventions.
Among others I also wrote a small script called TexturePatch Generator. It was initially written to be able to split a texture into several parts based on layers that are in a specific group. It's fully functional though it ended up not being used as in the end there was no necessity for it any more.
I've also written a script packs all open Documents into a big one. It tries to sort the documents by sizes and adjusts the size of the packed file always keeping the resolution as a power of 2. It is especially useful for packing particle textures that tend to be made up of sequences rendered from 3D.
As some Photoshop filters are actually not considering if the texture is tiling, I've written a script to compensate for that for the Gaussian Blur filter. It is planned to extend it to support other filters that don't consider tiling. Then the script will also get a UI so the user can choose which filter he wants to use.
The same technique is also used to create a seamless Layer Effect, which was used to create seamless parallaxmaps or heightmaps, but as it basically bakes the assigned Layer Effect on the layer.

The Normalmap generator Script was initially developed as a Photoshop action, but due to it's limitations in terms of editing the values on the fly I decided to redo the action as a script. It went through several iterations mostly to optimize the amount of steps that need to be taken until the normalmap is done. The initial version of the script was written roughly at the same time as the first version of nDo was released. This was also the inspiration to rework the script to be able to edit the values and see the result in real-time. The last feature that was added to the script is the possibility to zoom in and out. Unfortunately there is no possibility to pan while the script is running. Currently the Normalmap generator is only missing one feature which would be the possibility to edit the curve that defines the falloff of the normals, it actually is already integrated but there is no curve editor available that would work inside the UI of the script so it's using the default linear preset.

The initial idea behind Highlights generator Script was researched by Eric Urocki, the Technical Art Director at Black Forest Games. The idea was to reduce the time it takes to create irregular edge highlights. As a result of his research he created a Photoshop Action that I used as a basic reference optimizing unnecessary steps and exposing all values that should be modifiable. All it takes is a grey scale map that emphasizes the edges. There are two setting possibilities. One is for a soft and more subtle heighlight, that has only the intensity and a clamp of the highlight. The second has the same values and an additional one for the size of the Highlight. On top of that there is the possibility to add distortion to the highlights, this is done by applying a Spatter and Blur filter on one layer that provides the main highlight value. The result of the script is a group that, if not collapsed can still be edited using the script or by hand, though it is recommended to use the script.

The dds Saving Script was designed to save the enormous time that you need when you save textures to the dds file format, especially if you have to save into several different paths with different settings like resolutions. This script recognizes several defined maps that are stored in groups, based on a naming convention. Each predefined map has its own settings for saving.

Eventually I would like to rewrite some of the scripts as a Photoshop Extension. This would avoid the issue of all scripts being modal and therefore blocking the user to be able to move and zoom in the Document.

© 2016 Andreas Feist | Impressum