# Wearables

Los wearables son los [entidades](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md) que contienen artículos para que los jugadores los lleven y personalicen sus avatares.

El `wearables` campo en el [perfil](https://github.com/decentraland/docs/blob/main/contributor/entity-types/profiles/README.md) de un jugador contiene una lista de punteros a los artículos que está usando actualmente.

Cada wearable pertenece a una *categoría*, que indica el lugar que ocupa en el cuerpo del avatar y puede ocultar o reemplazar otras categorías (por ejemplo, un vestido largo puede usarse como prenda superior pero cubrir por completo las piernas).

Hay 18 categorías de wearables, referenciadas en varios campos de metadatos: `body_shape`, `hair`, `eyes`, `eyebrows`, `facial_hair`, `mouth`, `upper_body`, `lower_body`, `feet`, `hat`, `helmet`, `mask`, `tiara`, `top_head`, `earring`, `eyewear`, `skin` y `hands_wear`.

Las entidades wearable incluyen archivos en formato GLB para diferentes body shapes.

### Punteros <a href="#pointers" id="pointers"></a>

Los wearables tienen exactamente un asociado [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md), que indica la [collection](https://github.com/decentraland/docs/blob/main/contributor/entity-types/collections/README.md) a la que pertenecen y su identificador dentro de la misma.

Cuando el wearable es un activo on-chain, el puntero es un URN de esta forma:

```
urn:decentraland:<blockchain>:collections-v2:<collection address>:<item index>
```

Para ilustrar, la `pointers` matriz para un wearable on-chain se ve así:

```json
{
  "pointers": [
    "urn:decentraland:matic:collections-v2:0x2d9560df9dd8ba8b2dc3746bc1d217698d258fb5:0"
  ],
  // ... otras propiedades de la entidad
}
```

Cuando el wearable es un activo off-chain, como los wearables predeterminados para nuevos avatares, tendrá esta forma:

```
urn:decentraland:off-chain:<collection>:<item name>
```

La colección en este caso es un nombre, no una dirección, y el identificador del artículo también es un nombre en lugar de un índice.

El `pointers` la matriz para un wearable off-chain tiene este aspecto:

```json
{
  "pointers": [
    "urn:decentraland:off-chain:base-avatars:BaseFemale"
  ],
  // ... otras propiedades de la entidad
}
```

### Campos de metadata

Los wearables comparten la mayoría de sus campos básicos con [emotes](https://github.com/decentraland/docs/blob/main/contributor/entity-types/emotes/README.md). El `data` propiedad es donde se encuentra la información específica del wearable.

| Campo               | Valor                                                                                                                                                     |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                | El [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) que resuelve (o solía resolver) a este wearable.              |
| `name`              | El título para mostrar de este wearable en un [collection](https://github.com/decentraland/docs/blob/main/contributor/collections/README.md).             |
| `description`       | Una descripción extendida para este wearable.                                                                                                             |
| `image`             | El [nombre de archivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) de una imagen para este wearable.     |
| `thumbnail`         | El [nombre de archivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) de una versión 256x256 de la `image`. |
| `rarity`            | Uno de `common`, `uncommon`, `rare`, `epic`, `legendary`, `exotic`, `mythic` o `unique`.                                                                  |
| `i18n`              | Una matriz de traducciones para el campo `name` .                                                                                                         |
| `collectionAddress` | La dirección de Ethereum de la colección que contiene este wearable.                                                                                      |
| `metrics`           | Algunas medidas útiles sobre las animaciones (ver más abajo).                                                                                             |
| `data`              | Los metadatos extendidos para este wearable (ver más abajo).                                                                                              |

En forma JSON típica:

```json
{
  "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": {
    // Objeto Measurements (ver más abajo).
  },
  "data": {
    // Metadatos extendidos (ver más abajo).
  }
}
```

### Métricas

En la `metadata.metrics` objeto, encontrarás algunas medidas simples para los modelos empaquetados con este wearable. Un ejemplo:

```json
{
  "entities": 1,
  "bodies": 12,
  "materials": 2,
  "meshes": 12,
  "textures": 2,
  "triangles": 3321
}
```

### Datos

El `metadata.data` objeto es donde se encuentran las propiedades específicas del wearable.

| Campo             | Valor                                                                      |
| ----------------- | -------------------------------------------------------------------------- |
| `categoría`       | Una de las categorías de wearables listadas arriba.                        |
| `representations` | Una matriz de archivos asociados a diferentes body shapes (ver más abajo). |
| `hides`           | Una matriz de categorías que este wearable oculta.                         |
| `reemplaza`       | Una matriz de categorías que este wearable reemplaza por completo.         |
| `tags`            | Una matriz de etiquetas de cadena descriptivas de este wearable.           |

#### Representaciones

Cada elemento en la matriz representations asocia un body shape con una colección de modelos, y puede añadir reglas sobre qué wearables se muestran en cada categoría.

| Campo              | Valor                                                                                                                                                                                                             |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bodyShapes`       | Un arreglo de [pointers](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) a entidades body shape.                                                                                   |
| `mainFile`         | El archivo del modelo 3D para iniciar el renderizado.                                                                                                                                                             |
| `contents`         | Una matriz de nombres de archivo (presentes en el nivel superior del campo [`content` ) usados por el](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#properties)field `mainFile`. |
| `overrideHides`    | Sustituye la lista de `hides` anterior para esta representación.                                                                                                                                                  |
| `overrideReplaces` | Sustituye la lista de `reemplaza` anterior para esta representación.                                                                                                                                              |

Este es un elemento típico de `representations` :

```json
{
  "bodyShapes": [
      "urn:decentraland:off-chain:base-avatars:BaseFemale"
  ],
  "mainFile": "male/190.glb",
  "contents": [
      "male/190.glb"
  ],
  "overrideHides": [ "lower_body" ],
  "overrideReplaces": []
}
```
