MaterialX is an open standard for representing rich material and look-development content in computer graphics, enabling its platform-independent description and exchange across applications and renderers.
MaterialX addresses the need for a common, open standard to represent the data values and relationships required to describe the look of a computer graphics model, including shading networks, patterns and texturing, complex nested materials and geometric assignments. To further encourage interchangeable CG look setups, MaterialX also defines a large set of standard shading and processing nodes with a precise mechanism for functional extensibility.
So, it is an open standard for material. It is a specification, an explicit set of requirements. Any renderer that follows this spec should give the same result for a MaterialX document. We could author a MaterialX material in 3dsMax/VRay, render in Maya/Arnold, and get the same result as long as we follow the spec. I’ll talk about it later again.
This update allow users to 1)Load MaterialX document 2)Render them with any renderer that supports Physical material/OSLmap(All CPU renderer and supported GPU renderer) 3) Edit the loaded material/maps 4)Author MaterialX material from scratch 5)Export as MaterialX document and 6)Export as material binding when export USD file. What do you need more than this?
Now why is MaterialX released as a part of USD for 3ds Max? This is because MaterialX is emerging as a material standard for USD. USD has UsdPreviewSurface. However, it only supports a very basic bitmap-based material tree without more advanced features such as subsurface and anisotropic specular highlights. Also, Material X has its own XML-based file format which goes along well with USD. USD loves files.
Let’s see how it actually works in 3ds Max.
As I mentioned, MaterialX has its own file format, and the new MaterialX Material allows loading this .mtlx file.
As you can see, .mtlx file supports multiple materials in a file, and you can choose a sub-material from the dropdown.
OK, that was easy.
MaterialX Import/Export Utility(MtlXOIUtil)
Another way of bring MaterialX into 3dsMax is using the new MaterialX Import/Export Utility(MtlXOIUtil).
Press “Import MaterialX…” button and choose a .mtlx file. Then, the MaterialX materials are imported and assigned to the selected objects.
If you have not selected objects or selected less objects than materials in the file, this utility will automatically created teapots and assign the imported materials on them.
If you choose a material library file(.mat) and check “Add to Material LIbrary”, imported materials are stored in the material library. They will be imported(exploded), Physical material not MaterialX material.
“Populate Material Editor” will put imported materials in the material editor slots.
MaterialX in 3dsMax is implemented using Physical material and OSL maps. I heard that one of the reasons for adding OSL map support to 3dsMax was actually part of the grand plan for this initiative.Therefore, you can edit MaterialX material tree just like any other 3dsMax materials/maps using CME or Slate. This also means that any third-party renderer that supports 3dsMax Physical material and OSL map will be supported automatically.
MaterialX material provides 2 ways to edit the material tree.
Explode Permanently – Pressing this button will convert the MaterialX material to Physical material + OSL map setup. The MaterialX file loader material will disappear from Slate and the new Plysical material will be assigned to the objects.
Open for Edit – Pressing this button will make a new tab with the Material node name(Not the MaterialX file name. The 3dsMax Material name) and put exploded material tree there. As you can see, the MaterialX material is still assigned to the objects(the white triangles around the corners show that). But, any changed on the material tree in the new tab will be applied to the objects.
If we can load and edit a MaterialX shader tree, well, that means we can make one from scratch, too. I mentioned any renderer that supports MaterialX will give us the same result for Material materialsas long as we follow the spec.
MaterialX certainly can do more than bitmap-only-based PBR material. It has a bunch of Standard Library Nodes, and 3dsMax MaterialX supports them. Would this set of nodes cover all your production needs? Well, see for yourself. Here is the spec document. You will probably need to sacrifice the flexibility and features for compatibility. “Standard” always means the least common denominator. It will never be the best of all. But, When you need it, you will need it. Having good comprehensive support for such an open standard is a good thing.
Let me say it again. A material standard only works when you follow the standard exactly. Even one parameter difference in the shader tree can make totally different result. Some might want to have an automagic converter for all our 3dsMax maps and 3rd party maps. But, doing that will open a can of worms. I rather have a clear explicit way to author MaterialX when I need MaterialX.
As I mentioned, this MaterialX support is implemented by Physical material + OSL map combo. Therefore, only Physical material is supported for the material. The good thing is that most 3rd party renderers support Physical materials which means they will get MaterialX support automatically.
For maps, there are MaterialX maps category under OSL. You can find 1:1 MaterialX Standard Library Nodes here.
Here are a few things you need to know.
3dsMax “Normal Bump” can be used for MaterialX “normalmap”
Each data type has its own map. For instance, there are 4 “acos” maps for float, vector2, vector3, and vector4. This may seem tedious, but in my experience, it actually makes it much clearer which data type I am currently working with. If you use the wrong data type, MaterialX will simply not export those invalid trees.
Make sure to use “color” type for color. Never use “color” type for data. All color-type maps will be color-managed. This means you can’t load a map and use it for baseColor and Roughness. You must use 2 separate texture nodes to load one as color and another as data.
Bitmap material is supported. But, only the filename will be used. If you want to adjust tiling and offset, use “mx_image” or “mx_tiliedimage” maps.
If you want to know what each map does, check the MaterialX spec document.
This is what I made in 3dsMax using Physical material and
And loaded in QuilitiX
Hers is another good news. 3dsMax has a few specialty materials that use Physical material under the hood. If you use any of these materials, you can exported them to MaterialX.
PBR Material (Metal/Rough)
PBR Material (Spec/Gross)
USD Preview Surface Material.
You can export the new/edited materials using MaterialX Import/Export Utility(MtlXOIUtil). Just select objects with materials to export and Press “Export MaterialX”
If there are multiple materials in the selection, all those materials will be stored in a .mtlx file.
Make sure to check Maxscript LIstener for validation checks. Your material tree might not be valid. If you see warnings, you must fix them to export properly.
Integration with USD
The MaterialX plug-in comes with a Shader Writer for the 3ds Max USD Plug-in that will allow the USD export to bind references to the MaterialX files to USD Prims when exporting scenes using a MaterialX Material.
Here is a short video of MaterialX in 3dsMax in action.
This is a full procedural setup with some of the new additions of #3dsMax in recent releases such as Array modifier, Boolean modifier and Subdivide modifier. Especially, the new OpenVDB based boolean opens up so many new possibilities.
I originally planned to release a sample pack for Boolean modifier. But, somehow this video has gotten so much response. I decide to release this scene file first.
3dsMax is here with tons of new features. Here are some of highlights.
#3dsMax 2024 OCIOv2 Color Management OCIO v2 based color management is here, From image loading to rendering space, output and color picker, comprehensive color management is possible now.
#3dsMax 2024 – Boolean modifier New MNMesh2 powered modifier-based Boolean workflow. Capture mode will embed operands into the main object. If you don’t want to embed, you can still choose to live reference. For example, for animation, you may want live reference. The UX has also been a big focus for this modifier. You will notice a lot of small but thoughtful features throughout the modifier.
#3dsMax 2024 Boolean – OpenVDB Volume Boolean In addition to mesh boolean, OpenVDB-based volume boolean mode is added. It enables simple and easy mesh <> volume workflow. Combined with the Retopology modifier, it opens a lot of new possibilities
#3dsMax 2024 Boolean – SplitAttach 2 New boolean operationstypes. Split cut meshes by keeping Intersection and Subtraction result. Attach combines multiple objects into one without affecting their topology. It also has improved support for booleans across multiple elements. For example, when performing a Split or Inset operation on the Boolean Modifier, these operations will be processed one at a time on each element.
#3dsMax 2024 Boolean – Topology By nature, boolean is prone to generate bad topology. The boolean modifier has a lot of built-in clean-up code for input/output topology. This also allows more stable Boolean operations.
#3dsMax 2024 Qt Slate ME Slate material editor ahs been Qtfied with the new look and faster performance. Now it is dockable, and the colors of UI elements are customizable.
#3dsMax 2024 Compound material/map Allows the user to group and collect materials, maps, and node trees in a single collector that can be collapsed or expanded. Just use like anyother material/maps.
#3dsMax 2024 Material Switcher Allow to switch among sub materials up to 9999. You can switch between multi/sub materials, too.
#3dsMax 2024 Transform List controller Just like all other list controller. But, for transform. No need to have list controllers for position, rotation, scale separately. Also all list controller has been Qtfied and got a new index mode. The index mode allow you to simply switch between sub-controllers without weight adjusting.
#3dsMax 2024 Qt Modifier LIst The modifier list has been Qtfied which maker it a lot faster. It also now has search filter. Scroll bar now has size Preference option.
#3dsMax 2024 Array v2 Awesome Array modifie has gotten even better with New Phyllotaxis Distribution method. It also has new Mateiral ID option and Proigressive transform option, ransform Before Projection checkbox/.
#3dsMax 2024 STLCheck/STLImport Performance Improvement STLCheck/STLImport Performance has been improved thousands times faster. Ye, thousand times.
#3dsMax 2024 Triangulation Improvement The improved triangular algorithm which was introduced in 2023.1 has been improved further. Now also used in Edit Poly modifier. The following Editable Poly/Edit Poly operations now use the new triangulation algorithm – Face splitting by insertion of edges, Slice, Cut, Bridge, Vertex extrusion, Edge extrusion, Cap, Smart Extrude. Cap Holesmodifier is using this new algorithm
It has been only a little bit more than a month since we got big USD updates. But, this is December, the month of the last PU of the year.
The new Organic Noise OSL map will allow you to create organic looking noise patterns by modulating and filtering OSL noises.
The best part of new #3dsMax 2023.3 Organic Noise is that it comes with 28 ready-to-use presets. It is like having a holiday gift basket! I rendered all 28 presets with Phase/Scale animation and even put some background music. It is interesting to see that the scale adds even more variations.
When #3dsMax 2023.2 Array modifier was released, I had to connect a few OSL nodes to randomize maps per clone. Now you can just use a single UVWRandomizer OSL map for the randomization part
#3dsMax core optimization effort never stops. This time Poly to Mesh conversions performance has been improved across 3dsMax. If you have a stack with lots of channels and jump around Poly/Mesh a lot, you will feel the difference.
3dsMax USD 0.3 has been released. Here is the highlights.
USD Stage Object
SD Stage Node is now supported in 3ds Max. Reference a USD stage directly into 3ds Max to create a scene with USD assets from an existing file. Using this workflow, you can view and render USD data directly in 3ds Max.
Full access to working with in-memory stage data. You can build Python, C++ and MAXScript tools to interact with the data inside a USD Stage Object. The stage has a read-only property called CacheId that can be used to access the stage from a global USD cache. Using this you can directly manipulate and interact with USD data (moving prims, changing visibility, etc.)
USD Stage Rendering
USD Stage fallback rendering mode allows rendering USD Stage even when renderers do not support accessing a USD stage directly.
UsdPreviewSurface material support using texture transforms (UsdTransform2d) and texture wrap modes.
Assign USD Materials button to build a Multi/Sub material for fallback rendering mode. Users can override any parameters of the material tree.
USD Export & SDK
USD Stage Objects can now be exported as USD references.
SDK includes all you need to build your own PrimWriter, ShaderWriter and Chasers to hook into our USD Exporter using C++ or Python
3ds Max USD SDK comes with a set of working (simple) samples covering ShaderWriter, PrimWriter and Chaser, written in both C++ and Python to get everyone going rapidly with the new SDK
These are some Array modifier sample max files from me and other beta testers. I’ll eventually post something ti explain some of these files. But, if you are impatient, just open these files and figure it out! Enjoy!