【问题标题】:how to fix "THREE.Object3D.add: object not an instance of THREE.Object3D." error on OBJLoader如何修复“THREE.Object3D.add:对象不是 THREE.Object3D 的实例”。 OBJLoader 错误
【发布时间】:2019-08-28 00:14:07
【问题描述】:

我正在尝试在我的 VR 场景中添加控制器,遵循此示例“https://threejsfundamentals.org/threejs/lessons/threejs-webvr-point-to-select.html”。我想用找到的 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 的实例。> 对象 { 管理器:{…},材料:null }”。我希望看到场景中的模型并跟随我使用的实际 vive 控制器的运动,但它们不会出现。

【问题讨论】:

    标签: javascript three.js webvr


    【解决方案1】:

    gun 是一个对象加载器,而不是一个对象。根据the docs OBJLoader 在回调中传递一个 Object3D。所以……

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 2019-10-07
      相关资源
      最近更新 更多