three.js TypeError:无法读取未定义的属性“center”

前端之家收集整理的这篇文章主要介绍了three.js TypeError:无法读取未定义的属性“center”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用node.js和three.js在服务器上导入OBJ(尝试不同) – 我在解析文件后得到此错误.
这是我导入几何的当前代码
var loader = new THREE.OBJLoader();
    loader.load(modelPath,function (geometryObj) {
    var materialObj = new THREE.MeshBasicMaterial( { vertexColors: THREE.FaceColors,overdraw: 0.5 } );
    mesh = new THREE.Mesh(geometryObj,materialObj);
    scene.add(mesh);

这是调用堆栈:

this.center.copy( sphere.center );
TypeError: Cannot read property 'center' of undefined
at THREE.Sphere.copy (eval at <anonymous> (/lib/three.js:32:3),<anonymous>:6074:27)
at THREE.Frustum.intersectsObject (eval at <anonymous> (/lib/three.js:32:3),<anonymous>:6253:11)
at eval (eval at <anonymous> (/lib/three.js:32:3),<anonymous>:36578:53)
at THREE.Object3D.traverseVisible (eval at <anonymous> (/lib/three.js:32:3),<anonymous>:7943:3)
at THREE.Object3D.traverseVisible (eval at <anonymous> (/lib/three.js:32:3),<anonymous>:7947:23)
at projectScene (eval at <anonymous> (/lib/three.js:32:3),<anonymous>:36568:9)
at render (eval at <anonymous> (/lib/three.js:32:3),<anonymous>:35449:28)

我知道这是已知问题https://github.com/mrdoob/three.js/pull/3748,但我无法弄清楚如何解决错误.

解决方法

我发现OBJLoader加载的对象已经是一个THREE.Mesh实例,我遇到了同样的问题.

所以你应该这样做:

var loader = new THREE.OBJLoader();
loader.load(modelPath,function(object) {

    // if you want to add your custom material
    var materialObj = new THREE.MeshBasicMaterial({
        vertexColors: THREE.FaceColors,overdraw: 0.5
    });
    object.traverse(function(child) {
        if (child instanceof THREE.Mesh) {
            child.material = materialObj;
        }
    });

    // then directly add the object
    scene.add(object);
});

另见this questionthis example on the three.js website.

猜你在找的JavaScript相关文章