> ## 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.

# Pacotes de recursos opcionais

> Baixe pacotes extras de capacidade, como resource_3d.fbd e resource_body.fbd, e registre-os com AddResourcePack

O SDK inclui um pacote de runtime principal `resource.fbd` (\~7 MB) para beleza 2D, maquiagem, filtros e adesivos 2D.

Algumas capacidades precisam de um pacote **opcional**. Esses arquivos **não** estão dentro do SDK iOS / Android / Web. Baixe-os na integração e registre cada um com `AddResourcePack` / `addResourcePack` **antes** do setter correspondente.

| Pacote              | Tamanho  | Obrigatório antes de                                              |
| ------------------- | -------- | ----------------------------------------------------------------- |
| `resource_3d.fbd`   | \~9 MB   | `Set3DSticker` / `set3DSticker`                                   |
| `resource_body.fbd` | \~8.5 MB | `SetBodyReshape` baseado em pose (não `LegStretch` / `TorsoLong`) |

<Note>
  Adesivos 3D e remodelagem corporal exigem **Pro+**. O Free pode testar com marca d'água. Veja [Planos e recursos](./pricing).
</Note>

Baixe-os no [GitHub Release](https://github.com/pixpark/facebetter-sdk/releases) (também espelhado na [página de downloads](https://facebetter.net/pt-BR/download)).

## Como funciona a busca

O mecanismo pesquisa o pacote principal mais todos os pacotes extras que você adicionar. Os arquivos são indexados pelo **caminho relativo interno**. Mantenha os caminhos internos únicos entre os pacotes — dê a cada capacidade o próprio prefixo (`tddfa/…`, `body/…`). Se dois pacotes contiverem o mesmo caminho, o **último** `AddResourcePack` prevalece.

Registre cada `.fbd` com uma chamada separada. **Não** concatene os arquivos dos pacotes.

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

Coloque `resource_3d.fbd` e/ou `resource_body.fbd` ao lado de `resource.fbd`. O mecanismo carrega esses arquivos irmãos automaticamente. Você ainda pode chamar `AddResourcePack` explicitamente.

```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

Os SDKs móveis e Web **não** embutem esses pacotes opcionais. Copie ou busque cada arquivo **no seu app** e chame `addResourcePack` (caminho ou 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);
```

Adesivos 2D continuam usando apenas `setSticker`. `addResourcePack` é para modelos de capacidade, não para assets de adesivo.

<Tip>
  Chame `addResourcePack` uma vez por pacote extra depois de criar o mecanismo (Web: após `init()`). Adesivos 3D ou chamadas de remodelagem corporal posteriores reutilizam o mesmo pacote.
</Tip>
