Quiero codificar un pequeño visor de archivos stl en javascript así que para esto uso la biblioteca three.js con el módulo STLLoader, para este visor uso un sistema de upload make con una API en node.js (envío archivos usando buscar la solicitud y en la parte trasera formidable guardar archivos) y para el espectador la página hace una solicitud en una dirección con buscar y obtener el contenido del archivo stl, ahora para cargar datos stl uso este código:
var contents = stl_name; var geometry = new THREE.STLLoader().parse( contents ); geometry.sourceType = "stl"; var mesh = new THREE.Mesh( geometry, material ); mesh.rotation.x = 5; mesh.rotation.z = .25; scene.add( mesh );pero devuelve un error (tengo este error solo con archivos binarios stl, los archivos stl ASCII funcionan correctamente): "Error de rango no detectado: el desplazamiento está fuera de los límites de DataView", no sé cómo lo vendió, gracias de antemano .
Un ejemplo de archivos de prueba: test.stl
Finalmente resolví mi problema agregando la biblioteca node.js en mi API (stl) convertir binario stl a ASCII stl. enlace a la biblioteca
Puedo importar con éxito el activo en el editor three.js a través de arrastrar y soltar. Entonces parece que hay un problema en su aplicación O no está usando la última versión de three.js .
En cualquier caso, intenta usar un código similar al del editor. Es esencialmente esto:
const reader = new FileReader(); reader.addEventListener( 'load', function ( event ) { const contents = event.target.result; const geometry = new THREE.STLLoader().parse( contents ); const material = new THREE.MeshStandardMaterial(); const mesh = new THREE.Mesh( geometry, material ); mesh.name = filename; scene.add( mesh ); }, false ); reader.readAsArrayBuffer( file );