未捕获的类型错误:无法读取 Three.js 中未定义的属性“push”

Coc*_*lle 5 three.js

所以我开始学习 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 不是构造函数。有任何想法吗?

Mug*_*n87 3

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 ) );
Run Code Online (Sandbox Code Playgroud)

有关删除的更多信息,Geometry请参阅以下three.js论坛主题:

https://discourse. Threejs.org/t/ Three-geometry-will-be-removed-from-core-with-r125/22401