Emulating a Particle System using MCG

By - - 3ds Max
3 mins
Last modification: 4 Oct, 2017

In the M&E division at Autodesk we have periodical hackathons where entire groups are given the opportunity to work on projects of our chosing for two-three days. We are then given the opportunity to showcase our work to the entire division and receive feedback from our leadership. I love this, because I get to work together with some really smart people on some interesting ideas. 

One of my hackathon projects last year, which I worked on with Kelvin Zelt, was to develop a simple particle system with MCG. Kelvin dubbed it project "Sprinkles". We managed to get a demo to work quite decently by using MCG as-is without any changes. We also found ways to make the core MCG evaluation much faster via lazy evaluation of arrays, but I'll save that for another post. 

In the Montreal Autodesk office at 10 Rue Duke, we have been hiring a lot of interns. This program is a huge success, and I encourage students to check out the listings. In fact several recent hires have come from the intern program.  On the MCG team over the last year I have gotten to work with Kevin Derler, Marc-Antoine Nadeau, and Remi Cosette-Roberge. It has been a great experience for me, and they seem to have enjoyed it as well! 

Recently Remi took the particle project to another level: encapsulating a lot of the behavior in compounds and multi-threading the graph evaluation.  

Because this was done using 3ds Max 2016, I thought I would share it with you is as both an inspirational use of MCG, and a tutorial for some advanced concepts such as:

  • Parallel pseudo-random number generation - see "RandInt" and "RandFloat"
  • Using Ray Trace scene to quickly compute collision 
  • Caching to manage ray trace sceen 
  • Using simulation graphs to have predicatable results 
  • Encapsulating complex behavior in compounds and using functions to describe behavior (e.g. particle construction, destruction, and updating). 

This MCG tool is not a real particle system, it is just a geometry objec that it generates a TriMesh that consists camera facing squares with UV coordinates, and vertex colors. Neither Remi or I are particularly good users of 3ds Max (though Remi has more skills than me already) so hopefully someone can share a better example! 

Here is the tool and a couple of sample 3ds Max files. You will need 3ds Max 2016, with at least SP1 installed. I hope you find it fun and useful!   


Published In
  • 3ds Max
  • Film & VFX
To post a comment please login or register
| 2 years ago
"if ( (length(Camera-Sphere001)
| 2 years ago
Hi respected sir..i like ur all videos and tuts...can u do favour for me by making a small tutorial about the making "CUSTOM CAMERA SHAKE "in MCG its like that if the particles comes in the perticular diameter(peripheral )area of Camera then the depending on the distance between the camera and the particles camera shakes by distance intensity and if this distance is false then camera don't shake.....make MCG or scritp for this because i have already search it all over the internet but no gain at all...it would be a new tool or modifier or could be a animation controller if it could be possible .....so please help me and make tutorial...if u can't understand than look what i want ....."if ( (length(Camera-Particles)
| 3 years ago
Well, that`s amazing and fun to play with! Performance is good too, I still got 4-5fps with 2000partsPerFrame->800k vertices. Maybe that`s something for future roadmap of 3dsmax: MCG-Particles? Keep up the good work, Chris and all the others of the MCG team.
Edited by yAlomGgp 3 years ago
*Save $66 per month on Autodesk's Suggested Retail Price (SRP) when purchasing 1 year term 3ds Max or Maya subscription.