미디어 콘텐츠 스터디

Part03. 잡기/이동 인터렉션(Grab&Translation Interaction) 본문

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

Part03. 잡기/이동 인터렉션(Grab&Translation Interaction)

danmujicat 2023. 4. 16. 15:49

물체를 잡아서 위치를 이동한다.

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 | 3D Object | Cylinder 메뉴를 선택하여 Cylinder 를 추가하고, 인스펙터 창에서 Transform을 설정하고, 원하는 재질을 설정한다. 

       - Scale(3.697217,16.29315,3.697217)

Cylinder.fbx
0.02MB

 GameObject | 3D Object | Cylinder 메뉴를 선택하고, 인스펙터 창에 Capsule Colider를 삭제하고 Mesh Colider를 추가하고, Convex 속성을 선택하고, Mesh 속성에 pCylinder1 값을 설정한다

 GameObject | 3D Object | Cylinder 메뉴를 선택하여 Cylinder 를 추가하고, 이름을 Cone으로 변경하고, 인스펙터 창에서 Transform을 설정하고, 원하는 재질을 설정한다.

       - Scale(4.826501,4.826501,4.826501)

Cone.fbx
0.02MB

 GameObject | 3D Object | Cone 메뉴를 선택하고, 인스펙터 창에 Capsule Colider를 삭제하고 Mesh Colider를 추가하고, Convex 속성을 선택하고, Mesh 속성에 pCone1 값을 설정한다

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

 

5. 물체 잡고 이동하기

 하이러키 창에서 LeftHand Controller를 선택하고 인스펙터 창에서    [Add Component] 버튼을 클릭하여  Direct Interactor 컴포넌트를 추가한다. RightHand Controller도 동일하게 한다.

 하이러키 창에서 LeftHand Controller를 선택하고  G인스펙터 창에서    [Add Component] 버튼을 클릭하여 Sphere Collider 컴포넌트를 추가하고, Is Trigger를 선택한다. RightHand Controller도 동일하게 한다.

 하이러키 창에서 Cylinder 오브젝트를 선택하고 인스펙터 창에 [Add Component] 버튼을 클릭하여 XR Grab Interactable 컴포넌트를 추가하고, Select Mode속성은 Multiple로 설정하고, Movement Type 속성은 Kinematic으로 설정하고, Throe On Detatch속성은 선택해제하고, Use Dynamic Attach 속성은 선택한다. Rigidbody 추가하고 Use Gravity속성은 해제한다.

 하이러키 창에서 Cylinder 오브젝트를 선택하고 인스펙터 창에 [Add Component] 버튼을 클릭하여 XR General Grab Tansformer 컴포넌트를 추가한다.

 하이러키 창에서 Cylinder 오브젝트를 선택하고 하위에 빈 오브젝트를 추가하고 이름을 InteractionAffordance로 변경하고, 인스펙터 창에 [Add Component] 버튼을 클릭하여 XR Interactable Affordance State Provider 컴포넌트를 추가하고, Interactable Source 속성에 하이러키창의 Cylinder 오브젝트를 드래그앤드룹하여 설정한다.

  하이러키 창에서 Cone 오브젝트를 선택하고 인스펙터 창에 [Add Component] 버튼을 클릭하여 XR Grab Interactable 컴포넌트를 추가하고, Select Mode속성은 Multiple로 설정하고, Movement Type 속성은 Kinematic으로 설정하고, Throe On Detatch속성은 선택해제하고, Use Dynamic Attach 속성은 선택한다. Rigidbody 추가하고 Use Gravity속성은 해제한다.

 

 하이러키 창에서 Cone오브젝트를 선택하고 인스펙터 창에 [Add Component] 버튼을 클릭하여 XR General Grab Tansformer 컴포넌트를 추가한다.

 하이러키 창에서 Cylinder 오브젝트를 선택하고 하위에 빈 오브젝트를 추가하고 이름을 InteractionAffordance로 변경하고, 인스펙터 창에 [Add Component] 버튼을 클릭하여 XR Interactable Affordance State Provider 컴포넌트를 추가하고, Interactable Source 속성에 하이러키창의 Cylinder 오브젝트를 드래그앤드룹하여 설정한다.

실행하기

Comments