Skip to content

3D Pipeline and Auto Rigging

SpaceSquare640 edited this page Jun 14, 2026 · 1 revision

3D Pipeline and Auto-Rigging

This page explains what happens to a mesh between upload and download.

Supported input

  • OBJ (.obj) — full support: positions, texcoords, normals, materials (usemtl), negative indices, and polygons (fan-triangulated).
  • ASCII FBX (.fbx) — geometry (vertex positions + polygon indices) is read with a pure-C# parser.
  • Binary FBXnot supported. It's detected up front and rejected with guidance, because binary FBX needs native libraries that can't run in the browser (WebAssembly) build. Re-export as ASCII FBX or OBJ. See FAQ.

The pipeline, step by step

  1. Parse — the file is read into a format-agnostic mesh (positions / texcoords / normals / faces / materials).
  2. Remove degenerate faces — zero-area triangles are dropped.
  3. Measure bounds — the axis-aligned bounding box and center are computed.
  4. Normalize scale — the mesh is centered at the origin; if its largest dimension exceeds the 2,048-stud bound it is uniformly scaled to fit.
  5. Decimate (if needed) — if the triangle count exceeds 10,000, vertex-clustering decimation reduces it. The search keeps the finest grid that still fits the budget, so as much detail as possible is preserved. The stats show a decimated tag and the log records before/after counts.
  6. Generate normals — if the mesh has none, flat per-face normals are created.
  7. Auto-rig — Roblox Attachment nodes are placed (see below).
  8. Export — a cleaned .obj is produced (<name>_roblox.obj), with attachment positions written as # attachment <Name> x y z comment lines.
  9. Validate — the result is checked against Roblox Specifications.
  10. Preview — an isometric wireframe PNG is rendered, with attachment nodes drawn as orange markers.

Auto-rigging

A single uploaded mesh isn't pre-segmented into limbs, so the rigger uses a heuristic:

  • It reads the bounding box and decides which axis is "up" (the tallest) and which horizontal axis is "wide".
  • It places the standard humanoid (Roblox R15-style) attachment points at well-known fractions of that box:
Attachment Position
HeadRootAttachment top
NeckRigAttachment upper
LeftShoulderRigAttachment / RightShoulderRigAttachment upper, sides
RootRigAttachment center
WaistRigAttachment mid-lower
LeftHipRigAttachment / RightHipRigAttachment lower, sides

These give you sensible, named starting points to weld accessories or wire a rig in Roblox Studio. They are suggested positions based on the mesh's overall shape — fine-tune as needed for your model.

Output notes

  • The deliverable is the cleaned OBJ; the wireframe image is a preview, not the output.
  • Attachment metadata lives in OBJ comments so it survives a round-trip and can be scripted into Roblox.

Back to User Guide · Features

Clone this wiki locally