GM Market — Premium GMod & FiveM Scripts
Roblox Guide 🇺🇸 English

Complete guide: importing Blender meshes into Roblox Studio (FBX/OBJ, scale fix, PBR)

>*Muzan Moderator
@>*Muzan · Moderator ·
7 views 0 replies

TL;DR

If you've ever exported a mesh from Blender, dropped it into Roblox Studio, and ended up with a 100-stud giant or a flat grey blob — this guide is for you. I'll walk through the full pipeline: export settings, the import workflow in Studio, the infamous scale bug, the ~10k triangle budget, UV pitfalls, and how to wire up SurfaceAppearance for PBR.


Step 1 — Prepare your mesh in Blender

Apply transforms

In Object Mode, select your mesh and hit Ctrl+A → All Transforms. This bakes scale/rotation into the mesh data. Skipping this is the #1 cause of weird scaling on import.

Stay under 10,000 triangles per MeshPart

An issue you'll run into at some point is that there are too many polygons — Roblox currently enforces a 10,000 polygon (tris) limit per mesh import. This is a per-MeshPart limit, not a scene limit. Strategies:

  • Decimate modifier — non-destructive and fast, but can disturb topology.
  • Manual retopo — cleaner result, UV-friendly.
  • Split the model — split your model and import each object individually, then re-combine the full model in Roblox Studio.

Check your tri count via Viewport Overlays → Statistics in Blender.

UV unwrap before export

Your UVs must exist and be clean before export — Studio doesn't unwrap for you.

  • Use Smart UV Project (U → Smart UV Project) for simple props; hand-unwrap for hero assets.
  • Keep islands within the 0–1 UV space. Islands outside will tile or clip in Studio.
  • After decimating, always re-check your UVs — Decimate can produce overlapping islands.
  • Use UV → Pack Islands when building a texture atlas across multiple parts.

Step 2 — Export from Blender

You can export your 3D object as an .obj, .fbx, or .gltf file.

FBX (recommended for multi-object scenes)

FBX can contain 3D, audio, animation, and other data, but the drawback is its file size can get quite large.

Critical FBX export settings (File → Export → FBX):

SettingValue
Scale0.01
Apply ScalingsFBX Units Scale
Forward-Z Forward
UpY Up
Apply Unit
Limit toSelected Objects only

Why scale 0.01? When exported as FBX, objects in Roblox Studio appear 100× larger than expected — e.g. 100×100×100 instead of 1×1×1 — because the Blender → FBX → Roblox pipeline processes FBX inconsistently. Setting scale to 0.01 at export time cancels this out.

While you can address this in Roblox Studio by editing the Size property of the MeshPart, a better option is to adjust scale during FBX export from Blender.

OBJ (simpler static props)

The OBJ file type contains only mesh data — vertex locations and such — with a small file size and good portability. OBJ doesn't carry animation data and doesn't have the 100× FBX scale bug. Use Forward = -Z, Up = Y, Scale = 1.0.

Tip: Export with the .mtl file alongside the .obj — Studio ignores material colors but slot names help you know which surfaces to texture later.


Step 3 — Import into Roblox Studio

Open the 3D Importer via Home → Import 3D (or drag-drop the file onto the viewport).

In the right-hand panel, navigate to File General: enable Import Only as a Model to group multiple objects; enable Upload to Roblox to get an asset ID; set Creator to Me or the group that owns the project.

Enable Insert Using Scene Position so the object keeps its Blender position. Then in File Transform, set World Forward to Front to keep Blender's forward axis.

After import, check in the Properties panel:

  • Size — should match what you modelled. If 100× too large, redo the export with scale = 0.01.
  • CollisionFidelity — determines how closely the visual mesh matches the physical hitbox; you can change how far away a player must be before colliding with the mesh. Use Box or Hull for complex shapes to save performance.

Step 4 — Basic texture vs. PBR

Basic (single texture): select the MeshPart, click TextureID in Properties, upload a PNG. Done.

PBR via SurfaceAppearance: SurfaceAppearance objects allow you to override the appearance of a MeshPart with advanced graphics — most notably they can apply a set of PBR textures. PBR (Physically Based Rendering) is a common texture format for defining extra physical surface detail.

Roblox uses a metallic-roughness PBR workflow. You need four maps: color, normal, roughness, and metallic.

Adding SurfaceAppearance

In the Explorer window, hover over the MeshPart and click ⊕, then insert a SurfaceAppearance from the contextual menu.

Then assign your maps:

Set the ColorMap to your _ALB texture, the MetalnessMap to _MTL, the NormalMap to _NOR, and the RoughnessMap to _RGH.

Shortcut: Adobe Substance 3D Painter includes Roblox export presets — "Roblox (MaterialVariant)" and "Roblox (SurfaceAppearance)" — which handle channel mapping automatically. If you bake in Blender with Cycles, export each map as a separate PNG.

Texture maps only change visual appearance and don't affect the geometry of the MeshPart — a good normal map can fake a lot of detail without spending tris.


Quick settings reference

Blender FBX Export
──────────────────
Scale:           0.01
Apply Scalings:  FBX Units Scale
Forward:         -Z Forward
Up:              Y Up
Apply Unit:      ✓
Limit to:        Selected Objects

Roblox 3D Importer
──────────────────
World Forward:   Front (-Z)
World Up:        Top (Y)
Import as Model: ✓ (multi-object)
Upload to Roblox: ✓ (for asset ID)

SurfaceAppearance Maps
──────────────────────
ColorMap     → _ALB  (albedo/diffuse PNG)
NormalMap    → _NOR  (tangent-space normal)
RoughnessMap → _RGH  (white = rough)
MetalnessMap → _MTL  (white = metal)

Common pitfalls

ProblemFix
Model is 100× too largeSet FBX export scale to 0.01; apply transforms first
Black / invisible facesRecalculate normals: select all → Mesh → Normals → Recalculate Outside
UV stretching after DecimateRe-check UV Editor after every Decimate pass and re-pack islands
Over 10k trisSplit mesh in Blender (P → Separate), import as separate MeshParts
PBR maps look washed outAvoid tuning values for one specific lighting situation — base values on physical characteristics and test across environments.
Wrong orientation in StudioSet World Forward = -Z and World Up = Y in the 3D Importer

FAQ

FBX or OBJ? OBJ for static props (lighter, no scale bug). FBX if you need multiple objects or animation data in one file.

Does Roblox support .gltf? Yes — .gltf and .glb are accepted by the 3D Importer and handle PBR material data natively, which can simplify the texture step.

Can I modify SurfaceAppearance at runtime? You can add PBR textures to any MeshPart via a SurfaceAppearance object, but in general you can't modify SurfaceAppearance properties via scripts during an experience because the engine requires them to be pre-baked. Set them at edit time in Studio.

What texture resolution? 1024×1024 minimum, 2048×2048 for hero assets. Always use power-of-two dimensions (512, 1024, 2048) — non-power-of-two images may be downsampled.


If you're looking for ready-made Roblox-compatible mesh assets to save pipeline time, the GM Market marketplace has a solid selection to browse. Otherwise, happy modelling — and apply those transforms before you export!


Sources

0

0 Replies

No replies yet — be the first to respond.