Unity 2022.3.5f1 + Oculus Integration 56.0 (Deep Dive CreateUI)

VR/Oculus Integration 2023. 10. 5. 13:46
반응형

 

이전글 

https://smilejsu.tistory.com/3178

 

Unity 2022.3.5f1 + Oculus Integration 56.0 (Create a Curved or Flat UI)

Interaction SDK에는 곡선 UI와 평면 UI를 위한 프리팹이 있습니다. 서로 다르게 보이지만 기능은 동일합니다. 프리팹에는 Poke 상호 작용을 통해 스와이프 또는 스크롤하고 버튼을 선택하는 기능이 포

smilejsu.tistory.com

 

이전 포스팅에서 도큐먼트에 있는 UI만들기를 해봤다 

이번에는 집중적으로 해부 하고 분석 해서 다양한 UI를 만들어 보겠다 

UI종류는 Flat / Curved 로 나뉜다 

먼저 Flat쪽을 해보려고 한다 

 

 

 

계층 구조는 다음과 같다 

 

Project창에서 FlatUnityCanvas를 검색 하면 찾을수 있다 

 

하이어라키로 가져온다 

FlatUnityCanvas에는 Poke할수 있도록 PokeInteractable컴포넌트가 붙어 있다 

다음 문서를 읽어 본다 

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

 

 

Poke Interactions

Design Guideline

몰입감 있고 즐거운 앱을 만들기 위해서는 편안한 손 추적 경험을 제공하는 것이 필수적입니다.

모범 사례에 대해 알아보고 사용자 불편의 위험을 최소화하려면 핸드 트래킹 설계 가이드를 참조하세요.

 

찌르기(Poke) 상호작용을 사용하면 손, 컨트롤러를 손으로, 컨트롤러를 사용하여 직접 터치하여 표면과 상호작용할 수 있습니다.

PokeInteractor

PokeInteractor는 PokeInteractable이 제공된 ISurface 교차점을 통해 호버링과 선택을 모두 계산하는 데 사용할 점 변환을 정의합니다.

특히 PokeInteractor는 ISurfacePatch에서 정의한 대로 거리별로 가장 가까운 PokeInteractable을 계산하여 마우스오버할 수 있는 최고의 PokeInteractable에 점수를 매깁니다.

 

또한 PokeInteractor는 두 개의 연속 프레임에 걸친 점 변환이 표면 법선 방향에서 PokeInteractable의 ISurface와 교차할 때 선택이 발생해야 한다고 결정합니다.

 

이런 방식으로 빠른 프레스를 처리할 수 있을 뿐만 아니라 프레스가 표면 위에서만 시작되도록 요구할 수도 있습니다.

 

PokeInteractable

 

PokeExamples 장면의 이 예에서 숫자 1(흰색 평면)은 버튼 표면이고 숫자 2(파란색 선)는 법선입니다.

 

버튼 하나를 만들어서 테스트 해보자 

이미 만들어져있는것을 처음 부터 만들 필요는 없을거 같구...

기존에 있던 FlatUnityCanvas를 변경 하는걸로 시작 해본다 

 

프로젝트 창에서  FlatUnityCanvas 프리팹을 찾아 하이어라키로 가져오고 RayInteractable컴포넌트를 부착 한다 

이미 있는 스크롤뷰는 비활성화 

버튼을 하나만들어서 그냥 테스트 

 

 

Curved UI만들기 

빈 오브젝트 ( Cylinder)를 만들고 Cylinder , CylinderSurface 컴포넌트를 부착 

Cylinder의 Radius의 값을 2로 변경 

Cylinder Surface의Cylinder필드에 Cylinder를 넣고 Facing 을 In으로 변경 하고 Height를 0으로 설정 한다 

 

Cylinder자식으로 빈오브젝트 (CurvedCanvas)를 만들고 

CurvedCanvas 자식으로 빈오브젝트 (Mesh)를 만든다 

 

Mesh에 CanvasCylinder를 부착 하고

 

OVR Canvas Mesh Renderer도 부착 한다 

 

 

 

MeshFilder, MeshRenderer, MeshCollider를 부착 한다 

 

 

그리고 ColliderSurface를 부착 한다 

 

 

 

CurvedCanvas자식으로  UI >  Canvas를 만들고 

다음과 같이 설정 하고 

이거 안하면 Text 째글째글해짐

Canvas에 Image컴포넌트를 부착 하고 다음과 같이 설정 한다 

 

CanvasRederTexture를 붙여 준다 

 

레이어를 UI로 설정 하고 (모든 자식 포함)

Camera Render Texture의 Canvas에 필드에 Canvas를 넣어 준다 

Cylinder를 살짝 위로 올리고 

 

 

CurvedCanvas를 살짝 앞으로 이동 시키자 

 

 

텍스트를 하나 추가 하고 

 

 

 

 

이제 Mesh를 선택 하고 

 

다음과같이 필드에 넣어주자 

 

OVR Canvas Mesh Renderer를 다음과 같이 설정 한다 

 

 

Collider Surface의 Collider 필드에 Mesh게임 오브젝트를 넣어주자 

 

 

 

 


참고

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

반응형
: