가상현실 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 |