# Modellformatkonvertierung

> **POST** `/v3/models/convert`

Konvertieren Sie ein 3D-Modell in ein anderes Format.

## Anforderungsparameter

### Anforderungsheader

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
| :-: | :-: | :-: | :-: | :-: |
| Content-Type | Zeichenfolge | Ja | - | `application/json` |
| Authorization | Zeichenfolge | Ja | - | `Bearer {api_key}` |

### Anforderungstext

#### Grundparameter

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
| :-: | :-: | :-: | :-: | :-: |
| input | Zeichenfolge | Ja | - | Modellquelle. Akzeptiert einen task_id, der mit `task_` beginnt, oder einen file_token, der mit `file_` beginnt |
| format | Zeichenfolge | Ja | - | Zielformat. Verfügbare Werte: `GLTF`, `USDZ`, `FBX`, `OBJ`, `STL`, `3MF`. 3MF: 3D mit einer einzigen Farbe. |

#### Mesh-Optionen

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
| :-: | :-: | :-: | :-: | :-: |
| quad | Boolescher Wert | Nein | `false` | Quad-Neuvernetzung |
| force_symmetry | Boolescher Wert | Nein | `false` | Kräftesymmetrie. Nur gültig, wenn `quad` `true` ist |
| face_limit | ganze Zahl | Nein | - | Maximale Polyanzahl. Wenn es weggelassen wird, bleibt die ursprüngliche Anzahl der Gesichter erhalten |
| flatten_bottom | Boolescher Wert | Nein | `false` | Boden abflachen |
| flatten_bottom_threshold | schweben | Nein | `0.01` | Schwellenwert für die Abflachungstiefe |

#### Texturoptionen

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
| :-: | :-: | :-: | :-: | :-: |
| texture_size | ganze Zahl | Nein | `4096` | Größe der diffusen Textur in Pixeln |
| texture_format | Zeichenfolge | Nein | `JPEG` | Texturformat. Verfügbare Werte: `BMP`, `DPX`, `HDR`, `JPEG`, `PNG`, `TARGA`, `TIFF`, `WEBP` |
| bake | Boolescher Wert | Nein | `true` | Backen Sie fortschrittliche Materialien in Basistexturen |
| pack_uv | Boolescher Wert | Nein | `false` | Packen Sie alle UVs in ein einheitliches Layout |
| export_vertex_colors | Boolescher Wert | Nein | `false` | Scheitelpunktfarben einbeziehen. Nur gültig für die Formate `OBJ` und `GLTF` |

#### Exportoptionen

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
| :-: | :-: | :-: | :-: | :-: |
| pivot_to_center_bottom | Boolescher Wert | Nein | `false` | Bewegen Sie den Drehpunkt nach unten in die Mitte |
| scale_factor | schweben | Nein | `1` | Skalierungsfaktor |
| with_animation | Boolescher Wert | Nein | `true` | Beziehen Sie Skelett- und Animationsdaten ein |
| animate_in_place | Boolescher Wert | Nein | `false` | Animation vor Ort |
| part_names | string[] | Nein | - | Namen der zu exportierenden Teile aus mesh/segment-Daten |
| export_orientation | Zeichenfolge | Nein | `+x` | Exportausrichtung. Verfügbare Werte: `-x`, `-y`, `+y` |
| fbx_preset | Zeichenfolge | Nein | `blender` | FBX aus Kompatibilitätsgründen voreingestellt. Verfügbare Werte: `blender`, `3dsmax`, `mixamo` |

## Fordern Sie Beispiele an

### curl

```bash
curl -X POST https://openapi.tripo3d.ai/v3/models/convert \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {api_key}" \
  -d '{
    "input": "task_abc123",
    "format": "FBX",
    "quad": true,
    "face_limit": 8000,
    "texture_size": 2048,
    "texture_format": "PNG",
    "pivot_to_center_bottom": true,
    "fbx_preset": "blender"
  }'
```

### Python

```python
import requests

url = "https://openapi.tripo3d.ai/v3/models/convert"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer {api_key}"
}
payload = {
    "input": "task_abc123",
    "format": "FBX",
    "quad": True,
    "face_limit": 8000,
    "texture_size": 2048,
    "texture_format": "PNG",
    "pivot_to_center_bottom": True,
    "fbx_preset": "blender"
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())
```

### JavaScript

```javascript
const url = "https://openapi.tripo3d.ai/v3/models/convert";

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer {api_key}"
  },
  body: JSON.stringify({
    input: "task_abc123",
    format: "FBX",
    quad: true,
    face_limit: 8000,
    texture_size: 2048,
    texture_format: "PNG",
    pivot_to_center_bottom: true,
    fbx_preset: "blender"
  })
});

const data = await response.json();
console.log(data);
```

## Antwort

### Erfolgreiche Antwort

```json
{
  "code": 0,
  "data": {
    "task_id": "task_def456"
  }
}
```

### Antwortfelder

| Parameter | Typ | Beschreibung |
| :-: | :-: | :-: |
| code | ganze Zahl | Statuscode. `0` zeigt Erfolg an |
| data.task_id | Zeichenfolge | Eindeutiger Aufgabenbezeichner, der zum Abfragen des Generierungsfortschritts und der Ergebnisse verwendet wird |

## Fehlercodes

| HTTP Statuscode | Fehlercode | Beschreibung | Empfehlung |
| :-: | :-: | :-: | :-: |
| 429 | 2000 | Generationslimit überschritten | Reduzieren Sie die Anforderungsrate und versuchen Sie es später erneut |
| 400 | 2002 | Nicht unterstützte Anforderungsparameter | Überprüfen Sie die Parameternamen und Wertebereiche des Anforderungshauptteils |
| 400 | 2006 | Ungültiger Aufgabentyp der Eingabequelle | Bestätigen Sie, dass der Aufgabentyp für `task_id` korrekt ist |
| 400 | 2007 | Die Quellaufgabe wurde nicht erfolgreich abgeschlossen | Warten Sie, bis die Quellaufgabe abgeschlossen ist, bevor Sie mit der Konvertierung beginnen |
| 403 | 2010 | Unzureichende Credits | Guthaben aufladen und erneut versuchen |
