Menu Close

Category: 3dsMax New Features

3dsMax 2022 Modifier Modernization & Performance Improvement (includes 3dsMax 2021 PUs)

3dsMax is now 25 years old program. But, that doesn’t mean that all its core is 25 years old. The core of 3dsMax has been continuously updated and being updated at this moment. Upgrading core while not breaking the existing feature is a monumental task. It is very difficult and somewhat boring. But, that hasn’t stop 3dsMax team.

After 3dsMax 2021 has been released, 3dsMax developers put some great effort for modernizing modifiers and underlying cores related to modifiers I made a comprehensive list of the efforts since this kinds of things are hard to show as video.

EditPoly Remove Edges/Vertices [2533x!]

This was a typical case of “a good sample file load to fast and effective fix” case. I had to lower the poly count of a model which already had animation. I applied Edit Poly and was removing many extra loops. But, it was so slow as I remove more and more loops. I sent the max file to 3dsMax dev team. I got the fix. 3dsMax dev accelerated EditPoly Remove edges (with ctrl on) and Remove vertices in various places (including EditablePoly). How much is it improved? A LOT. REALLY A LOT.

I tested on an object with 318402 verts  and removed 238,800 verts from it.
2021.3 : 4276.9 seconds
2022 : 1.688 seconds : 253370% improvement
2533 times faster!

Since Edit Poly is recomputed when you open a max file. It will also improve file loading time a lot if you have many deleted many verts with Edit Poly.

This change break backward compatibility. This means you will not see improvements when loading old files. Only the newly added Edit Poly modifier will use this improvement. Saving to previous versions will collapse EditPoly.

Bevel Faces and to a lesser extent Chamfer Edges [22x]

3dsMax dev accelerated underlying algorithms of Bevel Faces and Chamfer Edges.  This change will also accelerate any code which uses max’s “mesh clusters”. One of test showed.
2021.3 : 85 seconds
2022 : 4 second. 2125% improvement

Auto Smooth [ 3.8x – 3057x ]

The underlying auto smooth algorithm has been totally revamped which means this improvement not just for Smooth modifier. EditableMesh and EditablePoly AutoSmooth command, EditMesh and EditPoly Autosmooth command, Autosmooth modifier and Renderable Spline with Autosmooth on.

The performance gains are significant. Yes, you saw it right in the headline. One of models showed 3000 times faster performance. The particular model was tree from MaxTree. Tons of elements. Most million+ big mesh shows 30-40 times faster performance. Now Smooth modifier is faster than any other 3rd party solution.

MaxTree model / Verts : 4,467,434 / faces  : 1,381,628
2021.3 :  6664.69 seconds
2022 : 2.18 seconds : 305719% improvement
3057 times faster

An Engine CAD model / Verts : 2,260,497 / faces  : 4,516,570
2021.3 :  74.853 seconds
2022 : 2.207 seconds : 3391% improvement

Turning on Enable in Viewport for an imported spline pattern / 523k knots.
2021.3 : 724.388 seconds
2022 : 12.432 seconds : 5826% improvement

Extrude [ 4.5x – 130x ]

Optimized capping provides significant performance improvement for complex shape with a lot of elements. Also it is now cache the capped shape. Therefore, when you adjust the amount value, you can see the change instantly.

A spline with 220 spline / 523,176 points
2021.3 : 3576.56  seconds
2022 : 27.7 seconds : 12911% improvement

Relax [ 1.5x – 3x ]

It is fully multi-threaded now. It also provide the volume preservation option.

Stanford dragon model / Verts : 3,609,455 / faces  : 7,218,906
2021.3 :  21.5 seconds
2022 : 7.22 seconds : 297% improvement

Slice/Symmetry [ 1.5x – 3x ]

This modifier has some story. In the legacy Slice modifier, there is a mode button at the bottom which is set to “Poly” by default. I never paid attention to this button. But, apparently this button determines which data structure Slice would operate on. That means if you apply a Slice modifier on a mesh object. It will convert to editable poly first(!) and slice. This means there will be the conversion tax. On top of that, slicing poly is slower than slicing mesh. When I change the mode to mesh for highres mesh object, even the legacy Slice was not that slow.

Now, “Automatic” option has been added and is ON by default. It will use whatever native type which is coming from stack. BUT! Here is a catch. Because mesh slicing in 2022 is so fast now. Even with conversion tax, slicing in mesh mode is always faster. Therefore, I recommend to set to mesh especially you would use mesh for the above level.

Measuring performance was a little bit tricky because the shape of slice has greater effect than tri count. So, I applied Slice and animate rotation and measured the average time.

Stanford dragon model / Verts : 3,609,455 / faces  : 7,218,906
MESH
2021.3 :  2.88 seconds
2022 : 1.00 seconds : 286.73% improvement

I mentioned that 2021.3 default is set to “Poly”. If I don’t change this option as Mesh. It took  9.49 second! Therefore, when you apply Slice modifier on a mesh object. the improvement is actually 900% compare to 2021 when you use the default option.

POLY
2021.3 :  7.22 seconds
2022 : 5.08 seconds  – 141.95% improvement
2022 as mesh : 2.52 second – 286.66% improvement

One more tip. When your sliced a section with a lot of elements, somehow mesh slicing slowed down a lot. It is not sure what is causing an issue as of now. But, dev need to investigate what’s going on. Good news is. Poly performs very well for this case.

This is a test with 100 elements in section.
2021.3 Mesh : 4.91 seconds
2021.3 Poly : 0.22 seconds
2022 Poly : 0.19 seconds

PathDeform [ 3x – 20x ] – 3dsMax 2021 PU3

PathDeform is now fully multi-threaded. You can see hi poly models shows 20 times faster performance.

A CAD Tank thread model / Verts : 1,078,300 / faces  : 2,161,000
2021.3 :  63.463 seconds
2022 : 2.793 seconds : 2272.4% improvement

Stanford dragon model / Verts : 3,609,455 / faces  : 7,218,906
2021.3 :  9.773 seconds
2022 : 0.497 seconds : 1966% improvement

Push [ 1.5x – 5x ] – 3dsMax 2021 PU2

PathDeform is now fully multi-threaded. In the past, poly was performing worse than mesh. Now it is fixed. There is not much difference between mesh and poly. Therefore, you will see bigger improvement on poly objects.

Stanford dragon model as poly  / Verts : 3,609,455 / faces  : 7,218,906
2020 :  2.623 seconds
2021 : 0.842 seconds : 311% improvement

3dsMax 2021.3 Retopology Modifier Quick Start – Part.2

OK. Part.2! In this post, we will focus on object with hard edges like booleaned model or CAD data.

Booleand Model

Booleaned model is usually pretty easy. Applying Retopology modifier, set the target number and pressing Compute is enough.  But, again it might fail sometime, and you simply want to get better result. So, here is some tips for booleaned model.

Tips

  • Utilize Boolean Seams for very low angle sharp edges
  • Regularize option can help to get more even quad distribution and prevent spiral loops.
  • Adding Subdivide modifier can help a lot to solve and get better result.
  • Having some support edges helps to get better edge flow. Especially for flat circular shapes.

Example

Here is an example. I just apply Retopology modifier, set target to 3000 and just pressed Compute. Auto Edge was on with Smoothing group by default. We got something . But, the topology doesn’t look that great, especially the center circle.

So, I went back to the center boolean operand and give some Cap segments. You can see it makes better edge flow on the big one circular ngon.

Or, you can just add Subdivide modifier. I usually use “Adaptive” option with default. You can see the edge flow is a lot better for both center circular area and front flat face.

Let6’s see one more example. For this kinds of source object, you must Subdivide.

The Retopology result looks good. But, it has an issue. It created the infamous spirals.  I fixed with by increasing Regularize to 1.0. Again this option doesn’t guarantee to remove all spirals. But, certainly worth to try.

CAD Data

Source Preparation

I guess I don’t need to explain how bad models from CAD can be. You all already know. The new algorithms in Subdivide modifier certainly does great jobs for making more Reform friendly faces. But, the mesh has split edges and inverted normal and overlapped double faces what not. Reform nor Subdivide will fail. Until we have T-1000 to retopo, you still gotta do what you gotta do. Here are some notes on mesh preparation.

  • Weld split edges and unwelded vertex. Reform would now know if that’s real edge boundary you want to keep or just bad meshed. The easiest way to check this is applying Relax or TurboSmooth. You will be able to see split edge easily. Then, you could apply Vertex Weld modifier with Threshold 0.001 to fix it.
  • 3dsMax 2021.3 provide Mesh Cleaner modifier. Try that. It also fix some issues.
  • Check if normal is flipped between neighboring faces. Unify option in Normal modifier could help.
  • Delete very small random elements with only few polygons especially for scanned data.
  • Sometimes Quadrify modifier fixes bad topology since it rebuilds meshes. You can also try TurboSmooth with iteration 0.

Tips

  • If it is small part, you can just treat like booleaned model, But, if it has complicated shape, evaluate how much minimum target is needed with Auto Edge OFF.
    If the target is too low, Reform often cause “IPOPT maximum iterations exceeded” error” which means basically Reform saying “I can’t solve this.”. By turning off Auto Edge, you can quickly check how much target is needed.
  • When you Auto Edge, you need enough information within the auto edge boundaries. If you don’t have enough information, again you will meet “IPOPT maximum iterations exceeded” error”. To increase the information, there are 2 options.  1) Subdivide more 2) Remove auto edge condition. For example, if you use UV seams, you could stitch unnecessary seams. If you use Smoothing group, you can smooth some minor edges.
  • Check if your hard edge is coming from the smoothing group or explicit normal. If you only have explicit normals for hard edges and turning on only smoothing group means you don’t get any hard edges. If you are lazy like me,. you can just use Angle option instead of Smoothing Group or Specified Nornal option.
  • Sometimes model could have bad smoothing group and that prevent Subdivide modifier to work properly. Use Smooth modifier to clean up smoothing group.
  • Since Retopology doesn’t preserve mesh data yet. It will look all smooth after it solves. Apply Smooth or Weighted Normal to check hard edges.
  • Often CAD data has nice UV seams, utilize it.

Example

This is a part from Fusion 360 sample scene. It had a unique problem. So, I thought that it was good example to show how I processed the model. You don’t have to go through like this for every model!

This is the source model.
The First attempt with Specified Normal. I got solve. but, I don’t like the edge flow.
I applied Subdivide modifier and set to Adaptive. OK.. something is wrong. I still see a lot of thin edges. This is because there are many smoothing groups there.
I cleaned smoothing group. Subdivide look better.
Retopoed again. Better edge flow. But, I want to improve.
Subdivided more and set Regularize to 1.0.

Then, I was thinking how about go lower res model and TurboSmooth?

This is 2000 target.
Chamfer and TurboSmooth!

OK, I shared all things I have learned during beta testing. If you think it is helpful. Please visit renderStacks!

Also don’t forget to check Autodesk Learning Channel Retopology Tutorial.

https://www.youtube.com/watch?v=sKEu2Gs3G_U
https://www.youtube.com/watch?v=HhUMdy-0kSI
https://www.youtube.com/watch?v=AUikqN_lVPc

 

3dsMax 2021.3 Retopology Modifier Quick Start – Part.1

The new Reform algorithm in the new Retopology modifier in 3dsMax 2021.3 is a definitely one of the best automatic retopology tech on the market. But, this is not driven by crazy AI nor a silver bullet to solve everything with a click. You need a different approach for a different case to get the best result in short amount of time. This is a collected notes from my beta testing period. I hope you find it useful.

Scanned Data

OK. This is easy one. For any organic models, just 2 things.

  • Turn off Auto Edge. This is for preserving sharp edges for hard surface model.
  • Decimate with ProOptimizer A LOT. I mean really a lot. Usually the rule of thumb is matching ProOptimizer verts count to Target count gives you best result in the shortest amount of time.So, if you want to get 40,000 poly mesh, ProOptimized to 40,000 verts first the Compute. Think this way. if your target is 30,000 poly from 2 million poly source. You will not get all the details of 2 million in anyway. There is no reason to feed all those noise data to Reform.
  • If you want to retopologize to really high poly count to reserve all scanned details and Retopology doesn’t solve with that mesh, try InstantMesh mode as a pre-process instead of ProOptimizer. You can’t decimate as much as ProOptimizer with it. But, it generates more Reform friendly mesh. Therefore, it will give you a higher chance to get result.

Tips

  • If you want to process even faster? Then, apply Relax modifier before ProOptimize. You could get faster result in exchange of the loss of details.
  • After ProOptimize if you have very big flat polygon. Remove it or subdivide a little. This kinds of big single polygon can make Deform fail. I’ll show you in the following example.

Example

This is scanned model from Konrad O?óg, www.aunar3d.com. Thanks for the model. It has 1.95 million verts and 3.9 million tris. Look at that beautiful wireframe on right. If you just apply Retopology on this and press Compute. It will takes days.

I applied ProOptimizer and went down to 2%, 39012 verts. As you can see from the shaded view. ProOptimizer does great job for reducing poly count while keeping shape intact.

Then, I had a hiccup. This big lowres place at the bottom was throwing a wrench. I could subdivide this. But, I simply delete it. You don’t see anyway. Also I can recap later.

I turn off Auto Edge and set Target Face Count to 40,000. After 100 second. I got this with 43,000 poly.

The following images are high resolution retopology example using InstantMesh as a pre-process. I pre-processed to 500,000 poly with Instant Mesh and Reformed it to 150,000. It took 20 min on Ryzen 2700X.

Original scan – 1.95 million verts / 3.9 million tri
InstantMesh – 475k verts / 494k quad
Reform – 163k verts(1/11 of original) / 162k quad

Do you want to make your render life 1000% easier! Click here!

Also don’t forget to check Autodesk Learning Channel Retopology Tutorial.

https://www.youtube.com/watch?v=sKEu2Gs3G_U
https://www.youtube.com/watch?v=HhUMdy-0kSI
https://www.youtube.com/watch?v=AUikqN_lVPc

3dsMax 2021.3 Retopology Tutorials Video Collection

Max’s New Remesher is INSANE!

Simple Trick for Perfect Retopology in Max

Introduction to Retopology Tools for 3ds Max®: Retopologizing CAD datal

Introduction to Retopology Tools for 3ds Max®: Retopologizing a Booleaned Model

Introduction to Retopology Tools for 3ds Max®: Retopologizing a Scanned Mesh

Retopology in 3ds Max. Tips & Tricks

3ds Max Retopology

3ds Max Retopology from Jose M. Elizardo

Boolean Mesh Retopoly pitfalls

Miro Retopo

Gladiator Hulk Retopo

3D Studio MAX 2021 Retopology Tools – Adán Martín

Now time to check renderStacks!

3dsMax 2021.3 New Retopology Modifier Test Gallery

3dsMax 2021.3 has been released. The biggest addition of this update is the brand new Retopology modifier. I’ll have another post for the collection of showcase and tutorial videos.

It comes with 3 algorithms to choose, Reform, InstantMesh and QuadriFlow. Reform is the internally developed Autodesk’s own retopology engine.

I have had a chance to beta test while is was developed. This post is the collection of images that I have created while beta testing. I tried my best to test many different types of sources includes 3D scanned model, ZBrush sculpting, CAD import, booleaned meshes and more. Enjoy!

Make sure click image to see big to see wireframe better. Under the image I also tried to post the original source of model as much as remember.

ZBrush Sculpt

296k , 408k

201,881 Poly
Original model 1.2 million poly
Close up
60k, 210k, 2.8mil

732k / 86k / 32k / 20k / 8.6k vets

Do you like new Retopology modifier? renderStacks is as good as this for rendering! Click here to learn!

Scanned Model

https://sketchfab.com/3d-models/lowe-von-asparn-57a57a99ce1f4e45adee5ae37a91f51b
100mil / 300k/ 100k verts
857k / 513k / 116f faces

 

1.5 mil vs 220k https://www.artec3d.com/

CAD Import

Boolean

Up Resolution

One more chance!  Click here to learn about renderStacks. It will change your rendering life!

 

52,464 / 106,302 / 246,787 / 394,237 https://gumroad.com/l/xAQxj

3dsMax 2021 OSL Advanced User Interface

3ds Max has many cool OSL shaders. It also has some under the hood improvement for OSL shader developers for better user experience.

For details, you can check Help document. Click here.

Here is some highlights.

  • Additional metadata
    widget type “null”
    metadata connectable
    metadata worldunits
  • Row Packing
  • Custom Widgets
    max:ramp0
    max:actionButton
  • Dynamic UI
    help of the “max:actionButton” shown above, a few helper scripts have been introduced that makes shaders dynamic – as in – the shader is actually modifying its own sourcecode!
    Thanks to this. Now 1-of-5 and 1-of-10 has been consolidated to 1-of-N.
  • Fully Custom UI via QT
    allows a custom layout to be provided in the form of a .ui fil
    You can design cool UI with QtDesigner!
    The following images are a few new OSL maps which is using new Qt UI.

3dsMax 2020.1 Hot Key Editor

One of the new feature of 3dsMax 2020.1 is the new Hot Key Editor plus Hot Keys and underlying system.

Hot Key Editor

The new Hot Key editor is cool. But, the more important change is the way of how the customized hot keys are stored and loaded. When you save and load hot keys in the past, 3dsMax had saved and loaded the entire hot key assignment. Because of this save/load mechanism, any newly added hot keys by 3dsMax dev would have lost when you load the hot keys from previous version. It was not possible to have a studio0wide custom hot keys since the hot keys would have gone when an artist load their own hot keys.

To solve this kinds of issues and make UI customization upgrade-safe, the new override based hot key customization engine is developed. Now 3dsMax stores only the changed hot key assignments in the file when users customize their hot keys. Then 3dsMax will override only the changed keys when the file is loaded.

This will allow users to keep the changed they made while still receiving updates from the global changes. Also you can deploy multiple level of hot key customization.  For example, you can have a studio-wide hot keys on top of 3dsmax default hot key while artist still can have own hot keys if they want.

New Hot Keys

Another change is the new hot keys.Yes, some of hot keys have been changed. This new hot key assignment is the fruit of the community effort of 3dsMax and beta users. There has been many feedback and discussion for the best hot keys on the beta. Special thanks to Sergio Santos for the great contribution. 3dsMax put a nice documentation with map images to show the complete list of changes like this. Please visit HERE for all images.

But, I know there are always ones who doesn’t want to change their 20 years old hot keys. For them, here is a hot key files to go back the legacy hot keys. Download it and load in the Hotkey Editor.

Download 3dsMaxLegacyHotKeys

If you have had customized hot key in pre-2019 version, this is the step to move to new hot key system.

1) Generate KBDX file using the maxscript command actionMan.saveKeyboardFile “C:\TEMP\LegacyDefaultUI-2019.kbdx”.
If you specify a KBDX extension, it will convert the entire active hotkey set to the legacy format through the old code. If you specify HSX, it will output in the new format and only contain user customizations.
Or Download this file.

2) Swap it out with the one in your UI_ln/CUI folder (rename the old one to keep a backup). This will use the new hotkey defaults as a reference point when doing the migration, and will treat every difference as a user customization, reaching the same result as if you remapped every single difference back to how it was in 2020-

 

3dsMax 2020 – OSL update

3dsMax developer has changed their delivery model to continuous delivery. Instead of delivering a feature at one release, now a feature will be delivered continuously until all the planned feature is finished. The automatic OSL > HLSL conversion for viewport was the one of them. It has been improved in every PU since tisinception. Now almost all OSL shader will be automatically converted to HLSL including 3rd party OSL shaders.

Also, the viewport playback performance of animated OSL map has been greatly improved.

This is the viewport playback of the sample file for my OSL shader pack1 in 3dsMax 2019/2020.

3dsMax 2019.3 – Alembic update

Since I posted the Alembic improvement of 3dsMax 2019 release, each PU has been added more and more improvements continuously. Let’s check what has been added.

Per object metadata with .userProperties and .arbGeomParams

3dsMax 2019 introduced the export of per object propery. But, it was only compatible between 3dsMax. With the PU3 update, you can export/import per object properties via .userProperties and .arbGeomParams. This allows a greater compatibility between 3dsMax and Maya/Houdini.

Here is an example of Alembic file exported to Maya.

Here is some details.

Import
  • It will read from both .arbGeomParams(Maya default) and .userProperties
  • It supports integer, float, boolean, string.
  • It supports animated value.
  • If Extra Attribute is on shape node, it will be in Alembic Geom Parameters rollout(alembic_geom_attributes). If Extra Attribute is on transform node, it will be in Alembic XformParameters rollout(alembic_xform_attributes)
Export
  • The custom attributes on the top modifier and case object will be exported.
  • 3dsMax will use .userPripertiesfor export and store data on transform node by default.
  • If you use the same custom attribute name alembic_geom_attributes and alembic_xform_attributes which 3dsMax alembic importer uses. You can even have control over where your custom attribute export goes. To store data on shape node, you need to make the alembic_geom_attributes on the baseObject.
  • If you have duplicated name custom attributes on an object, none of custom attributes  will be exported. You will see the warning in Maxscript elistener.
  • Layer name will be on transform node.
  • Material name and Object ID will be shape node.
  • 3dsMax will import Layer name/Material name/Object ID as custom attribut on the respective rollout, too

Alembic Inspector

This is added in PU1. This allows to browse the content of the alembic object even without opening the alembic file. Now PU3 allow you to open the Alembic Inspector for the already imported alembic files. Use the Alembic Inspector button in the Alembic container object(the root Alembic object with Alembic logo icon),

Alembic Inspector is also accessible via Maxscript. Link.

Maya compatble Multi UV and Vertex Color

Maya is very picky about reading the multi UV and vertex color in Alembic file. To send multi UV(UV channel 2+) to Maya,  you need to choose UV for Extra Channels type. Also vertex color data from Maya will be imported as a proper vertex color channel. Before PU3, the vertex color channel was imported as an UV 2+ channel.

Instancing Support

Support for instances allows files to be much smaller while maintaining complexity and can dramatically improve export speed. PU2.

Alembic library 1.7.5

Alembic library has been updated to 1.7,5 in PU2.

Alembic Transform Controller Performance improvemant

Alembic Transform controller playback is more than 2x faster in PU3. Also Source and Object browse buttons are added for Alembic Transform controller.

Material ID will be exported when all Material IDs for an object were the same

Before PU3, None if mMaterial ID was exported.

Alembic Peformance mode will only cache the current animation range

Before PU3, it was caching from frame 0 all the time.

UV Channel will be preserved

Unicode Support

Fixed Alembic not able to use relative paths

Fixed High-speed rotations no longer deform objects

 

Thanks  for 3dsMax team for continuous effort to improve Alembic support!

3dsMax 2019.3 – OSL Viewport Support : OSL > HLSL

Since it is introduced in 3dsMax 2019, OSL Map has been comtinuously improved in every release.
There has been many updated on performance, OSL editor useability and viewport display.
The most important improvement among all is the viewport display.

Now 3dsMax viewpot can display almost all shippinig OSL and many 3rd party OSL shaders properly even as 3D procedural map.
How canit even support random 3rd party OSL shader?
The 3dsMax rendering team has developed automatic OSL > HLSL converter instead of making HLSL shader for each OSL shader.

The OSL shaders in the following images are all 3rd party OSL as 3D procedural map.
It is oddly satisfying to see all the 3D shaderes in the viewport exactly as renders.

And,,, a little bird told me even more stuff might come in the future. 🙂