如何存储加载的网格?

How to store loaded mesh?

您好,我一直在尝试存储从 obj 文件加载的对象。基本上我正在尝试创建新的网格并将其存储在网格变量中,以便稍后在 Javascript 中我可以引用该对象并更改其属性。但是,当我声明此网格变量并分配作为网格的子项时,加载结束后,该子项消失并且我的网格中没有任何内容。有没有办法从加载的网格创建新网格并存储它们?谢谢!

var mesh = new THREE.Mesh();
//loading the model
var loader = new THREE.OBJLoader(manager);

loader.load('models/stuff2.obj', function(object){
    //adding object into the scene
    object.name = "trying";
    object.traverse(function(child){
        if(child instanceof THREE.Mesh){
        child.material.map = texture;

    }
    });
    object.position.set(0,0,0);
    scene.add(mesh);
});

console.log(mesh);

您正在加载网格,因此不需要将网格声明为网格。您只需要将它用作您加载的对象的容器。

var mesh;
//loading the model
var loader = new THREE.OBJLoader(manager);

loader.load('models/stuff2.obj', function(object){
    //adding object into the scene
    object.name = "trying";
    object.traverse(function(child){
        if(child instanceof THREE.Mesh){
          child.material.map = texture;
        }
    });
    object.position.set(0,0,0);
    scene.add(object);
    mesh = object;
});
// then use it later
$("#my3dworldcontrol").click(function(){
    console.log(mesh);
});

函数内部...

var myMeshes = [];
var myMeshHash = {};
function loadMyModel(path, func){
  var loader = new THREE.OBJLoader(path);
  loader.load(path, function(object){
      object.name = "path";
      object.traverse(function(child){
          if(child instanceof THREE.Mesh){
          child.material.map = texture;

      }
      });
      object.position.set(0,0,0);
      scene.add(object);
      myMeshes.push(object);
      myMeshHash[path] = object;
      if(func != undefined){
        func(object);
      }
  });
}


//use:
loadMyModel("models/stuff2.obj", function(mesh){
  console.log(mesh);
});