VR SpaceShooter (셋팅)

VR/XR Interaction Toolkit 2023. 8. 16. 00:40
반응형

3D URP프로젝트를 생성 

 

XR Plugin Management 패키지 설치 

오큘러스 퀘스트는 안드로이드 시스템 기반이므로 Anroid 탭을 선택후 Oculus를 선택

XR Plug-in Management는 확장현실(XR) 애플리케이션 내에서 플러그인(소프트웨어 구성 요소)을 관리하는 것을 의미합니다. XR은 가상현실(VR), 증강현실(AR), 혼합현실(MR) 기술을 포함하는 용어입니다. 플러그인은 XR 애플리케이션의 기능을 확장할 수 있는 추가 소프트웨어 모듈입니다.

 

다음과 같이 패키지 매니저를 열고 XR Interaction toolkit을 설치 합니다.

 

 

만약 보이지 않거나 검색 되지 않는다면 다음과 같은 방식으로 설치 하면 됩니다.

 

com.unity.xr.interaction.toolkit

 

new input system을 사용할건지 묻는다면 Yes를 눌러주세요

 

I Made a Backup, Go Ahead! 를 선택 합니다. 

 

에디터가 재시작 되었다면 패키지 매니저를 열고 XR Interaction Toolkit을 찾아 Stater Asset을 설치 합니다.

 

씬에 있는 Main Camera를 제거 합니다.

다음과 같이 XR Origin(Action-Based)을 추가 합니다 

XR Origin 게임 오브젝트에는 Main Camera를 포함 합니다.

"XR Origin component"은 Unity 게임 엔진에서 Extended Reality (XR) 애플리케이션을 개발할 때 사용되는 컴포넌트 중 하나입니다. 이 컴포넌트는 XR 공간 내의 원점(origin)을 정의하고 관리하는 데 사용됩니다. XR 공간의 원점은 실제 세계와 가상 세계 간의 변환과 위치 조정에 중요한 역할을 합니다.

XR 애플리케이션에서 XR Origin 컴포넌트를 사용하는 주요 목적은 다음과 같습니다:

좌표 변환 및 일치: XR 환경에서 실제 세계와 가상 세계 간에 좌표를 일치시키는 것은 중요합니다. XR Origin 컴포넌트는 실제 세계의 좌표 시스템과 가상 세계의 좌표 시스템 간의 변환을 관리하여 플레이어와 객체의 위치를 일치시킵니다.

VR 트래킹과 물리 시뮬레이션: XR 애플리케이션에서는 플레이어의 움직임을 감지하고 객체의 위치를 업데이트하는 데 XR 트래킹 시스템을 사용합니다. XR Origin 컴포넌트는 이러한 트래킹 데이터를 처리하여 가상 세계 내에서 정확한 위치와 방향을 유지하도록 돕습니다. 또한 물리 시뮬레이션에 적용되는 물리 엔진과의 상호작용에서도 중요한 역할을 합니다.

설치 및 초기화: XR 애플리케이션을 처음 시작할 때 원점의 초기 위치를 설정하고 조정하는 역할을 합니다. 이는 플레이어가 애플리케이션을 시작할 때 XR 환경 내에서 기준점을 설정하는 데 도움을 줍니다.

텔레포트 및 공간 변환: XR Origin 컴포넌트는 플레이어가 텔레포트 또는 공간 변환을 통해 다른 위치로 이동할 때 XR 공간 내의 원점을 적절하게 조정하는 역할을 합니다.

이렇게 XR Origin 컴포넌트는 XR 애플리케이션 내에서 실제 세계와 가상 세계 간의 관계를 관리하고 위치를 일치시키는 데 필수적인 역할을 수행합니다. Unity에서 XR Origin 컴포넌트를 사용하면 XR 애플리케이션의 개발 및 플레이어 경험을 관리하기 쉽게 됩니다.

 

 

https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.0/manual/general-setup.html

 

General setup | XR Interaction Toolkit | 2.0.4

General setup This section will walk you through the steps to create an XR Origin camera rig for a head-mounted device and create the basic building blocks of XR interactivity. These steps will guide you through setup to use the action-based behaviors, whi

docs.unity3d.com

Action-based 동작:
Action-based 동작은 Unity의 Input System 패키지의 "Actions" 개념을 활용하여 각종 컨트롤(버튼 또는 트리거와 같은)에서의 입력을 간접적으로 처리합니다. 특정 컨트롤에서 직접 입력을 읽는 대신 의미 있는 동작(action)을 정의하고 이를 논리적 입력에 바인딩합니다. 이러한 동작은 다양한 장치의 다양한 컨트롤과 연결할 수 있습니다. Action-based 동작을 사용하는 장점으로는 논리적 입력과 물리적 입력을 분리하고 사용자 지정 액션 맵을 생성하고 전환하며 여러 크로스 플랫폼 컨트롤러 입력을 단일 시맨틱 액션에 바인딩하고 입력 액션의 이벤트 콜백을 사용하는 기능이 있습니다.

Device-based 동작:
Device-based 동작은 InputDevice에서 InputDevice.TryGetFeatureValue 메서드를 사용하여 직접 입력을 읽습니다. 이 접근 방식은 동작 자체에서 구성된 특정 컨트롤에서 입력을 읽는 것을 포함합니다. Device-based 동작은 입력을 직접 읽는 측면에서 간단하지만 동작 기반 동작만큼의 유연성과 추상화 수준을 제공하지 않을 수 있습니다.

XR Interaction Toolkit의 맥락에서 일부 동작(예: Snap Turn Provider)은 Action-based 및 Device-based 두 가지 변형을 모두 제공합니다. 그러나 이 문장은 Device-based 대신 Action-based 변형을 사용하는 것을 권장합니다. 이 권장 사항은 Unity의 Input System 패키지가 제공하는 장점에 근거합니다. 이로써 논리적 입력과 물리적 입력을 분리하고 액션 맵을 사용자 지정하며 크로스 플랫폼 컨트롤러 입력을 바인딩하고 입력 액션 이벤트 콜백을 사용할 수 있습니다.

게다가 XR Interaction Toolkit의 일부 기능(예: XR Device Simulator)은 입력 액션을 사용할 때만 지원됩니다. Action-based 동작을 활용함으로써 개발자는 XR 애플리케이션에서 입력을 처리하는 더 모듈식, 사용자 정의 가능하고 효율적인 접근 방식을 활용할 수 있으며, 동시에 Input System 패키지에서 제공하는 추가 기능도 활용할 수 있습니다.

 


일반적으로 XR Interaction Toolkit와 Unity의 Input System 패키지를 사용하여 XR 애플리케이션을 개발할 때, "Action-based" 접근 방식을 선호하는 것이 일반적인 추천 사항입니다. 이 접근 방식은 다양한 장치에서의 입력을 처리하고 관리하는 데 더 유연하고 효율적인 방법을 제공합니다. 아래는 "Action-based" 접근 방식을 사용하는 일반적인 단계입니다:

액션(Action) 정의: 각 논리적인 동작 또는 입력에 대한 액션을 정의합니다. 예를 들어 "Move", "Interact", "Jump"와 같은 액션을 생성할 수 있습니다.

액션 맵(Action Map) 생성: 관련된 액션들을 그룹화하고 액션 맵을 생성합니다. 액션 맵은 특정 시나리오나 상황에서 사용되는 액션들을 묶어놓은 것입니다.

액션에 컨트롤 바인딩: 각 액션을 해당하는 실제 컨트롤(버튼, 트리거 등)과 바인딩합니다. 이로써 사용자가 실제 컨트롤을 조작할 때 액션과 관련된 입력을 받을 수 있습니다.

이벤트 콜백 설정: 액션의 상태 변화나 입력 이벤트를 처리하기 위해 이벤트 콜백 함수를 설정합니다. 이 함수들은 특정 액션에 대한 입력 변화를 감지하고 처리합니다.

사용자 정의 액션 맵 생성(Optional): 필요한 경우 사용자 정의 액션 맵을 생성하여 특정 상황에서만 사용되는 입력 매핑을 정의할 수 있습니다.

"Action-based" 접근 방식을 사용하면 논리적 입력과 물리적 입력이 분리되어 애플리케이션의 유연성을 향상시킬 수 있습니다. 또한 크로스 플랫폼 환경에서도 동일한 논리적 입력을 다양한 컨트롤러에서 사용할 수 있습니다. 이에 더하여 Unity의 Input System 패키지는 입력 처리를 단순화하고 사용자 지정 가능한 기능을 제공하여 개발자가 입력 관리를 효율적으로 수행할 수 있게 도와줍니다.


 

Left Hand Controller를 살펴 보면 연결되어 있는 Action이 없습니다.

 

수동으로 연결해도 되지만 미리 설정되어 있는 기본 Action을 등록 해서 사용 하기 위해 다음 두가지를 씬에서 제거 합니다.

 

다음 위치에서 XRI Default Left/Right Controller를 확인 할수 있습니다.

 

XRI Default Left Controller를 선택후 인스펙터 창에서 Add to ActionBasedController default버튼을 클릭 합니다.

같은 방식으로 Right도 해줍니다.

 

프로젝트 셋팅 창을 열고 preset manager에서 등록된 preset(XRI Default Left/Right Controller)에 대한 이름을 "Right/Left" 와 같이 설정 합니다.

계층뷰에 다시 XR Origin(Action based)를 추가 합니다 

LeftHand Controller를 선택 하면 인스펙터 창에 Action들이 설정된것을 확인 할수 있습니다.

할당된 액션을클릭 하고 하이라이트 된 액션을 더블 클릭하면 

다음과 같이 액션을 확인 할수 있습니다.

XR Origin을 선택후 Origin Mode를 Floor로 선택 합니다.

https://docs.unity3d.com/Packages/com.unity.xr.core-utils@2.0/api/Unity.XR.CoreUtils.XROrigin.html

 

XR Interaction Manager를 선택후 

Input Action Manager컴포넌트를 추가 합니다.

Action Assets에 XRI Default Input Actions 를 추가 합니다.

 

Plane과 Cube를 생성 합니다.

프로젝트 셋팅 창을 열고 몇가지 설정을 한뒤 

안드로이드로 플랫폼을 변경한후

플레이어 셋팅에서 Identification을 변경하고 

Auto Grphics API를 체크 해제 하고 

Vulkan을 제거 합니다. 

빌드 셋팅에서 텍스쳐 압축 방식을 ASTC로 변경후 

오큘러스와 USB를 연결하고 디버깅을 허용 합니다.

Build And Run을 눌러 빌드 합니다.

 

결과를 확인 합니다.

 

PC또는 모바일 기기로 미러링을 할수도 있습니다.

 

 

반응형

'VR > XR Interaction Toolkit' 카테고리의 다른 글

Hand Model 넣기  (0) 2023.12.26
XROrigin  (0) 2023.12.26
XR-Interaction-Toolkit-Examples  (0) 2023.12.26
XR Interaction Toolkit 환경설정  (0) 2023.12.26
VR SpaceShooter (리소스 추가/그립버튼)  (0) 2023.08.16
: