All assets must pass a set of minimum requirements:
Biped humanoid body plans.
Production quality skinning based character rigs.
No large, non-removable accessories or loose clothing without body meshes underneath, see below.
A-pose only - To start, we would like to filter to only A-pose models (not T-pose, not I-pose). We understand that different people have different interpretations of what angle is an A-pose. We do not have strict requirements on the angle.
Assets that meet these basic requirements will need further modifications before they can be used by Roblox.
Steps
Clean
Update materials with local, relative texture paths, and simplified as needed to be portable. Eg basic Phong materials, no proprietary DCC shaders.
Remove curves and vertex without polygon, rig controls and etc.
Update skin influences to be normal joints as needed.
Select rig and export selected to FBX format. Geometry, materials, skeleton and skinning only, with locked normals, no animation, see below.
Re-import FBX, test skinning and materials.
Record tags in Info.json, see below
Record characterType, rigOrientation, meshBounds, meshCount, vertexCount, faceCount in Info.json, see below.
Rename
Bones names should be standardized to match HumanIK.
An avatar prepared for Roblox and its cage should be exported as separate FBX files:
Character.fbx (main model)
Outer.fbx (cage)
Avatar textures should be in JPG file format, and placed in textures Folder.
Screenshots of the avatar front and back view (with wireframe and without wireframe) should be placed in Screenshots folder. For Outer.fbx file screenshot should contain an avatar + cage, so intersections between avatar and cage will be visible (if those exist).
Json file should be placed in Roblox folder. Json file should contain metadata presented below.
Folder Structure:
.
└── CharacterName/
├── Roblox/
│ ├── Character.fbx //Final FBX file
│ ├── Textures/
│ │ ├── texture_1.jpg
│ │ ├── texture_2.jpg
│ │ └── Etc
│ ├── Screenshots/
│ │ ├── FrontTexture.png
│ │ ├── FrontWire.png
│ │ └── Etc
│ └── Info.json
└── Cages/
├── Outer.fbx //Cage file
└── Screenshots/
├── FrontTexture.png
├── FrontWire.png
└── Etc
Info.json Metadata File:
tags // List of categories or tags from the original asset.
string[]
characterType // Best guess.
string
human
creature
robot
toon
anime
other
sourceDCC // The DCC used to create the asset.
string
maya
blender
3dsmax
mixamo
...
unknown
rigOrientation // Recorded as the character’s Front, Left, Up directions with sign.
char[6] // Eg, “+Z+X+Y” is facing forward in +Z with +Y up.
meshBounds // Cumulative bounds of all visible meshes.
float[3] minXYZ
float[3] maxXYZ
meshCount // Number of meshes.
int
vertexCount // Total number of mesh vertices.
int
faceCount // Total number of mesh faces.
int
boneCount // Total number of skinned bones.
int
shoulderBindAngle // Angle between upper arm and Y axis. 0 is arms straight down, 90 is arms parallel to the ground.
Float
wristBindAngle // Angle between thumb direction and Z axis. O is palms pointed down or in, 90 is palms pointed forward.
Float
reducedMeshCount // Total number of meshes after reduction.
int
reducedVertCount // Total number of mesh vertices after reduction.
int
reducedFaceCount // Total number of mesh faces after reduction.
int
Json Example:
{
"tags" : [
"human", "low_poly", "character"
],
"characterType" : "human",
"sourceDCC" : "blender",
"rigOrientation" : "+Z+X+Y",
"meshBounds" : {
"minXYZ": [
-10.0, -10.0, -10.0
],
"maxXYZ" : [
10.0, 10.0, 10.0
]
},
"meshCount": 1,
"vertexCount": 9000,
"faceCount" : 8000,
"boneCount" : 15,
"shoulderBindAngle" : 20.5,
"wristBindAngle" : 10.5,
"reducedMeshCount" : 1,
"reducedVertCount" : 6000,
"reducedFaceCount" : 5000
}
Additional information
Not Acceptable: Large, non-removable accessories
If the wings and body are from a single mesh, then it is a large, non-removable accessory and should be rejected. If the wings are separated mesh that can be easily removed from the body, then it can be accepted. The same applies to the tails, weapons in the hands, etc.
If there is no body mesh beneath the dress and the dress cannot be removed, then it should be rejected
Want to print your doc? This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (