Game Programming/Game Engine

Unity3D :: Oculus VR in Unity (유니티 에서의 Oculus VR)

VallistA2016. 8. 18. 11:56


Unity 5.x

Oculus Unity Reference (5.x version)

Oculus Unity Document


Unity 4.x

Oculus Unity Reference (4.x version)

Oculus Unity Document


1. 서론


Unity에서 VR을 자체적으로 지원한지 얼마 되지 않았다. 이 말인 즉슨 Unity도 어정쩡하지만 지원은 한다는 이야기이다.

하지만 생각해보면 자체적으로 지원한지 얼마 되지 않았기 때문에 최신버전에서만 호환이 될 수 밖에 없다.


Oculus Unity Document에서도 강조하지만 Unity 4.x 버전에서는 Legacy로 지원하기 때문에 4.x 버전에서 개발하다가 Unity 5.x 버전으로 업 시키라고 되어있다. 5.x 중에서도 가장 최신으로 가는게 좋지않나 생각을 한다. 왜냐하면 버전업될 수록 폭 넓은 API를 지원하기 때문이다.


Unity 최신 릴리즈인 5.4.x 버전은 자동 SDK 인식까지 되어있어 확실히 편하다는 느낌이 든다.


2. 개발 전


개발을 하기 전 먼저 알아봐야 할 것은 Reference 문서를 살펴봐야 한다는 것이다.

어떤 기능을 지원하는지 알아봐야 그것에 맞춰 개발일정을 조율하거나 할 수 있기 마련이다. 


크게 우리가 알 것을 표로 보도록 하자.


 이름 

 역할  

 UnityEngine.VR.InputTracking 

 VR의 Tracking 센서에 들어오는 데이터를 가져온다.

 UnityEngine.VR.VRDevice

 VR장치의 데이터에 대해서 알아온다. 

 UnityEngine.VR.VRSettings

 VR에 대한 설정을 담당한다. 

 UnityEngine.VR.VRStats

 VR의 현재 상태 데이터를 가져온다. 


UnityEngine.VR.InputTracking

  

참고 링크


Static Functions

변수/함수 이름

성능

GetLocalPosition

VRNode의 현재 위치를 반환

GetLocalRotation

VRNode의 현재 각도를 반환

Recenter

HMD의 현재 위치 및 방향을 추적하는 중심

 

UnityEngine.VR.VRDevice


참고 링크


Static Variables

변수/함수 이름

성능

isPresent

VR장치의 감지를 성공했는가 반환

model

로드한 VR 장치의 특정 모델을 반환

refreshRate

VR 기기의 헤르츠 (모니터 주사율) 속도에 대해서 갱신 시간을 정함.

 

Static Functions

변수/함수 이름

성능

GetNativePtr

가상 현실 디바이스 구조의 네이티브 포인터를 반환

 

UnityEngine.VR.VRSettings


참고 링크

 

Static Variables

변수/함수 이름

성능

enabled

VR 응용프로그램을 사용할지 안할지에 대해서 설정합니다.

loadedDeviceName

VR Device의 현재 로드되어있는 타입을 가져온다.

eyeTextureWidth

돌아가고 있는 VR Device의 가로 텍스쳐 크기를 가져온다.

eyeTextureHeight

돌아가고 있는 VR Device의 세로 텍스쳐 크기를 가져온다.

renderScale

렌즈 보정의 선명도에 대해서 연산하기 전에 텍셀, 픽셀 비율을 제어한다.

renderViewportScale

렌즈 보정의 선명도에 대해서 연산하기 전에 텍셀, 픽셀 비율을 제어한다.

showDeviceView

메인 화면 장치에 표시되는 내용을 기기에 미러링 한다.

supportedDevices

빌드시에 포함 된 지원되는 VR 장치들에 대한 리스트를 리턴한다.


Static Functions

/함수 이름

성능

LoadDeviceByName

다음 프레임의 시작에서 로드된 장치의 이름을 가져온다.

 

UnityEngine.VR.VRStats


참고 링크

 

Static Variables

변수/함수 이름

성능

gpuTimeLastFrame

VR 보조 시스템에 의해 측정된 FPS프레임을 반환

 

3. Oculus Test Scenes


(보기 1. Oculus의 테스트 예제)


오큘러스에서는 테스트 예제가 3개정도 존재한다. 

이 예제는 각각 아무것도 설정되어 있지 않을때의 camera tracking, Oculus Script를 사용한 wrapper camera tracking, controller 까지 붙어있는 예제까지 존재한다.


이러한 예제에서 알아봐야 할 스크립트가 몇가지가 있는데 이러한 스크립트를 조금 보도록 하자.


예제 Trivial


(보기 2. Trivial Scene inspector & project)


(보기 3. Game View)


예제 Cubes


(보기 4. Cubes Scene inspector & project)


(보기 5. Game View)


이 예제는 OVRCameraRig와 그 밑의 자식으로 TrackingSpace가 존재하는 예제이다.



예제 Room


(보기 6. Room Scene inspector & project)


(보기 7. Game View)


이 예제에는 OVRPlayerController 가 붙어있는 예제이다.


스크립트 알아보기



(보기 8. OVR Manager)


 이름

 성능

 Queue Ahead

 true를 할 경우 왜곡 렌더링 작업을 할 때 파이프 라인 노점을 방지하고 CPU-GPU의 병렬 처리를 증가시키기 위해 초기 분기 프레임을 전송하는 함수  

 Tracking Origin Type

 두 가지 타입이 존재하는데, EyeLevel은 현재 위치를 눈으로 지정하는 것이며, FloorLevel은 서 있는 위치를 기점으로 지정한다. EyeLevel보다 위쪽에서 바라보게 된다.

 Reset Tracker On Load

 true의 경우 실시간으로 원래 기기의 위치를 초기로 지정을 하며 오차를 줄인다. Position Tracking의 기능이다. 


(보기 9. OVR Player Controller with OVR Scene Sample Controller)


OVR Player Controller


 이름 

 성능 

 Acceleration

 가속도 즉 움직이는 것들에 대한 힘이다.

 Damping

 물리에서의 Damping을 의미

 Back And Side Damping

 뒤, 좌, 우에 대한 Damping 수치

 Jump Force

 점프 할 때의 힘

 Rotation Amount

 회전 시의 힘의 양

 Rotation Ratchet

 회전 시의 래칫의 량이다.

 Hmd Resets Y

 HMD 기기의 Y축 위치를 리셋

 Hmd Rotates Y

 HMD 기기의 Y축 각도를 리셋

 Gravity Modifier

 중력 값의 변화량

 Use Profile Data

 프로필 데이터를 받아서 사용함

 Trigger Target

 Trigger 체크를 할 Game Object를 설정한다.


OVR Scene Sample Controller


 이름 

 성능 

 Quit Key

 Key Code중 사용할 키를 설정하여 해당 키를 종료키로 설정 

 Fade In Texture

 Scene 시작 시 Fade Out 할 텍스쳐를 설정 

 Speed Rotation Increment

 각도의 속도 증가량 

 Layer Name

 현재 오브젝트의 레이어 명 



댓글

댓글쓰기 폼

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.

자고 싶습니다. ㅠㅠ

페이스북    :: 링크
카카오톡    :: kingbye1
Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today : 19

Total : 414,365

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘