你好,StackOverflow的人们。我正在学习three.js,作为一个学习项目,我选择了制作一个类似于this的80年代风格的复古山丘。一切都很顺利,但后来
script.js:37 Uncaught TypeError: Cannot read property 'length' of undefined
at init (script.js:37)
at script.js:6出现了。我检查了所有地方,但没有找到解决方案。这是我的script.js(html只是head和body的默认模板)。任何帮助都是有帮助的!
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;
}发布于 2021-02-03 10:14:37
好吧,这更像是一个纯Javascript错误。未定义常量verticeXYZ,这意味着也未定义geometry.vertices。这会导致在执行verticeXYZ.length时“无法读取未定义的属性'length‘”,因为没有length属性。
看看this example和its code。在这里,geometry被定义得很好。我建议您使用它作为您的起点。
发布于 2021-06-04 03:19:08
您使用的是哪个版本?我猜想顶点属性在最新版本中不再存在。我使用了r70版本,它解决了我的问题。
https://stackoverflow.com/questions/66017984
复制相似问题