# Preparing your 3D model

Before you use our [model processing API](/anything-world/api/rest-api-references.md#ai-model-processing), it's important to make sure that your 3D model has a valid format and is under some constraints to guarantee a successful processing.

Please check the model processing constraints listed [here](https://app.anything.world/animation-rigging/system-constraints), paying special attention to the following points:

* The model <mark style="background-color:yellow;">must be rotated in a very specific way</mark> for the system to work. For instance, when opening your model in Blender, the character should be facing -Y axis, with its up vector being +Z; in Maya, the character should be facing the +Z axis, with its up vector being +Y:

<figure><img src="/files/7wzP0Evc7oTcwLpNctUR" alt=""><figcaption><p>Rotation guideline</p></figcaption></figure>

* The <mark style="background-color:yellow;">model type needs to be chosen with specific criteria</mark>. Our AI pipeline tries its best to choose the right type, but it really helps if you use really common/general names for your models, for example:
  * **Person**: `"man"`, `“woman”`, `"child"` or `"human"`
  * **Animal**: `“cat”` instead of `“bobcat”`, or `"ant"` instead of `"fire ant"`, or `"dog"` instead of `"golden retriever"`
  * **Fictional two-legged character**: `"character"` if it has humanoid looks, `"cartoon character"` if cartoony
  * **Fictional four-legged character**: the species of a similar animal, such as `"horse"` instead of `"unicorn"`. If you can't find a similar animal, use `"quadruped"`
  * **Object or plant**: `"box"` instead of `"storage box"`, or simply `"tree"` instead of `"palm tree"`
* The model must be in one of the already available <mark style="background-color:yellow;">categories</mark>. Please check the supported ones in [this page](https://app.anything.world/animation-rigging/system-constraints) (on the bottom). Make sure to match all the other constraints listed in that page.
* The <mark style="background-color:yellow;">symmetricity</mark> of the model needs to be specified accurately, with minimal asymmetries being tolerated as symmetric. It's important to note that massive asymmetries have poorer support.
* Files should have max 30 MB and 100 MB total limit per upload. We only process one mesh at a time, but feel free to upload supplemental files.
* Your mesh file should be one of those formats: `.obj`,  `.fbx`, `.dae`, `.gltf` or `.glb`. You can also send all the files compressed in a single `.zip` file (for that, make sure to place all files flat: with no subfolders, inside your `.zip` file).
* If your model has textures, please upload texture files (`.png`, `.jpg`, `.jpeg` or `.tga`), not just the mesh. Double-check that the texture shows up as expected when imported to 3D software like Blender, otherwise you may need to fix the mesh-texture binding. If you use `.obj` for the mesh, also add the `.mtl` file.
* The model must have fewer than <mark style="background-color:yellow;">100k vertices</mark>. If the vertex count exceeds <mark style="background-color:yellow;">20k vertices</mark>, it will be decimated for now (this limit will increase in the future).

## What to expect as output

Three types of processing can occur depending on the nature of your 3D model:

* Model is a <mark style="background-color:yellow;">deformable category model</mark> (e.g. a living creature): it can be rigged and animated. You should expect the different animations being available as `.fbx`, `.glb`, `.gltf` and `.dae` formats;
* Model is a <mark style="background-color:yellow;">vehicle</mark>: you'll get their parts split in separate sub-meshes so that you can arrange and move them as you decide in a 3D software. The separated parts will be available as `.fbx`, `.glb`, `.gltf` and `.dae` formats;
* Model is <mark style="background-color:yellow;">static</mark>: the model remains static, but you can get additional formats other than the one you uploaded, like `.fbx`, `.glb`, `.gltf` and `.dae`.

Note that we provide `.gltf` files with its texture split in independent `.bin` file and also embedded in the `.gltf` file itself.

By default, our API will generate all formats (`.fbx`, `.glb,` `.gltf` and `.dae`). However, you can speed up the process by only requiring it to generate the .glb and .fbx formats. Please [check here](/anything-world/api/rest-api-references.md#get-a-model-state-processed-by-the-ai-pipeline) how to do use the stage parameter to speed up your requests, if your use case permits.

{% hint style="success" %}
For additional visual examples on what is supported and what not, we also have a great guide for how to[ get the best possible results for your model](/anything-world/quickstart/animate-anything-quickstart/getting-the-best-possible-results-for-your-model.md)!
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://anything-world.gitbook.io/anything-world/api/preparing-your-3d-model.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
