Check that your model meets the following modeling specifications and guidelines before exporting to ensure Studio compatibility. Specific types of assets, like characters and accessories, have additional specifications:
- If you are creating an avatar character model, ensure that your model follows Character Specifications.
- If you are creating an accessory model, ensure that your model follows Accessory Specifications.
When ready to export, see Export Requirements for mesh export settings for Blender and Maya.
See the following specifications for general geometry:
- Budgets - Humanoid characters must be within 10k triangles, not including accessories. Less detailed meshes, such as accessories, must be within 4k triangles.
- Watertight - All geometry must be watertight without exposed holes or backfaces.
- No N-gons - Models must be in quads where possible.
Roblox supports third-party meshes with an internal rig, or skeleton structure that can be used as additional articulation points in your model. See Character Rigs for specific standards for an R15 character rig.
See the following requirements for general rigging and skinning:
- Transformations - All bones (Blender) or joints (Maya) must be frozen and have scale values set to 1, 1, 1 and rotation values set to 0, 0, 0.
- Symmetry - When possible, maintain symmetry when applying influences to a rig
- Root Joint - The root bone or joint should always be set to 0, 0, 0.
- Max Influences - A vertex can not be influenced by more than 4 bones or joints.
- No Root Influences - Do not apply influences to the Root bone or joint.
Basic textures can be imported with a .fbx file in Studio or imported separately as an image and applied to a mesh as a Texture ID.
You can also use SurfaceAppearance for advanced textures. SurfaceAppearance will override a mesh's existing TextureID and can be used for additional texturing options, such as Physically Based Rendering (PBR).
See the following requirements for basic textures:
- File Formats - File formats for textures that are uploaded separately in Studio must be submitted as a .png, .jpg, .tga, or .bmp.
Textures use UV mapping, a 3D modeling process to project a 3D model's surface to a 2D image, or UV Atlas. See the following requirements for UV mapping, especially if you're manually editing or optimizing your UV atlas:
- Single UV Set - Use a single UV set for each component, such as a humanoid or accessory. Studio doesn't allow for multiple UV sets.
- Coordinates - All UVs must be created within a 0:1 space.
- Overlaps - Overlapping UVs are allowed.
- Maximum Texture Resolution - Roblox supports up to 1024x1024 pixel spaces for texture maps. See Optimizations for more details on efficiently texturing your assets.
Studio's UV compositor allows you to pack and size your UVs to best suit your needs because it can detect and repackage UVs for performance and storage efficiency. The compositor looks to each component of the model, such as a character (arms, legs, torso, head), and repackages and loads the UVs as needed when in-experience changes occur, such as swapping body parts.
Especially with character models and other advanced models, optimizing your UV layouts can help prevent texture issues, save loading time, and improve performance. Keep in mind the following best practices for optimizing your UV islands for Roblox's UV compositor:
Pixel space - Studio's texture compositor repacks UVs by breaking up the following pixel spaces:
- 1024x1024 pixel space into 64x64 16 pixel blocks.
- 512x512 pixel space into 32x32 16 pixel blocks.
- 256x256 pixel space into 16x16 16 pixel blocks.
Avoid Sharing 16 Pixel Blocks - To maximize your UV space and the resolution of your model, keep all UV Islands within these 16 pixel blocks when possible, and do not let two UV islands share the same 16 pixel block.
Use Smaller Islands - When possible, use smaller islands to simplify layout and packing. This can help prevent a UV island for one body part incorrectly applying to another as the compositor can't differentiate the islands.
By optimizing your UV layouts, you can prevent unexpected texture conflicts, save space, and improve performance. The following is an example of how Studio's compositor can process the same character body UV layouts with and without optimizations:
You can add a Surface Appearance to your mesh in Studio to add advanced texture options, such as PBR, for additional realism or detail. The SurfaceAppearance instance uses UV mapping, a form of texture mapping, to accurately map up to 4 2D images onto the mesh object.
See the following requirements for SurfaceAppearance assets:
Texture files - Ensuring your textures follow consistent conventions optimizes assets for tools like the 3D Importer and helps with organization. When possible, texture files should include the appropriate name affix and follow the appropriate image details:
Texture Type Texture Schema Suffix Texture image details Albedo _ALB RGB (24-bit) Metalness _MET Single Channel Greyscale (8-bit) Normal _NOR RGB (24-bit) - Roblox only supports OpenGL format - Tangent Space normal maps. Roughness _RGH Single Channel Greyscale (8-bit)
PBR Texture Budget - Use an appropriate texture map size based on the asset you are texturing to optimize for visual quality and performance. As a general guideline, each asset should have a texture resolution of 256x256 for every 2x2x2 unit space the asset occupies. If larger than a 2x2x2 cube, use the next highest resolution. The following are some baseline texture sizing examples:
Recommended Map Size Approximate Asset Size (unit cube) Example Assets 64x64 - 128x128 1x1x1 Jewelry, sunglasses, eyebrows, mustaches. 256x256 2x2x2 Hair, shoes, tank tops, t-shirts, shorts, short skirts. 512x512 4x4x4 Jackets, pants, overalls, long-sleeve shirts, long skirts. 1024x1024 (maximum) 8x8x8 Full body clothing (onesies, robes), humanoid characters.
Substance Painter - If possible, create your final PBR texture using Substance Painter and ensure that the mesh maps are created without errors.
An animation can be included on any .fbx mesh export. For information on prepping a character animation from a modeling software for export, see Exporting Animations from Maya.
See the following requirements for assets with animation:
- Single Track Animation - Only a single animation track can be exported with a mesh or model. If you want to export multiple animations, you need to create separate exports for each animation you want to import.
Inner and Outer cages are non-rendered meshes that Roblox uses to define the inner and outer surfaces of a mesh using a WrapLayer or WrapTarget instance. These cages are most often used with characters and accessories, though you can use cage meshes for any mesh object.
For general use, see the following requirements for adding inner and outer cage meshes to your model:
Naming Conventions - The inner and outer cage must be named after the primary mesh object with _InnerCage and _OuterCage affixed.
Outer Cage - Models, such as a playable character, that aren't expected deform but are the target of meshes that will stretch over it, only require an Outer Cage.
Vertices and UV Map - Don't delete vertices or alter the UVs on the Inner or Outer Cages as this can cause errors when importing in Studio or when equipping onto a character.
Symmetry and consistency - Keep each face (the space between vertices) consistently sized and retain symmetry wherever possible. Use symmetry tools in your modeling software whenever possible.