본문 바로가기
  • You find inspiration to create your own path !
FreeCAD

FreeCAD & Python] 법선 벡터 값 활용 하기

by ToolBOX01 2026. 9. 8.
반응형

■법선 벡터 값으로 선택한 평면이 솔리드 내/외부를 알수 있는가?

법선 벡터(Normal Vector)의 방향을 통해 선택한 면이 솔리드의 바깥쪽(외측)을 향하고 있는지, 안쪽(내측) 혹은 빈 공간을 향하고 있는지 판단할 수 있습니다. 

💡 판별 원리

1. 정의된 법선 벡터의 방향: FreeCAD를 포함한 대부분의 3D CAD 소프트웨어에서 솔리드를 구성하는 모든 면(Face)의 법선 벡터는 기본적으로 솔리드의 외부(Void 공간)를 향하도록 통일되어 생성됩니다.

 

2. 벡터의 위치 관계 활용:

  • 면의 중심점(Center of Mass)이나 임의의 점에서 법선 벡터 방향으로 아주 짧은 거리만큼 이동했을 때의 좌표가 솔리드 내부(Solid 내부에 포함됨)에 속하는지, 아니면 외부 공기 중에 있는지 판별하면 안과 밖을 명확히 구분할 수 있습니다.


선택한 면의 법선 벡터(Normal Vector)가 솔리드의 바깥쪽(외측)을 향하고 있는지, 아니면 방향이 뒤집혀 안쪽(내측)을 향하고 있는지를 기하학적으로 판별하는 원리를 시각화한 것입니다.


 

  • FreeCAD 파이썬 API에서는 shape.isInside(Vector, tolerance, includeBoundary) 메서드를 사용하여 특정 좌표가 솔리드 내부에 있는지 쉽게 확인할 수 있습니다.

 

● 법선 벡터 응용

 


• 비정상적 모델링 현상 원인 FreeCAD에서 3D Offset 작업 시 형상이 일그러지거나 찢어지는 문제는 면의 법선(Normal) 방향이 서로 일치하지 않아 발생하며, 'One-sided' 조명 설정을 통해 각 면의 법선 방향을 시각적으로 확인할 수 있습니다.

• 법선 수정 및 문제 해결 방법 잘못된 방향을 향하고 있는 객체를 'Reverse Shape' 기능을 사용하여 법선 방향을 반전시킨 뒤, 기존 객체를 수정된 객체로 교체하여 모델의 일관성을 확보해야 합니다.

• 성공적인 오프셋 작업 모든 구성 요소의 법선 방향을 통일한 후 Offset 작업을 수행하면 형상 오류 없이 안정적으로 볼륨을 추가하고 필렛(Fillet) 기능을 정상적으로 적용할 수 있습니다.

D 서피스 모델에서 오프셋(3D Offset) 작업 시 오류가 발생하는 근본적인 이유는 서피스들을 구성하는 면(Face)들의 법선 벡터(Normal) 방향이 서로 뒤죽박죽 엇갈려 있기 때문입니다.

 

⚙️ 법선 벡터 방향이 다를 때 오프셋 오류가 발생하는 이유

1. 오프셋 연산의 기준 방향 부재:

  • 3D 오프셋 기능은 각 면의 법선 벡터 방향을 기준으로 안쪽(-) 또는 바깥쪽(+)으로 일정한 거리만큼 평행하게 확장하거나 축소하는 방식으로 작동합니다.

2. 법선 방향이 엇갈릴 때 생기는 현상:

  • 모델을 구성하는 어떤 면은 법선 벡터가 바깥쪽을 향하고, 어떤 면(예: 구멍 내부나 결합된 서피스)은 법선 벡터가 안쪽이나 반대 방향으로 잘못 뒤집혀 있으면, 소프트웨어는 오프셋을 생성할 때 면들이 서로 다른 방향(어떤 면은 밖으로, 어떤 면은 안으로)으로 찢어지거나 충돌하게 계산합니다.

3. 형상 붕괴(Mangled Geometry):

  • 이로 인해 오프셋된 면들끼리 서로 꼬이거나(Self-intersection), 면이 찢어지면서(Tear apart) 정상적인 두께를 가진 솔리드를 생성하지 못하고 에러가 발생하거나 일그러진 형태가 만들어집니다.

 

"서피스 평면은 법선 벡터 방향을 기준으로 안쪽(-) 또는 바깥쪽(+)을 구분 할 수 있습니다."


by korealionkk@gmail.com

반응형