Paquete de proyecto para el visor AR

Un proyecto es una carpeta (o un ZIP de esa carpeta) con tres archivos. Se carga desde la pestaña Proyecto del visor, o se publica en proyectos/<id>/ del servidor y se abre con ?p=<id>.

mi-proyecto.zip
├── project.json   ← configuración (obligatorio)
├── model.glb      ← modelo 3D glTF binario (obligatorio)
├── planta.jpg     ← imagen de la planta para elegir puntos (obligatorio)
└── marcadores.pdf ← carteles QR para imprimir (opcional; se descarga desde el visor)

Ejemplo completo para descargar: casa-andrew.zip.

Sistema de coordenadas

Todo en metros. X hacia el este del plano, Y hacia el norte del plano, Z hacia arriba. El origen conviene que sea una esquina exterior de la casa. El GLB debe exportarse desde Blender con la opción +Y up (la de siempre): el visor convierte solo.

project.json

CampoObligatorioQué es
id, namesíIdentificador corto sin espacios y nombre visible.
model, plannoNombres de archivo. Por defecto model.glb y planta.jpg.
house_centerno[x, y] centro del edificio, para las vistas predefinidas.
eye_heightnoAltura de ojos por defecto (1.6).
north_degnoGrados a girar el norte del plano en sentido horario para llegar al norte real. 0 si no se sabe.
plan_calibsí para ARCalibración de planta.jpg: x0, yb = píxel del origen (x=0, y=0); pxm = píxeles por metro; w, h = tamaño de la imagen en píxeles. Fórmula: px = x0 + x·pxm, py = yb − y·pxm.
viewsnoPosiciones de cámara [x, y, z] para persp, planta, sur, este, norte, oeste. Si faltan se calculan desde house_center.
layersnoLista de capas: id, label, group, nodes (nombres de objetos o colecciones del GLB). Si falta, las capas se arman solas con las colecciones de primer y segundo nivel del GLB.
pointssí para AR/VRPuntos donde pararse: id, label, world:[x,y], interior:true|false, ref:{label, world:[x,y]}. ref es hacia dónde debe mirar la persona para alinear a mano.
markersnosize_m = lado del QR impreso en metros; list = code (texto del QR), label, world:[x,y,z] del centro del QR, facing_deg = hacia dónde mira la cara del QR (0 = norte del plano, horario). Los QR se pegan verticales. pdf = nombre del PDF con los carteles (por defecto marcadores.pdf).

Cómo generar cada parte

  1. model.glb: en Blender, File → Export → glTF 2.0, formato glTF Binary, marcar Include → Collections (jerarquía completa) para que las colecciones se conviertan en capas. Texturas horneadas en JPEG mantienen el archivo liviano. Menos de 20 MB carga bien en celular.
  2. planta.jpg: imagen de la planta, 1200 a 1600 px de ancho. Medir en la imagen el píxel de la esquina origen y otro punto de distancia conocida para calcular pxm.
  3. Marcadores: imprimir un QR por marcador con el texto de code, al tamaño exacto size_m, sin escalar al imprimir. Pegarlo vertical en el punto replanteado, con el centro a la altura world[2]. En el visor se lee con cualquier cámara; cuanto más de frente y más cerca (1 a 6 m), más precisa la alineación.

Ejemplo mínimo

{
  "id": "galpon", "name": "Galpón Ruta 9",
  "house_center": [6, 10],
  "plan_calib": { "x0": 80, "yb": 1900, "pxm": 120, "w": 1500, "h": 2000 },
  "points": [
    { "id": "acceso", "label": "Acceso", "world": [6, -3], "interior": false,
      "ref": { "label": "el portón", "world": [6, 0] } }
  ],
  "markers": { "size_m": 0.2, "list": [
    { "code": "GALPON-M1", "label": "M1 esquina SO", "world": [0, 0, 1.0], "facing_deg": 225 }
  ] }
}

← Volver al visor