Thanks for sharing this, lots of good info here!

A couple of thoughts as I’m reading this to better translate it to three.js world:

Smoothing Groups

Smoothing groups are mentioned quite a bit, but we don’t usually use that terminology in three.js since we generally either store or pre-calculate explicit normals for each vertex, while smoothing groups are designed as a way to avoid doing that. The equivalent concept in three.js, as far as I know, is discontinuous UVs or UV seams (not entirely sure of the correct terminology here) - that is, if you set a smoothing group in 3DS Max and then import the model to three.js, vertices will be duplicated along the boundary between smoothing groups to allow normals to point in multiple directions from a single point in space (as along the edges of a cube).

Combining multiple greyscale maps in a single texture

three.js doesn’t support arbitrarily combining these maps (unless you write a custom shader).

Given a RGBA texture, we use these channels for maps:

RGBA

Diffuse color map: RGB (+A if transparent material)

RGB

Light Map: RGB

Environment map: RGB

Emissive map: RGB

Normal map: RGB

Red

Ambient Occlusion map: Red channel

Specular map (Basic, Lambert, Phong): Red channel

Displacement map: Red Channel

Bump map: Red Channel

Alpha map: Green Channel

Green

Roughness Map (Standard, Physical)

Blue