我一直在尝试各种方法来做这样的事情: 我想加载一个模型,然后让函数返回它
var loader = new THREE.GLTFLoader();
loader.crossOrigin = true;
var loadedModel = loader.load('model.gltf', function (data) {
var object = data.scene;
return object;
}
然后调用另一个函数并传递loadedModel
:
loadToScene(loadedModel);
此外,我希望它可以多次加载到场景中: 让我们在这里进行两次硬编码:
function loadToScene(model){
model.position.set(0,0,0);
scene.add(model);
model.position.set(0,0,5);
scene.add(model);
}
data.scene
的范围结束后,我找不到保留loader
的方法。
有什么办法可以实现?
答案 0 :(得分:0)
要在加载.gltf文件后调用loadToScene
,需要在回调函数内部内进行:
var loader = new THREE.GLTFLoader();
loader.crossOrigin = true;
loader.load('model.gltf', function (data) {
var object = data.scene;
// Use loadToScene function *inside* the callback
// since we don't know when it will finish loading
loadToScene(object);
}
要将模型两次添加到场景中,您需要首先clone it。否则,将同一对象两次添加到场景中将不会执行任何操作:
function loadToScene(model){
// Add original object
model.position.set(0,0,0);
scene.add(model);
// Clone a copy
var model2 = model.clone(true);
model2.position.set(0,0,5);
scene.add(model2);
}