Unity/Physics & Meshes

[Unity Physics] Real-Time 시뮬레이션 유니티의 물리엔진 #2 (Unity 2022.1Alpha) Robotics 튜토리얼

pnltoen 2022. 6. 27.
반응형

Unity Physics


2022.05 Unity Korea Live 진행 내용

잘못 작성되어 있는 내용 또는 업데이트가 된 내용이 있다면 댓글로 알려주시면 감사하겠습니다.

ref#1 Unity : Expanding the robotics toolbox: Physics changes in unity 2022.1


변경점 #1 Physics Debugger - Info (Rigidbody / Info => Physcis Debug)

기존 Rigid Body/Info에 들어가면 다음과 같은 Ojbect의 Properites를 확인할 수 있었다.

 

하지만 접근성 자체도 쉽지 않을 뿐더러, 가장 중요하게 Info을 여는 순간 에디터 성능이 크게 저하되는 이슈가 있었고, 2022 버전부터는이 Info가 Physics Debug로 이동되었다.

(좌) Unity 202, (우) Unity 2021
 

Rigidbody 하단에 Info가 없어진 것을 확인할 수 있다. 대신 Unity 2022.1 부터는 Physics Debug에서 다음과 같이 쉽게 확인할 수 있다.

Info, Filtering, Rendering, Contacts, Queries, Other로 나뉜 모습, 사실 가장 이전에 어려웠던 부분이 여러 Object의 Rigidbody Info를 확인하기 위해서는 Inspector 창을 여러개 실행시켜야 했는데 이제는 그럴 필요 없이 멀티 클릭을 하면 Physics Debug에 클릭한 오브젝트가 나타난다.

 

Tracked Objects : 2 밑에는 오브젝트 명 그리고 Info 정보가 나타난다.

 

옆에 Lock을 클릭하고 물체를 이리저리 움직여 보면 다음과 같이 출력된다.

산업에서 유니티를 사용할 경우 정말... 로봇 및 자동차 오브젝트는 정말... 많은 하위 오브젝트를 갖고 있는 것을 확인할 수 있다. 기존 로봇틱스에서는 말하는 링크는 유니티에서 오브젝트로 Joint는 별도의 Component로 유니티로 넘어온다. 넘어올 때 Visuals, Collisions로 나뉘어서 넘어오게 되는데 이러한 각 파트의 물리 정보를 얻기에는 기존 Rigidbody 또는 Articulation Body의 Info는 너무 불친절하였다.

따라서 이를 보려면 다음과 같이 Inspector창을 열고.... 오브젝트 선택 후 Lock을 걸고 다시 Inspcetor 창을 열고... 다시 Lock을 갈고 이 작업을 무한 반복해야 했다. 하지만 이제는?

너무 편안하게 바뀌었다.

변경점 #2 Contact Points Visualization

Contact Points가 가시화 되도록 바뀌었다. 해당 부분에 설명하기에 앞서 간략하게 유니티에서 Mesh Collider를 알아보았다. 유니티의 Mesh Collider는 Convex가 Triangles 255개로 고정되어 있고, 원래 게임 엔진의 특성상 간략하고 빠른 즉 최적화 측면에서의 메쉬 콜라이더를 생성한다.

다음의 예시를 보면 유니티의 메쉬는 얼추 비슷한 형상을, Unity Robotics Packages의 URDF-Importer에서 사용하는 V-HACD Importer 방식은 정교한 메쉬 형상을 띄고 있는 것을 확인할 수 있다.

여기서 더 메쉬 최적화를 하려면 Pixyz를 사용해야 한다. 이 부분은 다루지 않음.

갑자기 Contact Points에 대해서 이야기를 하다가 이 말을 왜하냐? 라고 생각할 수 있는데 이렇게 메쉬 콜라이더 형상에 따라서 문제가 생기는데 다음의 영상을 참고하여 이를 확인할 수 있다.

 
 

 

Unity Convex (Legacy) vs V-Hacd (URDF Importer)

 

같은 모델, 같은 스크립트인데 분명 결과가 너무 다르다. Keyboard의 Input 방식을 사용하여도 미세하게 회전각, 범위가 다른 것을 확인할 수 있고 자체적으로 로봇이 떠는 것과 같은 현상이 발생하는 것을 확인할 수 있다. (메쉬 콜라이더의 충돌 현상) 근데 사실 이게 지금 내가 같은 모델, 같은 Controller 스크립트라고 이야기를 해서 그렇지 막상 실 프로젝트 (다수의 로봇 모델이 있는) 사이즈에서 이러한 문제를 찾는 것은 여간 쉬운일이 아니다.

하지만 이번 업데이트에서 Contact Points를 지원함으로써 다음과 같이 서로 다른 오브젝트가 미치는 물리력의 방향 벡터를 확인할 수 있다.

해당 모델은 V-HACD 방식으로 Import 하였고, 여기에서 만약 Griper 부분 또는 Servo 부분의 Collider 충돌 문제가 크다고 판단하면 모델링 또는 Mesh를 수정함으로써 진행할 수 있다. 커스텀 기능이 되게 강화되어 만약 로봇은 보기 싫고 Griper가 Grip하는 물체만 Tracking 하고 싶을 경우 다음과 같이 사용할 수 있다.

 
Pick up and Place

Contact Vector만 Visualization 할 수 있는 것이 아니라, Forward Dynamics 그리고 Inverse Dynamics 기능도 매우 강화되었기 때문에 다음과 같은 내용도 진행 할 수 있다.

출처 : 유니티 블로그
 

요약

게임 엔진 => 게임 엔진 + 시뮬레이터로 변환되는 과정에서 기존 게임을 만들 때는 필요하지 않았던 물리 디버깅이 많이 요구되었는데 빠른 피드백 및 업데이트가 진행된 것 같음.

 

반응형

댓글