顔の配列から重複する顔を削除したい - 私は以下のコードを試しましたが、完了方法がわかりません。顔の配列から重複する顔を削除する - Three.js
まず私はそれを見つけるために驚いた:偽(私はそれが真をもたらすことを期待する)、さらに
new THREE.Vector3(0,0,0) == new THREE.Vector3(0,0,0)
利回り以下のコードはまた、(再び、私はそれがTrueをもたらすことを期待する)偽得られること。
顔が、私は次のように書かれている面の配列にすでに存在するかどうかを確認するために私のコードについてはvar triangleGeometry = new THREE.Geometry();
triangleGeometry.vertices.push(new THREE.Vector3(0.0, 1.0, 0.0));
triangleGeometry.vertices.push(new THREE.Vector3(-1.0, -1.0, 0.0));
triangleGeometry.vertices.push(new THREE.Vector3(1.0, -1.0, 0.0));
triangleGeometry.faces.push(new THREE.Face3(0, 1, 2));
var triangleGeometry2 = new THREE.Geometry();
triangleGeometry2.vertices.push(new THREE.Vector3(0.0, 1.0, 0.0));
triangleGeometry2.vertices.push(new THREE.Vector3(-1.0, -1.0, 0.0));
triangleGeometry2.vertices.push(new THREE.Vector3(1.0, -1.0, 0.0));
triangleGeometry2.faces.push(new THREE.Face3(0, 1, 2));
triangleGeometry2.faces[0] === triangleGeometry.faces[0] - yields false
:
function faceInArray(arrayOfFaces,face)
{ // https://stackoverflow.com/questions/29759480/how-to-customize-object-equality-for-javascript-set
// Determine whether a face is in an array of faces
// The ES6 Set object does not have any compare methods or custom compare extensibility.
// For this reason this function will be called before adding an face to an array of faces
// to ensure that duplicate faces are not placed in an array
for(let i = 0; i < arrayOfFaces.length; i++)
{
vertexaFaceFromArray = buildingGeometry.vertices[arrayOfFaces[i].a]
vertexbFaceFromArray = buildingGeometry.vertices[arrayOfFaces[i].b]
vertexcFaceFromArray = buildingGeometry.vertices[arrayOfFaces[i].c]
vertexaFace = buildingGeometry.vertices[face.a]
vertexbFace = buildingGeometry.vertices[face.b]
vertexcFace = buildingGeometry.vertices[face.c]
// Compare the vertices in each face I'm not sure how to do this?
}
}
今、私は単にvertex1をチェックすると、ここからprocedeする方法がわかりませんよ==頂点2は、コードの最初のブロックでデモストされているので動作しません。それらを比較するとき、各面のx、y、z座標を実際に抽出する必要がありますか?さらに、頂点の順序は重要ですか?
こんにちはAntonさん、あなたの現在のシナリオの簡単な例であなたの質問を更新してください。これまでに何を試してみましたか? – rafaelcastrocouto
あなたのコメントのために@rafaelcastrocoutoありがとうございました。私は質問に多くの詳細を追加しました。最初はあまりにも単純でした。 –