Contributors
Wearables

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 18 wearable categories, referenced in various metadata fields: body_shape, hair, eyes, eyebrows, facial_hair, mouth, upper_body, lower_body, feet, hat, helmet, mask, tiara, top_head, earring, eyewear, skin and hands_wear.

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, exotic, 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": []
}