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)
Unity 4.x
Oculus Unity Reference (4.x version)
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 |
현재 오브젝트의 레이어 명 |
'Game Programming > Game Engine' 카테고리의 다른 글
Unity3D :: Motion Sickness in Oculus (feat unity) / 유니티에서 오큘러스를 사용할 때 멀미 줄이기 (1) | 2016.08.18 |
---|---|
Unity3D :: Anti-Aliasing, Anisotropic Filtering (안티 에일리어싱, 이방성 필터링 적용) (0) | 2016.08.18 |
Unity3D :: Setting for Oculus VR SDK (오큘러스 VR SDK 설정) (0) | 2016.08.18 |
Unity3D :: model parts in Unity-Chan (유니티짱의 모델 파츠) (2) | 2016.08.09 |
Unity3D :: MMD model import from unity (유니티에서 mmd 모델 가져오기) (2) | 2016.08.05 |
댓글
VallistA
병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.
현재는 이 블로그를 운영하지 않습니다.
vallista.kr 로 와주시면 감사하겠습니다!
자고 싶습니다. ㅠㅠ
Github :: 링크
궁금한점 문의 주시면 답변드리도록 하겠습니다
VISITED
Today :
Total :
Lately Post
Lately Comment