Three.js如何加载本地FBX文件而无需上传?

3

我无法加载HTML输入中用户选择的文件,因为加载程序期望一个Linux样式的URL。 我尝试将Blob作为URL对象提供给它,将原始数据提供给FBX加载器,最近还尝试将mozilla路径提供给它,但什么都没用。 如何在不实际上传文件到网站并传递实际URL的情况下实现此操作?

这是我最新的尝试:

    $(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 );

                    }

                } );

            });
            
        });
        
    });
1个回答

1
尝试结合文件输入HTML元素和FileReader API。例如:
尝试使用文件输入HTML元素和FileReader API的组合。类似以下内容:
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]);

});

哦,你可以直接使用那个解析函数。好的,没问题。哈哈,我感觉有些傻。非常感谢! - WASasquatch
奇怪的是,尽管其他设置都很好,但这段代码突然抛出了一个未捕获的ReferenceError,指向FBXLoader()未定义。编辑:算了,只需要将其定义为THREE.FBXLoader()即可。 - WASasquatch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接