My Maxscripted tools
I have five years of experience in using Maxscript to solve problems and automate tasks for myself and others. Most of the scripts I write are one time only solutions, but many can be reused and I have a library of over a hundred scripts written for solving different tasks that usually can be resued to solve upcoming issues.
Anything is possible with Maxscript! (almost)
Covered here is a brief documentation over a selection of the tools I've written for GRIN's artists in the Maxscript language. The purpose of this document is to demonstrate what kind of tools I've built, their functionality and reasons for building them. You can not download the tools at this time!
During the making of “Ghost Recon Advanced Warfighter 2” I had a lot of .obj files to handle as I was using both Zbrush and Mudbox as extensions from 3D studio. When I realized how much time I spent in browser windows going to the same locations I created a browser in a floating window inside Max to manage all my files.
It has a browser function, remembers recent folders and you can also tag favorite folders such as your import/export location of Zbrush or Mudbox. It can import or export any file format Max can handle and you can browse for them separately.
Since then I've used it on a daily basis for moving files between programs, computers and artists. Keeping track of and sharing files has become really straightforward and easy.
I regard small efficiency scripts as the most important scripts, and I always prioritize them when getting tool requests. By minimizing time spent on repetitive tasks the artists become more focused on creating art. The little time gained every day also adds up when being spread over a large production to huge amounts.
Quick Import/Export is one of the most handy tools I've written, I constantly update it and it was the first script I would have recommended to any new artist at GRIN.
The thought behind this script was to create better normal maps by using a shrinkwrap function inside Max to align meshes better to the surface of the highres mesh. Instead it turned out to be a very good tool for creating meshes with the aid of other surfaces such as creating the lowpoly mesh in the first place.
This tool lets you shrink one mesh or parts of it to smear it out over a target mesh. It can use several algorithms for gathering the targets such as vertex, edge or polygon normal. It stores information about alternative hits which can be useful in cramped areas.
Lastly there is a brush function where you can paint on the mesh to let certain areas of the mesh use different gain from the targets. The brush includes standard inverting functionality as well as smoothing. You can use mesh selection to mask these transforms as well.
With the addition of PolyBoost to Max 2010 this tool has become a bit redundant, but in the versions before that this was a very valuable tool. Also the painting functionality is still very useful in many complicated meshes.
AutoReset was a content optimization tool that was implemented into every artist's export process during “Ghost Recon Advanced Warfighter”. It was requested by the engine programmers since at the time we had very few conventions on how meshes were exported. It allowed them to remove several calculations made to every node within the engine.
The tool goes through all the objects in the export file and removes all unnecessary data as well as performing some optimizations for the engine.
Later on when newer versions of the engine exporter were written this tool was implemented into the exporter, and when naming conventions were put in place this task could be entirely automated.
During “Terminator Salvation” we had a lot of outsourced characters that used a lot of small textures that would make unnecessary drawcalls inside the engine. To fix this I built these tools to create an atlas texture to make sure that all characters in a level used the same texture.
The tool lets the user browse for files of any format Max supports, then it generates an atlas texture as well as an XML file with the UV and image coordinates.
The tool can then convert any object that shares a texture on the atlas texture with the atlas coordinates, it can also revert this process if further adjustments are needed to the original files.
This tool also allowed us to share any object in Max from one character to another without generating another drawcall in the engine, which was something the artists requested.
During the production of “Ghost Recon Advanced Warfighter” we used Sketchup to create the buildings. It has several tools that are superior to the modeling tools in Max in both speed and efficiency. The mapping tools were also very useful for our pipeline.
However the meshes that Sketchup output to Max had a lot of errors that showed up in the engine. To fix them I wrote this tool for the environment artists.
The tool both lets the user quickfix the objects which sorts out everything automatically and it also has a few functions to check the result as well as manually do everything the quickfix process does if needed.
During “Terminator Salvation” GRIN used outsourcing for the first time. In order to improve the quality we got from the outsourcing companies we used, we developed a pipeline for content approval.
This tool lets the Lead Artist create render settings with predefined cameras and lights. The artist then uses the tool to import these settings and render the character during different production stages with the same camera angles and lighting with a single click.
We then used these renders in a PSD file that was sent directly to the Art Directors for them to write feedback or make paintovers on the render itself.
There are several benefits to this process. The artist always gets a written checklist of things he needs to do to get the model approved. The Lead Artist can then check this list before sending it to the Art director again, and the Lead Artist can also easily monitor how the model is progressing by leafing through the layers in the PSD.
Since every entry in the PSD is dated you can then backlog this to see how much time each step takes for an individual artist, making planning easier.
This process ensured a better communication with the outsourcing companies and was also used internally because of the backlog benefits. We also used it as a way to educate new artists.
Storage
An efficiency script which stores selected objects that then can be imported again in another scene, or in another open Max application. It also stores skinning information and can instantly transfer skinning to objects with the same vertex count.
This is another tool I use daily and saves a lot of trouble moving objects between open applications as well as all the troubles reskinning meshes can have.
Terrain Tools
A small script for placing and aligning objects on a terrain. Used during “Ghost Recon Advanced Warfighter” to place navigation and cover nodes on the landscape meshes.
Also used to place trees, backdrop buildings and can be used to place small objects on highpoly meshes when sculpting.
AutoLODer
Made during the optimization of “Terminator Salvation” where we needed to remove the bones in the hands and feet on a wide array of characters in a very short time. It automatically removes listed bones from rigs and reskins the vertices to their new targets.
Save in workdir
A small script provided to the artists to enforce the folder structure. It automatically saves incremental files in a “workdir” folder and moves used textures to a “texture” folder and remaps them.
Animation Matcher
A script for the weapon team, but used for other tasks as well. It takes several objects and creates a skinned mesh out of them. This is handy for removing engine drawcalls.
Channel Cleaner
A lot of the content we got from Ubisoft during “Ghost Recon Advanced Warfighter 2” had information in channels we needed to redirect. This tool both automatically fixes these errors but also allows the user to move channels around for several objects at once which is both hard to do in Max and very tedious.
Update Grin tools
A tool to automatically send out new versions of scripts to all artists.
If you have any questions regarding these tools, contact me!
Anything is possible with Maxscript! (almost)
Covered here is a brief documentation over a selection of the tools I've written for GRIN's artists in the Maxscript language. The purpose of this document is to demonstrate what kind of tools I've built, their functionality and reasons for building them. You can not download the tools at this time!
Quick Import/Export 2
During the making of “Ghost Recon Advanced Warfighter 2” I had a lot of .obj files to handle as I was using both Zbrush and Mudbox as extensions from 3D studio. When I realized how much time I spent in browser windows going to the same locations I created a browser in a floating window inside Max to manage all my files.
It has a browser function, remembers recent folders and you can also tag favorite folders such as your import/export location of Zbrush or Mudbox. It can import or export any file format Max can handle and you can browse for them separately.
Since then I've used it on a daily basis for moving files between programs, computers and artists. Keeping track of and sharing files has become really straightforward and easy.
I regard small efficiency scripts as the most important scripts, and I always prioritize them when getting tool requests. By minimizing time spent on repetitive tasks the artists become more focused on creating art. The little time gained every day also adds up when being spread over a large production to huge amounts.
Quick Import/Export is one of the most handy tools I've written, I constantly update it and it was the first script I would have recommended to any new artist at GRIN.
Fit to Mesh
The thought behind this script was to create better normal maps by using a shrinkwrap function inside Max to align meshes better to the surface of the highres mesh. Instead it turned out to be a very good tool for creating meshes with the aid of other surfaces such as creating the lowpoly mesh in the first place.
This tool lets you shrink one mesh or parts of it to smear it out over a target mesh. It can use several algorithms for gathering the targets such as vertex, edge or polygon normal. It stores information about alternative hits which can be useful in cramped areas.
Lastly there is a brush function where you can paint on the mesh to let certain areas of the mesh use different gain from the targets. The brush includes standard inverting functionality as well as smoothing. You can use mesh selection to mask these transforms as well.
With the addition of PolyBoost to Max 2010 this tool has become a bit redundant, but in the versions before that this was a very valuable tool. Also the painting functionality is still very useful in many complicated meshes.
AutoReset
AutoReset was a content optimization tool that was implemented into every artist's export process during “Ghost Recon Advanced Warfighter”. It was requested by the engine programmers since at the time we had very few conventions on how meshes were exported. It allowed them to remove several calculations made to every node within the engine.
The tool goes through all the objects in the export file and removes all unnecessary data as well as performing some optimizations for the engine.
Later on when newer versions of the engine exporter were written this tool was implemented into the exporter, and when naming conventions were put in place this task could be entirely automated.
Atlas Tools
During “Terminator Salvation” we had a lot of outsourced characters that used a lot of small textures that would make unnecessary drawcalls inside the engine. To fix this I built these tools to create an atlas texture to make sure that all characters in a level used the same texture.
The tool lets the user browse for files of any format Max supports, then it generates an atlas texture as well as an XML file with the UV and image coordinates.
The tool can then convert any object that shares a texture on the atlas texture with the atlas coordinates, it can also revert this process if further adjustments are needed to the original files.
This tool also allowed us to share any object in Max from one character to another without generating another drawcall in the engine, which was something the artists requested.
Sketchup Fix
During the production of “Ghost Recon Advanced Warfighter” we used Sketchup to create the buildings. It has several tools that are superior to the modeling tools in Max in both speed and efficiency. The mapping tools were also very useful for our pipeline.
However the meshes that Sketchup output to Max had a lot of errors that showed up in the engine. To fix them I wrote this tool for the environment artists.
The tool both lets the user quickfix the objects which sorts out everything automatically and it also has a few functions to check the result as well as manually do everything the quickfix process does if needed.
Render Settings
During “Terminator Salvation” GRIN used outsourcing for the first time. In order to improve the quality we got from the outsourcing companies we used, we developed a pipeline for content approval.
This tool lets the Lead Artist create render settings with predefined cameras and lights. The artist then uses the tool to import these settings and render the character during different production stages with the same camera angles and lighting with a single click.
We then used these renders in a PSD file that was sent directly to the Art Directors for them to write feedback or make paintovers on the render itself.
There are several benefits to this process. The artist always gets a written checklist of things he needs to do to get the model approved. The Lead Artist can then check this list before sending it to the Art director again, and the Lead Artist can also easily monitor how the model is progressing by leafing through the layers in the PSD.
Since every entry in the PSD is dated you can then backlog this to see how much time each step takes for an individual artist, making planning easier.
This process ensured a better communication with the outsourcing companies and was also used internally because of the backlog benefits. We also used it as a way to educate new artists.
MINOR TOOLS AND TOOLS WITOUT A USER INTERFACE
Storage
An efficiency script which stores selected objects that then can be imported again in another scene, or in another open Max application. It also stores skinning information and can instantly transfer skinning to objects with the same vertex count.
This is another tool I use daily and saves a lot of trouble moving objects between open applications as well as all the troubles reskinning meshes can have.
Terrain Tools
A small script for placing and aligning objects on a terrain. Used during “Ghost Recon Advanced Warfighter” to place navigation and cover nodes on the landscape meshes.
Also used to place trees, backdrop buildings and can be used to place small objects on highpoly meshes when sculpting.
AutoLODer
Made during the optimization of “Terminator Salvation” where we needed to remove the bones in the hands and feet on a wide array of characters in a very short time. It automatically removes listed bones from rigs and reskins the vertices to their new targets.
Save in workdir
A small script provided to the artists to enforce the folder structure. It automatically saves incremental files in a “workdir” folder and moves used textures to a “texture” folder and remaps them.
Animation Matcher
A script for the weapon team, but used for other tasks as well. It takes several objects and creates a skinned mesh out of them. This is handy for removing engine drawcalls.
Channel Cleaner
A lot of the content we got from Ubisoft during “Ghost Recon Advanced Warfighter 2” had information in channels we needed to redirect. This tool both automatically fixes these errors but also allows the user to move channels around for several objects at once which is both hard to do in Max and very tedious.
Update Grin tools
A tool to automatically send out new versions of scripts to all artists.
If you have any questions regarding these tools, contact me!


