본문 바로가기
IT

[유니티/MR] 3. 깊이를 통해 오브젝트 앞 뒤 구분하기(가상 개체가 실체 개체 뒤에 있는 것처럼 보이게 만들기)

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

 

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

 

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

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

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

 

 

1. 깊이 조절을 통해 오브젝트 앞 뒤 구분하기

 

이번 내용에 대해서는 저도 정확하게 이해하기 어려웠지만 대략 내용을 봤을 때는 shader + 깊이 파악을 통해 오브젝트 위에 손을 올려놓았을 때, 앞인지 뒤인지 구분하여 오브젝트가 가려질지 말지 렌더링해주는 방법에 대해 이야기하는 것 같습니다. 

 

일단 아래와 같이 새로운 material 를 생성하고 다음과 같이 설정을 바꿔줍니다. 

shader 종류도 바꿔줍니다.

 

기존 글을 따라했다면 OVRHandPrefab 을 붙여있을 텐데 여기서 아래 material 부분에 위에서 만든 material 를 넣어줍니다.

 

마찬가지로 기존 글을 따라했다면 OVRSceneManager 가 있을 텐데 아래와 같이 설정합니다.

 

Global Mesh Renderer Collider 라는 프리팹을 asset 아래에서 찾아서 복사한 후 아래와 같이 이름을 지어줍니다.

 

추가적으로 위에서 생성했던 material 도 복사해서 아래와 같이 이름을 지어줍니다.

 

그 다음 위에서 복제해 만든 Global Mesh Renderer Collider Depth 를 두 번 클릭해서 들어간 다음, 아래와 같이 방금 복제한 material 을 넣어줍니다.

 

그리고 위에서 세팅한 프리팹을 OVRSceneManager > prefab overrides 에 넣어줍니다.

 

이제 meta 에서 제공하는 depth 관련 제공 api를 받아옵니다.

받아오는 방법은 해당 링크를 타서 아래와 같이 api 주소를 복사한 후

https://github.com/oculus-samples/Unity-DepthAPI

 

유니티에서 package manager 를 열고 왼쪽 상단 + 를 눌려서 URL 부분을 선택해줍니다.

 

사이트에서 복사한 URL 을 넣고 Add 를 눌려주면,

 

아래와 같이 추가된 것을 확인할 수 있습니다.

 

다만 바로 적용하기에는 플러그인 충돌이 나기 때문에 아래 사진과 같은 주소에 있는 파일로 가서 안드로이드 해당 파일을 삭제해줍니다.

 

그 다음 옆에 win64 파일로 가서는 삭제가 안되기 때문에 해당 플러그인을 다음과 같이 이름을 바꿔줍니다.

 

참고로 문제가 없는지 아래 하단에 oculus 아이콘을 누르고 project setup tool 를 누르면,

 

아래와 같이 다 적용이 잘 되어있는지 뜹니다. 문제가 있다면 all fix 를 눌려줍니다.

안드로이드, window 둘 다 문제 없는지 확인하면 됩니다.

 

확인없는 것을 확인했다면 다시 돌아가서, 다음과 같이 새 오브젝트를 만들고 컴포넌트 설정을 해줍니다. 

 

큐브에 depth 반영된 새로운 material 을 만들어주기 위해 아래와 같은 shader 를 담은 새 material 를 만들어줍니다. 

 

그리고 큐브에 넣어줍니다.

 

전에 날리는 공에 넣었던 material 도 바꿔줍니다.

 

이 후에 테스트해보면 손의 깊이에 따른 큐브가 가리거나 안 가리거나 하는 것을 확인할 수 있으며 공을 날렸을 때, 사물이 인식되어있다면 해당 사물에 가려지는 것을 확인할 수 있습니다.

 

 

반응형

댓글