VR/AR 프로그래밍 스터디

Part04. 누르기 인터렉션(Poke Interaction) 본문

가상현실(Virtual Reality)/핸드 트래킹 다루기 XR Hand v1.1.0

Part04. 누르기 인터렉션(Poke Interaction)

danmujicat 2023. 4. 18. 11:25

검지 손가락으로 버튼이나 UI 클릭/선택한다

1. XR-Origin 구성하기

① GameObject | XR | XR Origin(Action-Based) 메뉴를 선택하여 하이러키 창에 XR Origin를 추가하고 Main Camera는 삭제한다. 인스팩트 창에 XR Origin과 Input Action Manaager 컴포넌트가 추가되어 있다.

② 하이러키 창에 XR Origin를 선택하고 인스펙터 창에서 XR Origin 컴포넌트의 Tracking Origin Mode 속성값을 Floor로 설정한다.

2. 핸드 트래킹 구성하기

② 하이러키 창에 XR Origin->Camera Offset 하위에 GameObject|Create Empty 메뉴를 선택하여 빈 오브젝트를 추가하고 이름을 HandVisualizer로 변경한다.

② 하이러키 창에 XR Origin->Camera Offset-> HandVisualizer 를 선택하고 인스팩터 창에서 Add Component 버튼을 클릭하여  Hand Visualizer 컴포넌트를 추가한다.

② 하이러키 창에 XR Origin->Camera Offset-> HandVisualizer 를 선택하고 인스팩터 창에서 Hand Visualizer 컴포넌트에 각 속성값을 설정한다.

  - Origin : 하이러키 창의 XR Orign 설정

  - Left Hand Mesh : 프로젝트 창의 Samples->XR Hands->1.1.0-> HandVisualizer->Model에서 LeftHand를 설정

  - Right Hand Mesh : 프로젝트 창의 Samples->XR Hands->1.1.0-> HandVisualizer->Model에서 RightHand를 설정

  - Hand Mesh Material : 원하는 재질 설정

  - Draw Meshes : 체크 

  - Debug Draw Prefab : 프로젝트 창의 Samples->XR Hands->1.1.0-> HandVisualizer->Prefab에서 Joint 프로팹 설정

  - Velocity Prefab : 프로젝트 창의 Samples->XR Hands->1.1.0-> HandVisualizer->Prefab에서 VelocityPrefab 프로팹 설정

  - Velocity Type : None 선택

3. 핸드 트래킹 입력 액션 설정하기

 하이러키 창에서 LeftHand Controller를 선택하고  인스펙터 창에서  XR Controller(Action-Based),  XR Ray Interactor, Line Renderer, XR Interacter Line Visual, Sort Group 컴포넌트는 삭제합니다. RightHand Controller도 동일하게 한다.

 

4. 모델 만들기

 GameObject | 3D Object | Plane 메뉴를 선택하여 Plane 추가하고, 원하는 재질을 설정한다.

 GameObject | 3D Object | Cube 메뉴를 선택하여 Cube 추가하고, 이름을 Table로 변경하고 인스펙터 창에서 Position(-1.0, 0.0, 0.16), Scale(0.76, 0.76, 1.3)로 설정한다.

하이러키 창에 GameObject | Create Empty 메뉴를 선택하여 빈 오브젝트를 추가하고 이름을 PokeButton으로 변경하고, 인스펙터 창에서 Transform을 초기화 설정한다.

  - Position(-0.0113, 0.3989, 0.315)

하이러키 창에 PokeButton 선택하고 하위에 GameObject | Create Empty 메뉴를 선택하여 빈 오브젝트를 추가하고, 이름을 Base로 변경하고 인스펙터 창에서 Transform을 초기화 설정한다.

  - Position(0, -0.0164,0)

  하이러키 창에 Base 선택하고 하위에 Cylinder 모델를 추가하고, 인스펙터 창에서 Transform을 설정한다.

  - Position(0, 0,0)

  - Scale(5.978421, 0.3263201, 5.978421)

  하이러키 창에 Base 선택하고 하위에 Cylinder 모델를 추가하고, 인스펙터 창에서 Transform을 설정한다.

  - Position(0, 0.0025,0)

  - Scale(3.146143, 0.2447266, 3.146143)

 하이러키 창에 PokeButton 선택하고 하위에 GameObject | Create Empty 메뉴를 선택하여 빈 오브젝트를 추가하고, 이름을 Button로 변경하고 인스펙터 창에서 Transform을 초기화 설정한다.

  - Position(0, 0.01650002,0)

 하이러키 창에 Button 선택하고 하위에 Cylinder 모델를 추가하고, 인스펙터 창에서 Transform을 설정한다.

  - Position(0, -0.0058,0)

  - Scale(4.768908, 1.004654, 4.768908)

 하이러키 창에 Button 선택하고 하위에 Cylinder 모델를 추가하고, 인스펙터 창에서 Transform을 설정한다.

  - Position(0, -0.02109995,0)

  - Scale(2.4266, 2.4266, 2.4266)

 

 하이러키 창에 PokeButton 선택하고 하위에 GameObject | Create Empty 메뉴를 선택하여 빈 오브젝트를 추가하고, 이름을 PokeCollider로 변경하고 인스펙터 창에서 Transform을 초기화 설정하고, Add Component 버튼을 클릭하여 Box Collider 컴포넌트 추가한다.

-Position(0, -0.0197,0)

-Scale(0.06519, 0.07469253, 0.06519)

 

 

5. 손 누르기 동작하기

 하이러키 창에서 LeftHand Controller를 선택하고  하위에 GameObject | Create Empty 메뉴를 선택하여 빈오브젝트를 추가하고 이름을 Poke Interactor로 변경하고, 인스펙터 창에서    [Add Component] 버튼을 클릭하여  XR Poke  Interactor 컴포넌트를 추가한다. RightHand Controller도 동일하게 한다.

 하이러키 창에서 LeftHand Controller->Poke Interactor를 선택하고  인스펙터 창에서    [Add Component] 버튼을 클릭하여 Tracked Pose Driver(Input System) 컴포넌트를 추가한다. RightHand Controller도 동일하게 한다.

하이러키 창에서 LeftHand Controller를 선택하고 하위에 GameObject | Create Empty 메뉴를 선택하여 빈오브젝트를 추가하고 이름을 Direct Interactor로 변경하고, 인스펙터 창에서    [Add Component] 버튼을 클릭하여  XR Controller(Action-based)컴포넌트를 추가한다. RightHand Controller도 동일하게 한다.

하이러키 창에서 LeftHand Controller-> Direct Interactor를 선택하고 인스펙터 창에서  XR Direct Interactor, Sphere Collider 컴포넌트를 추가한다. RightHand Controller도 동일하게 한다. 

 

하이러키 창에서 LeftHand Controller-를 선택하고 인스펙터 창에서  XR Interaction Group 컴포넌트를 추가하고 Starting GRoup Members 속성:2

 Element0 : 하이러키 창의 LeftHand Controller->Poke Interactor을 드래그하여 설정

 Element1 :  하이러키 창의  LeftHand Controller-> Direct Interactor을 드래그하여 설정

RightHand Controller도 동일하게 한다.

 

6. 버튼 누르기 동작하기

 하이러키 창에서 PokeButton를 선택하고 인스펙터 창에서    [Add Component] 버튼을 클릭하여  XR Simpe Interactable 컴포넌트를 추가한다. 

하이러키 창에서 PokeButton를 선택하고 인스펙터 창에서    [Add Component] 버튼을 클릭하여  XR Poke Filter 컴포넌트를 추가한다. 

  - Interactable 속성 : 하이러키창의 PokeButton오브젝트

  - Poke Collider 속성 :  하이러키창의 PokeCollider 오브젝트

  - Poke Configuration -> Poke Direction 속성 : Negative Y

하이러키 창에서 PokeButton를 선택하고 인스펙터 창에서    [Add Component] 버튼을 클릭하여  XR Poke Follow Affordance 컴포넌트를 추가한다. 

  - Poke Follow Transform 속성 : 하이러키창의 Button 오브젝트

  - Clamp To Max Distance 속성 : 선택

 - Max Distance 속성 : 0.01650002

7. 버튼 활성화시 색상 변경하기

 

하이러키 창에 PokeButton 선택하고 하위에 GameObject | Create Empty 메뉴를 선택하여 빈 오브젝트를 추가하고, 이름을 InteractionAffordance로 변경하고 인스펙터 창에서 Transform을 초기화 설정한다. 여기에 [Add Component] 버튼을 클릭하여 XR Interactable Affordance State Provider 컴포넌트 추가한다.

  - Interactable Source 속성 : 하이러키창의 PokeButton오브젝트

 하이러키 창에 InteractionAffordance 선택하고 하위에 GameObject | Create Empty 메뉴를 선택하여 빈 오브젝트를 추가하고, 이름을 ColorAffordance로 변경하고 인스펙터 창에서 Transform을 초기화 설정한다. 여기에 [Add Component] 버튼을 클릭하여 Material Property Block Helper 컴포넌트 추가한다.

  - Renderer 속성 : 하이러키 창의 PokeButton->Button->Cylinder

 

 하이러키 창에 ColorAffordance선택하고  인스펙터 창에서  [Add Component] 버튼을 클릭하여 Color Material Property Affordance Receiver 컴포넌트 추가한다.

  -  Replace Idle State Value With Initial Value 속성 : 하이러키 창의 PokeButton->InteractionAffordance 

  - Affordance Theme Datum 속성 : InteractionColorAffordanceTheme

실행하기

Comments