Como usar captura de movimento no formato SMPL no QuickMagic
O QuickMagic agora oferece suporte ao SMPL como formato de saída para captura de movimento por IA. Envie seu vídeo, selecione o formato SMPL e obtenha dados de pose humana prontos para produção em um arquivo npz. Este guia mostra a captura e o uso, passo a passo.
Visão geral: saída SMPL já disponível
Temos o prazer de anunciar que a captura de movimento no formato SMPL já está disponível no QuickMagic. Ao capturar movimento a partir de um vídeo, agora você pode selecionar SMPL como formato de saída, junto com nossas opções de exportação existentes.
O SMPL (Skinned Multi-Person Linear Model) é o modelo paramétrico de corpo humano 3D mais amplamente utilizado em pesquisa e na indústria. Escolher a saída SMPL significa que o movimento capturado é entregue como parâmetros SMPL padrão — prontos para pesquisa em visão computacional, pipelines de reconstrução 3D, desenvolvimento de jogos e qualquer fluxo de trabalho construído sobre o ecossistema SMPL.
O resultado capturado é entregue como um único arquivo .npz contendo parâmetros SMPL de pose e forma por quadro.
Como capturar: obtenha seu arquivo SMPL
- Envie seu vídeo. Na página de Geração de Movimento, envie o vídeo do qual você deseja capturar o movimento.
- Selecione o formato SMPL. Nas opções de formato de saída, escolha SMPL.


- Envie a tarefa e aguarde o processamento. Nossa IA resolve o movimento corporal a partir do seu vídeo e o converte em parâmetros SMPL padrão.
- Pré-visualize o movimento. Verifique o resultado capturado no visualizador.
- Baixe o arquivo npz. Se o resultado atender às suas expectativas, baixe o arquivo .npz para sua máquina local.
O que há dentro do arquivo npz
O arquivo npz que você baixa contém quatro arrays NumPy — o conjunto padrão de parâmetros SMPL:
| Chave | Descrição | Shape |
|---|---|---|
global_orient | Orientação global do corpo (eixo-ângulo) | (frames, 3) |
body_pose | Rotações das articulações do corpo — 23 articulações em formato eixo-ângulo | (frames, 69) |
transl | Translação da raiz no espaço do mundo (metros) | (frames, 3) |
betas | Parâmetros de forma do corpo | (frames, 10) |
numpy.load() — nenhuma conversão de arquivo é necessária. Como usar seu arquivo npz do SMPL
Etapa 1: baixe o modelo SMPL
- Registre-se em https://smpl.is.tue.mpg.de/register.php e aceite o contrato de licença (gratuito para pesquisa acadêmica).
- Faça login com sua conta. O acesso pode exigir confirmação por e-mail e não é ativado instantaneamente.
- Acesse a página de download: https://smpl.is.tue.mpg.de/download.php (ou clique em "Downloads" no menu superior).
- Baixe SMPL for Python e descompacte. Você encontrará:
SMPL_NEUTRAL.pkl(neutro quanto ao gênero — este já é suficiente)SMPL_MALE.pkl/SMPL_FEMALE.pkl(opcionais)
Etapa 2: configure o ambiente Python
Depois de instalar o Anaconda, abra um terminal e execute:
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'. Se o chumpy entrar em conflito com uma versão mais recente do NumPy, execute pip install "numpy<1.24" primeiro e depois instale o chumpy. Etapa 3: organize sua pasta
your_work_folder/
├── your_mocap.npz <- the npz file downloaded from QuickMagic
├── smpl_models/
│ └── smpl/
│ └── SMPL_NEUTRAL.pkl <- the model from Step 1
└── run_smpl.py <- the script from Step 4Etapa 4: execute o script e gere o corpo 3D
Crie um arquivo chamado run_smpl.py com o seguinte conteúdo:
import numpy as np
import torch
import smplx
import trimesh
import os
# 1. Load your npz data
data = np.load("your_mocap.npz")
num_frames = len(data["transl"])
print(f"Total frames: {num_frames}")
# 2. Load the SMPL model
model = smplx.create(
model_path="smpl_models/",
model_type="smpl",
gender="neutral",
batch_size=num_frames
)
# 3. Feed in the pose parameters to compute the body mesh
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 = model.faces
# 4. Export each frame as an obj file
os.makedirs("output_meshes", exist_ok=True)
for i in range(num_frames):
mesh = trimesh.Trimesh(vertices=vertices[i], faces=faces)
mesh.export(f"output_meshes/frame_{i:04d}.obj")
print("Done! All frames exported to the output_meshes/ folder.")Em seguida, execute:
python run_smpl.pyQuando terminar, a pasta output_meshes/ conterá um arquivo obj por quadro.
Etapa 5: visualize os resultados 3D
- MeshLab (gratuito): clique duas vezes em qualquer arquivo obj para visualizar um único quadro.
- Blender (gratuito): File → Import → Wavefront (.obj); ative a importação de sequência para carregar todos os quadros e reproduzir a animação.
- Windows 3D Viewer: clique duas vezes diretamente em um arquivo obj.
Perguntas frequentes
Preciso converter o arquivo npz para outro formato (por exemplo, pkl) primeiro?
Não. O arquivo npz é lido diretamente com numpy.load(). Nenhuma conversão é necessária.
Preciso treinar o SMPL por conta própria?
Não. O SMPL é um modelo corporal paramétrico pré-treinado. Você simplesmente carrega o arquivo de modelo oficial e insere os parâmetros do seu arquivo npz para gerar a malha 3D do corpo.
Por que recebo "ModuleNotFoundError: No module named 'chumpy'"?
Os arquivos oficiais de modelo .pkl do SMPL dependem da biblioteca chumpy. Execute pip install chumpy. Se houver conflito com sua versão do NumPy, execute pip install "numpy<1.24" primeiro e depois instale o chumpy.
Por que recebo "ModuleNotFoundError: No module named 'smplx'"?
Você esqueceu de ativar o ambiente. Execute conda activate smpl_env primeiro.
A posição ou a orientação do corpo parece estranha. Há algo errado?
Normalmente não. A posição e a orientação são totalmente determinadas pelos parâmetros transl e global_orient, e a unidade é metros. Esse é o comportamento esperado.



