Image Tracking con A-Frame
A-Frame se carga por CDN antes de tu script. El adapter usa window.AFRAME.THREE internamente.
html
<script src="https://aframe.io/releases/1.6.0/aframe.min.js"></script>
<script type="module" src="/main.js"></script>Escena
Usa <a-entity camera>, no <a-camera>, y desactiva controles para que no interfieran con la cámara AR.
html
<style>
.a-enter-vr,
.a-enter-ar {
display: none !important;
}
</style>
<a-scene id="scene" embedded vr-mode-ui="enabled: false" renderer="alpha: true; antialias: true">
<a-entity
camera
position="0 0 0"
look-controls="enabled: false"
wasd-controls="enabled: false"
></a-entity>
<a-entity id="ar-content">
<a-box color="#2563eb" width="0.1" height="0.1" depth="0.1"></a-box>
</a-entity>
</a-scene>Setup
js
import { MonolookImage } from 'monolook/image'
import { AFrameAdapter } from 'monolook/image/aframe'
const sceneEl = document.getElementById('scene')
const arContent = document.getElementById('ar-content')
if (!sceneEl.hasLoaded) {
await new Promise((resolve) => sceneEl.addEventListener('loaded', resolve, { once: true }))
}
const tracker = new MonolookImage({
licenseKey: '<IMAGE_LICENSE_KEY>'
})
await tracker.init()
const adapter = new AFrameAdapter({ sceneEl })
adapter.attach(tracker)
adapter.addARContent('target', arContent)Cargar target y arrancar
js
const img = new Image()
img.crossOrigin = 'anonymous'
img.src = '/targets/marker.jpg'
await img.decode()
await tracker.addTarget('target', img)
tracker.on('found', (id) => console.log('Target encontrado:', id))
tracker.on('lost', (id) => console.log('Target perdido:', id))
await tracker.start()
adapter.setup()Reset
js
tracker.destroy()
adapter.destroy()
arContent.object3D.visible = false