' Vector未定义'克隆THREE.Geometry对象中的顶点时发出警告

时间:2017-12-20 20:57:08

标签: javascript three.js

我想动态地向网格添加新面孔。我一直收到这个控制台警告:

  

THREE.BufferAttribute.copyVector3sArray():vector未定义

这是仍然导致它的最简单的例子。它起作用 - 这个例子正确地产生了一个三角形,它是几何体第一张面的克隆 - 但是我无法摆脱警告。

var vertices = this.body.geometry.vertices;
var faces = this.body.geometry.faces;

var face = faces[0];
var a = face.a;
var b = face.b;
var c = face.c;

var va = vertices[a].clone();
var vb = vertices[b].clone();
var vc = vertices[c].clone();

vertices = [];
vertices.push(va);
vertices.push(vb);
vertices.push(vc);

this.body.geometry.vertices = vertices;
this.body.geometry.faces = faces;

它看起来很像this question,除了我不小心将矢量分配给顶点索引,所以我无法使用该解决方案。

1 个答案:

答案 0 :(得分:0)

看来未定义的向量是顶点法线。运行

this.body.geometry.computeFlatVertexNormals();

解决了这个问题。 (或者,可以通过运行computeFaceNormals()computeVertexNormals()来计算法线。)