Max Creation Graph 2017 - Sample Pack Update
I'm writing to share with you that we've recently added about 30 new sample MCG tools to the 3ds Max 2017 MCG sample pack on GitHub.
Someone asked recently on the MCG Facebook group about the best way to learn MCG. I worked for several years in SDK documentation, and I found that while there are many learning styles, one of the most effective way people learn is through modifying existing examples.
While keeping that in mind I’ve made an effort to create lots of tool graphs that are simple and well-structured and that they consist of reusable high-level compounds.
Here is what your modifier stack should look like once you install the latest pack.
3ds Max Style Classic Deformers
This sample pack includes modifications of several classic 3ds Max deformers re-implemented in MCG by Martin Ashton in a recent blog post: Twist_MCG, Bend_MCG, Noise_MCG, Taper_MCG, Ripple_MCG, Wave_MCG, and Skew_MCG.
There are several differences between the ones posted on Martin’s blog post and the latest additions to the GitHub repository
- There are no custom gizmo nodes that draw a representation cage of the deformation
- There is no custom MAXScript in any the new sample tools
- All new deformers now take into account soft-selection
- Twist, Skew, and Taper now support limits.
Like Martin’s deformers you can still use an arbitrary node to manipulate the deformation transform space in the same way a gizmo node does. Any transform applied to the reference node (i.e. translation, rotation, or scale) will be applied to the space in which the deformation is applied. An interesting advantage of this approach compared to using gizmos is that multiple objects can share the same deformation space node.
You may have observed that Twist, Skew, and Taper deformers all effectively do the same thing: applying a transform progressively to vertices along an axis. So this allowed me to define them in terms of a common compound called “TransformVerticesAlongBoundingBox”. Leveraging this I added a new modifier called Defomer_MCG which combines the capability of Twist, Skew, and Taper.
By using the “MeshSetVertices-ext” to apply changes to a mesh modifiers will now automatically take into account soft-selection.
MCG Modifier Highlights
The following are some of what I think are the more noteworthy of the new modifiers.
Relax_MCG – Relaxing without Shrinking
The new Relax_MCG modifier works very similarly to the 3ds Max modifier, but has an option to prevent shrinking of meshes by preserving edge lengths.
The internal compound “RelaxIterative-ext” is also interesting because it shows how to use a new node called “Iterate-ext” which can be used to repeatedly apply a transformation on a mesh (or any other
object) a number of times.
Limit_MCG - Efficient Ray casting
The Limit_MCG modifier demonstrates efficient usage of the Embree-based ray casting operators
using the cache. The concept of this tool is that the modified mesh treats another mesh as an obstacle, that it’s vertices are limited by when moving. This can be used to create a kind of projection effect. The construction of the graph is done in such a way that either object can move without requiring the ray-cast scene to be re-constructed.
Noise_Perlin_MCG - Improved Perlin Noise
The Noise_Perlin_MCG modifier uses Ken Perlin’s “Improved Perlin Noise” algorithm to apply changes to a mesh. The new compounds like NoisePerlinFromVector-ext should make it much easier to generate and use noise in various applications.
Other Sample MCG Modifiers
Several other modifiers are included in this release:
Clone_MCG – A simple mesh cloning modifier. This is the same as “ACloneModifier” in the
original sample pack.
- Combine_MCG – Combines multiple meshes together.
Conform_MCG - Similar to a morph, but does not require the number of faces or points to match. It uses the “ClosestPointOnSurface” operator.
- Delete_Vertices_MCG – Deletes selected vertices. Not quite as complete as the 3ds Max DeleteMeshmodifier, but it’s compounds can be useful for use in other tools.
- Invert_MCG – Inverts a geometry. Combining two of these produces some interesting effects.
- Morph_Simple_MCG – Provides a simple morpher between two objects.
- Reset_Origin_MCG – Enables a mesh to reset its origin as a percentage of the bounding box.
Show_Normals_MCG - Shows how to orient a mesh to a vector, and is useful for viewing MCG computed normals at vertices or faces.
- Smart_Scale_MCG – Stretches an object without affecting vertices in the middle of the object.
- Spherify_MCG – Similar to the 3ds Max Spherify modifier, with an additional option to use a bounding box, instead of a bounding sphere.
- Stacker_MCG – Clone object by on top of each other using the bounding box.
- Symmetry_MCG – Similar to the 3ds Max symmetry modifier
- Transform_MCG – Applies a basic transformation to all vertices in a mesh
Sample MCG Primitives
In the sample package there are twelve new MCG primitives. Several have been ported from the original sample pack. Some problems with normals have been corrected and I now use the new compound QuadToTriMesh-ext to assure the converting to TriMesh does not add superfluous edges. One of my favorite compounds is “QuadMeshFromUVs-ext” which makes it easy to generate various parameterized geometric forms such as the Torus.
New and Renamed Compounds
As with the previous GitHub samples all new compounds have the extension “-ext.maxcompound”. This is so that you can easily identify which compounds you downloaded, and can search for them in the editor (by typing “*-ext” in the filter box). Many of the higher-level compounds can now be found by browsing the operators in either the “Primitives” or “Geometry – Deformers" categories.
In this submission I’ve renamed a number of the compounds from the previous release to try and improve discoverability as well as the readability of graphs. If you have tools that use compounds from before, you might want to copy them into a separate folder. Alternatively you can make MCG packages from them, which will keep the originally named compounds.
I hope you find these tools useful. If you use any MCG tools in production, or on the other hand some aspect of MCG is preventing you from using it production, the team and I would appreciate hearing about it. Please share your stories in the comments. Thanks and happy MCG’ing!