如何在three.js中加载3D .obj模型?

时间:2018-02-16 10:25:00

标签: javascript three.js

我是three.js的初学者。我在three.js中创建了3D obj模型文件。如何将对象(3D .obj)返回到另一个函数?以及如何将原始颜色显示为.obj 3D?

  

的Javascript

this.draw3DObj = function (startX, startY, endX, endY, objType) {
    switch (objType) {
     case "window":
      var loader = new THREE.OBJLoader();
      var material = new THREE.MeshNormalMaterial({
       color: 0xbcb9b1,
       side: THREE.DoubleSide
      });
      loader.load('model/window.obj', function(object) {
        object.traverse(function(child) {

         if (child instanceof THREE.Mesh) {
          child.material = material;
         }

        });
        scene1.add(object);
        object.position.x = width;
        object.position.y = depth;
        object.position.z = height;
       },

       function(xhr) {
        console.log((xhr.loaded / xhr.total * 100) + '% loaded');
       },

       function(error) {
        console.log('An error happened');
       }
      );
      break;
    }
    return object; // How to return?
};

1 个答案:

答案 0 :(得分:0)

您不能直接返回该对象,因为加载为异步。传递给loader.load的第一个参数是在加载对象时调用的回调。在该函数结束时,您可以调用另一个函数并传递该对象。