Clic izquierdo rotar | Derecha mover | Rueda zoom
<${currentAssetType === 'video' ? 'video' : 'asset-item'} id="main-content" src="${contentBlob.name}"> ${currentAssetType === 'model' ? `` : ``} `; zip.file("index.html", arHtml); const zipBlob = await zip.generateAsync({ type: "blob" }); const link = document.createElement('a'); link.href = URL.createObjectURL(zipBlob); link.download = "proyecto_ar.zip"; link.click(); URL.revokeObjectURL(link.href); }); resetViewBtn.addEventListener('click', () => { camera.position.set(2, 2, 3); controls.target.set(0,0,0); controls.update(); }); // Inicializar initThree(); refreshSceneMarkers(); // Guardar URL de contenido cuando se carga const originalLoadModel = loadModelFromUrl; window.loadModelFromUrl = loadModelFromUrl; window.loadVideoFromUrl = loadVideoFromUrl; // Override para capturar URL const origLoadModel = loadModelFromUrl; loadModelFromUrl = function(url) { currentAssetUrl = url; return origLoadModel(url); }; window.loadModelFromUrl = loadModelFromUrl; const origLoadVideo = loadVideoFromUrl; loadVideoFromUrl = function(url) { currentAssetUrl = url; return origLoadVideo(url); }; window.loadVideoFromUrl = loadVideoFromUrl; // Hook para cuando se carga por URL const btnLoadUrl = loadUrlBtn; btnLoadUrl.click = function() { /* override no necesario */ }; loadUrlBtn.addEventListener('click', () => { const url = contentUrl.value.trim(); if (!url) return; currentAssetUrl = url; if (url.endsWith('.mp4') || url.includes('video')) loadVideoFromUrl(url); else loadModelFromUrl(url); });