얼굴 배열에서 중복 된 얼굴을 제거하고 싶습니다. 아래 코드를 시도했지만 완료 방법을 모르겠습니다. 얼굴 배열에서 중복 된 얼굴 제거 - Three.js
는 첫째로 나는 그것을 찾을 놀라게했다 :new THREE.Vector3(0,0,0) == new THREE.Vector3(0,0,0)
이 거짓 산출 (나는 사실을 산출 기대)와 또한 또한 아래의 코드가 거짓 얻을 수 있음을 (다시 나는 사실을 산출하기 위해 기대). 얼굴은 얼굴의 배열에 이미 있는지 여부를 확인하려면 코드에 관해서는
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로 여기에서 것이며 진행하는 방법을 확실 해요 == 코드의 첫 번째 블록에서 demostrated로 vertex2 작동하지 않습니다. 비교할 때 각면의 x, y 및 z 좌표를 추출해야하나요? 또한 꼭지점의 순서가 중요합니까?
안녕하세요. Anton, 현재 시나리오의 간단한 예를 들어 질문을 업데이트 해주십시오. 지금까지 시도한 내용은 무엇입니까? – rafaelcastrocouto
귀하의 의견에 대해 @rafaelcastrocouto 감사합니다. 제 질문에 더 많은 세부 사항을 추가했습니다. 처음에는 너무 간단했습니다. –