EasyCastleUNITY

OVR 유니티 Poke Interactions 탐구 본문

Oculus VR 탐구

OVR 유니티 Poke Interactions 탐구

EasyCastleT 2023. 10. 31. 17:21

https://developer.oculus.com/documentation/unity/unity-isdk-create-poke-interactions/

 

Create Poke Interactions | Oculus Developers

 

developer.oculus.com

이 글은 위 링크의 문서를 바탕으로 만들고 작성했으며, Oculus Integration SDK 57.0버전을 기준으로 작성되었습니다. 참고하여 주시기 바랍니다.

 

Create Poke Interactions

여러분의 hadns나 controllers로 오브젝트를 찌르려면, poke interactions(찌르기 상호작용)을 사용하세요.

poke interactions를 만들기 위해, hand poke interactors(hands나 controllers as hands를 사용한다면)나 controller poke interactors(컨트롤러를 사용한다면)를 추가하세요. 그런 후, 각각의 게임오브젝트를 찌를 수 있게 하기 위해, poke interactable을 추가하세요. 이 문서에서는, 여러분이 찌르는 것이 가능한 사각형 버튼을 만들려고 하고 있습니다. 

poke interactions를 시도해보고 싶으시면, PokeExamples 씬을 통해 시도해 보세요. 


Add Poke Interactors

Poke Interactors를 사용하면 손이나 컨트롤러로 poke interactions가 가능한 객체를 찌를 수 있습니다. 


Adding Hand Poke Interactors for Hands

1. hands가 있는 씬을 엽니다. 

2. 프로젝트에서 HandPokeInteractor 를 검색하여 나온 결과인 HandPokeInteractor 프리팹을 OVRInteraction > OVRHands > LeftHand > HandInteractorsLeft 에 자식으로 만들어 줍니다. 이 프리팹에는 찌르기를 사용하는데 필요한 모든 구성 요소가 포함되어 있습니다. 

3. Hierarchy 에서 HandInteractorsLeft 를 선택하세요. 

4. 인스펙터에서, Interactors 리스트 속성의 +를 눌러 새로운 요소를 추가하세요. 

5. 이 요소의 HandPokeInteractor를 드래그하여 assign 하세요. 

6. 오른손에도 위 과정을 반복하세요.


Adding Hand Poke Interactors for Controllers as Hands

1. controllers as hands를 세팅해 놓은 씬을 엽니다. 

2. 프로젝트에서  HandPokeInteractor 를 검색하여 나온 결과인, HandPokeInteractor 프리팹을 OVRInteraction > OVRControllerHands > LeftControllerHand > ControllerHandInteractors 에 자식으로 만들어줍니다. 

3.  Hierarchy 에서 ControllerHandInteractors 를 선택하세요. 

4. 인스펙터에서, Interactors 리스트 속성의 +를 눌러 새로운 요소를 추가하세요. 

5. 이 요소의 HandPokeInteractor를 드래그하여 assign 하세요. 

6. 오른쪽 컨트롤러 손에도 반복합니다. 


Adding Controller Poke Interactors

1. controllers 가 세팅되어 있는 씬을 엽니다. 

2. 프로젝트에서, ControllerPokeInteractor 를 검색하여, 나온 결과인 ControllerPokeInteractor 프리팹을 OVRInteraction > OVRControllers > LeftController > ControllerInteractors 에 자식으로 만듭니다. 

3. Hierarchy 에서 ControllerInteractors 를 선택합니다. 

4. 인스펙터에서, Best Hover Interactor Group 컴포넌트에서, Interactors 리스트 속성의 + 버튼을 클릭하여 요소를 추가합니다. 

5. ControllerPokeInteractor 를 요소에 assign 합니다. 

6. 오른쪽 컨트롤러에도 반복합니다. 


Add Poke Interactable

Poke interactable을 가지고 있는 객체들은 여러분이 찌르기를 할 수 있습니다. 

Create Empty GameObjects

1. 씬에서 Button 이라는 이름의 빈 오브젝트를 추가합니다. 

2. 이 Button을 카메라 앞으로 위치시킵니다. 

3. Button 아래의 ModelVisuals 라는 이름의 빈 오브젝트들을 자식으로 붙입니다. 

4. Model 아래의 Surface라는 이름의 빈오브젝트를 추가합니다. Surface는 버튼의 백스톱(back stop)을 결정합니다. 

5. Visulas 아래에 ButtonVisual 이라는 이름의 3d 오브젝트 Plane을 추가합니다. 

 

Add Components 

1. Hierarchy 에서 Button을 선택합니다. 

2. 인스펙터에서, Add Component를 클릭하고 Poke Interactable 을 검색하여 Poke Interactable 컴포넌트를 추가합니다.

3.  Hierarchy 에서 Surface를 선택합니다. 

4. 인스펙터에서, Plane Surface, Clipped Plane Surface, 그리고 Bounds Clipper 를 추가합니다. 이러한 컴포넌트는 버튼의 찌를 수 있는 표면을 정의합니다. 

5. Hierarchy 에서 ButtonVisual 을 선택합니다. 

6. 인스펙터에서 Plane (Mesh Filter)Mesh Collider 를 제거합니다. 

7. Poke Interactable Visual, Mesh Filter, Material Property Block Editor, Rounded Box Properties nteractable Color Visual 컴포넌트를 추가합니다. 이 컴포넌트들은 버튼이 어떻게 보이는지 정의합니다. 

Determine Button Appearance

1. Mesh Renderer 컴포넌트안의 Materials 리스트의 Element 0 에 RoundedBoxUnit으로 변경합니다. 

2. Poke Interactable Visual  컴포넌트에서, Poke Interactable 속성에 Button을 Button Base Transform 속성에 Surface를 세팅합니다. 

3. Mesh Filter  컴포넌트에서, Mesh 속성을 Quad로 변경합니다.

 4.  Interactable Color Visual 컴포넌트에서 Interactable View 속성에 Button을  Editor 속성에 ButtonVisual 을 세팅합니다. 

5. Hierarchy 에서 Surface를 선택합니다. 

6. 인스펙터에서 Transform 컴포넌트에 접근하여 Scale의 Z를 0.001로 변경합니다. 

7. Clipped Plane Surface 컴포넌트에서, Plane Surface  속성에 Surface를 세팅합니다. 

8. 같은 컴포넌트에서, Clippers 의 + 버튼을 눌러 요소를 추가합니다. 

9. 해당 요소에 Surface를 세팅합니다. 

10. Hierarchy 에서 Button을 선택합니다.

11. 인스펙터에서, Poke Interactable 컴포넌트에 접근하여 Surface Path 속성에 Surface를 세팅합니다. 

12. Hierarchy 에서 Visuals 를 선택합니다.

13. Visuals를 Model이라는 이름의 게임 오브젝트보다 z축 기준으로 앞으로 이동시킵니다. 이렇게 하면 버튼을 찔렀을 때, 버튼이 시각적으로 뒤로 움직일 수 있습니다. 

14. File > Build And Run 을 하거나, Oculus Link가 연결되어 있다면, Play 버튼을 누르세요. 

 

현재 씬이 로드되면, 너의 손들이나 컨트롤러들을 이용하여 버튼을 누릅니다. 여러분이 버튼을 눌렀을때, 버튼은 여러분으로 부터 멀어지고, 버튼을 놓으면 원래 위치로 돌아갑니다. 

직접 만들어본 Poke 입니다.