Unity/Unity Study

[Pixyz 공부하기] Tessellation과 Decimation이란

pnltoen 2022. 12. 18.
반응형

Tessellation & Decimation

Unity Pixyz


서론

 

지난 포스팅([Pixyz 공부하기] CAD와 Mesh의 차이 (BRep까지))에서 CAD와 Mesh의 차이점에 대해 학습해 보았다.

 

 

[Pixyz 공부하기] CAD와 Mesh의 차이 (BRep까지)

CAD vs Mesh + Brep Study 서론 매번 헷갈리는 내용인데... 사실 헷갈린다는 것 자체가 잘 모른다는 뜻이여서 ㅎ.ㅎ... 부끄럽지만 이제라도 정리해봅니다. Pixyz를 사용하면서 어떤 기능은 BRep 단에서어

pnltoen.tistory.com

 

글 내용 중 CAD데이터를 3D 응용프로그램에서 사용하기 위해서는 Mesh 형태로 만들어야 한다고 포스팅을 작성하였는데이번 포스팅에서는 그럼 어떻게 CAD 데이터를 Mesh로 변환하는지 다뤄보고자 한다.

 

Tessellation

 

Pixyz에서는Tessellation 기능을 활용하여 CAD 데이터를 Mesh로 변환한다. Tessellate라는 단어의 기원에 대해서 찾아보니, 고대부터 도형을 활용하여 건축 및 평면을 채우는 방법을 테셀레이션이라고 한다. CAD 데이터는 삼각형으로 이루어져 있지 않음으로 Mesh로 변환 즉 삼각형으로 채우는 과정을 Tesselation이라고 한다. 

 

 

Tesselation 화면을 실행해보면 Preset이라는 부분이 있는데 품질을 선택할 수 있다. 하나하나 값을 넣어줄 수도 있고 Preset을 선택할 수도있다. 별도의 기능은 아니고 Pixyz에서 자주 사용하는 값을 넣어놓은 것. Onboarding을 해보면 소위 말하는 Magic Number을 알려달라고 하시는 분들이 계신데 Preset을 기준으로 확인해보면 좋다.  

 

 

임의의 값을 넣으면 Preset에 "Custom"과 같이 별도로 나타나지는 않고 빈칸으로 바뀐다.

 

 

해당 값의 설정은 일반적으로 위와 같이 곡면부에 유효하다고 생각하면 된다. Low로 구성했을 경우 메쉬는 다음과 같이 생성되었다.

 

 

메쉬가 매우 크게 생성되어 있다. 원치 않은 결과일 경. 이 경우 [우클릭 - Retessellation]을 할 경우다시 테셀레이션을 진행할 수 있다. 

 

 

Very High 설정으로 Tessellation을 진행해보니 삼각형의 크기 조차 보기 힘들정도로 잘게 나누어진 것을 볼 수 있다. 물론 실제 프로젝트에서 위와 같은 오브젝트를 저렇게 잘게 나누어줄 필요는 없다. 조금 멀리서 보면 그게 그거이기 때문!

 

보면 Max SAG말고도 Length와 Angle이 있다. 다른 값은 무슨 뜻인지 알아보자. Low로 했을 때는 값이 1mm Very high로 0.01로 설정하는 것을보면 값이 작을 수록 정확한 값 즉 CAD 데이터와 유사하게 Tessllation 한다는 것을 알 수 있다.

 

공식문서에 보면 다음과 같이 정의되어 있다.

 

  • Max SAG: The maximum distance between the geometry and the tessellation (also called "Chord error"). This parameter ensures that the mesh is similar enough to the original analytical surface (exact geometry).
    A low value means that a very fine mesh is created. The distance values are expressed in millimeters.

이 부분을 이해하려면 모따기(Chamfer)와 모깍기(Fillet)를 이해해야 한다. 해당 내용은 본 포스팅에서 다루지 않는다. 해당 값은 모따기와 모깍기의 정확도를 높여주는 값이다. 

 

공식모델로 다시 한번 보면 다음과 같다. 

 

좌측의 경우 Very High로 삼각형의 개수를 771337이고 우측 형상의 경우 Low로 삼각형의 개수는 50685이다. 원형의 디테일이 모두 사라진 것을 볼 수 있다. 

 

Angle 값이 작아질 수록 더 상세한 표현이 가능한데 완벽한 구를 가정했을 때 Max Angle 값이 30일 경우 360도 / 30 = 라인 12개로 원형을 표현하게 된다. 마찬가지로 5도 일 경우에는 360 / 5 = 62 거의 원형에 가깝게 표현된다.

 

이 부분을 본다면 자연스럽게 Max Length의 경우에도 이해할 수 있는데 길이간 긴 오브젝트의 경우 길이에 따라 오브젝트를나누는 기능이다. 물론 나눌수록 삼각형의 개수는 늘어난다. 

 

위에 있는 사진 처럼 Tessellation시 원형이 N각형이 되어 버리는데 그럼 이 경우 무조건 저렇게 많은 삼각형을 사용해야 할까? 다행히도 아직 한가지 더 방법이 있다

 

Decimate

 

Decimate 기능을 사용하면 Tessellation 된 모델의 삼각형 개수를 한번 더 줄일 수 있다.

 

 

다시 한번 Very High로 Re-Tessellation을 하였다. 이 경우 삼각형의 개수는 771393이다. 우측의 사진을 보면 거의 유사하지만 삼각형의 개수는 587881로 상당히 감소한 것을 볼 수 있다. Decimate 또한 Value를 기반으로 한 Quality Preset과 개별 Value로 설정이 가능하다. High로 갈수록 공차(Tolerance)가 증가하는 것을 볼 수 있다. 마찬가지로 기존 데이터와의 공차각인 Normal Tolerance 또한 증가하는 것을 볼 수 있는데 이는 Decimation은 최적화 툴로 High는 최적화를많이 하겠다는 뜻이여서그렇다.

 

Lineic Tolerance는 날카로운 물체의 경우 사용하는 것인데 설정을 사용하면 데이터가 커진다 (삼각형의 크기가 덜 감소함)

반응형

댓글