Mesh Requirements

Roblox supports a wide variety of mesh configurations created from third-party software such as Blender or Maya.

Check that your model meets the following modeling specifications and guidelines before exporting. When ready to export, see Export Requirements for mesh export settings for Blender and Maya.

Reference Files

The following reference files are available to download and test:

Filename Description
MapleLeafTree_S3 A skinned tree model with the soil, branches, and leaves as separate meshes bound to a single armature. This is packaged as a .zip to include UV textures that can be applied with SurfaceAppearance. This is an advanced version of the tree model used in the Skinning a Simple Mesh guide.
Creature Creature model from the Beyond The Dark showcase. This model is made up of 11 meshes and over 50 bones.
Lola A skinned R15 character created from the Skinning a Humanoid Model guide. Since this reference model doesn't yet have inner and outer cage mesh data, this model can't equip layered clothing or accessories.
Fish-Character-Model A rigged and skinned humanoid character model with a full body cage, facial animation rig, and associated PBR texture maps.
Blocky A Blocky character model with an animateable head and a full body cage.
Goblin A Goblin character model with an animateable head and a full body cage.

Geometry

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.
  • Scale - Your scene units in Maya or Blender should be set to Centimeters to closely match with Studio's scale.

Humanoid Geometry

Humanoid models are made up of 15 separate meshes and require additional geometry requirements to import into Studio. The specifications for humanoid limbs, attachments, and rigs must be followed to ensure compatibility with Humanoid.

  • Transformations - All translation, rotation, and scale values must be frozen and pivots set to 0, 0, 0.
  • Orientation - Characters must face positive Z and stand up in positive Y.
  • Pose - Before exporting, set your character to an I-Pose when possible.

Limbs

See the following specifications for the individual mesh objects that make up a humanoid model:

  • Naming Convention - Limbs must all be specifically named:

    • UpperTorso_Geo
    • LowerTorso_Geo
    • LeftUpperArm_Geo
    • LeftLowerArm_Geo
    • LeftHand_Geo
    • RightUpperArm_Geo
    • RightLowerArm_Geo
    • RightHand_Geo
    • LeftUpperLeg_Geo
    • LeftLowerLeg_Geo
    • LeftFoot_Geo
    • RightUpperLeg_Geo
    • RightLowerLeg_Geo
    • RightFoot_Geo
    • Head_Geo
  • Caps - Limbs must be capped, so that they form a full watertight mesh when separated from the body. Caps can be rounded or flat depending on design.

Attachments

Attachments are points on the humanoid model where various accessories can be attached or equipped. It is important that these are correctly applied so rigid accessories can correctly attach to your models. See the following specifications for attachments:

  • Naming Convention - Attachments must all be specifically named:

    • FaceCenter_Att
    • FaceFront_Att
    • Hat_Att
    • Hair_Att
    • LeftGrip_Att
    • LeftShoulder_Att
    • LeftCollar_Att
    • RightGrip_Att
    • RightShoulder_Att
    • RightCollar_Att
    • Neck_Att
    • BodyBack_Att
    • BodyFront_Att
    • WaistFront_Att
    • WaistCenter_Att
    • WaistBack_Att
    • LeftFoot_Att
    • RightFoot_Att
    • Root_Att
  • Placement - Attachments must be placed so that their geometric center is on the surface where a potential accessory will attach.

    Incorrect placement of collar attachments
    Correct placement of collar attachments
  • Hand Attachments - The rotation of the LeftGrip_Att and RightGrip_Att should be set to 90, 0, 0).

  • Root Attachment - The Root_Att should not be moved from a default position of 0, 0, 0).

Rigging

Roblox supports third-party meshes with an internal rig, or skeleton structure that can be used as additional articulation points in your model. Humanoid models require a specific skeleton hierarchy when applying a rig. See Rigging for more details on implementing meshes with rigs in your experience.

Generic rig model
Generic rig bone structure (Blender)

See the following requirements for general rigging:

  • 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 in your rig.
  • Root Joint - The root bone or joint should always be set to 0, 0, 0.

Humanoid Rigs

Unlike generic rigs, humanoid models require a specific hierarchy and naming conventions for the internal bone or joint structure.

Humanoid rig model
Humanoid rig bone structure (Blender)

See the following requirements for humanoid rigging:

  • Rig Hierarchy - Humanoid rigs require a specific bone hierarchy and naming convention:

    • Root
    • HumanoidRootPart
    • LowerTorso
    • UpperTorso
    • Head (representing the base of the neck)
    • LeftUpperArm
    • LeftLowerArm
    • LeftHand
    • RightUpperArm
    • RightLowerArm
    • RightHand
    • LeftUpperLeg
    • LeftLowerLeg
    • LeftFoot
    • RightUpperLeg
    • RightLowerLeg
    • RightFoot
    Blender rig hierarchy
    Maya rig hierarchy
  • LowerTorso and Root - The LowerTorso and Root bone or joint position must be set to 0, 0, 0.

  • Pose - Export your character model in an I-Pose for the best Studio compatibility. The LeftUpperArm and RightUpperArm bones can be exported with rotation values to meet this requirement.

Skinning

Roblox supports skinning for rigged meshes. See Skinning for more details on implementing skinned meshes in your experience.

See the following requirements for skinning:

  • 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.
  • Symmetry - When possible, maintain symmetry when applying influences to a rig.

Textures

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.

UV Mapping

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 Atlas - Use a single UV set for each component, such as a humanoid or accessory.
  • Coordinates - All UVs must be created within a 0:1 space.
  • Overlaps - Overlapping UVs are allowed.
  • Avatar characters - For avatar bodies, set the UV layout to 1024x1024 pixel (64x64 grid).
  • Accessories and Clothing - For accessories, set the UV layout to 256x256 (16x16 grid).

Optimizations

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 1024x1024 pixel space into 64x64 16 pixel blocks and 256x256 pixel space into 16x16 16 pixel blocks.

    1024x1024 UV example, separated by 16px blocks.
    256x256, separated by 16px 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:

SurfaceAppearance

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:

  • File Formats - File formats for textures that are uploaded separately in Studio must be submitted as a .png.

  • Texture files - Texture files must 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)
    Roughness _RGH Single Channel Greyscale (8-bit)
    Ambient Occlusion _AO Single Channel Greyscale (8-bit)
  • PBR Texture Budget - When texturing a humanoid character, use a 1024x1024 map for each of the 4 map types. When texturing accessories or other objects, use a 256x256 map for each of the 4 map types.

  • Substance Painter - If possible, create your final texture using Substance Painter and ensure that the mesh maps are created without errors.

Custom Skin Tone

When texturing an avatar character model where the user can set their own skin tone, set the exposed skin areas as transparent so a default color or texture is not baked into the texture. When rendering, the Studio engine applies the transparent layer on top without any layer effects. This step applies mostly to human-like characters with exposed skin that you intend users to customize.

The following are examples of skin tone shading for the face, and you can apply this process with any part of an avatar with exposed skin:

  • Use 100% opacity for areas not related to a customized skin tone, such as eyes and brows.
  • When applying shading, use black at low opacity and adjust opacity when needed.
  • For areas that are partially translucent, such as shading contours or certain cosmetic features, leave some transparency for partial visibility of the skin tone.
  • You should consistently test out how various colors layers can interact with your shading.
Beige
Blue
Brown
Pink

Animations

An animation can be included on any .fbx mesh export. 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

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. You can use inner and outer cages on meshes or models that can naturally deform or stretch on top of another, such as layered clothing.

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.