【问题标题】:THREE.JS Loader onProgress only fires once after loading is completeTHREE.JS Loader onProgress 仅在加载完成后触发一次
【发布时间】:2017-05-19 19:39:07
【问题描述】:

如何确保在加载模型时定期更新加载进度,以便构建加载图标。我已经关注了我能找到的每一个教程,但是对于每一个答案,onProgress 方法只会在加载完成后触发一次。

我在打字稿中的加载器代码:

// Load manager
private manager = new THREE.LoadingManager();

// Set up loading manager (in constructor of class)
this.manager.onProgress = function ( item, loaded, total ) {
  console.log( item, loaded, total );
};


// Load OBJ File from Server
private loadFile(path) {
   let loader = new THREE.OBJLoader(this.manager)
   loader.load(path, (obj)=>{
      this.model = obj;
      this.boundingBox = new THREE.BoxHelper(obj)
      this.scene.add(this.model);
   });
}

日志:

http://localhost:5000/api/file/largeModels/z3.obj 1 1

我只在加载模型后才得到这个日志。我该如何解决这个问题?

【问题讨论】:

    标签: javascript typescript three.js


    【解决方案1】:

    试试下面的代码。

        // Load manager
    
        private manager = new THREE.LoadingManager();
    
        // Set up loading manager (in constructor of class)
        this.manager.onProgress = function ( item, loaded, total ) {
          console.log( item, loaded, total );
        };
    
    
        // Load OBJ File from Server
        private loadFile(path) {
           let loader = new THREE.OBJLoader(this.manager)
           loader.load(path, (obj)=>{
              this.model = obj;
              this.boundingBox = new THREE.BoxHelper(obj)
              this.scene.add(this.model);
           },this.onProgress, this.onError ); // onProgress, onError added....
        }
    
        private onProgress ( xhr ) {
          if ( xhr.lengthComputable ) {
            var percentComplete = xhr.loaded / xhr.total * 100;
            console.log( Math.round(percentComplete) + '% downloaded' );
          }
        };
    
        private onError ( xhr ) {
          console.log("Will call when error occure.");
        };
    

    【讨论】:

    • 工作就像一个魅力。谢谢。你知道OBJ Loader的实际加载是否有类似的方法。从现在开始,我有一个下载进度条,但没有加载...
    • 我没有收到错误。只是对于大型模型,在下载达到 100% 后,仍然会暂停加载和显示模型。我可以看到那里的进展吗?
    • 加载后大约需要多少时间?你能创建 jsfiddle 链接吗?
    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2017-09-06
    • 2012-09-16
    • 2022-01-25
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多