가상현실 UI

- 고려 사항

1. 1인칭 시점의 작은 FOV(Field of View)

2. 거리의 존재

3. 해상도 낮음

4. 가독성이 떨어짐

5. UI의 설계

- 카메라 방향으로 텍스트를 회전시켜야함 (거리를 고려하여 크기 유지)

=>3D object로 텍스트를 표현하기 때문

 

Canvas 객체

- UI항목을 화면에 배치하고 렌더링 하는 역할(모든 UI는 Canvas객체 하위 위치)

- EventSystem 객체는 시스템에서 발생하는 인풋을 Canvas 하위의 UI항목에 전달

- Canvas는 한 씬에 여러 개 생성 가능

- Canvas의 하위 객체로 Canvas 생성 가능

Canvas Component

- RectTransform : 기존 Transform Component와 동일한 역할을 UI에 적용(UI마다 객체 원점 설정 가능)

1. RectTool로 크기와 위치 동시 조절

2. 2D화면으로 전환해 UI배치

- Render Mode

1. Screen Space - Overlay : 화면 해상도에 맞춰 자동으로 스케일

- 3D + 2D UI 합성 방식으로 일반적으로 사용

2. Screen Space - Camera : MainCamera와 별도로 UICamera 사용

3. World Space - 3D 공간의 객체로 Canvas 사용

- 3D 공간 UI 배치, 가상현실에서 사용

 

Text를 이용한 Text UI

- Image, Panel을 사용해 다양한 Ui표시

- Text 객체의 .text속성을 사용해 코드로 출력 내용 표현

- using UnityEngine.UI선언

 

Info Bubble

- 항상 카메라 방향으로 출력

- 카메라와 거리를 고려해 일정 크기 유지

=>구현 방법

1. Look At(camera) 함수를 이용하여 Text를 카메라를 보게 회전(y축 180도 회전)

2. 거리를 고려하여 text크기 조절(camera와 object간 거리 계산, 거리 비례 localScale 재 조정)

 

TextMeshPro (Asset store의 상용 asset에서의 unity 기본 asset) => Canvas 없이 3D공간에 text 렌더링

- 기본 UI Text와 Text Mesh를 대체

- 다양한 커스텀마이징 가능, 적은 메모리 사용

- 가상현실에서는 가독성 높은 TextMeshPro가 유리

=>Font asset을 생성해서 사용해야함 (사용법이 조금 까다롭다)

=>Canvas에서 사용시 기본은 TextMeshPro형으로 C#은 TextMeshProUGUI사용

 

HUD 구현(Head Up Display) <-카메라 앞에 Canvas객체 위치(카메라에 상속)

- 1인칭 시점 몰입감 표현, 멀미 개선(고정 이미지사용) ex) 지도, 돌아야하는 바퀴 수

- 1인칭 시점 가상 정보 출력

- 플레이어 시점에 따라 같이 이동

Windshield

- 플레이어의 시점에 영향 없이 고정된 위치에 존재

- 카메라와 평행하게 UI 배치

- 플레이어에게 상속되어서 함께 움직이지만 카메라 회전에는 무관

 

요약

- 가상현실은 UI 특성 반영 필요

- 가상현실에서 3D공간과 2D UI 합성 시스템 사용 불가

- 3D Canvas는 render Mode를 world space로 설정

 

'학교수업' 카테고리의 다른 글

웹개발기초 4주차  (0) 2021.09.26
객체지향프로그래밍 4주차  (0) 2021.09.24
정보보호개론 3주차  (0) 2021.09.23
임베디드기초 3주차  (0) 2021.09.22
사물인터넷의이해 3주차  (0) 2021.09.18

+ Recent posts