Oculus Quest만으로 프리휠 VR로 여러 사람의 위치를 추적할 수 있습니다.

3099 단어 OculusQuestUnity

입문


이 글은 Unity #2 Advent Calendar 2019의 14일째 글입니다.
멀티플레이어에서 자유 롬 VR을 실현하기 위해서는 유저의 추적이 필요하고 비교적 큰 기계가 필요하다.
오큘러스 퀘스트의 수호자만으로도 일정한 정밀도로 이루어질 수 있으니 소개하고 싶습니다.

Free Room VR이란 무엇입니까?


프리휠 VR은 유저가 장내에서 자유롭게 움직일 수 있는 VR 콘텐츠로 다음과 같은 시설이 있습니다 (유)
  • BIOHAZARD WALKTHROUGH THE FEAR
  • 근미래 압제전 아레나 케이스 기동대 ARISE Stealth Hounds-VR ZONE SHIN JUKU
  • 제로 지연
  • Oculus Quest 설정


    홈페이지 화면에 방 비율을 설정하고 걸을 수 있는 범위를 수호자의 경계선을 그립니다.다음 그림은 경계선과 이를 바탕으로 생성된 재생 영역 (사각형 영역) 입니다.

    이때 멀티플레이어 게임에서 사용되는 오큘러스 퀘스트에서 거의 같은 재생 구역을 만드는 것이 대위에서 중요하다.
    바닥의 사각에 껌 등, , , 등의 형식으로 표시를 하고 그 선을 따라 경계선을 그리면 기본적으로 같은 놀이구역이 형성된다.

    단위 설정


  • Oculus Integration.
  • OVRCameraRig 사전 조립 또는 OVRPlayerController 사전 조립을 히라르키에 추가합니다.
  • 이 사전 제작 어셈블리에 부착된 OVRManager 를 찾은 다음 Tracking > Tracking Origin TypeStage 로 변경합니다.
  • Tracking Origin TypeEye Level 또는Floor Level인 경우 유저의 XZ 좌표가 레벨에 배치된 위치를 유지하고, Stage인 경우 게임의 원점 좌표(0,0,0)는 게임 영역의 중심이 되며, 유저의 Game Object는 게임 영역의 중심을 기준으로 하는 위치로 이동합니다.이 구조에 따라 실제로 걸을 수 있는 영역은 게임 내의 위치와 일치한다.

    재생 영역 문제


    방 규모의 재생 구역에서 여러 대의 Oculus Quest의 위치를 추적할 수 있지만 단 한 가지 문제만 있습니다.
    게임의 원점과 게임 영역의 중심을 일치시킬 수 있지만 Y축이 회전하고 Z축의 방향은 원점에서 4변의 어느 하나로도 확정할 수 없다.
    즉, 같은 구역의 재생 구역을 만들어도 0 °, 90 °, 180 °, 270 ° 중 하나로 회전하기 때문에 유저의transform을 동기화해도 위치가 일치하지 않는다는 것이다.
    우리는 조작할 필요가 없이 이 문제를 해결하기 위해 다음과 같은 절차를 고려했다.
  • 재생 영역을 4등분한다.십자형×
  • 유저의 초기 위치를 4등분의 구역 중 임의로 배치하고 정면 방향도 고정합니다.예를 들어 (3,-3,0)을 초기 위치로 설정하면 이 위치보다forward를 정면 방향으로 설정하면 백,right,left를 향하지 않습니다.
  • 게임이 시작된 후 유저가 몇 프레임 이후에 정면으로 향하지 않으면 재생 구역이 회전하기 때문에 원점을 중심으로 유저의 게임 Object를 회전합니다.플레이어가 오른쪽으로 돌면 재생 영역이 90° 회전하므로 플레이어의 Game Object를 -90° 회전합니다.
  • 게임이 시작된 후 바로 유저의 위치AwakeStart를 반영하지 않아 사용할 수 없습니다.나는 네트워크 라이브러리가 동기화되기 전에 담입하고 회전 수정을 하는 것은 나무랄 데가 없다고 생각한다.더 좋은 방법이 있으면 댓글로 알려주세요.
    회전 수정 전 재생 영역과 유저의 위치와 방향 모드

    총결산


    오큘러스 퀘스트의 수호자가 대단합니다!

    좋은 웹페이지 즐겨찾기