GML Importer Version 2 by David Mackenzie


I will assume most of you know what GML is, if not check out this post I made some time ago here. In the months that have gone passed we have developed three different version of the GML importer. The first version that was featured in a video here, was a basic hack that we used to get a job done. The second version was an expansion of the first while it was a little better it lacked a few important features:

  1. Easily update-able framework.
  2. An "API" or a library of functions to take advantage of in other scripts or tools.
  3. A single unified User Interface that exposes all of the data in the GML File.

So after taking a moment and addressing these issues we created what we believe to be a great tool. It includes a library of code that other 3ds Max TDs and scripters can take advantage of. We choose to focus more on the data and library that goes with it. In it's current form the script will only create a spline shape from the GML file. I will be updating it to include a feature to create proper geometry. We currently have it working by creating a sequence of points and using Delaunay Triangulation to create the surface.

The User Interface

The interface at first glance looks quite complicated, however, it is actually very simple. We wanted to expose everything to the artists so there are quite a lot of UI controls, most of which can easily be tucked away for later use. I was going to document what all of the UI controls do below but since each one has a question mark I'll let you work it out.

GML Importer Version 2
GML Importer Version 2

The Library

We believe simplicity is the ultimate sophistication so we tried to keep everything as simple as possible. Below is a brief run down of the maxscript structs that make up our GML importer.

  • gml_point GML point is a simple struct the stores x, y, z along with t (time) values. If it was not for the t I would had have just used a point3.
  • gml_sketch This struct represents a whole sketch. It is made up of strokes (s_strokes). Each stroke is an array of gml_point()
  • gml_custom_props This struct just stores some custom data that is not from the gml file.
  • gml_header Stores all the information in the header of the GML file. Mainly stores name, username, version and keyword information. This data is reflected in the GUI in the information rollout.
  • gml_enviro This struct holds all of the environment data in the GML file. This includes the canvas size, up vectors and related data. This information is reflected in the GUI in the Environment rollout.
  • gml_document is the guts of everything, its instantiates every one of the above structs. Through this struct you can interact with all facets of a GML file. The struct also provides three methods to create objects and shapes from the data, these are mainly included as examples of what you could do. These functions are  implemented in the GUI. We are currently working on a new method to create geometry that will be included in new updates.

Looking through the file will give you a good understanding on what is going on. There is a pretty detailed example in the comments showing you how to create gml_documet to sum up the simplicity there is a snippet below:

a = gml_document() a.file = "C:\\18763.gml" a.init() a.createShape()

You can download the GML importer below.

For everyone that has posted and emailed me asking where is the importer? Well it is here now, thank you for your support and let me know how you go. If you create something cool then please send it in. In the spirit of community if you are making this better then lets make it better for everyone! Send in any changes or updates you find. Feel free to posts bugs in the comments below.



3DS Max Hot Box by David Mackenzie


There are many things I like and dislike about many software packages, one thing I do like is Maya's hot box. Over the years I have often thought it would be great to have a hot box style interface for max. Well lately two things have happened. First I have had some spare time up my sleeve which is very rare. Secondly I got inspired by a video on Script Spot (check it out here) that I thought would solve my hot box lust. As it turned out the project sounds like it is a quite a while off. So I got to work on my own version. At this stage I have just replicated the functionality that was in the video but I have also built an easily expandable framework. The GUI is created entirely on fly dynamically, I am currently adding support for fly out menus. Being that it is all dynamic it will be easy to customise the layouts and functionality in the future. I am unsure whether or not to save the configurations in XML or just write maxscript to a file.


I would love to here what you all think and if you have any ideas on how this type of interface can be utilised in max then please let me know. I have been using it in its current form and have found it quite useful.

You can download the script here.

You can download the source here.

Please remember this is beta software. Do not be surprised if there are any bugs. Please let me know any issues you do run into.

Why is the script encrypted? Well first off I will be keeping the script free. In time I will make the source available when development has progressed.


  • 07/09/2010 - New version available it fixes an issue that Max 2011. Users have reported a script error which is raised when trying to run it. This has now been fixed.
  • 31/08/2010 - I have optimised the script and gained more performance. It now shows and hides very quickly without any black ghosting taking place.
  • 31/08/2010 - User reported seeing the interface in black before it moved to the cursor. This has now been fixed. Users may still see some black the first time the hotbox is opened, after that it should be fine. I have also optimised the script so it should show faster.
  • 30/08/2010 - Added a new version label to the UI. Fixed a couple of new bugs.
  • 30/08/2010 - The download is now version 0.04. I have fixed a bug where the UI controls would become unresponsive. I also added some buttons to the center of UI for switching view.
Maya Style HotBox for 3dsmax
Maya Style HotBox for 3dsmax



Audi S5 Burnout by David Mackenzie


Audi S5 Burnout Image This a scene I put together a year or so ago to show case my new car rig. It is a very simple animation with only a few key frames used to generate the animation, everything else is handled by the rig. You can see the animation in the below. Keen observers will notice that the one of the front wheels does intersect the body work, this however was my fault for not setting the limits correctly.

I have also included a quick compositing brake down after the animation. I am happy to say that as soon as we get some time to prepare the rig for distribution we will make it available to everyone.



Hope you guys liked it.



Wire Colour Tools by David Mackenzie


Wire Colour Tools is a simple script for setting random wire colours to all of the objects in the scene. Anyone who does allot of post work either in PS or a compositing package should find this script useful. Being able to adjust any element or of your project in post by the object enables you to get the most of your image, rendering Wire Colour passes is very simple and inexpensive from render time point of view.

Wire Colour Tools
Wire Colour Tools

You can download it here.

Wire Colour Tools has three way in which you can use it:

  • Colour By Layer. This sets a random wire colour all of the objects on each layer.
  • Colour By Material. Perhaps the most useful of the three options this one will set all objects wire colour based on the material that is applied to it.
  • Random Colour. This is pretty self explanatory it allows you to set a random wire colour to every object in the scene.

There is also the option to run these only on selected objects.

To install just copy "" to you 3dsmax/Scripts directory and then run "wireColourTools_Macro.mcr". You will then be able to find the script in the Customize User Interface options under the category "Daves Tools".

I hope you find Wire Colour Tools useful. Again if you are doing allot photoshop work on your images I imagine this tool will save you some time.  If you have any suggestions for new features please let me know and I will do my best to get them in there. If you do come across a bug please let me know.



V-Ray Material Shortcuts by David Mackenzie

Vray Material Shortcuts

These short cuts are really collection of very simple Macro scripts. Like my Turn Viewport Maps On/Off this one has had some serious staying power with artists to date it has to be one of my most used scripts. All of the macros are designed to manipulate V-Ray materials globally throughout the scene, very quickly and efficiently. Each macro effects every V-Ray material in the scene. They are very handy in a number of situations, for example when you get a file from a junior that has the glossy sub divs on every material sky high.

Vray Material Short Cuts Screen Cap
Vray Material Short Cuts Screen Cap

You can download it here.

To install just run the script and all of the macros will be available under the category "Daves Tools" where you can choose to add all or some of them to a menu. I suggest you create a new menu and add them all to it. At the request of my good friend Warwick Hays from Monkey3Media I am currently in the process of creating a GUI version as well that will give artists a lot more control. If you have any suggestions for improvement or there is anything else you would like automated in V-Ray please let me know  I am always looking to expand upon and improve my scripts.