가상현실 프로그래밍 5주차

2021. 10. 8. 15:30학교수업

사용자 정의 컨트롤러 : 모든 컨트롤러에서 사용 가능한 사용자 저의 컨트롤러 지원

- VRTK 플랫폼에서 하나의 사용자 정의 컨트롤러 정의

- 사용자 정의 모델과 이벤트 재정의 가능

- EmptyObject에 3D모델 및 이벤 핸들러 작성

- VRTK_SDKManager 객체 사용 -> 왼쪽, 오른쪽 컨트롤러 개별적 지정

-> Empty object로 부터 계층 구조를 가지고 객체생성(Controlelr, Left, Right)

-> VRTK_SDKManager에 Left는 Left Controller, Rigth는 Right Controller에 할당된다.

 

- 컨트롤러부터 이벤트를 받기 위해 VRTK_ControllerEvents 컴포넌트 추가

- VRTK_ControllerEvents_UnityEvents 컴포넌트를  추가해서 개별 버튼에 대한 이벤트핸들러 작성

-> 이벤트 핸들러 작성을 위해 VRTK 모듈 필요 (using VRTK;)

 

컨트롤러 이벤트 핸들러 : ControllerInteractionEventArgs

- left, rigth에 버튼에 대한 index

-> uint index = VRTK_ControllerReference.GetRealIndex(e.controllerReference); (오른쪽1,왼쪽2)

- 버튼 press 강도

-> e.buttonPressure (0~1)

- Touchpad 좌표

-> e.touchpadAxis (x,y)

- Touchpad 각도

-> e.touchpadAngle 

 

물리엔진 모델

- 오브젝트에 물리엔진 연산을 하기 위해서는 Rigidbody 컴포넌트가 필요

- Rigidbody : 외부 객체 충돌 처리, 중력 적용, 외부 힘 반응

-> Constraints : 외부 힘에 의해 고정되야하는 조건(위치, 회전)

- Collider : 물리엔진 적용 영역, 외부에 힘이 가해지면 물리 연산 수행 (원이 가장 연산이 적다.)

-> 3D 오브젝트마다 개별 collider를 가짐

-> 임의 오브젝트는 mesh collider 사용 ( mesh 모양 따라 collider 생성 )

충돌 이벤트 발생 조건 (이벤트는 충돌한 객체 모두에서 발생)

- 두 객체 모두 collider가 있다.

- 둘 중 하나는 Rigidbody가 있다.

- Rigidbody가 있는 객체가 움직였다.

-> 충돌 객체 정보는 col.gameObject를 통해 얻는다.

Trigger event

- 충돌만 감지 (물리적 연산 X)

- 물리적으로 관통을 의미

- 주로 논리적 충돌 체크를 위해 사용

Collider의 Is Trigger의 체크 유무에따라 collsion인지 trigger인지로 나뉘어짐

trigger 발동 조건

- 두 객체 모두 collider 존재

- 둘 중 하나는 Rigidbody가 있다.

- 둘 중 하나는 Is Trigger가 체크

- 어느쪽이 움직여도 이벤트 발생

 

Rigidbody컴포넌트는 외부에서 힘을 가하는 함수 제공

(힘, 속도는 3차원 벡터)

- .AddForce : 힘

- .velocity : 속도 변경

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

웹개발 기초 6주차  (0) 2021.10.11
객체지향프로그래밍 6주차  (0) 2021.10.10
정보보호개론 5주차  (0) 2021.10.06
임베디드기초 5주차  (0) 2021.10.06
사물인터넷의이해 5주차  (0) 2021.10.05