3dsMax 2019 – Alembic Improvement

Alembic is a geometry cache format developed by Sony Imageworks and ILM. It is a very powerful format. It can handle animated transform and deformation(include topology changing animation). It can also have custom meta data as much as you want.

Alembic has been added to 3dsMax 2016 and developed continuously  since then. I’ll go over Alembic improvement of 3dsMax 2018 first and show what has been added for each previous versions.

But, before we jump on the improvement list.Allow me go over how 3dsMax implementation works first. 3dsMax Alembic works more like referencing system. Each object in Alembic file is imported as separate object which has two component, AlembicObject for geometry data and AlembicXform Controller for transform animation data. This allows users to edit anything after it is imported. You can apply any modifiers, edit geometry, change controller setup and delete any objects. Imported Alembic object is just like any other object. In a way, it almost like ObjectXref.

Other way of using alembic is treating the entire alembic object as one object like VRayProxy or Arnold Procedural object.This makes overall workflow simpler and easy to manage. But, you lose granular control. I think It is good to have both workflow inside of 3dsMax.The more choice is always better.

3dsMax 2019

Per object metadata export

3dsMax Alembic supported faceset(material ID) and per vertex arbirary channel from the beginning. But, it never had support for per object metadata. Now you can export per object meta data using Custom Attribute and some export options in Export dialog.

You can choose to export the following data from Alembic Export Option dialog.

  • Layer Name
  • Material Name
  • Object ID

Custom Attribute export supprts most data types like float, integer, string and boolean. It even support animated values.

BUT, Please keep in mid, Alembic format specification doesn’t have amy standard on this matter. Because 3dsMax write these data into Alembic file, it doesn’t mean that other DCC will magically read this data. User must figure out how to load this data in other DCC.

To know, how 3dsMax exporter stores these information, You can export a test Alembic file with HDF5 format and use the great tool called HDFView. This tool will show the entire structure of the Alembic file. Here is a sample screen grab.

As of now, the 3dsMax importer doesn’t support these data yet. I hope we would see the support for these meta data import soon.

 

UV/Extra Channel and FaceSet(MaterialID) name parsing

Since 3dsMax is rely on ID number for UV and Material ID. It was very challening to get consistent UV channel or maerial ID number when you import and update alembic file. At least, 3dsMax 2017 added a way to keeping uv channel and material ID number constsent between 3dsMax. Therefore, if you export from 3dsMax and import into 3dsMax, all uv channel IDs and material IDs are preseved. But, when you import an alembic from other DCC. You didn’t have any controls. It just came in the order of channel order inthe Alembic file.

Now alembic importer will check the faceset and extra channel name, and if the name is end with number, the number will be used as Material ID ot uv channel number. For example, if you name face group name as “group_7” in Houdini, the faces will get material id 7 when it is imported. THIS IS A SMPLE YET VERY IMPORTANT UPDATE!

Also when you export/import between 3dsMax, the data about the original uv channel and material ID is explicitly stored in the Alembic file instead of relying on naming convention. This makes the ID preservation between 3dsMax even more solid and allow the export the UV channel you set in 3dsMax. For eample, if you name your uv channel 2 as “the second UV“. the exported Alembic channel will have the name, “Max Map Channel the second UV

 

Option to choose what to export/Import

Now you can choose which channels to export and import. In the previous version, 3dsMax import/export everything it supported. The following image is the new import and export dialog.

Ont thing you need to know is that, there is a hidden ExtraChannels  Maxscript option for both import and export. What is ExtraChennels? For export, ExtraChannel means UV channel other than 1. For import, it is arbirary per vertex data other than UV. By default, it is on for both export and import.

This new options are also very important for troubleshooting. Alembic from a different DCC can easily have problematic data. At work, I found out that most of the crash while importing Alembic file turned out to be a bad data in the Alembic file(Especially normal and extra channel). Without this options, it was very hard to troubleshoot because you have to try to a data and export again iover and over again. Usually the normal and uv data caused the problem. Now with this option, I can just exclude some data to see whats causing problem. I can also decide not to import the problematic data instead od waiting for re-export.

Of course, this also allow to get better performance by removing unnecessary data.

Velocity Channel

Velocity channel in 3dsMax is a long story. It requires its own long post. In a nutshell, 3dsMax itself never has had the concept of velocity vertex channel at all. When you don’t even have the concept, it is abvious that the imported Alembic can not handle vertex velocity.

Finally 3dsMax dev added the vertex velocity channel support in the SDK. If the Alembic file has standard velocity(or v) channel, 3dsMax import the channel as vertex velocity channel. If you have been re-routing the v channel to extra channel. You don’t need to do that anymore.

But, this doesn’t mean that all renderers will magically start to see vertgex velocity channel. Each rednerer need to support the new velocity channel to utilize this data.

 

Vertex Color

Now you can export and import vertex color channel(uv chennel 0)

 

Subsampling

You can export Alembic file with subsampleing in the previous version of 3dsmax 2019. Butm the worklow was confusing. To export subsamples. You need to set 2 things.

  • Set Every Nth Frame less than 1.0. IF you set 0.5, you will get 2 subsamples per frame.
  • Then, you must be in tick mode. You need to set Time Display in Time Configuration dialog either FRAMETICKS ir MM:SS:TICKS

Now you dont need to turn on tick mode anymore. Also the Every Nth Frame option has been changed to Samples per Frame.

 

Option for Exporting Hidden Geo

In the previous version, 3dsMax Alembic Exporter export geometry data only for unhidden object. If your object is hidden, only transfom animator was exported. THis might make sense for some. But, it also make some users scratch their head for sure.

Now there is a Maxscript property to control this. In AlembicExport interface, .Hidden property controls this hehavior.

Here is a tip. You can utilize this behavior as a way to export only transform animation. If you want to export transform animation only without any geometry data. Turn off this option and hide all object and export.

 

Graceful warning/exit for import/export malfunction

Sometimes bad geometry causes crash when you export/import Alembic file.  3dsMax 2019 will pop-up an explanatory Alembic Export Malfunction message box and abort when the Alembic Export plug-in encounters an unexpected issue while exporting instead of crashing.

Generally 3dsMax 2019 handles geometry import a lot more stable than the previous versions. In many cases, 3dsmax importer will try to fix the problem and give you a best possible result. If Alembic library itself errors, 3dsMax will relay the error message.

Export Selected will grab only needed hierarchy.

Since alembic is designed to keep hierarchy, 3dsMax exporter is grabbing other necessary object when you Export Selected object. The problem in the previous version was that it is grabbing too much(the entire hierarchy tree). This is changed now. 3dsMax will grab only the immediate ancestors of selected object.

 

Better duplicated object name handling

If you have duplicated name object while exporingAlembic file, it can cause problems. In ideal world, user should check if they have the duplicated name objects before export. But, since that’s not ganna happen most time, 3dsMax will check the duplicated name and suffix nodel handle to make all object name unique.

 

Respect Maxscript #noPrompt option for duplicated name object handling for import

When an Alembic file is imported, you get a duplicated warning pop-up if there is already the same name object. When you use importFIle with #noPrompt option, this dialog will not pop up as it should be.

 

Alembic Container Object Icon

Alembic log shape icon insteaf of dummy for AlembicContainer object.

 

Remember dialog setting

The export and import will remmeber the last used settings.

 

Extra Channel UV Data Animation Fix

In the previous version, the Extra channel(UV 2+) animation was not imported if the channel has UV data(vertex data + face indice). It is fixed. Please do not confuse this with per vertex channel data which never has been a problem.

 

More Maxscript Exposure for AlembicImport

.FitTimeRange : bool : Read|Write
.SetStartTime : bool : Read|Write

 

Performance Mode Stabilixation

The Performance Mode in AlembicContainer has been stablized a lot. This feature is probably the most underrated feature of 3dsMax considering how poerful it is. I’ll mpost about this feature someday.

 

3dsMax 2018

 

Visibility Support

Visibility track support is  added including visibility animation.

 

.ShapeSuffixMaxscript Option for Maya

Our little precious Maya could not handle the geometry name from Alembic file properly. Therefore, 3dsMax dev had to add a solution for them. If you tuen on this option, yout geometry name will get “Shape” suffix.

 

3dsMax 2017

 

Preserving UV Channel and Material ID number

When you export and import an Alembic file between 3dsMax, the UV channel ID and Material ID number will be preserved.

 

Extra Channel Import Support integer, float, vector, color

3dsMax 2016 only supported color and vector.

 

Proper Deformation Export for Object with Spacewrap

In the previous version, 3dsMax exported the object with SpaceWarp in World coordinate. If the object is not at the root level, the object will get double transform since the deformation animation already include the animation.

 

Alembic Performance Mode for Any Object

Alembic Performance Mode cab be used for any 3dsMax geometry. In the previous version, only AlembicObject without any modifier was supported.

 

More Stable UV Loading

In the previous release, UV data loading was unstable. Sometimes UV data corrupt after user scrub time slider. User need to use Channel Info dialog to copy UV channel data and paste back to the same channel to lock the UV data right after they import thr Alembic file. This is fixed.

 

Full Maxscript Exposure for Alembic Export

All Alembic Export funcions are exposed to Maxscript.

 

Preserving Object Name

3dsMax 2016 suffix “_mesh” for geometry. Now object will be exported with unchanged name,

 

AlembicContainer Object as Dummy

 

——————————————————————————————-

OK,  that’s it. I hope it is helpful for you.