# Preparing your 3D model

Before you use our [model processing API](https://anything-world.gitbook.io/anything-world/rest-api-references#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="https://588284853-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_f9MEtTx5q1bKIGvl-%2Fuploads%2Ftrq0mhKeCVeNOr2LLgn0%2FScreenshot%202024-01-19%20at%2010.13.33%20AM.png?alt=media&#x26;token=443c8133-d4dd-43e5-aacc-d82e3be3cbc7" 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](https://anything-world.gitbook.io/anything-world/rest-api-references#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](https://anything-world.gitbook.io/anything-world/quickstart/animate-anything-quickstart/getting-the-best-possible-results-for-your-model)!
{% endhint %}
