![](/img/trans.png)
[英]How to add the camera loaded by fbxloader to scene in three.js?
[英]How to return an object in Three.js rather than add it to a scene? (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;
它似乎返回未定義。
我嘗試使用 Promises 以及加載管理器,但兩者似乎都只能將對象添加到場景中,而不能返回對象。
我認為這是因為彼此之間有兩個嵌套函數,並且加載是異步的。 但我不確定如何解決這個問題,因為這是加載對象的標准方法。
load
是異步的——要么使用回調,要么使用等待,即
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( ... )
這就是我使用loadAsync()
的方式
async function LoadModel (...) {
const result = await loader.loadAsync(...);
return result;
}
const model = await LoadModel(...);
檢查如何等待對象加載器:這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.