Вот полный рабочий пример, который показывает рабочий процесс basi c: https://jsfiddle.net/17q6b2sd/2/
Во-первых, вам нужен соответствующий тег ввода:
<input id="input" type="file">
Затем в коде JS вам нужно добавить к этому элементу прослушиватель событий, который обрабатывает выбранный файл. Как видите, в коде для этого используется FileReader
API:
var input = document.getElementById( 'input' );
input.addEventListener( 'change', function( event ) {
var file = this.files[ 0 ];
var reader = new FileReader();
reader.addEventListener( 'load', function ( event ) {
var contents = event.target.result;
var geometry = new STLLoader().parse( contents );
var material = new THREE.MeshStandardMaterial();
var mesh = new THREE.Mesh( geometry, material );
mesh.castShadow = true;
mesh.receiveShadow = true;
scene.add( mesh );
}, false );
if ( reader.readAsBinaryString !== undefined ) {
reader.readAsBinaryString( file );
} else {
reader.readAsArrayBuffer( file );
}
} );
Подобный код используется в 3. js редакторе , который не читает файлы через элемент ввода, но с помощью drag'n'drop.
BTW: я тестировал скрипку с этим файлом STL: slotted_disk.stl