So verwendest du Motion Capture im SMPL-Format in QuickMagic
QuickMagic unterstützt jetzt SMPL als Ausgabeformat für KI-Motion-Capture. Lade dein Video hoch, wähle das SMPL-Format und erhalte produktionsreife Daten zur menschlichen Pose als npz-Datei. Diese Anleitung führt dich Schritt für Schritt durch die Erfassung und die Nutzung.
Überblick: SMPL-Ausgabe jetzt verfügbar
Wir freuen uns, bekannt geben zu können, dass Motion Capture im SMPL-Format jetzt auf QuickMagic verfügbar ist. Wenn du Bewegung aus einem Video erfasst, kannst du jetzt SMPL als Ausgabeformat wählen – neben unseren bestehenden Exportoptionen.
SMPL (Skinned Multi-Person Linear Model) ist das am weitesten verbreitete parametrische 3D-Körpermodell in Forschung und Industrie. Wenn du die SMPL-Ausgabe wählst, wird deine erfasste Bewegung als Standard-SMPL-Parameter geliefert – bereit für Computer-Vision-Forschung, 3D-Rekonstruktions-Pipelines, Spieleentwicklung und jeden Workflow, der auf dem SMPL-Ökosystem aufbaut.
Dein erfasstes Ergebnis wird als einzelne .npz-Datei geliefert, die SMPL-Pose- und Shape-Parameter pro Frame enthält.
So erfasst du: Deine SMPL-Datei erhalten
- Lade dein Video hoch. Lade auf der Seite Motion Generation das Video hoch, aus dem du die Bewegung erfassen möchtest.
- Wähle das SMPL-Format. Wähle in den Optionen für das Ausgabeformat SMPL.


- Reiche die Aufgabe ein und warte auf die Verarbeitung. Unsere KI löst die Körperbewegung aus deinem Video und konvertiert sie in Standard-SMPL-Parameter.
- Sieh dir die Bewegung in der Vorschau an. Prüfe das erfasste Ergebnis im Viewer.
- Lade die npz-Datei herunter. Wenn das Ergebnis deinen Erwartungen entspricht, lade die .npz-Datei auf deinen Rechner herunter.
Was in der npz-Datei enthalten ist
Die npz-Datei, die du herunterlädst, enthält vier NumPy-Arrays – den Standard-SMPL-Parametersatz:
| Key | Beschreibung | Shape |
|---|---|---|
global_orient | Globale Körperausrichtung (Achsen-Winkel) | (frames, 3) |
body_pose | Rotationen der Körpergelenke – 23 Gelenke in Achsen-Winkel-Form | (frames, 69) |
transl | Wurzeltranslation im Weltkoordinatensystem (Meter) | (frames, 3) |
betas | Parameter der Körperform | (frames, 10) |
numpy.load() gelesen – eine Dateikonvertierung ist nicht erforderlich. So verwendest du deine SMPL-npz-Datei
Schritt 1: Das SMPL-Modell herunterladen
- Registriere dich unter https://smpl.is.tue.mpg.de/register.php und stimme der Lizenzvereinbarung zu (für akademische Forschung kostenlos).
- Melde dich mit deinem Konto an. Der Zugang kann eine E-Mail-Bestätigung erfordern und wird nicht sofort aktiviert.
- Gehe zur Downloadseite: https://smpl.is.tue.mpg.de/download.php (oder klicke im oberen Menü auf „Downloads“).
- Lade SMPL for Python herunter und entpacke es. Du findest:
SMPL_NEUTRAL.pkl(geschlechtsneutral – dieses reicht aus)SMPL_MALE.pkl/SMPL_FEMALE.pkl(optional)
Schritt 2: Die Python-Umgebung einrichten
Nachdem du Anaconda installiert hast, öffne ein Terminal und führe Folgendes aus:
conda create -n smpl_env python=3.9 -y
conda activate smpl_env
pip install torch
pip install smplx
pip install trimesh chumpyModuleNotFoundError: No module named 'chumpy'. Wenn chumpy mit einer neueren NumPy-Version in Konflikt gerät, führe zuerst pip install "numpy<1.24" aus und installiere dann chumpy. Schritt 3: Deinen Ordner organisieren
your_work_folder/
├── your_mocap.npz <- die npz-Datei, die von QuickMagic heruntergeladen wurde
├── smpl_models/
│ └── smpl/
│ └── SMPL_NEUTRAL.pkl <- das Modell aus Schritt 1
└── run_smpl.py <- das Skript aus Schritt 4Schritt 4: Das Skript ausführen und den 3D-Körper erzeugen
Erstelle eine Datei namens run_smpl.py mit folgendem Inhalt:
import numpy as np
import torch
import smplx
import trimesh
import os
# 1. Lade deine npz-Daten
data = np.load("your_mocap.npz")
num_frames = len(data["transl"])
print(f"Total frames: {num_frames}")
# 2. Lade das SMPL-Modell
model = smplx.create(
model_path="smpl_models/",
model_type="smpl",
gender="neutral",
batch_size=num_frames
)
# 3. Speise die Pose-Parameter ein, um das Körper-Mesh zu berechnen
output = model(
global_orient=torch.tensor(data["global_orient"], dtype=torch.float32),
body_pose=torch.tensor(data["body_pose"], dtype=torch.float32),
transl=torch.tensor(data["transl"], dtype=torch.float32),
betas=torch.tensor(data["betas"], dtype=torch.float32),
)
vertices = output.vertices.detach().numpy() # (frames, 6890, 3)
faces


