Как вернуть объект в Three.js, а не добавить его в сцену?(FBXLoader) - PullRequest
0 голосов
/ 18 декабря 2018

Если я вызываю эту функцию в 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, а также Менеджер загрузки, но оба, похоже, только способны добавить объект в сцену, но не вернутьобъект.

Я думаю, это потому, что есть две вложенные функции друг в друге, а также загрузка является асинхронной.Но я не уверен, как это исправить, так как это стандартный способ загрузки объектов.

1 Ответ

0 голосов
/ 18 декабря 2018

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( ... )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...