javascript - 如何在 Three.js 中返回对象而不是将其添加到场景中? (FBX加载程序)

标签 javascript function three.js

如果我在 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 以及加载管理器,但两者似乎都只能将对象添加到场景中,而不能返回对象。

我认为这是因为两个函数相互嵌套,而且加载是异步的。但我不确定如何解决这个问题,因为这是加载对象的标准方式。

最佳答案

load 是异步的 - 使用回调或使用 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( ... )

关于javascript - 如何在 Three.js 中返回对象而不是将其添加到场景中? (FBX加载程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53823695/

相关文章:

javascript - Chrome 扩展程序模拟悬停在 Youtube 播放器上

c++ - 使用#define 声明一个函数

c++ - 将字符串传递给函数的 istringsream 参数

three.js - 服务器端回退渲染

javascript - 创建一个具有 flex 效果状态的 react 轮播被吃掉

JavaScript RegEx 只允许字母数字字符和一些特殊字符

json - 使用 Firebase Cloud Functions 部署/测试函数

android - 在 chrome mobile 上运行 three.js

javascript - 基于 .obj 模型的颜色

javascript - 长时间运行异步更新后关闭 Web 资源