Book Image

Unity Virtual Reality Projects - Second Edition

By : Jonathan Linowes
Book Image

Unity Virtual Reality Projects - Second Edition

By: Jonathan Linowes

Overview of this book

Unity has become the leading platform for building virtual reality games, applications, and experiences for this new generation of consumer VR devices. Unity Virtual Reality Projects walks you through a series of hands-on tutorials and in-depth discussions on using the Unity game engine to develop VR applications. With its practical and project-based approach, this book will get you up to speed with the specifics of VR development in Unity. You will learn how to use Unity to develop VR applications that can be experienced with devices such as Oculus, Daydream, and Vive. Among the many topics and projects, you will explore gaze-based versus hand-controller input, world space UI canvases, locomotion and teleportation, software design patterns, 360-degree media, timeline animation, and multiplayer networking. You will learn about the Unity 3D game engine via the interactive Unity Editor, and you will also learn about C# programming. By the end of the book, you will be fully equipped to develop rich, interactive VR experiences using Unity.
Table of Contents (15 chapters)

Resetting center and position

Sometimes in VR, the view presented in the headset is not quite in sync with your body's orientation. Device SDKs provide functions to reset the orientation of the headset with respect to the real-world space. This is often referred to as the recentering of the view.

Unity provides an API call that maps to the underlying device SDK to recenter the device, UnityEngine.VR.InputTracking.Recenter(). This function will center tracking to the current position and orientation of the HMD. It only works with seated and standing experiences. Room scale experiences are not affected.

At the time of this writing, Recenter does not work in SteamVR, even for seated configuration. The solution is to call the following code instead:

Valve.VR.OpenVR.System.ResetSeatedZeroPose();
Valve.VR.OpenVR.Compositor.SetTrackingSpace(Valve.VR.ETrackingUniverseOrigin.TrackingUniverseSeated...