Projects

133... At least. by David Mackenzie

So I thought I would have a go at creating a music clip for a competition on Genero. The track was challenging and very much outside of your usual music clip territory not just for being a classical piece of music but mainly for its rapid changes in pace and the abruptness of it. As a lover of classical music I really did enjoy working on it. I was not familiar with Hilary Hahn's work prior to this so the process really turned into a discovery process for me. I highly recommend Hilary's music if you enjoy the Violin.

For me personally the track sounded more like a conflict, a fight for supremacy between the Violin and the Piano. So that is what I choose to create.

Below is my clip it was directed by yours truly, and shot on a Sony FS700 at 400 FPS. Underneath the clip are the full credits. Enjoy!

 

Credits:

  • Directed By: David Mackenzie
  • Camera Operators: David Mackenzie, Matt Tanous, Peter Drew
  • Runner: Billy Corcoran
  • Violin Boxer: David Acland
  • Piano Boxer: Benjamin Ramjan
  • A big thanks to Joe's Boxing

The clip was cut in Premiere Pro with bit grading. I have to say was nice do something without 3d in it, I foresee a few more these projects this year. Below are couple of stills from the shoot and some ungraded footage so you can get a feel for the amount of post. I would love to hear what you think.

[ylwm_vimeo width="600" height="338"]85222766[/ylwm_vimeo]

 

 

Aston Martin short/tvc/video thingo... by David Mackenzie

One_77

So I thought I would start the new year off with some making of clips from a little animation I have been working on. It was inspired as you no doubt will be able to tell by Joseph Kosinski's Black Bird spot that he made some years ago. I have always liked it and thought I would use it as the basis of this project. Anyways check out the clips below, I hope you enjoy them and I would love to hear any feedback you have.

Meet Larry, the 3dsmax layer manager. by David Mackenzie

layers_feature

Why build a new layer manager? 3d Studio Max has had a layer manager for a long, long time. It works very well for what it is, however, as scenes over the years have grown large and complex the layer manager has not evolved to over come this. Scenes these days have more levels of detail and with that detail has come a need for better scene management. When deciding to create a new layer manager there were a couple of things that I wanted to do:

  • Keep the existing layer manager, this seems strange but I like solutions to problems that build in redundancy. If my new layer manager decided to stop working in the middle of production I wanted to be able to revert back to the old one. This meant anything new I created would either need to be built on top of or use the existing layer manager as its core.
  • The layer manager needed to be more granular. Everyone has wanted layer manager that has had sub-layers. I wanted to be able to have sub-layers of any depth.
  • Sub-Layers would inherit the properties of there parents.
  • Make it easy to build new tools and features into the new layer manager. If I was going to build a layer manager I wanted to be able to extend it easily.
  • Standardise our layers and workflow. I wanted to create a workflow were our files and how we worked in them was standardised so that anyone in the studio could open someones file and be able to hit the ground running.
With those goals in mind I got to work. I chose to write the layer manager with Max Script and .Net instead of hitting the SDK. The upside to working with Max Script and .Net is that I could write the tools very fast and after 2 days I had the first version out the door for the artists to try. Since then it has grown and been updated as it has needed to be. There were originally a flurry of bug fixes that were required but after that we set about creating new features as production called for it. It has been about a year since I first wrote it and now it is a solid production tool after cutting its teeth on small jobs and then proving itself on larger jobs it has become an integral part of our workflow.

Custom Features of the layer manager

There are many custom features I have written into the layer manager some of them are below:

  • Isolate Layer. Similar to Max's isolate feature when you right click on a layer and select isolate all other layers are hidden and the selected layer is turned on. The next time you right click on the layer you have the option to de-isolate it. This has proved very handy when yo need to do some quick modeling fixes in large scenes.
  • Rename Layers and Children. I wanted an easy way to rename layers and there children right in the dialog. This proved a little trickier than I first thought it would, however, you can now easily rename layers just by double clicking on them and typing.
  • Node View. An external view for handling nodes.
  • Export Layer. Saves the selected tree of layers as an X-Ref.
  • Layer Sets. For saving the layer states of layers. For instance you can save a state for a camera with all of the relevant layers turned on. This is great for large scenes that have multiple cameras.

A new Layer Manager

Below are some screen shots of the new layer manager. As you can see the interface is very simple and faithful to the original layer manager, this lets new artists in the studio get up to speed with the tool right away.

 

LayerManager v2.0

Standard Layer Manager

Most recently we used the tool on the Renovators with great success. Using it in conjunction with a few other tools we were able to achieve the impossible delivering animation for 6 houses in 6 days. You can see some of the work here.

 

What Next?

Moving forward there are a couple of things that I am currently working:

  • Increased Performance. I want to increase the performance of the tool so that I can add support of scene objects in the tree view. So far I have re-written the control and I am pleased to say the performance is much faster. Not to say the current version is slow but there is a difference between adding 200 or so layers and 5000 objects.
  • Tighter integration with X-Refs and containers. I want to make splitting up max files to be completely seamless and transparent. This will be a huge benefit on large projects with more than one artist working on it. Hopefully the layer manager will become a bug for scene management.
  • Create an connection between render passes and layers. It would be great to expand the layer sets functionality to be able to create different render passes.
Overall I am hoping the layer manager to grown into more of a scene manager which will allow artists to manage there scenes as quickly as possible all in one place.
A silver lining?
The biggest upside of writing this tool has been the change in artist behavior. Our scenes are now much more standardised enabling anyone to pick up a project and continue to work on it. Changing a team of artist habits is difficult at best some times it takes a good tool to serve as the catalyst for change. I happy to say that new layer manager has succeeded in this respect.
Cheers,
Dave

 

GML Importer Version 2 by David Mackenzie

gml_feature

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 gml_data.ms 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.

Cheers,

Dave

3DS Max Hot Box by David Mackenzie

3ds_hotbox

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.

HotBox
HotBox

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.

Update:

  • 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

Cheers,

Dave

GML Importer by David Mackenzie

gml_motage

We were very inspired by what we saw over at http://graffitianalysis.com/ so we decided to write a GML importer for 3ds max. We where pretty happy with the very quick tests we have done. The tool is almost finished at which point we will release it. We are always in support of open formats and GML (Graffiti Markup Language) is not an exception. All of the test where created by the script which has options to produce spline shapes, animated objects, a simple particle flow setup (that's in the video) and point clouds. If you have any thoughts on what would be good to add just let me know.

Would love to hear what you guys think. Be sure to check our http://graffitianalysis.com/ and http://000000book.com/

[flv:http://daveandgoliath.com/wp-content/uploads/2010/04/GML_Importer_Vid.flv 547 308]

We are also adding support for Digital Fusion and Nuke we may add AE support all though we do not use it a great deal.

Cheers,

Dave