Unduck 게임의 패스스루환경과 사물 인식은 완료해서 MR 환경을 맞추었다.

그래서 이를 이용한 MR 게임을 만드려 보려고 했다.

 

이럴수가.. Depth API를 활용한 모습을 보고 당연하게 MR 스테이지에 있는 종이학을 쉐이더를 넣으면 적용 될 줄 알았다.

Meta Quest2가 구 하드웨어라 이용할 수 없었다.............

 

그래도 포기 할 수 없어서 여러 방법을 찾아보았다.

비슷하게나마 구현 할 수 있도록 나는 생각했다. 결국에 얼추 비슷한 기능을 만들 수 밖에...

 

1. 가구 뒤에 오브젝트가 안보이면 된다.

2. 가구에 뭔가 설정을 해줘야 한다.

3. 종이학의 렌더러를 껐다 켜야한다.

 

이런 식으로 진행하려고 한다.

먼저 Quest2가 바라보는 화면은 카메라 시점이기 때문에 종이학(단서)가 가구 뒤에 있으면 안보이게 해야 했기때문에

카메라에 방향에 맞는 레이캐스트를 활용해줬다. 이때 레이캐스트는 "Wall" 이라는 태그를 가진 collider와 충돌하게 되면 그 종이학의 렌더러를 꺼주면 되는것이다.

그나저나 왜 Wall이냐.. 원래 벽만 설정하면 되는줄 알았지만 Wall로 가구들의 태그를 퉁쳐버리자... 그랬더니 확실하게 앞에 가구가 있으면 오브젝트는 보이지 않게 된다.. Depth API처럼 손가락 사이사이로 안보이게 하고 싶었지만 아직은 능력부족이다. 얼추 비슷하게나마 이 문제를 해결하여 몰입감을 더 느끼게 할 수 있었다..
만든 소스 코드는 아래와 같다.

using UnityEngine;

public class ObjectVisibilityController : MonoBehaviour
{
    public GameObject danseo;
    private Transform cameraTransform;

    void Start()
    {
        cameraTransform = GameObject.Find("OVRCameraRig/TrackingSpace/CenterEyeAnchor").transform;
    }

    void Update()
    {
        RaycastHit hit;
        Vector3 directionToObject = (danseo.transform.position - cameraTransform.position).normalized;

        if (Physics.Raycast(cameraTransform.position, directionToObject, out hit))
        {
            if (hit.collider.CompareTag("Wall"))
            {
                MeshRenderer renderer = danseo.GetComponentInChildren<MeshRenderer>();
                if (renderer != null)
                {
                    renderer.enabled = false;
                }
            }
            else
            {
                MeshRenderer renderer = danseo.GetComponentInChildren<MeshRenderer>();
                if (renderer != null)
                {
                    renderer.enabled = true;
                }
            }
        }
    }
}

 

'게임개발 > Unduck' 카테고리의 다른 글

Unity 와 Oculus Quest2 개발 환경 만들기  (1) 2024.05.07

Unity Version: 2022.3.22f1
Oculus Quest2 Version: -----

 

Unity 와 Oculus Quest2의 초기 개발 환경을 맞추기 위해 아래와 같은 순으로 진행했다.

 

1. 유니티 다운로드

● Unity

 

다운로드

지금 Unity를 다운로드하고 전 세계적으로 가장 큰 인기를 누리는 2D/3D 멀티플랫폼 경험 및 게임 제작용 개발 플랫폼을 사용하세요.

unity.com

 

2. 유니티의 프로젝트 생성

New Project를 눌러 Project를 생성
VR 프로젝트 설정이 있지만 현재는 3D 프로젝트를 만들어서 개발한다.

3. 유니티 Assets 추가

● Oculus Integration Assets

 

Oculus Integration (Deprecated) | 기능 통합 | Unity Asset Store

Use the Oculus Integration (Deprecated) from Oculus on your next project. Find this integration tool & more on the Unity Asset Store.

assetstore.unity.com

유니티 안에서 오큘러스 퀘스트의 기능을 사용하기 위해 Oculus Integration Assets를 추가한다.

또한 유니티안 패키지에서 XR Interacton Toolkit도 다운 받는다.

Oculus Integration Assets을 다운받고 Project 창을 보게 되면 

Oculus 폴더가 생긴 것을 볼 수 있고 이 안에 Oculus - VR - Prefabs 순으로 들어가다보면 VR PlayerController, OVRCameraRig등 VR 컨트롤을 할 수 있는 Prefabs가 있는것을 알 수 있다.

 

4. 오큘러스 퀘스트 빌드 만들기

(1)유니티 좌측 상단에 있는 File - Build Settings에서 빌드 세팅을  Android로 바꾼다.

(2) Build Settings 에서 좌측 하단에 있는 Player Settings...를 클릭후 Player의 Other Settings를 클릭후 변경사항을 확인한다.

(3)  Graphics APIs 에서 Vulkan을 - 버튼을 눌러 삭제한다. (*Vulkan 드라이버는 모바일에서만 실행*)

(4) Minimum API Level을 Android 6.0 'Marshmallow' (API level 23)으로 변경한다.

(5) Edit - Project Settings - XR Plug-in Management 에서 Oculus를 체크 한다.

 

5. 빌드한 APK 파일 Oculus Quest2에 실행하기

 

(1) 개발자 등록하기

● 개발자 등록 사이트

 

Device Setup | Oculus Developers

 

developer.oculus.com

(2) Oculus Quest 개발자 모드 키기

Oculus Quest 2와 핸드폰 Ouclus 앱을 통해 Oculus Quest2의 개발자 옵션을 킨다.

(3) Meta Quest Developer Hub 다운로드

● Meta Quest Developer Hub Download Site

 

Oculus Developer Center | Downloads

 

developer.oculus.com

 

+ Recent posts