Character Specifications

Character models require a specific set of components and configuration standards to ensure all avatar features work as expected. Check that your model meets the following modeling specifications and guidelines before exporting to ensure Studio compatibility.

When ready to export, see Export Requirements for mesh export settings for Blender and Maya.

Geometry

Avatar character models are made up of 15 separate mesh objects and require additional geometry requirements to import into Studio and publish successfully. In addition to the body types, parts, and budget specifications, ensure that your models also fulfill the following general requirements when modeling:

  • Watertight - All geometry must be watertight without exposed holes or backfaces. Meshes used as outer cages do not need to be watertight.
  • No N-gons - Model your assets in quads where possible.
  • 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.

Body Scale

Roblox supports 3 standards of body scales: Normal, Slender, and Classic. These standards allow developers to create experiences and spaces with consistent body sizes for standardizing movement and interaction. While the minimum sizes for each body scale is the same, each body scale has a unique maximum total body size, as well as a range for each body asset.

A visualization of how Roblox combines the 15 body parts into 6 distinct assets.

Normal

A Rthro Normal body scale downloadable mannequin.

In the 3D Importer, use Rig Type > Rthro to import your model as a Normal body scale.


Minimum (in studs)
PartX (width)Y (height)Z (depth)
Head.5.5.5
Arm.251.5.25
Torso12.7
Leg.252.5
Total1.54.5.7
Maximum (in studs)
PartX (width)Y (height)Z (depth)
Head322
Arm24.52
Torso432.25
Leg1.532
Total882.25

Slender

A Rthro Slender (Narrow) body scale downloadable mannequin.

In the 3D Importer, use Rig Type > Rthro Narrow to import your model as a Slender body scale.


Minimum (in studs)
PartX (width)Y (height)Z (depth)
Head.5.5.5
Arm.251.5.25
Torso12.7
Leg.252.5
Total1.54.5.7
Maximum (in studs)
PartX (width)Y (height)Z (depth)
Head222
Arm1.542
Torso2.532
Leg1.532
Total5.582

Classic

A Classic body scale downloadable mannequin.

In the 3D Importer, use Rig Type > Default to import your model as a Classic body scale.


Minimum (in studs)
PartX (width)Y (height)Z (depth)
Head.5.5.5
Arm.251.5.25
Torso12.7
Leg.252.5
Total1.54.5.7
Maximum (in studs)
PartX (width)Y (height)Z (depth)
Head1.51.752
Arm232
Torso3.53.252
Leg1.52.752
Total7.57.752

Triangle Budgets

Although model geometries are typically created using quads, the Roblox engine converts imported assets into tris. Each asset of your character model must not exceed our maximum tri budget. To quickly get the number of expected tris in your third-party modeling application, you can double the number of quads in your model.

Asset TypeIncluded Mesh ObjectsMaximum Triangles
DynamicHeadHead4000
TorsoUpperTorso, LowerTorso1750
LeftArm LeftUpperArm, LeftLowerArm, LeftHand1248
Right ArmRightUpperArm, RightLowerArm, RightHand1248
LeftLeg LeftUpperLeg, LeftLowerLeg, LeftFoot1248
Right LegRightUpperLeg, RightLowerLeg, RightFoot1248
TotalHead, UpperTorso, LowerTorso, LeftUpperArm, LeftLowerArm, LeftHand, RightUpperArm, RightLowerArm, RightHand, LeftUpperLeg, LeftLowerLeg, LeftFoot, RightUpperLeg, RightLowerLeg, RightFoot10,742

Body Parts

See the following specifications for the individual mesh objects that make up a character 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.

Face Accessories

Face accessories, such as hair, eyebrows, and eyelashes are unique accessories that you can bundle with an avatar body upload. At this time, eyebrows and eyelashes can not be uploaded as standalone accessories and must be bundled with an avatar body. See Accessory Specifications for additional information on face accessories.

Visibility

To ensure that avatar sizes are visually consistent, you must standardize body part visibility with the following requirements:

  • Opacity - Body parts must be fully opaque.
  • Bounding Boxes - Body part assets must take up a significant visible portion of their bounding box in a front, side, and back view.
    • Body parts, such as Torso, Left Arm, Right Leg, must take up at least 50% of body part's bounding box.
    • The head part must take up at least 35% of the mesh's bounding box.
      An acceptable head mesh example that takes up a majority of the bounding box in the front view
      A non-acceptable head mesh example that does not take up the appropriate amount of bounding box space in the front view

Attachments

Attachments are points on the humanoid model where various accessories can be attached or equipped. In general, attachment points should halfway overlap the character model's mesh part.

Incorrect placement of collar attachments
Correct placement of collar attachments

Each attachments must also follow a specific naming convention and positional consistency:

Mesh PartAttachment NameDetails
HeadFaceCenter_AttAnywhere within mesh bounding box
FaceFront_AttFront half of mesh bounding box
Hat_AttTop half of mesh bounding box, can overlap with Hair_Att
Hair_AttTop half of mesh bounding box, can overlap with Hat_Att
UpperTorsoLeftCollar_AttLeft top half of mesh bounding box
RightCollar_AttRight top half of mesh bounding box
Neck_AttTop half of mesh bounding box
BodyBack_AttBack half of mesh bounding box
BodyFront_AttFront half of mesh bounding box
LowerTorsoRoot_AttMust set to 0, 0, 0 position
WaistFront_AttFront half of mesh bounding box, can overlap with WaistCenter_Att
WaistBack_AttBack half of mesh bounding box
WaistCenter_AttAnywhere in mesh bounding box, can overlap with WaistFront_Att
RightUpperArmRightShoulder_AttTop half of mesh bounding box
RightHandRightGrip_AttAnywhere in mesh bounding box, must set the rotation of the RightGrip_Att to 90, 0, 0
LeftUpperArmLeftShoulder_AttTop half of mesh bounding box
LeftHandLeftGrip_AttAnywhere in mesh bounding box, must set the rotation of the LeftGrip_Att to 90, 0, 0
RightFootRightFoot_AttAnywhere in mesh bounding box
LeftFootLeftFoot_AttAnywhere in mesh bounding box

Rigging

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
    • HumanoidRootNode
    • 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 Rigging and 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.

Facial Animations

Roblox supports facial animation on character heads and can support more than 50 base poses. If you are creating an avatar character, it must, at minimum, include the following 17 FACS reference poses to support avatar chat:

  • EyesLookDown
  • EyesLookLeft
  • EyesLookRight
  • EyesLookUp
  • JawDrop
  • LeftEyeClosed
  • LeftLipCornerPuller
  • LeftLipStretcher
  • LeftLowerLipDepressor
  • LeftUpperLipRaiser
  • LipsTogether
  • Pucker
  • RightEyeClosed
  • RightLipCornerPuller
  • RightLipStretcher
  • RightLowerLipDepressor
  • RightUpperLipRaiser

While the 17 poses are a minimum requirement, it's recommended to include as many facial poses as possible in your asset to improve expressiveness and facial animation fidelity for facial animation and avatar chat.

Textures

Avatar characters must follow Roblox's texture specifications. Characters created for the Marketplace can take advantage of custom skin tones which use alpha layers allow users to select their own base color.

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

Outer Cages

Outer cages are non-rendered meshes that Roblox uses to define the outer surfaces of a body part using a WrapTarget instance. Outer cages on your character model allow your character to wear layerable accessories, such as 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 Outer Cages as this can cause errors when importing in Studio or when equipping onto a character. Use the Roblox provided templates for the cage meshes to ensure compatibility with other layered assets.

  • 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.

Marketplace Requirements

Along with the other technical requirements listed, your items must meet the following additional specifications before uploading them to the Marketplace to sell: