【问题标题】:How to upload STL files in html using threejs如何使用threejs在html中上传STL文件
【发布时间】:2019-01-09 06:20:17
【问题描述】:

我的任务是开发一个网络应用程序,用户可以在其中上传由 matlab 代码生成的 STL 文件并查看它们。我在传递 STL 加载中的参数时遇到问题。

我尝试按照此链接中的答案User uploaded textures in three.js

function readURL(input) {

    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#blah').html( e.target.result);
            console.log(e.target.result);
            var loader = new THREE.STLLoader();
            loader.load(e.target.result) , function (    geometry ) {
                var material = new THREE.MeshPhongMaterial( { color:   0xff5533, specular: 0x111111, shininess: 200 } );
                var mesh = new THREE.Mesh( geometry, material );
                mesh.position.set( 0, - 0.25, 0.6 );
                mesh.rotation.set( 0, - Math.PI / 2, 0 );
                mesh.scale.set( 0.005, 0.005, 0.005 );
                mesh.castShadow = true;
                mesh.receiveShadow = true;
                scene.add( mesh );
            } );

        }

        reader.readAsDataURL(input.files[0]);
    }
}

$("#imgInp").change(function () {
    readURL(this);
});

我希望渲染 STL 模型。

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    STLLoader 有一个parse 函数,它可以将文件的内容作为数组缓冲区并返回处理后的几何图形。您可以使用FileReader.readAsArrayBuffer 获取内容。

    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
    
            var geometry = loader.parse(e.target.result);
            var mesh = new THREE.Mesh( geometry, material );
    
            // ...
    
            scene.add(mesh);
        }
        reader.readAsArrayBuffer(input.files[0]);
    }
    

    让我知道这是怎么回事!

    【讨论】:

    • 我得到这个错误 Uncaught TypeError: Cannot read property 'decodeText' of undefined
    • 看起来它在THREE.LoaderUtils.decodeText( new Uint8Array( buffer ) ); 线上的LoaderUtils 失败了,它应该包含在主 THREE.js 包中。页面上是否也加载了 THREE.js?什么版本?
    猜你喜欢
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 2010-12-07
    相关资源
    最近更新 更多