如何修复 OBJLoader 上的 "THREE.Object3D.add: object not an instance of THREE.Object3D." 错误
how to fix "THREE.Object3D.add: object not an instance of THREE.Object3D." error on OBJLoader
我正在尝试在我的 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: object not an instance of THREE.Object3D. > Object { manager: {…}, materials: null }"。我希望看到场景中的模型并跟随我使用的实际 vive 控制器的移动,但它们不会出现。
gun
是对象加载器,不是对象。每个 the docs OBJLoader 在回调中传递一个 Object3D。所以...
let loader = new OBJLoader();
loader.load('models/CA-87.obj', gun => {
// ...
controller.add(gun);
// ...
});
我正在尝试在我的 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: object not an instance of THREE.Object3D. > Object { manager: {…}, materials: null }"。我希望看到场景中的模型并跟随我使用的实际 vive 控制器的移动,但它们不会出现。
gun
是对象加载器,不是对象。每个 the docs OBJLoader 在回调中传递一个 Object3D。所以...
let loader = new OBJLoader();
loader.load('models/CA-87.obj', gun => {
// ...
controller.add(gun);
// ...
});