如何存储加载的网格?
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);
});
您好,我一直在尝试存储从 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);
});