# 05 — Visión de vídeo con Wan 2.2

Estado: **visión, nada implementado.** No hay código. Esto es lo que sabemos
sacado de `_legacy/WaifuStudio/` y de la investigación del 07-10-2026.

## Por qué Wan y no el otro motor

WaifuStudio trae **dos** motores de vídeo. Solo uno nos interesa:

| | MiniMax H3 (su motor) | **Wan 2.2 (legado en el repo)** |
|---|---|---|
| Pesos | INT8, checkpoint Ref2VA de ~20,9 GB | **GGUF Q4_K_S** |
| Audio | Sí (VAE de audio aparte) | No |
| VRAM | El repo pide 12 GB | **Caben en 8 GB** |
| VDN | Sí (8 pasos) | No, 20 pasos |

La razón es simple: nosotros tenemos **8 GB**. H3 no entra. Los GGUF Q4 de Wan
sí.

## Los workflows concretos

Están en `_legacy/WaifuStudio/workflows/`, formato API de ComfyUI (son JSON que
se mandan tal cual a `/prompt`, sin editar):

- `wan22_i2v_432x768.api.json` — imagen inicial → vídeo
- `wan22_flf2v_432x768.api.json` — imagen inicial + final → vídeo

### Los dos motores

```
UnetLoaderGGUF  Wan2.2-I2V-A14B-HighNoise-Q4_K_S.gguf
UnetLoaderGGUF  Wan2.2-I2V-A14B-LowNoise-Q4_K_S.gguf
CLIPLoader      umt5_xxl_fp8_e4m3fn_scaled.safetensors
VAELoader       wan_2.1_vae.safetensors
ModelSamplingSD3  ×2
WanImageToVideo / WanFirstLastFrameToVideo   432×768, 81 frames
KSamplerAdvanced  20 pasos ×2   (uno por nivel de ruido)
CreateVideo → SaveVideo   16 fps
```

Dos UNet porque Wan 2.2 es un modelo de dos fases: **alto ruido** monta el
movimiento y el aspecto general, **bajo ruido** refina. Los dos se muestrean 20
pasos. `ModelSamplingSD3` es el ajuste deschedule específico de Wan.

### Nodos que hacen falta

| Nodo | De dónde sale |
|---|---|
| `UnetLoaderGGUF` | ComfyUI-GGUF (fork **leejet**, no el original) |
| `WanImageToVideo`, `WanFirstLastFrameToVideo` | Nodos oficiales de Wan en ComfyUI |
| `ModelSamplingSD3` | Nodos oficiales de Wan |
| `CreateVideo` / `SaveVideo` | Nodos de vídeo de ComfyUI |

## Por qué NO migramos de motor

WaifuStudio usa **Anima 2.9B** para imagen. Nosotros usamos
`waiIllustriousSDXL_v170`. Son familias distintas, con encoder, VAE y sampler
propios: **los LoRA de SDXL no funcionan sobre Anima**. Adoptarlo sería
empezar de cero el catálogo de 216 personajes.

**ComfyUI y Forge pueden convivir.** Se pueden lanzar en puertos distintos y
nuestro pipeline sigue hablando con Forge por `/sdapi/v1` sin cambios. El vídeo
sería una isla aparte.

## El formato de prompt de vídeo (lo copiable)

El repo de WaifuStudio usa un contrato de **tres bloques obligatorios** para el
vídeo, y su validador **rechaza el prompt si falta uno**:

```
integrated_multimodal_description: <sujeto, vestuario, entorno, luz, cámara,
                                    y movimiento continuo sin cortes>
overall_soundscape: <ambiente y foley; diálogo solo si aplica>
non_diegetic_music: <música o None>
```

Copiar el **concepto**, no el formato: un prompt de vídeo con apartados
obligatorios. Evita que el modelo se invente la estructura y hace que el
prompt sea comparable entre sí.

Ojo: ese contrato es de **H3**, no de Wan. Para Wan se aplica el criterio
—apartados, no texto corrido— pero las etiquetas concretas son distintas.

## Ruta sugerida cuando se implemente

1. ComfyUI en su puerto, con los nodos Wan y ComfyUI-GGUF (leejet).
2. Descargar los dos GGUF Q4 + el CLIP `umt5_xxl_fp8` + el VAE `wan_2.1`.
3. Probar **a mano** desde la UI de ComfyUI con el `wan22_i2v` para saber si la
   tarjeta aguanta antes de escribir nada.
4. Solo entonces escribir un script. `Engine/` debería hablar con
   `/sdapi/v1` de Forge para imagen, y aquí sería un cliente aparte de ComfyUI
   (`/prompt` + `/history`), **no** el mismo cliente.

## Descartado de este repo

- **MiniMax H3 / VDN-H3**: 12 GB de VRAM, checkpoint de 20 GB. No entra.
- **El editor con Qwen-Image 2.1** y el **OC Maker con entrenador kohya**: útiles
  en teoría, pero atados al modelo Anima.
- **La app completa**: es una interfaz para Anima. Sin Anima no sirve.