簡體   English   中英

如何在 Three.js 中返回對象而不是將其添加到場景中? (FBXLoader)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM