所以我开始学习three.js并且我正在一步一步地学习教程,但是我得到了上面的错误。
这是有问题的代码: const geometry = new THREE.BufferGeometry()
const vertex1 = new THREE.Vector3(0, 0, 0) geometry.vertices.push(vertex1)
const vertex2 = new THREE.Vector3(0, 1, 0) geometry.vertices.push('vertex2')
const vertex3 = new THREE.Vector3(1, 0, 0) geometry.vertices.push('vertex3')
有人可以解释为什么推送不起作用吗?即使我定义了一个空数组。
此外,本教程使用 const geometry = new THREE.Geometry(),但我收到一条错误消息,指出 Geometry 不是构造函数。有什么想法吗?
答案 0 :(得分:2)
Geometry
已弃用,不再是库核心的一部分。您必须使用 BufferGeometry
。但是,BufferGeometry
没有 vertices
属性,因为顶点数据以缓冲区属性的形式进行管理。上面的代码应该是这样的:
const geometry = new THREE.BufferGeometry();
const vertices = [];
vertices.push( 0, 0, 0 );
vertices.push( 0, 1, 0 );
vertices.push( 1, 0, 0 );
geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );
有关以下 Geometry
论坛主题中的 three.js
删除的更多信息:
https://discourse.threejs.org/t/three-geometry-will-be-removed-from-core-with-r125/22401