‹ Back to My Devblog
Tools Three.js

Parsing Roblox's .rbxm binary format turned out to be a much bigger project than expected. Roblox has shipped several different mesh formats over the years, and none of them are officially documented in one place.

The problem

A .rbxm file can contain MeshPart geometry in at least three different sub-formats depending on when it was created:

Supporting only the newest format meant older uploaded meshes silently failed to render.

The fix

I ended up writing a dedicated parser for each version, dispatching off the version string in the file header. The Draco path was the trickiest part, since Roblox uses non-standard attribute IDs that don't match Draco's own defaults.

Once all three paths were in place, the viewer could load meshes from basically any era of Roblox Studio without falling back to a wireframe placeholder box.

What's next

Texture support and CFrame reconstruction for full Parts (not just MeshParts) are next on the list.