@node_js

Как фильтровать по типу с выводом на экран threejs?

Как задать input .file фильтрацию по формату файла и выводить на экран ?
вот эти форматы использую для проекта (.stl, .obj, .stp, .step, .igs, .iges, .zip)
Для загрузки файла использую это ?
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.receiveShadow = true;
mesh.castShadow = true;
camera.position.set(0, 480, 0);
scene.add( mesh );
}, false );
if ( reader.readAsBinaryString !== undefined ) {
reader.readAsBinaryString( file );
} else {
reader.readAsArrayBuffer( file );
}
});

Как задать условия по типу ?
oadArbitraryModel("path/to/file.json");

loadArbitraryModel = function(path) {
    var strings = path.split('.'); //now the path is ["path/to/file", "json"]
    var types = ['json', 'obj', 'stl', 'babylon', 'collada'];
    var result = -1;
    types.forEach(function (item,index) {
        if (strings.length > 1) {
            if (strings[1] == item){ //strings[1] would be anything after the '.'
                result = index;
            }
        }
    });
    switch (result){
        case -1:
            alert("file format not supported/ improperly named");
        case 0:
            loadJSON(path);
            break;
        case 1:
            loadOBJ(path);
            break;
        case 3:
            loadSTL(path);
            break;
            //ETC etc etc
    }
}

Через этот скрипт выводит через json. но не понимаю как реализовать не через json,
  • Вопрос задан
  • 11 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы