Skip to content

Monolito

Última actualización: 24-01-2026 07:37 PM

Publicar pVISOR V1.0 (WebGL Baseline) en Itch y embebirlo en la web personal, con:

  • Navegación tipo Unity Scene View (WebGL-safe).
  • Controles táctiles (Mobile WebGL): orbit/pan/pinch.
  • Documentación suficiente para retomar sin re-explicar.

V1.1+ (expansión UX, no bloquea V1.0):

  • Menú contextual RMB (UI mínima) que exponga acciones.
  • Toggle Perspectiva/Ortográfico tipo Blender, con encuadre equivalente.

Build & distribución

  • WebGL build ejecuta local (Build & Run) y en Itch.
  • Embed en web personal funciona (iframe) sin romper input.

Controles (WebGL-safe)

  • Desktop WebGL:

    • Orbit: LMB drag
    • Pan: MMB drag
    • Dolly: RMB drag
    • Zoom: Wheel (Scroll Y)
    • Frame: F
    • Reset: R
  • Mobile WebGL (Touch):

    • Orbit: 1 dedo drag
    • Pan: 2 dedos drag (centroide)
    • Zoom: pinch
    • Nota: Pan + Zoom pueden ocurrir simultáneamente (2 dedos pan + pinch en el mismo gesto).

Robustez mínima

  • Frame encuadra correctamente el contenido bajo ModelRoot.
  • No hay conflictos de bindings (orbit/pan/dolly/teclas).
  • WebGL: no aparece el menú contextual del navegador al usar RMB sobre el canvas.

Menú contextual (RMB click)

  • RMB click abre menú; RMB drag se reserva para Dolly.
  • El menú lista acciones del visor y muestra atajos si existen.
  • Cierre: click fuera, Esc, o ejecutar acción.

Perspectiva / Ortográfico (tipo Blender)

  • P alterna Persp/Ortho sin cambiar yaw/pitch ni mover pivote.

  • Al alternar, se mantiene el encuadre equivalente (conversión distance ↔ orthographicSize).

  • Zoom coherente:

    • Persp: por distance
    • Ortho: por orthographicSize
  • Frame() funciona en ambos modos.


Ya está hecho (cerrado):

  • Controles “Unity-like” operativos:

    • Orbit: LMB drag
    • Pan: MMB drag
    • Zoom: wheel
    • Dolly: RMB drag
    • Frame: F
    • Reset: R
  • Arquitectura RED (Rt–Ev–Dt) + VContainer aplicada (mínimo profesional):

    • RtLifetimeScope cablea dependencias.
    • DataSO guarda estado de input (held + acumulados).
    • EventsSO emite señales sin payload (Frame/Reset).
    • ViewerInputAdapter traduce Input System → Dt/Ev.
    • ViewerTouchGestureAdapter traduce Touch → Dt.
    • ViewerController orquesta y llama a OrbitCameraController.
  • ModelRoot establecido como enchufe estándar de contenido.

Validado (cerrado):

  • Itch: probado y funcional (controles, wheel, clicks).
  • Itch móvil: touch (orbit/pan/pinch) probado y funcional.

Pendiente (V1.0):

  • Embed en web personal (iframe): foco/teclado/wheel/RMB.

Pendiente (calidad):

  • Calibración fina de sensibilidad touch (orbit/pan/pinch).

P0 — Embed real (iframe) + parche mínimo si hace falta

Section titled “P0 — Embed real (iframe) + parche mínimo si hace falta”

Meta: confirmar que en embed funcionan foco/teclado/wheel/RMB y aplicar el parche mínimo si rompe.

Checklist:

  1. Probar en Itch (host) y en tu web embebido (iframe):

    • Desktop: LMB/MMB/RMB/Wheel + F/R.
    • Mobile: orbit/pan/pinch.
    • RMB click: confirmar que llega a Unity (aunque aún no haya menú en V1.0).
  2. Registrar resultados:

    • Si todo funciona → no tocamos template.
    • Si RMB abre navegador → parche en template: bloquear contextmenu en canvas.
    • Si wheel scrollea la página → parche en template: bloquear wheel sobre canvas.
    • Si teclado no entra → estrategia de foco (click-to-focus / capture).
  3. (Opcional) Revalidar en Itch solo si cambiaste template o inputs.

Entregable: lista corta de problemas reales + acción tomada.


H0 — V1.0 Baseline WebGL (publicación real)

Section titled “H0 — V1.0 Baseline WebGL (publicación real)”
  • Build Release (solo si hubo cambios).
  • Subida a Itch (ya).
  • Prueba embed en web personal (iframe).
  • Re-subir a Itch solo si cambiaste build/template.

H1 — Controles touch (QA + calibración)

Section titled “H1 — Controles touch (QA + calibración)”
  • Calibrar sensibilidad touch.

    • Ajustar _orbitMultiplier, _panMultiplier, _pinchToScroll, _pinchThresholdPixels.
    • Registrar valores recomendados en Modularidad cuando queden definidos.
  • Probar en Android (Chrome) y iOS (Safari) si aplica.

H2 — Menú contextual RMB (UI mínima) (V1.1)

Section titled “H2 — Menú contextual RMB (UI mínima) (V1.1)”
  • Implementar Canvas + panel + items (acción / atajo).
  • Posicionar el menú en el puntero.
  • Cierre (click fuera, Esc, selección).
  • Conectar acciones: Frame / Reset / ToggleProjection.
  • Regla: toda acción nueva se agrega al menú.

H3 — Toggle Perspectiva/Ortográfico (Blender-like) (V1.1)

Section titled “H3 — Toggle Perspectiva/Ortográfico (Blender-like) (V1.1)”
  • Implementar conversión equivalente (distance ↔ orthographicSize) usando FOV vertical.
  • Ajustar zoom en ortográfico.
  • Ajustar Frame() en ortográfico.
  • Probar: sin saltos perceptibles, comportamiento estable.
  • Auto-frame: reemplazar “2 frames” por ejecutar la primera vez que bounds sea válido.
  • (Si hace falta) filtrado de bounds: convención ModelRoot/Geometry o filtro por capa.
  • (Si hace falta) desacoplar ModelRoot como “servicio de contenido” (solo si aparece necesidad real).

H5 — Fallback plan (solo si hay problemas reales)

Section titled “H5 — Fallback plan (solo si hay problemas reales)”

Si el esquema base falla en WebGL embebido, activar fallback:

  • Orbit: LMB drag
  • Pan: MMB drag + Shift+LMB
  • Zoom: Scroll
  • Menú (si existe): RMB click

Ideas futuras (no priorizar todavía):

  • Doble tap: Frame a objeto / Frame a composición (si tap fuera).
  • Long press: abrir menú contextual en mobile.

Navegadores: Chrome + Firefox.

Dispositivos: Android (Chrome) + iOS (Safari) si es posible.

Contextos:

  • Local (Build & Run)
  • Itch (host)
  • Embed en web personal (iframe)

Checklist Desktop:

  • Orbit (LMB drag)
  • Pan (MMB)
  • Zoom (Scroll)
  • Dolly (RMB drag)
  • Frame (F)
  • Reset (R)

Checklist Mobile:

  • Orbit (1 dedo)
  • Pan (2 dedos)
  • Pinch zoom
  • Estabilidad (sin saltos al pasar 1→2 dedos)
  • Verificar que el navegador no robe gestos (scroll/zoom página) sobre el canvas.
  • RMB menú (abre/cierra/ejecuta)
  • ToggleProjection (P) + encuadre equivalente
  • Frame/Reset también disponibles desde menú

7) Información que se documenta cuando exista (no bloquear)

Section titled “7) Información que se documenta cuando exista (no bloquear)”

Cuando hagamos P0 (Itch + embed), documentar:

  • Capturas de Itch (settings relevantes).
  • HTML/iframe de embed (atributos importantes).
  • Si hubo que tocar template WebGL: qué se cambió y por qué.

8) Reglas de ejecución (para no desviarnos)

Section titled “8) Reglas de ejecución (para no desviarnos)”
  • Primero probar en WebGL real (P0).
  • No introducir UI permanente: solo menú contextual si entra en V1.1.
  • No tocar arte/luces/materiales: eso vive en el contenido bajo ModelRoot.
  • Cerrar un tema por vez: Baseline → Embed → QA touch → Menú → Proyección → Limpieza.