title | description |
---|---|
Clothing Specifications |
Layered clothing specifications lists the specific technical requirements for the visible mesh, cages, and proper rigging and skinning data. |
When creating clothing for Roblox, it's important to meet specific technical requirements to ensure compatibility and optimize for performance and quality. Many of these requirements must be applied when designing and modeling your asset in a third-party modeling application.
Although rigid accessories and layerable accessories share many technical requirements, layerable clothing accessories must include additional components to ensure the accessories deform and stretch appropriately on different body scales.
If you are intending to publish and sell these assets on the Marketplace, there are additional Marketplace Policy standards that you must follow for any accessory or clothing item.
When ready to export, see Export Requirements for mesh export settings for Blender and Maya.
If creating other types of 3D models:- When creating a generic mesh, your model must meet [General Mesh Specifications](../modeling/specifications.md).
- When creating a rigid accessory model, see [Accessory Specifications](../../art/accessories/specifications.md).
- When creating avatar characters, see [Avatar Specifications](../../art/characters/specifications.md).
- Single Mesh - Accessories must be a single mesh.
- Budgets - Accessories can't exceed 4k triangles.
- Watertight - All geometry must be watertight without exposed holes or backfaces.
- Use quads whenever possible. Avoid faces with 5 or more sides.
- Mesh Size - Depending on the type of accessory asset, meshes must follow a standard size (in studs, centered on attachment point) depending on the body scale it is designed for.
Depending on the type of layerable asset, the size requirements can't exceed the following maximum width, height, and depth (in studs).
Asset Type | Width (X) | Height (Y) | Depth (Z) |
---|---|---|---|
T-Shirt, Shirt, Sweater, Jacket, Pants, Shorts, Dress & Skirt | 8 | 8 | 8 |
Hair | 3 | 5* (Not centered: 2 up, 3 down) |
3.5* (Not centered: 1.5 front, 2 behind) |
Eyebrow and Eyelashes | 1.5 | 0.5 | 0.5 |
Class.Attachment
objects indicate where an accessory model attaches to a point on a character body. Whether you are creating rigid or layered accessories, Studio's Accessory Fitting Tool automatically adds and configures the appropriate Class.Attachment
with the following specifications:
- One attachment - Each accessory, including layered clothing, require at least one attachment point to its associated body part.
- Naming Convention - The
Class.Attachment
name must follow a specific naming convention depending on theClass.Accessory.AccessoryType
. The Accessory Fitting Tool generates an appropriateClass.Attachment
name automatically.
If setting attachment names manually in Studio, use the following Class.Attachment
name for each accessory type:
Accessory Type | Attachment Name |
---|---|
Hat | `HatAttachment` |
Hair | `HairAttachment` |
Back | `BodyBackAttachment` |
Waist | `WaistFrontAttachment`, `WaistCenterAttachment`, `WaistBackAttachment` |
Shoulder | `RightShoulderAttachment`, `RightCollarAttachment`, `NeckAttachment`, `LeftCollarAttachment`, `LeftShoulderAttachment` |
Face, Eyelash, Eyebrow | `FaceFrontAttachment`, `FaceCenterAttachment` |
Neck | `NeckAttachment` |
Front | `BodyFrontAttachment` |
Layered tops (Shirt, TShirt, Sweater, Jacket) | `BodyFrontAttachment` |
Layered bottoms (Pants, Shorts, DressSkirt) | `WaistCenterAttachment` |
- Shoulders and Collars - Even though they are in similar locations, Shoulder and Collar attachment points interact with character rigs differently for rigid accessories.
- Items using
RightShoulderAttachment
orLeftShoulderAttachment
move with the character's arm. - Items using
RightCollarAttachment
orLeftCollarAttachment
do not move with the character's arm.
- Items using
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 avatar bodies. For more information on bundling your face accessories with avatar models, see Publishing Bodies with Eyelashes and Eyebrows.
- Naming Convention when bundled - When including these assets with an avatar body upload, the accessory objects must use the following name conventions:
EyebrowAccessory
EyelashAccessory
HairAccessory
Textures created for accessories must meet Roblox's texture specifications. Keep in mind that smaller assets, such as accessories, can use smaller texture map sizes, such as 256×256px, to optimize performance with virtually no loss in detail.
Clothing and accessories that deform and fit around any characters and existing clothing items require additional configuration in a 3D modeling software such as Blender or Maya.
To achieve the layering effect, your clothing must meet the following requirements:
- Asset must be weighted and bound to an R15 skeleton (Maya) or armature (Blender).
- Asset must contain an inner mesh cage and an outer mesh cage.
- Asset must continue to follow any applicable custom mesh requirements, such as best practices on watertightness, textures, and polycount budgets.
See Creating Layered Models for a basic guide on applying these requirements on a reference asset in Blender. Once the .fbx
file is exported, see Accessory Fitting Tool for instructions on creating an accessory from your model.
Rigging and skinning a layered accessory allows the accessory to move naturally with a character body. You can perform this manually through a modeling tool, or use automatic skinning transfer to generate an accessory's skinning data at run time.
If using modeling software to skin your accessories, keep in mind that Joint Influences (Maya) or Bone Assignments (Blender) per vertex should be limited to 4.
For more information on basic skinning in third-party modeling software, such as Blender's Automatic Weights, see Skinning a Simple Mesh for instructions on rigging, applying weights, and skinning a basic mesh.
Cage meshes, or cages, are invisible meshes that define the inner and outer surfaces of your asset. Similar to collision boxes, these surfaces prevent other accessories or bodies from clipping or breaking and allow other accessory items with cages to layer on top of the previous object.
The inner cage is the inner surface of your model and defines how the layered asset fits over another layered model. As a best practice, the shape of the inner and outer cage should match each other before editing the outer cage to completely cover your asset.
The inner cage mesh object must have the same name as the accessory model appended with _InnerCage.
The outer cage defines the external surface that another item's inner cage would layer on top of. Avatar character models must have an outer cage included with its model in order to be compatible with layered clothing. All avatar models available on the Marketplace include a properly configured outer cage and are compatible with layered assets.
The outer cage of a layered clothing asset is a mesh that precisely covers the clothing item. The outer cage included in the template files is identical to the inner cage by default and must be the only cage adjusted to fit over an accessory.
The outer cage mesh object must have the same name as the accessory model appended with _OuterCage.
The vertexes and UVs of the inner and outer cage meshes should not be altered, as they are used to match coordinates between other cages. You can complete the UV texturing of the actual accessory mesh layer (not the \_InnerCage or \_OuterCage objects) at your discretion.Your items must meet the following requirements before you upload them to the Marketplace to sell:
- Ensure that your items adhere to the Marketplace Program Guidelines.
- Whenever applicable, ensure that your items adhere to Roblox's custom mesh specifications and rigid accessory specifications.
- Object
Class.MeshPart.Material|Material
is set toPlastic
. - Object
Class.MeshPart.Transparency|Transparency
is set to 0. - Object
Class.MeshPart.VertexColor|VertexColor
is the default1, 1, 1
. - Your
Class.Accessory
instance does not contain extraneous objects, likeClass.Script
or additionalClass.Part
instances.