Projection mapping editable desde el navegador, sin herramientas externas: - web/stage/mapper.js (nuevo): compositor WebGL que texturiza el motor activo sobre superficies deformables (homografia por vertice: keystone correcto). - Editor con raton en el escenario (crear, arrastrar esquinas, mover, borrar) y previsualizacion arrastrable en el panel (raton/tactil) para editar desde el movil sin tocar la ventana de visuales. - Backend: estado "mapping" + evento set_mapping, persistido en data/mapping.json (ignorado en git). Seccion "Mapping" en el panel + texto de ayuda. - Solo motores web (butterchurn/hydra/shaders/mixer); projectM no se mapea. - .gitignore: excluye config de runtime (mapping.json, pm-favoritos.json). Incluye ademas trabajo en curso previo sin commitear (server.py, stage.js, panel.js/css, ayuda.json, hydra-sketches.json, problemas.md, start-projectm.sh), subido junto a peticion del autor. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
29 lines
1.2 KiB
Bash
Executable file
29 lines
1.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Lanza projectM nativo a pantalla completa. Lo invoca el servidor cuando
|
|
# se selecciona el motor "projectM" desde el panel.
|
|
#
|
|
# El servidor pasa los ajustes del panel por variables de entorno:
|
|
# FOSFENO_PM_PATH carpeta de presets (categoria o preset fijo)
|
|
# FOSFENO_PM_DURATION segundos por visual
|
|
# FOSFENO_PM_SHUFFLE orden aleatorio (1/0)
|
|
DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
PRESETS="${FOSFENO_PM_PATH:-$DIR/data/presets-projectm}"
|
|
|
|
ARGS=()
|
|
if [ -d "$PRESETS" ]; then
|
|
ARGS+=(--presetPath "$PRESETS")
|
|
fi
|
|
[ -n "${FOSFENO_PM_DURATION:-}" ] && ARGS+=(--presetDuration "$FOSFENO_PM_DURATION")
|
|
[ -n "${FOSFENO_PM_SHUFFLE:-}" ] && ARGS+=(--shuffleEnabled "$FOSFENO_PM_SHUFFLE")
|
|
|
|
# Pantalla completa sin bordes (sin cambiar la resolucion del proyector):
|
|
# asi los relanzamientos no dejan una ventana flotante, solo un parpadeo.
|
|
ARGS+=(--fullscreen 1 --exclusive 0)
|
|
|
|
# Y siempre en el monitor donde esta el escenario (lo detecta el servidor):
|
|
# sin esto, cada relanzamiento aterriza en la pantalla donde este el raton.
|
|
if [ -n "${FOSFENO_PM_MONITOR:-}" ] && [ "$FOSFENO_PM_MONITOR" != "0" ]; then
|
|
ARGS+=(--monitor "$FOSFENO_PM_MONITOR")
|
|
fi
|
|
|
|
exec projectMSDL "${ARGS[@]}"
|