开发者问题收集

Three.js geometry.vertices 的属性长度未定义

2021-02-02
3409

大家好,StackOverflow 的各位。 我正在学习 three.js,作为一个学习项目,我选择制作一个类似于 这个 的 80 年代风格复古山丘。 一切都进展顺利,但后来


script.js:37 Uncaught TypeError: Cannot read property 'length' of undefined
        at init (script.js:37)
        at script.js:6

出现了。 我到处都检查过了,但没有找到解决办法。 这是我的 script.js(html 只是头部和身体的默认模板)。 任何帮助都有用!

let renderer;
let scene;
let camera;
let mesh;

init();
animate();

function animate() {

    requestAnimationFrame(animate);

    renderer.render(scene, camera);
}

function init() {

    renderer = new THREE.WebGLRenderer();

    renderer.setSize(window.innerWidth, window.innerHeight);

    document.body.appendChild(renderer.domElement);

    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera(100, window.innerWidth / window.innerHeight, 1, 100);
    camera.position.set(0, 0, 5);
    scene.add(camera);

    var geometry = new THREE.PlaneGeometry(256, 256, 256, 256);
    var material = new THREE.MeshBasicMaterial({ color: 0xc04df9, wireframe: true });
    var floor = new THREE.Mesh(geometry, material);
    floor.rotation.x = 90;
    const verticeXYZ = geometry.vertices;
    //perlin.seed()
    for (let i = 0; i < verticeXYZ.length; i++) {
        verticeXYZ.x = 53;
    }
    scene.add(floor);
}

第 37 行出现错误:

for (let i = 0; i < verticeXYZ.length; i++) {
        verticeXYZ.x = 53;
    }
2个回答

好吧,这更像是一个纯 Javascript 错误。常量 verticeXYZ 未定义,这意味着 geometry.vertices 也未定义。这导致在执行 verticeXYZ.length 时出现“无法读取未定义的属性‘length’”,因为没有 length 属性。

查看 此示例 其代码 。在这里, geometry 定义良好。我建议您将其用作您的起点。

adelriosantiago
2021-02-03

您使用的是哪个版本? 我猜最新版本中不再存在 vertices 属性。 我使用了 r70 版本,它解决了我的问题。

Kevin Lin
2021-06-03