> ## Documentation Index
> Fetch the complete documentation index at: https://docs.facebetter.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Paquetes de recursos opcionales

> Descarga paquetes de capacidad extra como resource_3d.fbd y resource_body.fbd y regístralos con AddResourcePack

El SDK incluye un paquete de runtime principal `resource.fbd` (\~7 MB) para belleza 2D, maquillaje, filtros y stickers 2D.

Algunas capacidades necesitan un paquete **opcional**. Estos archivos **no** están incluidos en el SDK de iOS / Android / Web. Descárgalos al integrar y registra cada uno con `AddResourcePack` / `addResourcePack` **antes** del setter correspondiente.

| Paquete             | Tamaño   | Obligatorio antes de                                            |
| ------------------- | -------- | --------------------------------------------------------------- |
| `resource_3d.fbd`   | \~9 MB   | `Set3DSticker` / `set3DSticker`                                 |
| `resource_body.fbd` | \~8.5 MB | `SetBodyReshape` basado en pose (no `LegStretch` / `TorsoLong`) |

<Note>
  Los stickers 3D y el remodelado corporal requieren **Pro+**. Free puede probarlos con marca de agua. Consulta [Planes y funciones](./pricing).
</Note>

Descárgalos desde el [GitHub Release](https://github.com/pixpark/facebetter-sdk/releases) (también está en la [página de descargas](https://facebetter.net/es/download)).

## Cómo funciona la búsqueda

El motor busca en el paquete principal más cada paquete extra que añadas. Los archivos se identifican por su **ruta relativa interna**. Mantén las rutas internas únicas entre paquetes: da a cada capacidad su propio prefijo (`tddfa/…`, `body/…`). Si dos paquetes contienen la misma ruta, gana el **último** `AddResourcePack`.

Registra cada `.fbd` con una llamada independiente. **No** concatenes archivos de paquete.

## Escritorio (Windows / Linux / C++)

Coloca `resource_3d.fbd` y/o `resource_body.fbd` junto a `resource.fbd`. El motor carga esos archivos hermanos automáticamente. Aun así puedes llamar a `AddResourcePack` de forma explícita.

```cpp theme={null}
engine->AddResourcePack("resource/resource_3d.fbd");
engine->Set3DSticker("assets/stickers/3d/oculos.fbd");
engine->Clear3DSticker();

engine->AddResourcePack("resource/resource_body.fbd");
engine->SetBodyReshape(BodyReshape::WaistSlim, 0.4f);
```

## iOS / macOS / Android / Flutter / Web

Los SDK móviles y Web **no** incluyen estos paquetes opcionales. Copia u obtén cada archivo en **tu** app y llama a `addResourcePack` (ruta o bytes).

```javascript theme={null}
const pack3d = new Uint8Array(
  await (await fetch('/resource_3d.fbd')).arrayBuffer()
);
engine.addResourcePack(pack3d);
engine.set3DSticker('/stickers/3d/oculos.fbd');

const packBody = new Uint8Array(
  await (await fetch('/resource_body.fbd')).arrayBuffer()
);
engine.addResourcePack(packBody);
engine.setBodyReshape(BodyReshape.WaistSlim, 0.4);
```

Los stickers 2D siguen usando solo `setSticker`. `addResourcePack` es para modelos de capacidad, no para assets de sticker.

<Tip>
  Llama a `addResourcePack` una vez por cada paquete extra después de crear el motor (Web: después de `init()`). Los stickers 3D o las llamadas de remodelado corporal posteriores reutilizan el mismo paquete.
</Tip>
