HoloLens 개발메모#9 – 충돌처리

20170216_140547_hololens

Spatial Mapping을 이용한 데모 개발중

  1. Spatial Mapping으로 삼각형 리스트를 얻어온다.
  2. 월드 영역을 Grid로 쪼개서 삼각형들을 담는다.
  3. 각 삼각형들은 Holographic API에서 제공하는 Surface Mesh로부터 얻어온다.
  4. 그리드의 각 Cell경계로 삼각형이 걸칠 수 있다. 따라서 Cell들은 여러개의 Surface Mesh와 연결될 수 있고 각 Surface Mesh는 여러개의 Cell과 연결될 수 있다.
  5. Surface Mesh는 시시각각 업데이트 된다. 삼각형 리스트가 갱신될 수도 있고 아예 사라질 수도 있다. Surface Mesh가 갱신되면 Grid의 삼각형들에 대해서도 똑같이 반영되어야 한다.
  6. 충돌처리할땐 캐릭터 타원체와 속도벡터를 이용해서 캡슐을 만든다. 이 캡슐로 Grid의 Cell들을 골라낸다. 해당 Cell들은 또 여러개의 Surface Mesh의 삼각형들의 일부를 가지고 있다. 이 삼각형들을 충돌처리 삼각형으로 수집한다.

해서 일단 돌아감. 캐릭터를 1:1사이즈로 띄우고 XBOX ONE컨트롤러를 이용해서 사무실 안을 돌아다니게 한다. 지형지물과 충돌처리도 가능.

돌아는 가는데…넘어야할 산이 많구나~

[문제점]

  1. KD-Tree를 쓸까 Grid를 쓸까 하다 그래도 넣고 빼는게 빠른 Grid를 썼는데 그래도 디버그 모드에선 꽤 느림. 삼각형 리스트 갱신 이벤트가 수시로 발생하는데 그거 일일히 다 처리하면 너무 느림. Grid갱신을 멀티 스레드로 빼고 갱신주기도 조정을 해야겠다.
  2. 내가 바라보는 영역에 대해서 삼각형 리스트를 만들기 때문에 보이지 않는 영역은 삼각형이 없음. 즉 내가 탁자를 바라보더라도 탁자 뒷면의 삼각형은 없기 때문에 탁자 뒷편에서 내쪽으로 캐릭터가 달려오게 한다면 얘는 탁자를 뚫고 올것임. 반대로 탁자쪽으로 갈때는 충돌처리에 걸려서 막히겠지.

하여간 최대의 문제는 속도.속도.속도.


HoloLens 개발메모#9 – 충돌처리”에 대한 답글 1개

  1. 저도 홀로렌즈를 이번에 사서 개발을 할까 하는데, 오큘러스처럼 개발용 pc의 cpu랑 gpu 성능이 중요한가요?
    영상을 보니까 프레임 끊김현상이 조금 보이는것 같은데…
    렌더링을 전적으로 홀로렌즈 디바이스에서 처리하는 건지 pc에도 부담이 가는건지 궁금하네요.

    좋아요

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중