Solución de problemas
Qué hacer cuando una escena no se abre, no se ve como esperas o no se exporta
Los problemas más habituales, agrupados por el momento en que aparecen. Para cada uno se indica la causa y qué hacer. Antes de nada, ejecuta gaanim check <script-o-proyecto>: ejecuta la escena sin ventana y muestra el error de Python con su línea.
Instalación y Python
Los errores al arrancar (Python 3.14 was not found, una versión de Python incorrecta, python3.dll no encontrado, authoring environment not ready) están explicados en la sección de problemas de Instalación.
python main.pyfalla: es lo esperado. El paquete de Python solo contiene los tipos para tu editor; las escenas se ejecutan siempre congaanim main.pyogaanim ..- Mi editor no autocompleta la API: configura como intérprete el
.venvdel proyecto, dondegaanim initinstala el paquete de autoría.
Abrir la escena
gaanim check: could not load project: revisa queentryengaanim.tomlsea una ruta relativa a un archivo que exista dentro del proyecto.TypeErroral crearScene(1920, 1080)oScene(1280, 720): las escenas ya no se definen en píxeles. UsaScene(frame=(16, 9))y elige la resolución al exportar (ver Novedades).AttributeErrorconscene.circle,scene.equationy similares: las fábricas viven en capacidades:scene.geometry.circle,scene.text.equation… La tabla de equivalencias está en Novedades.- No se encuentra una imagen, un SVG o un modelo: las rutas relativas se buscan en el directorio de trabajo, en la carpeta
assets/del script y en la carpeta del script, salvo que cargues el proyecto conscene.assets.load_project()(busca elgaanim.tomlmás cercano, desde la carpeta del script hacia arriba) o fijes una carpeta absoluta conscene.assets.assets_dir(str(Path(__file__).parent / "assets")). script did not submit a scene: el script debe terminar llamando ascene.render().
La escena no se ve como esperas
- Un objeto no aparece: las líneas reactivas, los trazos (
traced_path), los objetos confollowy los puntos sobre curvas empiezan ocultos; añade sufade_inocreatea unscene.play. - Una animación no hace nada:
.animatesolo describe el cambio. Pásalo ascene.play([...]). - Dos animaciones del mismo objeto chocan: no puedes animar el mismo canal (por ejemplo, la posición) dos veces a la vez. El error nombra el objeto y las dos animaciones; combínalas en una o ponlas en secuencia.
- Los objetos son enormes o diminutos: las medidas están en unidades lógicas, no en píxeles. El fotograma mide 16 × 9; un círculo de radio
1ocupa una octava parte del ancho. Un SVG se importa a 100 px por unidad (uno de 300 px mide 3 unidades); ajústalo conscale_to. - Todo sale en blanco: una escena creada con
Scene(theme=None)(o trasscene.canvas.set_theme(None)) no tiene tema: el fondo es blanco y el texto, las formas y los ejes sin color propio también son blancos. Quitatheme=Nonepara volver al tematechnicalpredeterminado, elige otro tema o pon un fondo que contraste;gaanim checklo avisa. - Mis objetos tienen otro color del que esperaba: las escenas usan por defecto el tema
technical, que rellena las formas sin color con el acento y pinta texto y ejes en gris claro. Un.fill(...),.stroke(...)ocolor=explícito siempre gana al tema. - Un texto o una tarjeta se salen de su sitio dentro de un layout: no uses
move_to()en objetos dentro de un layout; expresa la intención conalign,offseto una restricción (ver Layout). - El movimiento cambia al saltar a otro instante: alguna función de
computed,readoutoadd_updater_fnguarda estado o lee el reloj. Consulta las reglas de Reactividad. - Una lectura numérica muestra
invalid: su función lanzó una excepción o devolvió un valor no finito en ese instante.
Recarga y vista previa
- Guardé y no cambió nada: comprueba que el archivo está dentro del proyecto y no en una carpeta ignorada (
exports,snapshots,target, carpetas ocultas o de entornos). Los paquetes instalados fuera del proyecto no se recargan hasta reiniciar Gaanim. - La recarga tarda más de lo normal: arranca con
GAANIM_RELOAD_PROFILE=1para ver en la terminal el tiempo de cada segmento del script, las mediciones conbounds()que compilaron la escena y en qué línea, y qué segmentos tardan más en compilarse. Cuando medir compiló la escena a un coste notable, Gaanim lo avisa siempre en la terminal y engaanim check. Los segmentos con funciones de Python (updaters, funciones reactivas, easings propios) se recompilan siempre. Para comparar con una recarga completa, arranca conGAANIM_INCREMENTAL=0. - Necesito los mensajes del motor: Gaanim oculta los avisos de Bevy, wgpu, winit y el audio. Para verlos, arranca con
RUST_LOG=info(oRUST_LOG=wgpu=warnpara un solo módulo).NO_COLOR=1quita los colores; el logo solo aparece cuando la salida es una terminal. - La vista previa o la exportación fallan al iniciar la GPU: prueba otro backend con
WGPU_BACKEND, por ejemploWGPU_BACKEND=vulkanoWGPU_BACKEND=dx12en Windows yWGPU_BACKEND=glen Linux. Sin esa variable, la vista previa usa Vulkan (Metal en macOS) cuando hay una GPU que lo admite y, si no, prueba todos los backends. - Dos superficies 3D que se cruzan se ven mal ordenadas: el 3D no tiene búfer de profundidad y ordena los triángulos por profundidad. Separa las superficies o subdivídelas (ver Cámara y 3D).
Exportar
- La exportación dice que
ffmpegno está en elPATH: instala FFmpeg y añádelo alPATH, o exporta una secuencia PNG (--output frames/frame.png), que no lo necesita. - Error por la proporción de la salida: si
--widthy--heightno tienen la proporción de la escena, añade--fit contain(con bandas) o--fit cover(recortando). - El video se detiene en las pausas o no lo hace: la exportación ignora siempre
scene.stop(...)y produce un video continuo; solo el modo presentación espera en ellas. --fromo--tofallan: los valores deben ser segundos no negativos o nombres descene.marker(...), y--todebe ser mayor que--from.- Un fotograma no se pudo dibujar: en escenas muy densas, Gaanim reintenta con más memoria y, si no basta, falla indicando el fotograma. Prueba una resolución menor o reduce la cantidad de objetos translúcidos.
- Transparencia:
--transparentsolo funciona con WebM, MOV, WebP y PNG, y la escena necesita un fondo transparente. Para un editor de vídeo, usa MOV (ProRes 4444): el alfa de WebM se lee mal fuera del navegador.
Capturas y comparación
--capture-stopsdice que no hay nada que comparar: la versión aprobada no tienestops.json. Aprueba una captura de pausas con--capture-stops --bless.- Todas las capturas cambian por diferencias mínimas: ajusta
--pixel-thresholdy--max-changed-ratio(ver Capturas y comparación visual).
Si tu problema no aparece aquí, abre un aviso en el repositorio de Gaanim con el mensaje de error completo y el script mínimo que lo reproduce.