본문 바로가기
IT

[유니티/MR] 2. 현실 세계와 물리적 상호 작용하는 물체 만들기 + 테스트 오류 해결 (BuildFailedException: OpenXR backend for Oculus Plugin is disabled, which is required to support Unity OpenXR Plugin. Please enable OpenXR backe..

by 배애앰이 좋아 2024. 3. 10.
반응형

 

목표 : 유니티 MR 제작하는 방법에 대해 알아봅시다.

 

https://youtube.com/playlist?list=PLpEoiloH-4eMPHceEECeG0Qyb0lT0Eeti&si=isahzHaYClkhoM_d

영상을 기반으로 작성된 글입니다.

사용한 유니티 버전 : 2022.3.16f
사용한 VR 기기 : meta quest 3

 

 

1. 현실 세계와 물리적 상호 작용하는 물체 만들기

 

OVRSceneManager 라는 prefab 을 찾아서 추가해주고 해당 컴포넌트 안에 plane, volume 도 아래에서 검색을 통해 찾은 prefab 을 넣어줍니다.

 

그 다음 CameraRig 컴포넌트 하단에 부분을 아래와 같이 바꿔줍니다.

 

여기까지 한 후 1차 테스트를 하면 안내 창이 뜨면서 주변을 스캔해서 공간을 구성하는 것을 확인할 수 있습니다.

 

잘 되는 것을 확인했다면 이래 이어가며 되며, 만약 오류가 뜰 경우 해결해줍니다. (해당 글 아래, 전 MR 1번 글에 제가 해결한 오류가 있는데 이를 보시고 동일한 오류라면 시도해보시길 바랍니다)

 

이어서 인식한 공간에 물리 상호작용을 할 수 있는 객체를 만들어보겠습니다. 정확히 말하면, 참고 영상에서는 공을 생성해서 날렸을 때, 공간을 인식해서 튀게 만들어 볼 것입니다.

OVRSceneManager 의 컴포넌트에 넣었던 prefab 을 다음과 같이 바꿔줍니다.

 

새로운 스크립트를 아래와 같이 만들어줍니다. 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpawnBall : MonoBehaviour
{
    public GameObject prefab;
    public float spawnSpeed = 5;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(OVRInput.GetDown(OVRInput.Button.SecondaryIndexTrigger))
        {
            GameObject spawnBall = Instantiate(prefab, transform.position, Quaternion.identity);
            Rigidbody spawnedBallRB = spawnBall.GetComponent<Rigidbody>();
            spawnedBallRB.velocity = transform.forward * spawnSpeed;
        }
    }
}

 

위에서 생성한 스크립트를 다음과 같은 위치에 붙여주고 spawn speed는 5로 설정해줍니다.

 

그 다음 프리팹으로 들어갈 공 오브젝트를 생성해줍니다.

물리적인 상호작용을 위해 Rigdbody 를 추가해줍니다.

 

눈에 잘 띄게 하기 위해 빨간색 material 을 하나 만들어서 넣어주고 탄성력을 조절하기 위해 아래와 같이 physic material 를 만들어서 값을 조절해줍니다.

 

만든 physic material 를 공의 collider에 넣어주고 아래 컴포넌트 설정을 바꿔줍니다.

 

안 끊기도록 아래와 같이 project setting 에서 time 을 바꿔줍니다.

 

최종적으로 위에서 만든 공을 프리팹으로 만들고 아래처럼 추가해줍니다.

 

+ 추가적으로 공간 물리를 더 자연스럽게 하고 싶다면 아래와 같이 추가 설정해줍니다.

 

 

2. 테스트 오류 해결

 

방금까지는 잘 되었는데 프로젝트를 건들고 다시 실행하니 아래와 같이 오류가 떴습니다.

 

오류를 봤을 때 XR 플러그인 문제 같아서 새롭게 설치 및 업데이틀 하기 위해 

https://developer.oculus.com/downloads/unity/ 에서 Oculus Integration SDK (Legacy) 받고 설치했지면 해결이 안되었습니다. 

 

추가적으로 찾은 방법에는 재 부팅 및 MR 새 프로젝트를 만드는 방법도 있었지만 안 되었습니다.

 

찾다보니 저 오류 보다는 project setting 에서 oculus 세팅의 문제라는 것을 알았습니다. 

 

하지만 apply 해줘도 계속 오류가 뜨며 아래와 같이 오류가 뜨는 것을 확인했습니다.

다만 아래 친절한 방법에 따라 해봤지만 해결되지 않고 계속 오류 상태로 돌아갔습니다.

 

결국 찾은 최종 해결 방법 :

https://stackoverflow.com/questions/75569395/how-to-enable-openxr-backend-for-oculus-plugin

 

위의 OVRGradleGeneration.cs 에서 

if (!useOpenXR)
{
    // throw new BuildFailedException("OpenXR backend for Oculus Plugin is disabled, which is required to support Unity OpenXR Plugin. Please enable OpenXR backend for Oculus Plugin through the 'Oculus -> Tools -> OpenXR' menu.");
}

 

위 부분을 주석처리해주니 다시 빌드되면서 테스트 가능했습니다.

 

 

반응형

댓글