Wearables
Wearables are the entities that contain items for players to wear and customize their avatars.
The wearables
field in a player’s profile contains a list of pointers to the items they are currently wearing.
Every wearable belongs to a category, indicating the spot it takes on the avatar’s body, and can hide or replace other categories (for example, a long dress may be worn as top clothing but entirely cover the legs).
There are 16 wearable categories, referenced in various metadata fields: hair
, head
, eyes
, eyebrows
, facial_hair
, mouth
, upper_body
, lower_body
, feet
, hat
, helmet
, mask
, tiara
, top_head
, earring
, eyewear
, skin
.
Wearable entities include files in GLB format for different body shapes.
Pointers #
Wearables have exactly one associated pointer, which indicates the collection they belong to and their identifier inside of it.
When the wearable is an on-chain asset, the pointer is a URN of this form:
urn:decentraland:<blockchain>:collections-v2:<collection address>:<item index>
To illustrate, the pointers
array for an on-chain wearable looks like this:
{
"pointers": [
"urn:decentraland:matic:collections-v2:0x2d9560df9dd8ba8b2dc3746bc1d217698d258fb5:0"
],
// ... other entity properties
}
When the wearable is an off-chain asset, such as the default wearables for new avatars, it will be of this form:
urn:decentraland:off-chain:<collection>:<item name>
The collection in this case is a name, not an address, and the item identifier is also a name rather than an index.
The pointers
array for an off-chain wearable has this look:
{
"pointers": [
"urn:decentraland:off-chain:base-avatars:BaseFemale"
],
// ... other entity properties
}
Metadata Fields #
Wearables share most of their basic fields with emotes. The data
property is where the wearable-specific information is located.
Field | Value |
---|---|
id |
The pointer that resolves (or used to resolve) to this wearable. |
name |
The display title for this wearable in a collection. |
description |
An extended description for this wearable. |
image |
The internal filename of a picture for this wearable. |
thumbnail |
The internal filename of a 256x256 version of the image . |
rarity |
One of common , uncommon , rare , epic , legendary , mythic or unique . |
i18n |
An array of translations for the name field. |
collectionAddress |
The Ethereum address for the collection that contains this wearable. |
metrics |
Some useful measurements about the animations (see below). |
data |
The extended metadata for this wearable (see below). |
In typical JSON form:
{
"id": "urn:decentraland:matic:collections-v2:0x11a6879861f36cbad632b4e7226816a16139fb33:0",
"name": "Pretty Dress",
"description": "Very nice to wear",
"image": "image.png",
"thumbnail": "thumbnail.png",
"rarity": "uncommon",
"i18n": [
{ "code": "es", "text": "Vestido Lindo" }
],
"collectionAddress": "0x11a6879861f36cbad632b4e7226816a16139fb33",
"metrics": {
// Measurements object (see below).
},
"data": {
// Extended metadata (see below).
}
}
Metrics #
In the metadata.metrics
object, you’ll find some simple measurements for the models packaged with this wearable. An example:
{
"entities": 1,
"bodies": 12,
"materials": 2,
"meshes": 12,
"textures": 2,
"triangles": 3321
}
Data #
The metadata.data
object is where the wearable-specific properties are located.
Field | Value |
---|---|
category |
One of the wearable categories listed above. |
representations |
An array of files associated to different body shapes (see below). |
hides |
An array of categories this wearable hides. |
replaces |
An array of categories this wearable replaces entirely. |
tags |
An array of string labels descriptive of this wearable. |
Representations #
Each item in the representations array associates a body shape with a collection of models, and can add rules regarding which wearables are displayed in each category.
Field | Value |
---|---|
bodyShapes |
An array of pointers to body shape entities. |
mainFile |
The 3D model file to start the rendering. |
contents |
An array of filenames (present in the top-level content field) used by the mainFile . |
overrideHides |
Supersedes the hides list above for this representation. |
overrideReplaces |
Supersedes the replaces list above for this representation. |
This is a typical representations
item:
{
"bodyShapes": [
"urn:decentraland:off-chain:base-avatars:BaseFemale"
],
"mainFile": "male/190.glb",
"contents": [
"male/190.glb"
],
"overrideHides": [ "lower_body" ],
"overrideReplaces": []
}