VR 개발 중 OVRRaycaster에서 조금 빠진 이야기

VR이라고 썼습니다만 주로 Oculus의 이야기입니다, 죄송합니다.

소개



Unity 장면에서 Hierarchy와 Inspector를 표시 할 수있는 Runtime Inspector & Hierarchy가 디버깅에 너무 유용합니다. #OculusGoDev


여기의 트윗을 보고, 지금 개발 중인 게임의 디버그 기능으로서 추가해 보았는데, 빠진 포인트가 있었으므로, 같은 처지의 사람이 있으면 도움이 되면 좋겠다고 하는 곳입니다.



결론에서 말하면 Oculus에서 제공하는 OVRRaycaster.cs에서는 Graphics.raycastTarget의 판정을 하지 않은 것 같습니다.

uGUI 조작시 어쩐지 잘 움직이지 않는다고 생각하면 다음을 시도해보십시오.




OVRRaycaster.cs

private void GraphicRaycast(Canvas canvas, Ray ray, List<RaycastHit> results) {
...
                if (graphic.depth == -1)
                    continue;
...
        }



위의 코드를 다음과 같이 수정합니다.




OVRRaycaster.cs

private void GraphicRaycast(Canvas canvas, Ray ray, List<RaycastHit> results) {
...
                if (graphic.depth == -1 || !graphic.raycastTarget)
                    continue;
...
        }



이것으로 잘 움직였습니다.



이것 아래는 RuntimeInspector의 소개와 OculusGo에서 uGUI를 조작할 때의 비망록입니다.



메모



이번 사용한 자산은 UnityRuntimeInspector입니다.

htps // t. 코 / 1에 h6m20 SLF

피 c. 라고 r. 코 m / y 피 wm ぁ fJ



이런 느낌의 히에랄키 인스펙터를 게임 장면에서 미리 볼 수 있습니다.



OculusGo에는 RemoteContoller가 부속되어 있으므로, 이 컨트롤러에서 Raycasting을 실시해, uGUI의 컨트롤을 실시하려고 생각했습니다. (이번에는 GazeInput을 사용하지 않았습니다.)



조사해 보면 Oculus사가 RayCast를 마우스 인풋과 같이 변환하는 래퍼를 제공되고 있는 것 같습니다. > OVRInputModule.cs, OVRRaycaster.cs



사용 방법




  • OVRInputModule.cs를 StandardInputModule 대신 EventSystem에 연결

  • OVRRaycaster.cs를 GraphicRaycaster 대신 Canvas에 연결


이것만으로 RemoteContoroller에서 uGUI에 입력을 보낼 수 있게 되었습니다, 간단하네요.


좋은 웹페이지 즐겨찾기