가상현실에서의 player 이동 방식
1. 특정 지점을 옮겨 다니는 경우
2. Rail Shooting (정해진 길을 따라 이동, player 이동 제어X) - 보통 3축에서 많이 사용
3. 제한된 형태 이동 (특정 지점으로만 자유롭게 이동)
4. 일반 3D게임같은 제한 없는 이동 (자율롭지만 멀미 유발 가능)
5. 다양한 형태 이동 복합적 지원(한게임에 1~4방식 모두 사용)
목적지 방향으로 이동시 이동과 회전을 고려해야함(상호아에 맞게 상하 회전도 조절해야함)
- 목적지 방향으로 회전량 계산 벡터의 뺄셈을 통해 현재 위치에서 target을 바라보게함
-> 상하 회전은 진행 방향 계산 후 벡터의 y값을 0으로 만든다.
효율적인 waypoint 디자인 : wire sphere로 출력 => Gizmos 시스템
void OnDrawGizmos() 함수 사용 -> 게임플레이 영향X 디자인 씬에서만 표현
VR연동
- HMD 위치를 직접 제어하기 위해 CameraRig를 이용해야함
- HMD SDK가 개별적으로 CameraRig 객체를 가지고 있다. tag로 CamerRig를 찾아야함
-> Rig를 찾아 태그로 지정해두는걸 추천
텔레포트를 위한 포인터 생성
- Touchpad 이벤트 처리를 위해 VRTK_ControllerEvents 컴포넌트 추가
- Pointer 관련 기능을 처리하기 위해서 VRTK_Pointer 컴포넌트 추가
- 직선 포인터를 렌덜이하기 위해서 VRTK_StraightPointerRender 컴포넌트 추가
- VRTK_StraightPointerRender 컴포넌트를 VRTK_Pointer의 PointerRenderer 속성에 할당에 포인터에 사용할 렌더러 연결
- 왼쪽과 오른쪽 컨트롤러 각각 구현
PlayArea 생성
- 실제 Player 영역(CameraRig)를 텔레포트를 위해 Empty Object로 PlayArea 객체 생성
- 어떤 방식으로 teleport할지 기능 구현한 VRTK_BasicTeleport 컴포넌트 추가
- 텔레포트는 바로 이동하는 것이 아닌 눈 깜빡이면 이동하는 형태 (Blink Transition Speed와 Blink To Color 사용)
-> 멀미감 개선
직선형태 포인터 (StraightPointer)
곡선형태 포인터 (BazierPointer)
텔레포트 포인터 모양 설정
1 : Maximum Length 포인터 목적지까지 최대 거리
2 : Tracer Density : 포인터 빔의 밀도
3 : Cursor Radius : 포인터 빔의 크기
Custom 포인터 설정 : Tracer
- Custom Tracer로 segment 변경 가능
- sphere 대신 line을 segment로 사용 (LineSegment)
- 애니메이션 가진 line segment (LineSegmentTexAnim) 지원
- 밀도를 높이기 위해 Rescale Tracer 체크
텔레포트는 이동 가능한 영역에대한 정책 설정을 해야한다
- PlayArea 객체에 VRTK_PolicyList 컴포넌트 추가 (설정시 정책에 설정되있는 위치만 텔레포트 가능, 없으면 어디든가능)
텔레포트 높이 보정
- 텔레포트 높이 조정을 안하면 높은 곳으로 텔레포트하면 객체 안으로 텔레포트 해버림
'학교수업' 카테고리의 다른 글
<시험정리>사물인터넷개론 (0) | 2021.10.19 |
---|---|
<시험정리> 웹 개발 기초 (0) | 2021.10.17 |
정보보호개론 6주차 (0) | 2021.10.13 |
임베디드기초 6주차 (0) | 2021.10.12 |
사물인터넷의 이해 6주차 (0) | 2021.10.12 |