2017-12-20 4 views
0

新しい面をメッシュに動的に追加したい。THREE.Geometryオブジェクトの頂点を複製するときに 'Vector is undefined'という警告が表示される

THREE.BufferAttribute.copyVector3sArray():私はこのコンソールの警告を得続けるベクトルがこれはまだそれを引き起こし最も単純な例である

が定義されていません。それは動作します - この例では、ジオメトリの最初の面の複製である単一の三角形が正しく生成されますが、警告を取り除くことはできません。

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によく似ています。

答えて

0

未定義のベクトルが頂点の法線だったようです。ランニング

this.body.geometry.computeFlatVertexNormals(); 

問題を解決しました。 (または、法線はcomputeFaceNormals()またはcomputeVertexNormals()を実行して計算できます)