부울 연산의 문제 해결

부울 연산 명령은 서피스와 열린 폴리서피스에서 사용할 수 있습니다. 결과는 개체 법선 방향에 따라 달라집니다. Dir 명령을 사용하여 방향을 확인합니다. 만약 결과가 사용자가 원하는 것과 반대라면 Dir 명령 또는 Flip 명령을 사용하여 서피스의 방향을 바꿔 다시 실행해 보세요.

서피스에 Join 명령을 먼저 실행합니다.

메쉬 개체의 부울 연산 과정도 NURBS 부울 연산 과정과 동일합니다.

명령의 결과는 입력 개체의 유형과 상관없이 항상 메쉬가 됩니다.

부울 연산이 실패하는 이유는?

부울 연산의 실패에는 다음과 같은 이유를 생각해 볼 수 있습니다:

  • 법선이 사용자가 생각하는 방향을 향하고 있지 않은 경우
  • 제어점이 두 개체가 교차하는 위치에 겹쳐져 있는 경우
  • 개체의 서피스에 겹쳐 있는 영역이 있는 경우

서피스 법선

부울 연산은 서피스 법선을 사용하여 어느 부분을 버리고 취할지를 결정합니다. BooleanDifference(부울 차집합)을 실행할 때, BooleanUnion(부울 합집합)의 결과를 얻었거나, 그 반대의 경우, 이것은 개체의 법선이 사용자가 생각하는 방향의 반대이기 때문입니다. 하나 이상의 개체가 완전히 닫혀 있지 않으면 부울 연산이 잘 실행되지 않는 경향이 있습니다. 개체가 완전히 닫혀 있지 않으면 Rhino는 어느 쪽이 바깥이고 어느 쪽이 안쪽인지 알 수가 없습니다. Dir 명령을 사용하여 해당 개체에서 법선이 어느 쪽을 향하는지 확인하고, 필요에 따라 개체의 바깥쪽이라고 생각하는 쪽으로 법선이 향하게 하려면 반전 옵션을 사용합니다. 완전히 닫힌 개체는 법선이 항상 바깥쪽을 향합니다.

겹쳐 있는 제어점

겹쳐 있는 제어점은 서피스의 가장자리에 있는 제어점이 동일한 위치에 배치된 경우에 발생합니다. 이것은 Rhino에서 원뿔의 끝점 또는 구의 축, 삼면의 평면에서 자연적으로 발생합니다. 제어점을 동일한 위치로 이동한 경우에서도 마찬가지입니다. 이러한 점은 특이점이라고도 합니다.

부울 연산을 하려는 두 개체의 교차점에 이러한 특이점이 위치하는 경우, 부울 연산이 실패할 수 있습니다.

겹쳐 있는 서피스 영역

두 서피스가 동일한 영역을 공유할 때 겹쳐 있는 서피스가 발생합니다. 예를 들어, 두 개의 상자가 한 면에서 서로 접하고 있는 경우, 개체의 합집함, 차집합, 교집합은 실행되지 않습니다.

비다양체 가장자리

겹쳐진 서피스 외에도, 비다양체 가장자리가 실패의 원인이 될 수 있습니다.

하나의 가장자리에 2개보다 많은 수의 면이 결합되어 있는 메쉬 또는 폴리서피스 가장자리가 비다양체(non-manifold)입니다.


그림에서 비다양체 가장자리가 있는 폴리서피스가 ShowEdges 명령으로 강조 표시되어 있습니다.

대응 방안

개체에 부울 연산을 실행할 수 없는 경우, 다른 대안을 사용하여 원하는 결과를 얻을 수 있습니다.

위의 예에서 원뿔의 끝점이 상자의 모서리에 정확하게 위치하고 있습니다. 이러한 상황에서는 부울 연산이 실패합니다.

이 때, 부울 연산을 실행하는 대신, 필요하다면 Explode 명령을 사용하여 폴리서피스를 단일 서피스로 분리합니다. Intersect 명령을 사용하여 두 서피스가 교차하는 커브를 만듭니다. Trim 및/또는 Split 명령을 사용하여 부분으로 분할한 후, Join 명령으로 다시 결합시킵니다.

참고 항목

Rhino Wiki: 부울 연산 질문과 대답