Unity VHACD
참고 문헌 : Unity-Technologies/VHACD Github
잘못 작성되어 있는 내용 또는 업데이트가 된 내용이 있다면 댓글로 알려주시면 감사하겠습니다.
☆★Special thanks to Laurie & Amanda★☆
배경
지난 포스팅 [Unity Physics] Real-Time 시뮬레이션 유니티의 물리엔진 #2 (Unity 2022.1Alpha) Robotics 튜토리얼에서 Unity(Legacy) Convex와 VHACD 방식의 차이를 보았습니다. 이어서 Unity Robotics Packages의 URDF-Importer에서 VHACD 방식을 내장 지원하지만 일반 모델, 에셋, step, obj와 같은 모델에서도 이를 사용할 수 있는지 확인해보았습니다.
기존 문제점
유선형 모델의 경우 Mesh를 반영하지 못함, 저 초록색 영역이 실제 부딪히는 영역이다. 전혀 반영을 하지 못하고 있음. 이러한 이유는 Unity는 기존 게임엔진으로 Performance Optimazation 측면에서 이점을 얻기 위해 Triangles 255개로 개수를 제한하기 때문.
사용 방법
Unity VHACD Github에 들어가서, Generator/vhacd-child로 Branch를 변경한다. Docs를 읽어보면 Mesh Decomposer Tool Usage 부분이 있는데 해당 부분 윗 부분부터 해당 부분에서 사용 방법을 알 수 있다.
결과
Autodesk Bike Sample 사용
Resolution 값이 너무 높아서 메쉬 생성에 1시간 30분 소요됨. 하실 분들은 Resolution 값을 잘 조절하는게 좋은 것 같다.
파라미터 고찰
사용한 파라미터
A. Resolution & maxNumVerticesPerCH 매우 중요, Unity Legacy의 Convex의 경우 삼각형 255개 제한이 걸려있어서 메쉬 형상이 정확하게 잡히지 않음. 따라서 이를 해결하기 위해 convex-hull의 maxNumVerticesPerCH 값을 512로 조정하고 Resolution을 Default 값의 10배인 10,000,000으로 설정하니 mesh가 적절하게 잡히는 것을 확인할 수 있었음. 하지만 Mesh를 형성하기 위한 시간이 매우 오래 걸림. Resolution을 너무 과도하게 잡은 것으로 판단.오브젝트 전체 메쉬를 자동생성하는 방법으로, 복잡한 특정 오브젝트에 따른 각각의 설정이 불가능하다는 단점이 있음.
B. a에서 말한 단점을 보완하기 위해 concavity 그리고 alpha, beta, gamma와 같은 bias 값을 적절하게 조절하는 것이 필요함. 특히 Resolution에 따라 메쉬 생성 시간이 극단적으로 차이남으로 최소한의 Resolution과 bias 값을 조절하는 것이 중요하다고 생각됨.
C. Tetrahedron-based approximate convex decomposition
Mode : 1의 유선형 모델 경우 오브젝트의 메쉬가 극단적으로 잡히는 것을 확인하였음.
댓글