Notice
Recent Posts
Recent Comments
Link
12-26 00:51
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

킹머핀의 제작 일지

VR) 유니티 XR Interaction Toolkit 기본 탐구 본문

Unity

VR) 유니티 XR Interaction Toolkit 기본 탐구

KingMUffin 2021. 4. 5. 16:15
 

VR) 유니티에서 오큘러스 퀘스트 샘플 씬 탐구 (feat. MacOS' tears)

우선 조작이 가능해서 탐구를 하든말든 하므로, 유니티에서 빌드 없이 바로 에디터에서 오큘러스로 조작할 수 있는 방법을 찾아보았다. 먼저 오큘러스에서 제공하는 '오큘러스 링크'라는 프로

kingmuffin.tistory.com

정말 도움이 안 되는 경험이었다. 진짜 저 짤의 윗 모습이랑 기분 똑같았다. 이제 아래 모습이 될지는 직접 겪어봐야지.


 

XR Interaction Toolkit | XR Interaction Toolkit | 1.0.0-pre.3

The XR Interaction Toolkit package is a high-level, component-based, interaction system for creating VR and AR experiences. It provides a framework that makes 3D and UI interactions available from Unity input events. The core of this system is a set of bas

docs.unity3d.com

일단 봐야하는 매뉴얼이 고작 3페이지라는 점부터 합격이다. 길이가 길긴 하지만, 오큘러스 매뉴얼에서 이 페이지 저 페이지 넘나들던 경험을 해봐서 그런지 너무 맘에 든다. ㅎ

내가 이 글에 정리할 항목은 필수라고 생각되는 기본 구조개념움직임 관련(주로 Locomotion) 요소.

나머지는 훑어만 볼 것이고 중간에 생략된 내용이 많으므로 자세한 내용은 위의 출처에서 확인해야 합니다.

 

 


아래는 위의 문서의 일부를 파파고 웹 번역한 결과. (Locomotion이 Robomotion으로 잘못 번역되는 점을 주의하세요. 고치려다 귀찮음 ㅎ) (잘못된 번역의 일부는 원문으로 교체했습니다.)

(네이버 웨일의 선택 영역 번역과 웹 번역의 자연스러움이 서로 들쭉날쭉하다는 사실을 알고 계시나요? 왜 그런지 궁금하네요.)

 

Interaction Manager

XR 인터랙션 툴킷을 사용하는 모든 장면에는 인터랙터와 인터랙터블 간의 상호작용을 용이하게 하기 위해 적어도 하나의 인터랙션 매니저가 필요하다. 기본적으로 인터랙터 및 인터랙터블은 지정하지 않은 경우 씬(scene)에서 찾은 첫 번째 인터랙션 관리자를 참조한다. 또한 여러 관리자로 큰 장면을 분할하거나 특정 장면을 설정하거나 해제하여 상호 작용을 활성화할 수도 있다.

 

액션 기반 vs. 장치 기반 동작

스냅턴 제공자와 같은 몇 가지 동작은 동작 기반 동작과 장치 기반 동작의 두 가지 변형이 있다. 액션 기반 동작은 액션을 사용하여 하나 이상의 컨트롤의 입력을 간접적으로 읽는다. 장치 기반 동작은 동작 자체에 구성된 특정 제어장치에서 직접 입력을 판독하는 데 사용된다.

입력 시스템 패키지가 제공하는 이점을 활용하려면 장치 기반 변형 대신 액션 기반 변형을 사용하는 것이 좋다. XR Device Simulator와 같은 일부 기능은 Actions를 사용할 때만 지원된다.

 

디버거 창

XR Interaction Toolkit Debugger 창에는 씬(scene)의 모든 입력 장치, Interactiveable 및 Interactor의 하향식 보기가 표시된다. 그것은 또한 서로와 그들의 부모 상호 작용 관리자들에 대한 그들의 관계를 보여준다. 이 창을 열려면 Unity의 메인 메뉴에서 Window > Analysis > XR Interaction Debugger로 이동하십시오.

 

인터랙션 레이어 마스크

InteractionLayerMask는 상호작용자가 어떤 상호작용을 할 수 있는 필터링 메커니즘이다. InteractionLayerMask에서 적어도 하나의 레이어를 공유하는 인터랙터 및 인터랙터블은 상호작용이 허용된다. 상호 작용자와 상호 작용이 상호 작용 레이어 마스크에서 하나 이상의 계층을 공유하지 않는 경우 상호 작용이 허용되지 않는다. 마스크 비교는 상호작용자 또는 상호작용자의 GameObject의 레이어를 고려하지 않는다. 비교는 상호작용자와 상호작용 가능한 상호 작용 레이어 마스크만을 고려한다.

상호작용 레이어 마스크는 물리 레이어를 사용하지만 이 마스크는 레이캐스트 마스크와 구별된다. 레이캐스트 마스크는 레이캐스트가 칠 수 있는 것을 명시한다. InteractionLayerMask는 상호작용자와 상호작용자가 선택 및 호버와 같은 상태 변경을 통해 상호작용할 수 있는지 여부를 지정한다.

InteractionLayerMasks는 인터랙터와 인터랙터블 모두에 설정될 수 있으며, 기본적으로 모든 레이어와 상호 작용하도록 설정된다.

 

States

상호작용 시스템에는 세 가지 공통 상태가 있다. 호버, 선택 및 활성화. 이러한 상태는 서로 다른 상호작용을 의미할 수 있다. Hover와 Select는 마우스 오버와 마우스 다운의 전통적인 GUI 개념과 관련이 있다. 활성화는 XR에만 해당된다.

Hover
Interactiveable이 Interactor의 유효한 대상인 경우 상태는 Hover로 변경된다. 물체 위를 맴도는 것은 물체와 상호작용하려는 의도를 나타내지만, 일반적으로 물체의 동작을 바꾸지는 않는다. 비록 그것이 어떻게 맴버튼이 색조를 바꾸는지와 같은 이러한 상태 변화에 대한 시각적 지표를 만들 수 있다.
Select
선택하려면 선택 상태를 활성화하려면 사용자가 버튼이나 트리거 누름과 같은 작업이 필요하다. 대화형 상태가 선택 상태일 때, Unity는 선택된 대화형 사용자를 대화형 상태와 상호 작용하는 것으로 간주한다. 예를 들어, Selection은 붙잡을 수 있는 물체를 집거나 레버를 잡거나 호버를 통해 포커스가 있는 도어를 밀 준비를 모의실험할 수 있다.
Activate
활성화는 일반적으로 현재 선택한 개체에 영향을 미치는 버튼이나 트리거에 매핑되는 추가 작업이다. 이렇게 하면 사용자가 선택한 개체와 더 많은 상호작용을 할 수 있다. Activate 작업은 Interactiveable에 따라 달라진다. 예를 들어 Activate를 사용하여 Interactor가 현재 선택한 총을 발사할 수 있다. Interactable Events 아래의 Inspector 창을 사용하여 기존 콜백을 후크한 다음 UnityEvents를 통해 Activated에 추가하여 구성 요소를 후크하여 추가 코드 없이 Activate를 처리할 수 있다.

 

업데이트 루프

인터랙션 관리자의 업데이트 루프는 인터랙터 및 인터랙터블을 쿼리하고 호버 및 선택 상태를 처리한다. 첫째, 상호 작용기에 올바른 대상 목록을 요청한다(호버 및 선택 모두에 사용됨). 그런 다음 상호 작용기 및 상호 작용기 모두를 점검하여 기존 호버 및 선택 개체가 여전히 유효한지 확인하십시오. 유효하지 않은 이전 상태를 지우고 다음을 통해 종료한 후 OnSelectExiting 그리고 OnSelectExited/OnHoverExiting 그리고 OnHoverExited(), 유효한 선택 및 호버 상태에 대해 두 개체를 쿼리하고, 개체를 통해 새 상태로 전환함 OnSelectEntering 그리고 OnSelectEntered/OnHoverEntering 그리고 OnHoverEntered.

등록된 모든 인터랙터블 및 인터렉터들은 업데이트 순서를 보존하기 위해 인터랙션 매니저에 의해 명시적으로 업데이트된다. 인터랙터블 및 인터액터에서는 정규 분포를 사용하지 않음 MonoBehaviour Update 전화. (??)

 

XR 인터랙션 툴킷 확장

이 부분에 대해서는 2학기에 다루어보도로 하자.

 


 

Locomotion

XR 인터랙션 툴킷 패키지는 XR 경험 동안 장면 주위를 이동하는 수단을 제공하는 일련의 움직임의 원시 요소들을 제공한다. 이러한 구성 요소는 다음과 같다.

  • 사용자를 나타내는 XR 리그
  • XR 리그의 접근을 제어하는 로코모션 시스템
  • 텔레포트 목적지를 갖춘 텔레포트 시스템
  • 고정 각도로 리그를 회전하는 스냅턴 공급자
  • 시간이 지남에 따라 리그를 부드럽게 회전시키는 연속 턴 프로바이더
  • 시간이 지남에 따라 리그를 원활하게 이동하는 연속 이동 공급자

로코모션 문서에서는 이러한 단면을 더 자세히 설명한다.

 

용어 사전

XR 리그
MonoBehaviour Rig, Camera Floor Offset Object 또는 Camera를 지정한다. 또한 XR 리그를 구성할 수 있는 추적 공간의 고정 또는 룸스케일 옵션을 제공한다.
리그
XR 리그의 기본 GameObject. 이것은 어플리케이션이 이동을 통해 조작하는 게임 오브젝트다. 기본적으로 리그는 XR 리그가 부착된 GameObject이다.
카메라 바닥 간격띄우기 객체 (Camera Floor Offset Object)
카메라를 바닥에서 원하는 높이로 이동시키는 GameObject.
카메라 오브젝트
카메라 구성 요소를 포함하는 GameObject. 이것은 보통 사용자가 보는 것을 렌더링하는 메인 카메라로, 대개 XR 장비의 "헤드"이다.
룸-스케일
바닥 상대 추적 모드. 씬(scene)이 시작되면 원점은 바닥이다.
고정된 (Stationary)
장치 관련 추적 모드. 씬(scene)이 시작되면 원점은 디바이스로, 카메라는 카메라 플로어 오프셋 오브젝트가 설정한 높이로 이동한다.
로코모션 시스템
MonoBehaviour 어떤 로코모션 제공자가 릭을 움직일 수 있는지 통제할 수 있을 겁니다
로코모션 프로바이더
다양한 이동 구현을 위한 기본 클래스.
순간이동
한 위치에서 다른 위치로 장비를 텔레포트하는 이동의 일종.
스냅턴
고정된 각도로 리그를 회전시키는 이동의 일종이다.
연속 턴 (Continuous Turn)
시간의 경과에 따른 양만큼 부드럽게 리그를 회전시키는 일종의 운동이다.
연속 이동 (Continuous Move)
시간에 따른 양만큼 부드럽게 리그를 움직이는 일종의 이동 수단이다.

 

텔레포트 및 스냅 턴을 위한 기본 장면 설정

아래 단계를 수행하기 전에 작업 기반 동작의 설정을 간소화하려면 기본 입력 동작 샘플을 설치하고 작업 기반 동작을 사용할 때 작업 구성의 부담을 줄이기 위해 Preset Manager 기본값을 구성하는 단계를 따르는 것이 좋다. 작업 기반 동작 사용을 권장한다. 자세한 내용은 작업 기반 대 를 참조하십시오. 장치 기반 동작.

 

3. 텔레포트 인터랙티블 생성

유니티의 메인 메뉴에서 GameObject > XR > 텔레포트 영역 또는 GameObject > XR > 텔레포트 앵커를 눌러 텔레포트할 수 있는 평면을 만든다. 텔레포트 영역은 사용자를 표면상의 그들의 뾰족한 위치로 텔레포트하는 텔레포트 목적지인 반면, 텔레포트 앵커는 사용자를 미리 정해진 특정 위치 및/또는 회전으로 텔레포트하는 텔레포트 목적지다.

1-3단계를 수행한 경우 컨트롤러와 함께 순간이동 및 스냅턴을 수행할 수 있는 기본 씬(scene)이 있어야 한다. 다음 단계에서는 XR Ray Interactor 라인의 외관을 변경하기 위한 추가 구성 세부 정보를 제공한다.

 

베지에 커브

베지어 곡선은 시작점 외에도 제어점과 끝점을 사용한다. 시작점은 XR Ray Interactor Attach Transform의 위치다. 발사체 커브 베지어 커브 모두 사용자가 별도로 설정하지 않는 한 리그의 기준 프레임을 사용한다.

끝점 거리 종료점이 시작점에서 얼마나 떨어져 있는지 정의하십시오. 거리를 늘리려면 값을 늘린다.
끝점 높이 종료점이 시작점에 대해 얼마나 높은지 정의하십시오. 높이를 높이려면 이 값을 높이십시오.
제어점 거리 곡선의 피크가 시작점에서 얼마나 멀리 떨어져 있는지 정의한다. 거리를 늘리려면 이 값을 늘리십시오.
제어점 높이 곡선의 피크가 시작점에 대해 얼마나 높은지 정의하십시오. 높이를 높이려면 이 값을 높이십시오.
샘플 주파수 곡선이 갖는 표본 점의 수를 정의하십시오. 숫자가 높을수록 품질이 향상된다.

 

Architecture

로코모션 시스템은 하나의 XR 리그를 관리하는 책임을 진다. XR 릭은 유니티 월드 공간에서 사용자의 위치를 처리한다. Locomotion System은 Locomotion Providers가 그것을 옮기는 동안 XR Rig의 접근을 제한할 수 있다.

예를 들어, 텔레포트 제공자의 요청에 따라, 로코모션 시스템은 텔레포트 동작 중에 XR 리그를 잠근다. 이를 통해 사용자는 현재 동작이 활성화되어 있는 동안 스냅턴이나 텔레포팅과 같은 다른 동작을 할 수 없게 된다.

텔레포트가 완료된 후, 텔레포트 제공자는 시스템의 독점적 잠금을 포기하고 다른 로모션 제공자가 XR 리그에 영향을 줄 수 있도록 허용한다.

Locomotion Providers는 필요한 경우 단독으로 액세스하지 않고 XR Rigg를 수정할 수 있다. 단, XR Rig에 대한 Locomotion Provider에게 비독점적인 액세스 권한을 부여하기 전에 항상 Locomotion System이 XR Rig를 변경하기 전에 사용 중인지 확인해야 한다.

로코모션 요청의 전체적인 흐름은 다음과 같다.

  1. 로코모션 제공자는 로코모션 시스템이 현재 사용 중인지 여부를 확인한다.
  2. 그렇지 않을 경우, 로코모션 제공자는 로코모션 시스템에 대한 독점적인 접근을 요청한다.
  3. 요청이 성공적이면, 로코모션 제공자는 XR Rig를 이동시킨다.
  4. 로코모션 제공자가 사용자의 위치 및/또는 회전을 수정한 후, 로코모션 제공자는 로코모션 시스템에 대한 독점적인 접근을 포기한다.

만약 로코모션 시스템이 사용 중이거나 로코모션 제공자가 로코모션 시스템에 독점적으로 접근할 수 없다면, 로코모션 제공자는 로코모션 시스템의 XR 릭을 개조해서는 안 된다.

 

XR 리그

로코모션 시스템은 XR 리그를 사용자를 위한 앵커로 사용한다.

XR Rig 구성 요소에 대한 옵션을 자세히 설명하기 전에 상호작용을 지원하는 GameObjects의 권장 계층 구조를 이해하는 것이 중요하다.

아래 이미지는 XR Rig 구성 요소를 보여준다.

리그 베이스 게임 객체
어떤 GameObject가 공간을 추적하는 것에서 월드 스페이스로 변환하는 역할을 하는지 표시한다. 권장 계층 구조에서 이것은 "XR Rig" GameObject이다.
카메라 바닥 간격띄우기 객체
장치 추적 원점에 사용자의 키가 없는 경우 적용되는 수직 오프셋이 있는 GameObject를 설정하십시오.
카메라 게임 객체
사용자의 카메라를 보관하는 GameObject를 표시한다. 이것은 사용자의 카메라가 추적 볼륨의 원점에 있지 않을 수 있기 때문에 중요하다. 제안된 계층 구조에서, 이것은 "Camera" GameObject이다.
트래킹 스페이스
응용 프로그램에서 사용할 추적 공간을 설정하십시오.
카메라 Y 오프셋
장치 추적 원본에 사용자의 키가 없는 경우 카메라 플로어 오프셋 오브젝트에서 지정한 GameObject가 수직으로 위로 이동하는 월드 공간 단위 수입니다.

 


아래는 Locomotion에 포함되는 이동과 회전에 관한 내용. 너무 길어서 이렇게 문단을 나누었다.

 

순간이동

패키지는 텔레포테이션의 간단한 구현을 제공하며, 또한 다음을 사용하여 복잡한 이동 시나리오를 구현하는 방법을 보여준다. LocomotionProvider 그리고 LocomotionSystem 인터페이스.

텔레포트 제공자는 다음으로부터 상속된다. LocomotionProvider 추상 계급 텔레포트 제공자는 사용자의 요청에 따라 원하는 위치로 리그를 이동할 책임이 있다.

이 구현에는 '앵커' 기반 텔레포트 목적지와 '영역' 기반 텔레포트 목적지의 두 가지 유형이 있다. 이것들은 아래에서 더 자세히 논의된다. 요컨대:

  • 앵커는 사용자가 지정한 사전 결정된 특정 위치 및/또는 회전으로 사용자를 텔레포트한다.
  • 영역은 플레이어가 텔레포트를 원하는 표면의 위치를 선택할 수 있도록 허용한다.

두 가지 유형의 텔레포테이션 목적지는 다음을 사용하여 XR 인터랙션 시스템 상단에 구현된다. BaseTeleportationInteractable 공유 코드의 시작점으로서.

XR 인터랙션 시스템도 다양한 라인 렌더링 옵션을 제공한다. 자세한 내용은 상호 작용 패키지에 대한 설명서를 참조하십시오.

 

텔레포트 영역 상호 작용 가능

텔레포트 영역 상호 작용은 특화된다. BaseTeleportInteractable class. 그것은 사용자가 지표면의 어떤 위치라도 목적지로 선택할 수 있게 해준다.

텔레포트 영역 상호작용은 Ray Interactor 또는 그것의 전문화에 의해 사용되도록 의도되었다. 레이의 교차점과 면적의 충돌량을 이용하여 사용자가 텔레포트하고자 하는 위치를 결정한다. 텔레포트 영역 인터랙티브(Teleportation Area Interactivable)의 전문화된 구현을 통해 GenerateTeleportRequest 텔레포트 제공자가 대기 중인 텔레포트 요청을 생성하는 방법.

다음 이미지는 검사관에 나타나는 텔레포트 영역 상호 작용 가능 부분의 예를 보여준다.

텔레포트 영역 상호작용의 속성은 다른 상호작용 영역과 유사하다. 아래 표에는 텔레포테이션을 지원하는 요소만 수록되어 있다.

방향 일치 순간이동 후 리그 방향을 설정하는 방법을 지정한다. 다음 옵션 중에서 선택하십시오.
  • 월드 스페이스 업 - 월드 스페이스 업 벡터에 따라 방향성을 유지한다.
  • 목표값에 따라 방향 설정 BaseTeleportationInteractable 변환기의 상향 벡터
  • 대상에 따라 방향을 설정하기 위해 목표 위로  으로 이동 BaseTeleportationInteractable 변환의 회전.
  • 없음은 텔레포트 전후에 동일한 방향을 유지한다.
텔레포트 트리거 사용자가 선택 항목에 들어가거나 나갈 때 텔레포테이션이 트리거되는지 여부를 지정한다.
텔레포트 프로바이더 이 상호 작용이 통신하는 텔레포트 제공자를 표시한다. 텔레포트 제공자가 구성되지 않은 경우, 인터랙티브 가능은 현재 장면에서 텔레포트 제공자를 찾으려고 시도한다.

Match Orientation은 순간이동 시 리그의 회전 방식을 지정하는 데 사용된다.

  • 응용 프로그램이 어떤 방식으로든 리그를 회전하지 않고 항상 리그의 업 벡터가 월드 스페이스의 업 벡터와 일치하도록 하려면 월드 스페이스  옵션을 사용하십시오.
  • 사용자가 천장, 벽 또는 기타 기울어진 표면에 서서 천장 또는 벽이 새 바닥처럼 느껴지도록 회전하도록 하려면 대신 Target Up을 선택하십시오. 이 장치는 텔레포트 영역 구성요소가 부착된 변환의 상향 벡터와 일치한다.
  • 사용자가 대상에 도착할 때 특정 방향을 가리키려면 Target Up and Forward를 선택하십시오. 이는 장비의 회전과 텔레포트 영역이 부착된 변환의 정확한 회전과 일치한다.
  • 텔레포트가 회전을 변경하지 않고 사용자가 텔레포트 전후에 동일한 회전을 유지하도록 하려면 없음을 선택하십시오. 예를 들어, 전체 애플리케이션이 45도 각도로 방향을 잡은 경우, Rig의 루트 변환을 회전하고 모든 텔레포트 대상을 MatchOrientation.None.

 

텔레포트 앵커 상호 작용 가능

텔레포트 앵커(Teleportation Anchor)는 전자의 특화품이다. BaseTeleportInteractable 사용자가 앵커 또는 앵커 주변의 영역을 선택하여 앵커 위치로 순간이동할 수 있는 클래스.

텔레포트 앵커 상호작용은 Ray Interactor 또는 그 전문화에 의해 사용되도록 의도되었다. 레이의 교차점과 면적의 충돌량을 이용하여 사용자가 텔레포트하고자 하는 위치를 결정한다. 텔레포트 앵커 인터랙티브한 인터랙티브는 특별한 구현을 가지고 있다. GenerateTeleportRequest 텔레포트 제공자가 대기 중인 텔레포트 요청을 생성하는 방법.

다음 이미지는 검사관에 나타나는 텔레포트 앵커 상호작용이 가능한 부분의 예를 보여준다.

텔레포트 앵커 상호작용의 특성은 텔레포트 영역 상호작용과 유사하다. 이 설명서는 새로운 요소만 다룬다.

텔레포트 앵커 변환 필드는 사용자가 이 앵커로 텔레포트할 때 리그가 텔레포트하는 변환을 정의한다. 어떤 매치 오리엔테이션이 선택되느냐에 따라 앵커의 위치와 회전 둘 다 사용한다.

 

스냅 턴 공급자

이 패키지는 Snap Turn Provider의 구현 예를 제공한다. 스냅턴(snap turn)은 어플리케이션이 구성된 입력을 수신할 때(예를 들어 조이스틱을 왼쪽으로 이동하거나 D-패드를 오른쪽으로 누를 때) Rig가 고정된 양만큼 회전하는 것을 의미한다.

입력 시스템 패키지가 제공하는 이점을 활용하려면 장치 기반 변형 대신 액션 기반 변형을 사용하는 것이 좋다.

액션 기반

다음 이미지는 스냅 턴 공급자(액션 기반)의 예를 보여준다.

시스템 XR Rig에 대한 독점적 접근을 위해 이 이동 통신사가 통신할 Robotion System. 한 개가 제공되지 않을 경우, 시스템은 그 동안 한 개의 위치를 찾으려고 시도한다. Awake 전화.
턴 금액 각 스냅 턴 중에 Y 축을 중심으로 Rig가 회전하는 정도를 기준으로 지정하십시오.
디바운스 타임 사용자가 두 번째 스냅 턴을 트리거하기 전에 스냅 턴에 성공한 후 경과해야 하는 시간을 지정하십시오.
왼쪽 방향 전환 사용 왼쪽 및 오른쪽 스냅 턴을 활성화할지 여부를 제어한다.
턴어라운드 사용 180° 스냅 턴 활성화 여부를 제어한다.
좌측 스냅 턴 동작 왼쪽 컨트롤러의 입력을 읽는 데 사용되는 작업.
우측 스냅 턴 동작 오른쪽 컨트롤러의 입력을 읽는 데 사용되는 작업.

 

Snap Turn Provider의 장치 기반은 이렇게 생겼다.

 

연속 턴 공급자

이 패키지는 연속 턴 프로바이더의 구현 예를 제공한다. 이산 각도에 의한 스냅 선회와는 반대로 연속 회전을 통해 어플리케이션이 구성된 입력을 수신할 때(예: 조이스틱이 오른쪽으로 기울어짐) 시간 경과에 따라 리그를 부드럽게 회전시킨다.

입력 시스템 패키지가 제공하는 이점을 활용하려면 장치 기반 변형 대신 액션 기반 변형을 사용하는 것이 좋다.

액션 기반

다음 이미지는 연속 턴 공급자(액션 기반)의 예를 보여준다.

시스템 XR Rig에 대한 독점적 접근을 위해 이 이동 통신사가 통신할 Robotion System. 한 개가 제공되지 않을 경우, 시스템은 그 동안 한 개의 위치를 찾으려고 시도한다. Awake 전화.
턴 스피드 시계 방향으로 회전할 때 시계 방향으로 회전할 도/초 수.
좌측 방향 전환 동작 왼쪽 컨트롤러의 입력을 읽는 데 사용되는 동작.
우측 방향 전환 동작 오른쪽 컨트롤러의 입력을 읽는 데 사용되는 동작.

 

Continuous Turn Provider의 장치 기반은 이렇게 생겼다.

 

연속 이동 공급자

이 패키지는 연속 이동 제공자의 구현 예를 제공한다. 텔레포팅과 반대로 계속 이동하면 애플리케이션이 구성된 입력을 수신할 때(예: 조이스틱이 앞으로 기울어짐) 시간에 따른 양만큼 리그를 부드럽게 번역한다.

포워드 Source를 들어 조이스틱을 앞으로 밀 때 Rig가 어느 방향으로 이동해야 하는지 정의할 수 있다 예를 사용하여. 기본적으로 카메라 오브젝트를 사용하게 되는데, 이는 사용자가 마주보고 있는 방향으로 앞으로 이동한다는 것을 의미한다. 이 속성을 사용할 수 있는 방법의 예는 사용자가 컨트롤러를 잡고 있는 방향으로 전진할 수 있도록 모션 컨트롤러의 자세를 추적하는 변환으로 설정하는 것이다.

Rig에 문자 제어기가 있는 경우, 이 Continuous Move Provider는 Transform of the Rig를 직접 번역하기 보다는 사용하여 Rig를 이동시킨다.

입력 시스템 패키지가 제공하는 이점을 활용하려면 장치 기반 변형 대신 액션 기반 변형을 사용하는 것이 좋다.

액션 기반

다음 이미지는 Continuous Move Provider(액션 기반)의 예를 보여준다.

시스템 XR Rig에 대한 독점적 접근을 위해 이 이동 통신사가 통신할 Robotion System. 한 개가 제공되지 않을 경우, 시스템은 그 동안 한 개의 위치를 찾으려고 시도한다. Awake 전화.
이동 속도 초당 단위 속도로 전진할 수 있는 속도(초당 단위).
스트라프 사용 스트래핑(측면 이동) 활성화 여부를 제어한다.
중력 사용 문자 제어기를 사용할 때 중력이 이 제공자에 영향을 미치는지 여부를 제어한다.
중력 적용 모드 중력이 작용하기 시작할 때 제어한다.
전진 소스 소스 변환 - 전진 방향을 정의한다.
왼손 이동 동작 왼쪽 컨트롤러의 입력을 읽는 데 사용되는 작업.
우측 이동 동작 오른쪽 컨트롤러의 입력을 읽는 데 사용되는 작업.

 

Continuous Move Provider의 장치 기반은 이렇게 생겼다.

 

Character Controller Driver

예를 들어 연속 이동 공급자가 내보내는 이동 이벤트에서 Character Controller Driver를 사용하여 리그에서 Character Controller의 높이를 구동할 수 있다. 이를 통해 사용자가 웅크리거나 일어서서 조이스틱으로 움직이려 할 때 리그(즉 사용자)의 캡슐 충돌기의 크기를 자동으로 조정할 수 있다. 예를 들어, 머리 부분이 장애물보다 낮지 않는 한 사용자가 앞으로 이동하지 못하도록 제한하는 것은 다른 충돌기 개체와 함께 유용할 수 있다.

원하지 않는 극단값을 방지하려면 최소 높이  최대 높이 속성을 사용하여 이 동작이 설정하는 Character Controller의 높이를 클램프하십시오. 사용자가 고개를 숙이지 않고도 캐릭터 컨트롤러가 일반적인 스탠딩 높이에서 장면을 통과할 수 있도록 극도로 키가 큰 사용자의 삶의 질 향상(? ㅋㅋㅋㅋㅋ)으로 상한선을 설정하는 것이 유용할 수 있다.

다음 이미지는 캐릭터 컨트롤러 드라이버의 예를 보여준다.

로코모션 프로바이더 The Locomotion Provider object to listen to.
최소 높이 이 동작이 설정할 캐릭터 캡슐의 최소 높이.
최대 높이 이 동작이 설정할 캐릭터 캡슐의 최대 높이.

 


XR 장치 시뮬레이터

이 샘플은 패키지 샘플의 기본 위치에 설치되며 Assets\Samples\XR Interaction Toolkit\[version]\XR Device Simulator 폴더입니다. 이 자산을 다른 위치로 이동하십시오.

XR 인터랙션 툴킷 패키지는 마우스와 키보드 입력을 사용하여 HMD와 컨트롤러 쌍을 조작할 수 있도록 XR Device Simulator의 구현 예를 제공한다. 이 샘플에는 해당 시뮬레이터와 함께 사용할 수 있는 예시 바인딩과 시뮬레이터 사용을 신속하게 시작하기 위해 Scene에 추가할 수 있는 Prefab이 포함되어 있다.

XR Device Simulator Controls.inputactions XR Device Simulator와 함께 사용할 기본 바인딩 작업이 포함된 자산.
XR Device Simulator.prefab 구성된 작업에 대한 참조가 있는 XR Device Simulator 구성 요소 및 작업을 활성화하기 위한 입력 작업 관리자 구성 요소와 함께 사전 조립.

입력 작업 자산

다음 이미지는 맵 중 하나에서 동작 바인딩 중 하나를 편집하면서 샘플에 포함된 자산의 동작 편집기를 보여준다.

저 프리팹을 계층 구조 최상단에 생성하기만 하면 키보드와 마우스로 제어할 수 있다.

조작법은 같은 경로에 있는 .inputaction을 열어보자. 아마 극악의 난이도에 경악할 것이다. 그냥 빌드하고 실행하는 게 더 빠를 듯. ㅋㅋㅋ&