如何修复“ THREE.Object3D.add:对象不是THREE.Object3D的实例”。 OBJLoader错误

时间:2019-08-27 16:00:21

标签: javascript three.js webvr

我试图按照本示例“ https://threejsfundamentals.org/threejs/lessons/threejs-webvr-point-to-select.html”在VR场景中添加控制器。我想用找到的OBJ模型替换行指针,但是似乎由于某种原因它一直在加载,或者什么都不加载。

 ...
 var gun = new OBJLoader();
 gun.load('models/CA-87.obj');

 this.controllers = [];
  ...
 for (let i = 0; i < 2; ++i) {
 const controller = renderer.vr.getController(i);
 //controller.addEventListener('select', selectListener);
 //controller.addEventListener('selectstart', selectListener);
 //controller.addEventListener('selectend', endListener); 
 scene.add(controller);

 controller.add(gun);

 this.controllers.push({controller, gun});
                  }
 ...

我得到的错误是这些 “ THREE.Object3D.add:对象不是THREE.Object3D的实例。>对象{管理器:{…},材料:空}”。我希望能够在现场看到这些模型,并跟随我使用的实际vive控制器的运动,但是它们不会出现。

1 个答案:

答案 0 :(得分:0)

gun是一个对象加载器,而不是对象。根据{{​​3}},OBJLoader在回调中提供Object3D。所以...

let loader = new OBJLoader();
loader.load('models/CA-87.obj', gun => {
  // ...
  controller.add(gun);
  // ...
});