-
Unity Oculus 카메라(시점) 움직이기개발/Unity 2020. 2. 13. 14:51
VR 개발에서 카메라는 항상 헤드셋의 위치에 따라 움직이므로 위치를 조절하기 어렵고, 가능하더라도 멀미의 원인이 되므로 피하는 것이 좋다. 따라서 몰입을 위해 Camera 컴포넌트가 장착된 CenterEyeAnchor의 Transform이나 Field of View(시야각)은 변경할 수 없게 되어 있다.
따라서 충격으로 흔들리거나, 술에 취한 상태를 표현하거나 예술적인 효과를 내기 위해 카메라를 움직이고 싶을 때는 상위 오브젝트인 OVRCameraRig 또는 OVRPlayerController를 움직여야 한다.
플레이어의 위치를 이동할 때는 OVRPlayerController을 움직일 수 있는데, 이 때는 ChacterController과 OVRPlayerController를 비활성화하는 것이 좋다. OVRCameraRig의 Transform.position은 헤드셋의 위치에 따라 계속 변화하므로 변경하기 어려워 이 방법을 사용하는 것이 좋다.
플레이어가 보는 방향을 변경하면서 트래킹을 유지하고 싶다면, OVRCameraRig의 Transform.rotation을 변경해야 한다.
private Quaternion nextRotation = Quaternion.Euler(0, 0, 0); private float turningTime; private float timeUntilTurn = 0; void RandomCameraTurn() { if(timeUntilTurn <= 0) { turningTime = 1; float rotRange = 10; nextRotation = Quaternion.Euler(Random.Range(-rotRange, rotRange), Random.Range(-rotRange, rotRange), Random.Range(-rotRange, rotRange)); timeUntilTurn = turningTime; return; } cameraRig.localRotation = Quaternion.Slerp(cameraRig.localRotation, nextRotation, (turningTime - timeUntilTurn) / turningTime); timeUntilTurn -= Time.deltaTime; }
일정 시간마다 조금씩 다른 방향을 바라보게 해 어지럼증을 표현했다. 과도하게 사용하면 실제로 멀미를 일으키기 쉬우니 조심해야 한다.
'개발 > Unity' 카테고리의 다른 글
Unity Oculus VR 물건 던지는 속도(세기) 조절하기 (0) 2020.02.13 Unity Oculus 컨트롤러로 OVRGrabbable 오브젝트 발사하기 (0) 2020.02.06 Unity Oculus Quest 최적화 (0) 2020.02.05 Unity 충돌 감지 시 효과음 재생 (0) 2020.01.31 Unity 라이트 프로브와 실시간 조명 (0) 2020.01.31