WebAR FácilAbrir ejemploEnglish

Contrato para asistentes de IA

Para la instalación XAMPP de desarrollo existe un recolector opcional: scripts/install-local-diagnostics.mjs conecta los ejemplos y guarda envelopes en reports/local-devices/data/<instalación>/. El diagnóstico está en envelope.report. Estos datos privados no se incluyen en Git ni en el SDK distribuido. El teléfono usa el mismo origen HTTPS del ejemplo, nunca su propio localhost. El panel está en diagnostics/ y el recorrido en diagnostics/mobile.html. No clasifiques registros execution=automated como evidencia física ni interpretes recibido como aprobado. La instalación no activa análisis autónomos del asistente.

Este documento describe webar-facil 0.1.0 implementada. La ruta predeterminada para nuevas aplicaciones es HTML declarativo, con referencia en inicio y etiquetas. La API programática sigue disponible para casos avanzados; no es un requisito de una aplicación básica.

Cómo decidir qué generar

La carpeta PRUEBAS proporciona 25 HTML completos y comentados para GLB, mover/girar/pellizcar, botones de contenido, texto, MP4 y luz con marcador o SLAM óptico, y un mapa guardado en IndexedDB. Sus recursos multimedia son locales y originales; la receta 25 añade A-Frame con su licencia. Cada HTML tiene sus propios listeners; el movimiento sobre el plano, el Sprite de texto y la iluminación son código de aplicación mediante Three.js, no etiquetas nuevas del SDK. Los ejemplos ópticos utilizan colocación manual y escala relativa.

Para presupuestos de rendimiento usa performance="auto" (predeterminado), battery, balanced o quality en webar-scene; consulta cámara/rendimiento para límites. camera-width/camera-height son preferencias de captura; analysis-width/analysis-pixels y fps limitan el análisis. El motor mide carga en lugar de mantener una lista de modelos de móvil. No prometas selección óptima universal, control térmico ni que menor resolución siempre reconozca mejor. En odometría no cambies dimensiones dentro del mapa; un cambio de perfil exige reiniciar. Los mapas ópticos son referencias dispersas locales en memoria; guardarlos es optativo, no una malla ni un mapa exportado de ARCore/ARKit.

Petición Entrega recomendada
GLB, varios marcadores, giro/tamaño/clip HTML con webar-scene, webar-target y webar-model
MP4/chroma webar-video dentro del target o directamente en SLAM
Gestos atributo gestures; consultar interacción y límites de escala
SLAM sin marcador webar-scene mode="slam" con webar-model directo; fallback óptico por defecto
Despegar contenido de imagen a espacio Escena de imagen con atributo slam; explicar resultado de transición
Botones propios, diagnóstico o interacción Etiquetas más listeners DOM opcionales
Blob, renderer propio o modificación del backend Programática, API avanzada
Proyecto A-Frame existente Wrapper A-Frame; no confundir su schema con las etiquetas propias

Flujo predeterminado

  1. Usa un <script defer> del standalone actualizado. Registra las etiquetas automáticamente e incluye Three.js y loaders. No añadas A-Frame, importmap ni otro script Three para el caso básico.
  2. Para una imagen, genera webar-scene > webar-target[src] > webar-model[src]. Usa JPG/PNG directamente: se compila en Worker sin requerir .dat, JSON o calibración manual.
  3. Explica en qué carpeta se guarda el HTML y usa la ruta correcta del script. Junto al bundle es ./webar-facil.min.js; desde examples del repositorio es ../dist/webar-facil.min.js; desde la raíz fuente es ./dist/webar-facil.min.js.
  4. Conserva el párrafo de respaldo dentro de la escena. Si falta el SDK o está anticuado, debe quedar un mensaje en vez de una página vacía.
  5. La biblioteca ya crea cámara, renderer, controles, mensajes y animación. No generes startCamera, model.load, bucle de render ni limpieza manual para reproducir esos mismos pasos.
  6. Usa size, scale, rotation (grados XYZ), position y animation para personalizar contenido. El primer clip se reproduce si existe; un nombre explícito debe existir en el GLB. animation="none" lo detiene.
  7. Explica HTTP/HTTPS y el botón integrado Iniciar AR. En teléfono hace falta HTTPS accesible; file:// no es un modo soportado.
  8. Si hay JavaScript opcional, coloca la UI fuera de webar-scene y registra listeners antes de que el usuario inicie. Los hijos de escena describen contenido y no son una ranura de controles visibles.

Contrato declarativo

Cuándo utilizar código programático

Parte de la aplicación programática si el usuario lo pide o la capacidad necesita esa API. No uses un app suelto en un ejemplo declarativo; obtén scene.app cuando exista, o crea tú una escena programática con propiedad de recursos clara.

Precisión y verificación

Diagnostics es opt-in y descarga JSON local; no guarda frames/mapas/matrices/URLs/IDs de cámara. User-agent y metadatos declarados sí se exportan. No llames jitter físico a poseStepTranslation/Rotation ni FPS de GPU al intervalo del loop. LIBRARY_VERSION/BUILD identifican código, no una certificación. En pruebas de dispositivo usa el protocolo común iOS/Android y mantén pendientes las plataformas sin datos físicos. Webdriver se etiqueta automatizado; una casilla manual no prueba hardware.

Placement manual exige una propuesta reciente; confirmPlacement no debe escribir una identidad ni cambiar worldMatrix. En WebXR la selección se realiza dentro de la sesión; no inventes soporte universal de DOM overlay. El alojamiento público está pospuesto: genera artefactos locales sin publicar ni crear una web hasta que el usuario lo solicite.

No prometas 60 FPS, tracking perfecto, soporte universal de WebXR, suelo semántico, malla completa, oclusión del mundo ni metros absolutos sin referencia física. WebKit automatizado no equivale a Safari físico en iPhone.

Retener contenido no es anclarlo. No uses identidades como detección, desplazamiento de píxeles como traslación 3D ni un mapa importado como pose actual: necesita relocalizarse. Matrices columna mayor, diestras, WebGL: matrix = viewMatrix * worldMatrix; no repitas la conversión de OpenCV.

Consulta las firmas generadas, api.json, verificación y dist/types. Entrega rutas concretas, HTML ejecutable, explicación de recursos y lo realmente probado. No atribuyas pruebas sintéticas a hardware físico.

Usa /llms.txt para descubrir guías y /llms-full.txt para el manual consolidado. docs/archive/ solo contiene material histórico y no define la API actual.

Para investigar saltos del modelo, consulta tracking.stages y tracking.paths en el diagnóstico actualizado. processingMs es la duración del ciclo de cámara/consumidor, no CPU pura del Worker; renderLoopMs no es FPS GPU. No atribuyas el coste a MB del GLB ni extrapoles los benchmarks sintéticos de NFT a iPhone/Android o a odometría sin marcador. El motor reutiliza descriptores verificados con fallback completo; el usuario no tiene que habilitar esta optimización ni regenerar targets.

El tracker admite 12–23 inliers fiables sin redetectar automáticamente por cantidad. Consulta flowSparseReliable, weakDistribution/weakReprojection/weakRetention, cacheConflicts y redetectDeadline. No describas una verificación de caché omitida/fallida como confirmación, ni prometas ausencia de deriva. Sigue existiendo revisión global a 24 frames o 1000 ms desde el último intento.

El SDK actual acelera Hamming mediante un kernel WASM exacto propio embebido; no es matching aproximado ni reduce el número de descriptores. Verifica exactMatchingCalls/opencvMatchingCalls y build en el diagnóstico. No añadas scripts ni archivos WASM externos para activarlo; no requiere atributos nuevos ni recompilar el marcador. Conserva resolución, ratio/distancia y filtros de pose. Las mediciones de Node son locales y no garantizan FPS móviles.

En device-tests las selecciones se aplican automáticamente antes de iniciar. Para SLAM independiente usa Probar SLAM sin marcador o modo Odometría sin marcador; Imagen → odometría exige marcador al comienzo. WebXR solicita sesión con un segundo gesto Activar SLAM. Comprueba el build mostrado antes de comparar teléfonos: los informes aportados el 10/11/2026 todavía eran 7e52a3fa6b95a911 y no probaban el matcher exacto posterior. No presentes esos datos como fallo de la versión nueva ni como validación de SLAM físico.

En device-tests una diferencia de build es un aviso persistente cuando el SDK mantiene las APIs requeridas; no requiere confirmación ni desactiva por sí sola la cámara. Distingue esa advertencia de un SDK ausente/incompatible, inicio en curso o rechazo de permisos del navegador.

La escena pide cámara antes de descargar GLB; una carga fallida cierra el stream. ar-ready mantiene su significado de preparación completa. device-tests no intercepta clicks del botón de la escena ni desactiva sus botones superiores durante la carga. SDK ausente se presenta como error accionable, sin afirmar AR activo. No atribuyas una incidencia de móvil a su URL sin comprobar el caso.

Las recetas 14–25 usan exactamente ../dist/webar-facil.min.js y ../assets/marcador.jpg (marcador2.jpg para el segundo). En el repositorio Vite resuelve /examples/dist a /dist; al empaquetar se adapta la ruta del SDK. Respeta los HTML 01–13 editados por el usuario. La lista de recursos y la estructura portátil están en examples/PRUEBAS/README.md.

Apoya WebAR Fácil