# Animations-Retargeting

> **POST** `/v3/animations/retarget`

Wenden Sie eine voreingestellte Animation auf ein manipuliertes 3D-Modell an.

## Anforderungsparameter

### Anforderungsheader

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

### Anforderungstext

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
| :-: | :-: | :-: | :-: | :-: |
| input | Zeichenfolge | Ja | — | task_id des manipulierten Modells, beginnend mit `task_` |
| animation | Zeichenfolge | Bedingt erforderlich | — | Einzelne voreingestellte Animationskennung. Gegenseitig ausschließend mit `animations`. Die verfügbaren Werte finden Sie in der Liste der voreingestellten Animationen unten |
| animations | string[] | Bedingt erforderlich | — | Liste mehrerer voreingestellter Animationskennungen. Gegenseitig ausschließend mit `animation` |
| out_format | Zeichenfolge | Nein | `glb` | Ausgabeformat. Mögliche Werte: `glb`, `fbx` |
| bake_animation | Boolescher Wert | Nein | `true` | Backen Sie die Animation in das Modell ein. Nur wirksam für die `glb`-Ausgabe |
| export_with_geometry | Boolescher Wert | Nein | `true` | Export mit enthaltener Geometrie |
| animate_in_place | Boolescher Wert | Nein | `false` | Spielen Sie die Animation an Ort und Stelle ohne Verschiebung ab |

### Voreingestellte Animationsliste

Die verfügbaren Voreinstellungen hängen von der **Rig-Modellversion** ab, die im Upstream-Schritt `POST /v3/animations/rig` verwendet wird.

#### Rig v2.0 / v2.5 – Alle Rig-Typen

| Animationskennung | Beschreibung |
| :-: | :-: |
| `preset:idle` | Leerlauf |
| `preset:walk` | Gehen |
| `preset:run` | Lauf |
| `preset:dive` | Tauchen |
| `preset:climb` | Klettern |
| `preset:jump` | Springe |
| `preset:slash` | Schrägstrich |
| `preset:shoot` | Schießen |
| `preset:hurt` | Verletzt |
| `preset:fall` | Herbst |
| `preset:turn` | Drehen |
| `preset:quadruped:walk` | Vierfüßlergang |
| `preset:hexapod:walk` | Hexapod-Spaziergang |
| `preset:octopod:walk` | Oktopoden-Spaziergang |
| `preset:serpentine:march` | Serpentinenartige Fortbewegung |
| `preset:aquatic:march` | Fortbewegung im Wasser |

#### Rig v1.0 – Nur Biped (über 90 Voreinstellungen)

Nur verfügbar, wenn die Upstream-Rig-Aufgabe `v1.0-20240301` verwendet. Behandelt Emotionen, Sport, Kampf, Tanz und alltägliche Aktionen.

<Details>
<summary><strong>Klicken Sie hier, um die vollständige Biped-Voreinstellungsliste zu erweitern</strong></summary>

| Animationskennung | Kategorie |
| :-: | :-: |
| `preset:biped:idle` | Einfach |
| `preset:biped:walk` | Einfach |
| `preset:biped:run` | Einfach |
| `preset:biped:run_upstairs` | Einfach |
| `preset:biped:turn` | Einfach |
| `preset:biped:jump` | Einfach |
| `preset:biped:jump_down` | Einfach |
| `preset:biped:jump_rope_01` | Einfach |
| `preset:biped:jump_rope_02` | Einfach |
| `preset:biped:fall` | Einfach |
| `preset:biped:climb` | Einfach |
| `preset:biped:dive` | Einfach |
| `preset:biped:swim` | Einfach |
| `preset:biped:surf` | Einfach |
| `preset:biped:flip` | Einfach |
| `preset:biped:sit` | Einfach |
| `preset:biped:standing_relax` | Einfach |
| `preset:biped:look_around` | Einfach |
| `preset:biped:wait` | Einfach |
| `preset:biped:swagger` | Einfach |
| `preset:biped:dance_01` | Tanz |
| `preset:biped:dance_02` | Tanz |
| `preset:biped:dance_03` | Tanz |
| `preset:biped:dance_04` | Tanz |
| `preset:biped:dance_05` | Tanz |
| `preset:biped:dance_06` | Tanz |
| `preset:biped:freaky` | Tanz |
| `preset:biped:sing_01` | Leistung |
| `preset:biped:sing_02` | Leistung |
| `preset:biped:sing_03` | Leistung |
| `preset:biped:sing_04` | Leistung |
| `preset:biped:cheer` | Leistung |
| `preset:biped:clap` | Emotion |
| `preset:biped:bow` | Emotion |
| `preset:biped:greet_01` | Emotion |
| `preset:biped:greet_02` | Emotion |
| `preset:biped:greet_03` | Emotion |
| `preset:biped:greet_04` | Emotion |
| `preset:biped:wave_goodbye_01` | Emotion |
| `preset:biped:wave_goodbye_02` | Emotion |
| `preset:biped:agree` | Emotion |
| `preset:biped:heart_pose` | Emotion |
| `preset:biped:hug` | Emotion |
| `preset:biped:fold_arms` | Emotion |
| `preset:biped:laugh_01` | Emotion |
| `preset:biped:laugh_02` | Emotion |
| `preset:biped:cry` | Emotion |
| `preset:biped:sob` | Emotion |
| `preset:biped:afraid` | Emotion |
| `preset:biped:frightened` | Emotion |
| `preset:biped:scared_01` | Emotion |
| `preset:biped:scared_02` | Emotion |
| `preset:biped:angry_01` | Emotion |
| `preset:biped:angry_02` | Emotion |
| `preset:biped:angry_03` | Emotion |
| `preset:biped:depressed` | Emotion |
| `preset:biped:frustrated_01` | Emotion |
| `preset:biped:frustrated_02` | Emotion |
| `preset:biped:complain_01` | Emotion |
| `preset:biped:complain_02` | Emotion |
| `preset:biped:victory_celebration` | Emotion |
| `preset:biped:defeat_02` | Emotion |
| `preset:biped:defeat_03` | Emotion |
| `preset:biped:scratch` | Täglich |
| `preset:biped:make_a_call_01` | Täglich |
| `preset:biped:make_a_call_02` | Täglich |
| `preset:biped:play_mobile_game` | Täglich |
| `preset:biped:play_video_game` | Täglich |
| `preset:biped:dig` | Täglich |
| `preset:biped:chop` | Täglich |
| `preset:biped:shovel` | Täglich |
| `preset:biped:lift_heavy` | Täglich |
| `preset:biped:warm_up` | Sport |
| `preset:biped:press-up` | Sport |
| `preset:biped:cross_body_crunch` | Sport |
| `preset:biped:basketball_shot` | Sport |
| `preset:biped:crossover_dribble` | Sport |
| `preset:biped:dribble` | Sport |
| `preset:biped:pitch_baseball` | Sport |
| `preset:biped:golf` | Sport |
| `preset:biped:volleyball` | Sport |
| `preset:biped:football_catch` | Sport |
| `preset:biped:football_save` | Sport |
| `preset:biped:football_pass` | Sport |
| `preset:biped:box_01` | Kampf |
| `preset:biped:box_02` | Kampf |
| `preset:biped:box_03` | Kampf |
| `preset:biped:front_kick_01` | Kampf |
| `preset:biped:front_kick_02` | Kampf |
| `preset:biped:slash` | Kampf |
| `preset:biped:shoot` | Kampf |
| `preset:biped:fire` | Kampf |
| `preset:biped:cast_a_spell` | Kampf |
| `preset:biped:hurt` | Kampf |
| `preset:biped:hit_to_body_01` | Kampf |
| `preset:biped:hit_to_body_02` | Kampf |
| `preset:biped:hit_to_head` | Kampf |
| `preset:biped:hit_to_side` | Kampf |
| `preset:biped:hit_to_stomach` | Kampf |
| `preset:biped:flee_01` | Kampf |
| `preset:biped:flee_02` | Kampf |

</details>

## Fordern Sie Beispiele an

### curl

```bash
curl -X POST https://openapi.tripo3d.ai/v3/animations/retarget \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {api_key}" \
  -d '{
    "input": "task_abc123",
    "animation": "preset:walk",
    "out_format": "glb",
    "bake_animation": true,
    "animate_in_place": false
  }'
```

### Python

```python
import requests

url = "https://openapi.tripo3d.ai/v3/animations/retarget"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer {api_key}"
}
payload = {
    "input": "task_abc123",
    "animation": "preset:walk",
    "out_format": "glb",
    "bake_animation": True,
    "animate_in_place": False
}

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

### JavaScript

```javascript
const url = "https://openapi.tripo3d.ai/v3/animations/retarget";

const response = await fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer {api_key}"
  },
  body: JSON.stringify({
    input: "task_abc123",
    animation: "preset:walk",
    out_format: "glb",
    bake_animation: true,
    animate_in_place: false
  })
});

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 | Eindeutige Aufgabenkennung, die zum Abfragen des Animations-Retargeting-Fortschritts und -Ergebnisses 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ützter Anforderungsparameter | Überprüfen Sie die Parameternamen und Wertebereiche des Anforderungshauptteils |
| 400 | 2006 | Ungültiger Aufgabentyp der Eingabequelle | Bestätigen Sie, dass der task_id einem manipulierten Modell entspricht |
| 400 | 2007 | Der Status der Quellaufgabe ist nicht erfolgreich | Warten Sie, bis die Quellaufgabe abgeschlossen ist, bevor Sie mit dem Animations-Retargeting beginnen |
| 403 | 2010 | Unzureichende Credits | Guthaben aufladen und erneut versuchen |
