Unity/Unity Study

[유니티 Pixyz 아티클] CAD 데이터의 최적화를 통한 실시간 백서 리뷰

pnltoen 2023. 12. 27.
반응형

Pixyz E-Book

Unity Technologies


서론

 

이제보면... Pixyz는 기본 소양이 되어 버린 느낌... 그 나마 기계과를 졸업하고 캐드를 해봤어서 여러 부분에서 이해가 쉬웠다. 간단하게 하려면 사실 버튼 몇개만 눌러도 강력한 기능을 지원하고 (decimate, z-fighting 등...) 깊게 보면 끝도 없는데 결과적으로는 그래픽스가 주이다. 하지만 실제 사용자 입장에서 봤을 때 BREP, Retopologize 알고리즘과 같은 부분은 전혀 관심이 없을 것이고 실제 MR 개발에서 실측을 맞추는 용도, 시뮬레이션에서 물리 값 계산 (유니티의 단위와 CAD 단위가 다름으로 흔히 기본 물리학에서 단위 맞추듯이 이 부분이 정리가 안되면 단위없는 물리력 계산이 됨 예: 1000배가 큼) 등이 있으니 한번 쓱 정리 후 넘어가보고자 한다.

 

관련 원문은 유니티 스퀘어 - Resources 탭에서 마켓팅 정보를 입력 후 확인할 수 있다.

 

Unity Square

CAD 데이터의 최적화를 통한 실시간 3D 시각화 백서

www.unitysquare.co.kr

 

개요에 보면, 데이터 가공 시 CAD 디자이너의 역할, 최적화의 중요성, 모든 사용 사례에서 원활한 성능을 보장하는 best practices 그리고 엔지니어링 기업이 RT3D를 시작할 때 유의해야 할 사항에 대해 소개한다고 되어있다. 직접 해본 내용 그리고 머리속에 있는 내용을 정리할 겸 그리고 백서와 비교해보면서 글을 정리해볼 예정

 

본문

 

CAD 디자이너의 역할

 

개요 부분에 Pixyz를 써야 하는 이유에 대해 나와 있지만... 내용이 조금 부족한 것 같다. 보다 이해가 쉬운 내용으로 설명을 하고자 한다. 최근 페이스북 알고리즘에 노출되어서 본 글이 있다. 

 

- [루리웹] : 시티즈 스카이라인2 최적화가 사실상 힘든 이유.jpg

 

시티즈 스카이라인2 최적화가 사실상 힘든 이유.jpg | 유머 게시판 | 루리웹

기초 설계부터...

bbs.ruliweb.com

 

퍼온 글인 것 같은데 원본 글은 찾을 수 없었다. 관련해서 해당 내용을 공유하는 많은 글을 보았는데 폴리곤 관련 문제를 지지적하고 있다. 간단히 메쉬를 그리는 과정에 대해 이야기 하면 폴리곤 정보 (각 폴리곤을 구성하는 노드의 좌표 값을 가져와서 모델을 렌더링 하고 라이팅을 굽는다) 라이팅은 때에 따라서 여러번 덮는 경우도 있으니... 참고 할 것

 

메타데이터에 관해 이야기를 하는데... 사실 이 부분이 가장 어려운 것 같다. 현업에서 만난 사람들 중 대부분이 모델링이 적절하게 되지 못한 경우 말 그대로 도면 정보와 다른 경우, origin 또는 pivot 정렬이 되어 있지 않은 경우 그리고 메타데이터가 없는 경우가 대부분이다.

 

가령 stacker가 있다고 생각해보자. 작업 효율을 위해 센서를 업그레이드 하였는데 업그레이드 된 센서를 다시 모델러가 

 

개인 견해

 

이 부분에서 꼭 이야기하고 싶은 내용이 있다. 간혹 당사는 모델러 분들께서 mesh를 다 "정리"해주신다는 분들이 계시다. 이 때의 정리의 개념이 RT3D와 Static Simulation에서 많이 다른데 아래의 그림을 참고하면 이해가 쉽다.

 

ⓒ Ansys Mesh Methods Explained - fea tips

 

Mesh Structure 탭을 보면 자세한 내용을 확인할 수 있다. 소위 유한요소법에서 이야기 하는 meshing은 예쁘게(?) structured한 메쉬를 선호한다. 이는 메모리 용량과 계산 시간을 효율적으로 단축할 수 있기 때문이다. 따라서 해석을 위한 모델은 chamfer와 fillet을 제거하고 진행하는 경우가 많다. 하지만 유니티든 언리얼이든 옴니버스든 RT3D는 structured 한 메쉬를 원하는게 아니라 메쉬를 형상화 하는 삼각형 개수 자체를 줄이는 방법을 사용한다. 

 

이는 기본적으로 유니티는 렌더를 위한 메쉬 (mesh renderer)와 물리엔진을 위한 메쉬 (colliders)를 나누기 때문이다. 

즉 기본적인 Mesh는 단순하게 눈에 보이는 용도로만 사용됨. 가장 대표적으로 Pixyz - Decimate 방법을 사용하면 최적화를 진행할 수 있다.

 

ⓒ  Decimate To Quality - Pixyz Document

 

 

Structured와 Unstructured 가 상당히 모호할 수 있는데 일반적으로는 unstructured더라도 개수가 적 메쉬를 가장 선호한다고 생각하면 쉽다. 메타데이터에 대해 이야기 하는 이유는 단순하게 해당 메타데이터가 모델의 정보를 갖고 있어서 뿐만 아니라 Pixyz plugin은 스크립트를 통해 metadata를 접근 및 수정할 수 있기 때문이다.

 

ⓒ  Using Meatada - Pixyz Document

 

항상 큰 숙제이다. 디지털 트윈을 할 때 기존 프로세스와 안 맞는 부분은 모델러가 모델링 툴에서 할 것인지... 아니면 유니티에서 고칠 것인지... 나는 개인적으로 모델러의 역할이라고 믿고 있음...

 

최적화 프로세스

 

아티클을 읽으면서 리뷰를 작성하다 보니... "실시간 3D용으로 데이터를 최적화 하는 것이 중요한 이유"가 뒤에 있었다. 아티클 내용 또한 모두 맞는 말이지만... 기본적으로 인더스트리 고객들은 해당 내용으로 설명하면 이해를 못하는 경우가 많아서 항상 Ansys, Abaqus에 빗대서 이야기 하는 편.

 

아티클 원문에 베스트 프렉티스가 있는데 간단하게 tessellate 그리고 decimate만 짚고 넘어가고자 한다. tessellate는 타일링과 같은 개념인데 초기 모델링 방식 (각 지점의 노드 좌표 값을 모두 찍은 후 연결, Ansys classic에서 한번 해보고 지옥을 맛봤다)

 

당시 I 형강으로 응력해석을 했었는데 각 노드 점을 다 찍어줬어야 했다. 보통 CAD에서는 BREP 라고 불리는 각 노드를 연결해서 폐공간으로 렌더 및 형상화를 진행하기 때문에 noise가 없는데 이를 실제 RT3D에서 표현하려면 메쉬화를 진행해야 한다. 이 때 각 노드 기반으로 어떻게 삼각형을 채울지(= 타일링을 할지)가 바로 테셀레이션이다. 

 

이 후 데시메이트는 재구성 작업을 통해 폴리곤 개수를 줄여주는 과정으로 이해하면 쉽다. 아티클에 적절한 사진이 있으니 확인해보면 좋다.

 

계층곽 관련해서 진행한 언급이 있는데 이는 보통 CAD는 각 파트를 모델링 하고 Assembly 하는 방식으로 진행하여 발생하는 문제이다. 당연히 모델링 과정에서는 추가 업데이트시 참조된 원본 파트만 수정하면 Assembly가 자동으로 수정되는 방식이 대부분이다 보니 해당 방식을 선호하지만 실제로 RT3D에서 사용할 때 트리가 복잡하면 오브젝트 관리가 머리아프고 성능에도 악영향을 미친다. (유니티에서는 Hierarchy라고 하기도 하고 CAD에서는 tree 또는 model tree 라는 용어를 쓴다)

 

결론

 

업무를 하면서 사용하는 Pixyz Plugin 관련 아티클을 정리해보았다. 기술적인 내용이 없었다는 부분이 아쉬웠는데 metadata 관련한 부분을 정리해서 포스팅할 예정

반응형

댓글