Introducing Max Creation Graphs

By - - 3ds Max

Introducing Max Creation Graphs (MCG)

Now that 3ds Max 2016 has been officially announced I can finally come out of stealth mode and tell you why you haven't heard from me for over a year!

Eddie Perlberg had me locked me up in a basement along with Martin Coven and a team of talented developers and QA until we completed the #1 most request feature for 3ds Max.

The result of our effort is a new feature in 3ds Max 2016 called the Max Creation Graph editor (or MCG for short). This tool enables user to create modifiers, geometry, and utility plug-ins using a visual node-based workflow.

With MCG you can create a new plug-in for 3ds Max in minutes by simply wiring together parameter nodes, computation nodes, and output nodes. The resulting graph can then be saved in an XML file (.maxtool) or be packaged with any compounds (.maxcompound) it depends in a ZIP file (.mcg) which you can share easily with 3ds Max users.

Once an MCG tool is evaluated you will have one of the following:

  • New objects primitive in a the "Max Creation Graph" category in the creation panel
  • A new modifier in the modifier pull-down
  • A new MAXScript utility
  • A new MAXScript function

After evaluation two files are generated next to your .maxtool file

  • A MAXScript plugin wrapper (.ms)
  • A representation of the .NET function compiled from the graph (.txt)

MCG is not Softimage ICE

Despite the title of the original request on user feedback (which you might notice was first suggested by Martin Coven before we hired him, I'm sure he is glad to finally get his votes back) and the obvious similarities this is not an integration of Softimage ICE in 3ds Max. At the heart of MCG is a brand new visual programming language we developed on top of the .NET framework.

Some of you may also be familiar with another open-source visual language from Autodesk called Dynamo and see some similarities. Dynamo is very similar to MCG (it is easy to extend using .NET and supports some functional programming concepts) but at the core is an interpreter whereas MCG is compiled directly to .NET byte-code. This design choice made sense for Dynamo, because it was designed for parametric geometry construction, however the performance was not sufficient to enable us to create tools for 3ds Max users.

3ds Max users expect all parameters of geometry and modifiers to be able to be animated and to have the results updated in near real-time in the viewport (usually buildings don't dance, but they can in 3ds Max). Because of this requirement we had to develop a full compiler. I'll bore you with more details if you buy me a beer (or I accidentally start to blog while drinking).

A functional dataflow visual programming language

For the most part MCG is a traditional visual programming language. Nodes perform a transformation on data that flows through input connections and output the result to the output "value" connection.

One characteristic of MCG that is immediately apparent is the fact that there are "function" connection outputs. This enables computations to flow through a graph as data. In computer science we call these first-class functions.

When a node is connected from the "function" output, the entire left sub-graph is treated as a function, with unconnected inputs in the graph treated as function arguments. This is equivalent to the lambda abstraction operation. More on this in later tutorials.

In MCG we can not only pass functions as arguments to higher-order functions like "Map" or "Combine" we can also return functions from operators such as "Bind" which performs a partial application or "Compose" which performs function composition. We can also store functions in arrays. I'll go into more details on this in a future blog post. 

A few things to note about MCG: most data that flows through the graph (with a few exceptions such as "INode", "Cache", and "Random" objects) are immutable data structures. In other words MCG is nearly a pure functional programming language (like Haskell). An example of this is that when you send data into a "SetValue" node the array you get on the other side is a new array, and the original one remains unchanged. This was done so that multi-threaded evaluation (e.g. via "ParallelMap") could be done quickly and easily. I promise more information on multithreading in a later post.

The Future

We are a publicly traded company which implies certain legal obligations, so unfortunately I can never talk about the future as much as I would like. It always makes me a bit sad, because I spend a lot of time thinking about the future … more time than my boss would like. :-)

[video]https://www.youtube.com/watch?v=tmudH_C97O4[/video]

At the very least I hope that I have proven to you that by going on to 3dsMaxFeedback.autodesk.com YOU are directly influencing the future. Yes, big requests might take four years to deliver on, and sometimes we can't tell you we are working on them (it is a very competitive business after all) but we are paying very close attention.

I never forget that without the support of our users there would be no 3ds Max, and I wouldn't have my dream job.

Sample MCG Tools

For some sample MCG tools made by our team see this blog postThere are also a number of 3rd party sample tools and videos posted on the MCG Facebook page.

On the Autodesk 3ds Max Learning Channel on YouTube you can find a tutorial series on Max Creation Graphs: 

[video]https://www.youtube.com/watch?v=YBPVUvvMdD0&list=PLnKw1txyYzRl1IVsbSFwd-c9i9cz-rRJ1[/video]

For inspirstaion, here was the demo video made by Martin Coven: 

[video]https://www.youtube.com/watch?v=3nsAlw_j4lQ[/video]

Acknowledgements

MCG would not have been possible without the hard work of a talented and passionate development team. The core team included Martin Coven as designer and instigator, myself as architect, along with Abdelhak Ouhlal, Attila Szabo, Clint Lewis, Rick Delesdernier, and Roman Woelker. Larry Minton and Tom Hudson also contributed at crucial points to help develop key functionality. Martin Ashton played an important role developing the initial prototype of MCG and I look forward to the tutorials he creates on his YouTube SDK and scripting learning channel.

Of course this is an effort that spanned the entire 3ds Max team. No feature is developed in isolation, it takes an entire team of people working together to deliver 3ds Max. The whole team has worked hard to create a release that I am truly proud of.

I personally want to thank Eddie Perlberg, Michael Russo, Kelcey Simpson, and Chris Young for believing that our team could deliver on such a bold and daring vision, and supporting us through the process.

I also want to thank all of the Beta members and 3dsMaxFeedback contributors for their invaluable feedback, support, and encouragement.

Final Words

For now I want to leave you with the same words that Eddie shared with me recently "This is just the beginning."

Published In
Tags
  • 3ds Max
  • Film & VFX
  • Games
  • Design Visualization
16 Comments
To post a comment please login or register
Had a question regarding the .NET stack upon which is this built upon, is it extensible or can we as user create new nodes to use inside MCG? Overall, this sounds very very promising! Hyped about it.
Edited by amartinez 2 years ago
| 2 years ago
Hi Mauricio, thanks! We could definitely consider making MCG interactive and adding support for particles. I would suggest adding those requests to http://3dsmaxfeedback.autodesk.com.
Edited by christopher-diggins 2 years ago
| 2 years ago
Christopher ... you say MCG isn't ICE, but it may someday be? Interactive? Particles? Looks amazing, congrats on the work.
Edited by MPC3D 2 years ago
| 3 years ago
This is HUGE! Congrats to the team!
Edited by strob 3 years ago
| 3 years ago
MCG looks very, very cool I hope to have more detailed help and tutorials and case files
Edited by vfxdvs 3 years ago
| 3 years ago
MCG looks very cool indeed! Can't wait to see what I can do with it. I hope it would be easy for an artist to create stuff with it, since the majority of Max users are not coders. I'm kind of sad though that we didn't see a new UI in this year's release. Max desperately needs a modern, flexible, and fully customizable UI with ability to dock/undock everything like in Blender and Modo. It would be great to see this in next year's release. Here's hoping!
Edited by Alex_M 3 years ago
| 3 years ago
Very cool thank you.
Edited by emora 3 years ago
| 3 years ago
Thanks everyone for your comments, support, and encouragement. It is really appreciated by the team and I!
Edited by christopher-diggins 3 years ago
| 3 years ago
Wow, cant wait to try it out. Wasnt expecting this, great job team!
Edited by deswork 3 years ago
| 3 years ago
Very Nice! Please make 3Ds Max more light and customization.
Edited by godparadise 3 years ago
| 3 years ago
Wow this is something worth waiting for and like I said in another post, please thank all your developers on our behalf for putting in so much effort. I've got a feeling that 2016 is going to be a great year!
Edited by The Angry Beaver 3 years ago
| 3 years ago
Your hard work is much appreciated here, that basement does look terrifying. Quick fact checking question, can MCG recreate every single modifier on the modifier's list? or are there some limitation... Also, is there any chance that in the future you'd open up the existing modifiers to improvements via the Creation Graph?
Edited by m.rud 3 years ago
| 3 years ago
you had me at "lambda abstraction operation".
Edited by visualz 3 years ago
| 3 years ago
I'm certainly intrigued by this. As an iconic sage would say... [i]Fascinating[/i].
Edited by Shawn Olson 3 years ago
| 3 years ago
Wow. This sounds cool. :)
Edited by martincoven 3 years ago
| 3 years ago
Thank you so much. That's a great start!
Edited by pavel.3dtv 3 years ago