No puedo cargar los archivos que los usuarios seleccionan en una entrada HTML porque el cargador espera una URL de estilo Linux, supongo. Intenté alimentarlo con un blob como un objeto de URL, alimentando los datos sin procesar al cargador FBX y, más recientemente, alimentando la ruta de Mozilla en mi sistema, pero nada funciona. ¿Cómo se puede lograr esto sin cargar físicamente el archivo en el sitio y pasar una URL real?
Este es mi último intento:
$(document).ready(function() { $('#file').change(function () { if ( this.value == '' ) { console.log( "No valid file selected." ); } var filePath = this.files[0].mozFullPath, loader = new THREE.FBXLoader(); loader.load( filePath, function( object ) { object.traverse( function( c ) { if ( c instanceof THREE.Camera ) { // Debug log console.log( c ); } } ); }); }); });
Pruebe una combinación de un elemento HTML de entrada de archivo y la API de FileReader
. Algo como:
const fileInput = document.querySelector("#file-input"); fileInput.addEventListener("change", function(event) { const reader = new FileReader(); reader.addEventListener("load", function(event) { const contents = event.target.result; const loader = new FBXLoader(); const object = loader.parse(contents); scene.add(object); }); reader.readAsArrayBuffer(this.files[0]); });