I need help rebuilding the 3dsMax shell modifier vertex order

I’m working on creating a “Shell Modifier” that is compatible with the one that’s in 3dsMax, but I don’t want to open 3ds max to do it. At first, this seemed easy. And honestly it was. I had a prototype in a day that would move the verts almost the exact same place that Max did. It built the full water-tight topology with an arbitrary number of loops along the connecting edge. It was great … Until I tried to blendshape what I made to something that Max made


The new vertices created around the connecting edges are in SOME arbitrary order, and I cannot for the life of me figure out what that order is, or how to re-create it.

I would really appreciate some other people taking a crack at this, because I’m at my wit’s end.

Here’s a git repo with an alembic file containing the original flat Panel the 3dsMax Shell and the thing I made with MyScript, along with the python script I used to make the mesh.

Try look at the SDK as the source for that modifier might be in there which ( normally with a lot of deciphering ) will give you the vert order.

Failing that could you not use max in headless to do the modification?

headdesk headdesk headdesk
I can’t believe I forgot that Max actually includes the source for all those modifiers
sigh And there it is… Apparently its files are named “solidify” instead of “shell”

Thank you for that. Tomorrow is going to be a much more productive day for me.

And unfortunately no, we can’t use headless Max. We’re trying to completely remove it from the pipeline (so we can move to Linux), and Shells are atuo-added to all of our cloth objects. But we still need backwards compatibility with our asset library. Hence, no Max, but still has to work with it.

I may as well post the solution since I figured it out.

The newly created vertices were sorted by the index of the face bordering the edge that was clockwise (when facing the polygon) from the source vertex… I updated the github repo with the fix if anybody was actually interested.