如何在Three.js中返回对象而不是将其添加到场景中?(FBXLoader)
如果我在Javascript中调用此函数,它将工作,并将对象添加到场景中:
var loader = new THREE.FBXLoader();
function returnFBX(PATH, scene) {
loader.load('obj/' + PATH + '.fbx', function (object) {
scene.add(object);
});
}
scene.add(object);
替换为 ↓
return object;
它似乎返回undefined。
我尝试使用Promises和加载管理器,但两者似乎都只能将对象添加到场景中,而不能返回对象。
我认为这是因为有两个嵌套的函数,以及加载是异步的。但我不确定如何修复这个问题,因为这是加载对象的标准方法。
正确做法:
是异步的-要么使用回调,要么使用await,即
const afterload = object => { console.log(object); }
function returnFBX(PATH, scene) {
loader.load('obj/' + PATH + '.fbx', function (object) {
afterload(object);
});
}
async function returnFBX(PATH, scene) {
return loader.load('obj/' + PATH + '.fbx', function (object) {
return object;
});
}
let afterloadObject = await returnFBX( ... )