Unity Virtual Reality Projects - Jonathan Linowes - E-Book

Unity Virtual Reality Projects E-Book

Jonathan Linowes

0,0
31,19 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

What is consumer “virtual reality�? Wearing a head-mounted display you view stereoscopic 3D scenes. You can look around by moving your head, and walk around using hand controls or motion sensors. You are engaged in a fully immersive experience. On the other hand, Unity is a powerful game development engine that provides a rich set of features such as visual lighting, materials, physics, audio, special effects, and animation for creating 2D and 3D games. Unity 5 has become the leading platform for building virtual reality games, applications and experiences for this new generation of consumer VR devices.

Using a practical and project-based approach, this book will educate you about the specifics of virtual reality development in Unity.

You will learn how to use Unity to develop VR applications which can be experienced with devices such as the Oculus Rift or Google Cardboard. We will then learn how to engage with virtual worlds from a third person and first person character point of view. Furthermore, you will explore the technical considerations especially important and possibly unique to VR. The projects in the book will demonstrate how to build a variety of VR experiences. You will be diving into the Unity 3D game engine via the interactive Unity Editor as well as C-Sharp programming.

By the end of the book, you will be equipped to develop rich, interactive virtual reality experiences using Unity.

So, let's get to it!

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 360

Veröffentlichungsjahr: 2015

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Unity Virtual Reality Projects
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
Image credit
1. Virtually Everything for Everyone
What is virtual reality to you?
Types of head-mounted displays
Desktop VR
Mobile VR
The difference between virtual reality and augmented reality
Applications versus games
What this book covers
Who are you?
Types of VR experiences
Technical skills that are important to VR
Summary
2. Objects and Scale
Getting started with Unity
Starting a new Unity project
The Unity editor
The default world space
Creating a simple diorama
Adding a cube
Adding a plane
Adding a sphere and some material
Changing the scene view
Adding a photo
Coloring the ground plane
Measurement tools
Keeping a unit cube handy
Using a Grid Projector
Measuring the Ethan character
Importing from the Blender experiment
An introduction to Blender
A unit cube
A UV Texture image
Importing into Unity
A few observations
Summary
3. VR Build and Run
VR device integration software
Unity's built-in VR support
The device-specific SDK
The OSVR project
WebVR
3D worlds
Creating the MeMyselfEye prefab
Build for the Oculus Rift
Build for Google Cardboard
The Android setup
The iOS setup
Installing the Cardboard Unity package
Adding the camera
The build settings
The Play Mode
Building and running in Android
Building and running in iOS
The device-independent clicker
How virtual reality really works
Stereoscopic 3D viewing
Head tracking
Summary
4. Gaze-based Control
Ethan, the walker
Artificially intelligent Ethan
The Navmesh bakery
A random walker in the town
Interlude – a quick introduction to Unity programming
The RandomPosition script
"Zombie-ize" Ethan!
Go where I'm looking
The LookMoveTo script
Adding a feedback cursor
Observations
If looks could kill
The KillTarget script
Adding particle effects
Cleaning up
Summary
5. World Space UI
A reusable default canvas
The visor HUD
The reticle cursor
The windshield HUD
The game element UI
The info bubble
An in-game dashboard with input events
Creating a dashboard with buttons
Linking the water hose to the buttons
Activating buttons from the script
Look to highlight a button
Looking and then clicking to select
Looking and staring to select
A responsive object UI with head gestures
Using the head position
Using head gestures
Summary
6. First-person Character
Understanding the Unity characters
Unity components
The Camera component
The Rigidbody component
The Character Controller component
Unity Standard Assets
ThirdPersonController
AIThirdPersonController
FirstPersonController
RigidBodyFPSController
Making a first person
Move in the direction you're looking
Keep your feet on the ground
Don't pass through solid objects
Don't fall off the edge of the world
Stepping over small objects and handling uneven terrain
Start and stop moving
Using head gestures to start/stop
User calibrations
A character's height
Real-life height of a player
Recentering
Maintaining a sense of self
Head-body disconnect
Head and body...
...And feet
The body avatar
Virtual David le nose
Audio cues
Locomotion, teleportation, and sensors
Managing VR motion sickness
Summary
7. Physics and the Environment
Unity physics
Bouncy balls
Headshots
Trampoline and brick
A human trampoline
Like a brick
Like a character
Interlude – environment and things
Wispy Sky
The planet Earth
The corporate logo
Blender
Unity
An elevator
Jumping
Summary
8. Walk-throughs and Rendering
Building in Blender
Walls
Ceiling
Assemble the scene in Unity
The gallery room
The artwork rig
The exhibition plan
Adding photos to the gallery
An animated walk-through
Unity's animation system
Scripted animation
Optimizing for performance and comfort
Optimizing your implementation and content
Simplify your models
Using texture maps instead of complex meshes
Limiting the objects to be drawn
Lighting and shadow performance
Optimizing your scripts
Optimizing for the Unity rendering pipeline
Life's a batch
Multipass pixel filling
Other rendering tips
Optimizing for the target hardware and drivers
Unity Profiler
Summary
9. Using All 360 Degrees
360-degree media
Crystal balls
Magic orbs
Panoramas
Infographics
Equirectangular projections
Globes
Photospheres
Field of view – FOV
Capturing a 360-degree media
Summary
10. Social VR Metaverse
Multiplayer networking
Networking services
The network architecture
Local versus server
The Unity networking system
Setting up a simple scene
Creating a scene environment
Creating an avatar head
Adding multiplayer networking
Network Manager and HUD
Network Identity and Transform
Running as a host
Adding spawn positions
Running two instances of the game
Associating avatar with the first-person character
Adding multiplayer virtual reality
The Oculus Rift players
The Google Cardboard players
Next steps
Building and sharing a custom VRChat room
Preparing and building the world
Host the world
Summary
11. What's Next?
Index

Unity Virtual Reality Projects

Unity Virtual Reality Projects

Copyright © 2015 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: August 2015

Production reference: 1280815

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-78398-855-6

www.packtpub.com

Credits

Author

Jonathan Linowes

Reviewers

Krystian Babilinski

Arindam Ashim Bose

Rongkai Guo

Arun Kulshreshth

Robin de Lange

Samuel Mosley

Commissioning Editor

Neil Alexander

Acquisition Editor

Reshma Raman

Content Development Editor

Mamata Walkar

Technical Editor

Gaurav Suri

Copy Editor

Vedangi Narvekar

Project Coordinator

Sanjeet Rao

Proofreader

Safis Editing

Indexer

Priya Sane

Production Coordinator

Shantanu N. Zagade

Cover Work

Shantanu N. Zagade

About the Author

Jonathan Linowes is the owner of Parkerhill Reality Labs, a start-up VR/AR consultancy firm. He is a veritable VR and 3D graphics enthusiast, full-stack web developer, software engineer, successful entrepreneur, and teacher. He has a fine arts degree from Syracuse University and a master's degree from the MIT Media Lab. He has founded several successful start-ups and held technical leadership positions at major corporations, including Autodesk Inc.

This book is dedicated to Lisa—my wife, best friend, and soul mate—and the amazing family we created together: Rayna, Jarrett, Steven, and Shira who know in their hearts that the future is theirs to embrace.

About the Reviewers

Krystian Babilinski began working with Unity and Blender when he was in middle school. Since high school, he and his brother, Adrian, taught via Google's Helpouts service. Through teaching, he exposed himself to a new assortment of problem sets, which he then experienced firsthand. Slowly, he began getting involved in large-scale projects and freelance work. With a growing portfolio and knowledge of Unity 3D along with platform optimizations, he and his brother started their own creative firm in 2014. They began developing assets for Unity's Asset Store and worked for larger clients, such as The Hasley Group and Beach Consulting. These successes wouldn't have been possible without their loyal customers.

Arindam Ashim Bose, as of 2015, is pursuing his master's degree in computer science at the Georgia Institute of Technology in Atlanta. He is interested in computer graphics, virtual and augmented reality, and game development.

He was born in Mumbai and has been fascinated by computers and technology, especially computer games, since a very young age. He would spend countless hours during his vacations and weekends playing games and tinkering with them to modify them. It was this habit of tinkering and modding that got him into computer programming.

He is currently trying to break into the games industry as a programmer while pursing his master's degree.

Rongkai Guo is an assistant professor in the department of computer software engineering and game design and development at Kennesaw State University. His research interests are serious gaming, computer/mobile gaming, and virtual reality (VR). He has been conducting research on a VR for rehabilitation project for more than 4 years. He has conducted his first basic research study, IN THE WORLD, which formally investigated how VR impacts persons with mobility impairments.

Arun Kulshreshth is a researcher in the department of computer science at the University of Central Florida. His research interests include 3D user interfaces, human-computer interactions (HCI), games, and virtual reality. He received his master of technology (an integrated 5-year program) in mathematics and computing from the Indian Institute of Technology, Delhi, in 2005. He received a master of science in computer science in 2012 and a PhD in computer science in 2015 from the University of Central Florida.

He is the author of several publications that are related to his research work pertaining to utilizing 3D user interface technologies (such as stereoscopic 3D, head tracking, gestural interfaces, and so on) for video games. He is a professional member of the Association for Computing Machinery (ACM) and Institute of Electrical and Electronics Engineers (IEEE). In the past, he has conducted research at several international locations, including Spain, Denmark, and USA. One of his papers was awarded an honorable-mention award in a leading HCI conference (CHI 2014). In 2014, his name was featured in a Reuters article, and one of his projects was featured on Discovery News.

Robin de Lange is a researcher, lecturer, and entrepreneur with a focus on virtual reality and education.

Robin has an MSc degree in media technology from Leiden University and a bachelor's degree in physics and philosophy from the same university. He conducts part-time PhD research at the media technology research group of Leiden University under the supervision of Dr. Bas Haring. For his research, he is exploring the potential of augmented and virtual reality to understand and solve complex problems. Part of this research is an elective course, where Robin leads a group of students to create virtual reality prototypes for the field of education.

Besides his academic career, Robin has started many different initiatives. He is the director of a homework guidance company and the founder of Lyceo CodeWeken, a unique program for high-school students that teaches how to code.

Samuel Mosley is a game designer. He studied programming and game design at the University of Texas in Dallas. Showing an interest in both programming and games, he hopes to play an important role in both fields. He is currently working as a game designer for Bohemia Interactive Simulations.

www.PacktPub.com

Support files, eBooks, discount offers, and more

For support files and downloads related to your book, please visit www.PacktPub.com.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

https://www2.packtpub.com/books/subscription/packtlib

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.

Why subscribe?

Fully searchable across every book published by PacktCopy and paste, print, and bookmark contentOn demand and accessible via a web browser

Free access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.

Preface

Today, we are witnesses to the burgeoning of virtual reality (VR), an exciting new technology that promises to transform in a fundamental way how we interact with our information, friends, and the world at large.

What is consumer virtual reality? By wearing a head-mounted display (such as goggles), you can view stereoscopic 3D scenes. You can look around by moving your head and walk around by using hand controls or motion sensors. You can engage in a fully immersive experience. It's like you're really in some other virtual world.

This book takes a practical, project-based approach to teach you the specifics of virtual reality development with the Unity 3D game engine. We walk through a series of hands-on projects, step-by-step tutorials, and in-depth discussions using Unity 5 and other free or open source software. While VR technology is rapidly advancing, we'll try to capture the basic principles and techniques that you can use to make your VR games and applications immersive and comfortable.

You will learn how to use Unity to develop VR applications that can be experienced with devices such as the Oculus Rift or Google Cardboard. We'll cover technical considerations that are especially important and possibly unique to VR. By the end of this book, you will be equipped to develop rich, interactive virtual reality experiences using Unity.

What this book covers

Chapter 1, Virtually Everything for Everyone, is an introduction to the new technologies and opportunities in consumer virtual reality (VR) as regards games and non-gaming applications.

Chapter 2, Objects and Scale, discusses how you can build a simple diorama scene. It introduces the Unity 3D game engine as well as Blender for 3D modeling and explores the issues of world coordinates and scale.

Chapter 3, VR Build and Run, helps you configure your project to run on a VR headset, such as the Oculus Rift and Google Cardboard (Android or iOS). Then, we go into detail about how the VR hardware and software works.

Chapter 4, Gaze-based Control, explores the relationship between the VR camera and objects in the scene, including 3D cursors and gaze-based ray guns. This chapter also introduces Unity scripting in the C# programming language.

Chapter 5, World Space UI, implements many examples of user interface (UI) for VR, which includes a heads-up display (HUD), info-bubbles, and in-game objects with a lot of code and explanations.

Chapter 6, First-person Character, dissects the Unity character objects and components, which are used to build our own first-person character with gaze-based navigation. Then, we'll explore the experience of having a first-person virtual body and consider the issue of motion sickness.

Chapter 7, Physics and the Environment, dives into the Unity physics engine, components, and materials as we learn to work with forces and gravity in a number of VR project examples and games.

Chapter 8, Walk-throughs and Rendering, helps us build a 3D architectural space and implement a virtual walk-through. We also talk about rendering in Unity and performance optimizations.

Chapter 9, Using All 360 Degrees, uses 360-degree media in a variety of projects, including globes, panoramas, and photospheres. We also have a discussion on how it all works.

Chapter 10, Social VR Metaverse, explores the multiplayer implementations with VR using the Unity 5 networking components. We also have a look at VRChat as an example of an extensible platform for social VR.

Chapter 11, What's Next?, in this chapter the author comments about the potential of this exciting technology.

What you need for this book

Before we get started, there are a few things that you'll need. Grab a snack, a bottle of water, or a cup of coffee. Besides this, you'll need a PC (Windows or Mac) with the Unity 3D game engine installed.

You don't need a superpowerful rig. While Unity can be a beast that can render complex scenes and Oculus has published recommended specifications for PC hardware, you can get by with less. Even a laptop will do for the projects in this book.

To get Unity, go to https://unity3d.com/get-unity/, select the version that you want, click on Download Installer, and continue following the instructions. The free Personal Edition version of Unity is fine.

We can also optionally use the Blender open source project for 3D modeling. This book isn't about Blender, but we'll use it if you want. To get Blender, go to http://www.blender.org/download/ and follow the instructions for your platform.

Access to a virtual reality head-mounted display (HMD) is recommended in order to try out your builds and get first-hand experience of the projects developed in this book. It's entirely possible to build and run all the projects on a desktop monitor, but where's the fun in that? This book addresses the details of both Google Cardboard and Oculus Rift.

Google Cardboard is an example of Mobile VR, where you use your smartphone to run the VR apps. If you have an Android smartphone, you'll also need the Android development tools from Google. If you have an iOS device, you'll also need the Xcode development tools (and license) from Apple. The details are covered in Chapter 3, VR Build and Run.

Oculus Rift is an example of Desktop VR. Presently, Unity has built-in support for the Rift. However, if you have a different head-mounted display (HMD), you may also need to download a Unity interface package from the device manufacturer. Again, the details are covered in Chapter 3, VR Build and Run.

This should just about do it—a PC, the Unity software, a HMD, and we're good to go!

Who this book is for

If you are interested in virtual reality, want to learn how it works, or want to create your own VR experiences, this book is for you. Whether you're a nonprogrammer and are unfamiliar with 3D computer graphics, or experienced in both but new to virtual reality, you will benefit from this book. It is not a fresh start with Unity, but you do not need to be an expert either. Nevertheless, if you're new to Unity, you can pick up this book as long as you realize that you'll need to adapt to the pace of the book.

Game developers may already be familiar with the concepts in the book, reapplied to the VR projects while learning many other ideas specific to VR. Mobile and 2D game designers who already know how to use Unity will discover another dimension! Engineers and 3D designers may understand many of the 3D concepts, but they may learn to use the game engine for VR. Application developers may appreciate the potential nongaming uses of VR and want to learn the tools that can make this happen.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.

To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

You can download the example code files from your account at http://www.packtpub.com for all the Packt Publishing books you have purchased. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

Downloading the color images of this book

We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from http://www.packtpub.com/sites/default/files/downloads/8556OS_ColorImages.pdf.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.

To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.

Piracy

Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors and our ability to bring you valuable content.

Questions

If you have a problem with any aspect of this book, you can contact us at <[email protected]>, and we will do our best to address the problem.

Image credit

Images in this book are created by the author or covered by Creative Commons License.

Chapter 1. Virtually Everything for Everyone

 

This virtual reality thing calls into question, what does it mean to "be somewhere"?

Before cell phones, you would call someone and it would make no sense to say, "Hey, where are you?" You know where they are, you called their house, that's where they are.

So then cell phones come around and you start to hear people say, "Hello. Oh, I'm at Starbucks," because the person on the other end wouldn't necessarily know where you are, because you became un-tethered from your house for voice communications.

So when I saw a VR demo, I had this vision of coming home and my wife has got the kids settled down, she has a couple minutes to herself, and she's on the couch wearing goggles on her face. I come over and tap her on the shoulder, and I'm like, "Hey, where are you?"

It's super weird. The person's sitting right in front of you, but you don't know where they are.

  --Jonathan Stark, mobile expert and podcaster

Welcome to virtual reality! In this book, we will explore what it takes to create virtual reality experiences on our own. We will take a walk through a series of hands-on projects, step-by-step tutorials, and in-depth discussions using the Unity 5 3D game engine and other free or open source software. Though the virtual reality technology is rapidly advancing, we'll try to capture the basic principles and techniques that you can use to make your VR games and applications feel immersive and comfortable.

In this first chapter, we will define virtual reality and illustrate how it can be applied not only to games but also many other areas of interest and productivity. This chapter discusses the following topics:

What is virtual reality?Differences between virtual reality (VR) and augmented reality (AR)How VR applications may differ from VR gamesTypes of VR experiencesTechnical skills that are necessary for the development of VR

What is virtual reality to you?

Today, we are witnesses to the burgeoning consumer virtual reality, an exciting technology that promises to transform in a fundamental way how we interact with information, our friends, and the world at large.

What is virtual reality? In general, VR is the computer-generated simulation of a 3D environment, which seems very real to the person experiencing it, using special electronic equipment. The objective is to achieve a strong sense of being present in the virtual environment.

Today's consumer tech VR involves wearing a head-mounted display (such as goggles) to view stereoscopic 3D scenes. You can look around by moving your head, and walk around by using hand controls or motion sensors. You are engaged in a fully immersive experience. It's as if you're really there in some other virtual world. The following image shows a guy experiencing an Oculus Rift Development Kit 2 (DK2):

Virtual reality is not new. It's been here for decades, albeit hidden away in academic research labs and high-end industrial and military facilities. It was big, clunky, and expensive. Ivan Sutherland invented the first head-mounted display in 1966, which is shown in the following image. It was tethered to the ceiling! In the past, several failed attempts have been made to bring consumer-level virtual reality products to the market.

"The Ultimate Display", Ivan Sutherland, 1965

In 2012, Palmer Luckey, the founder of Oculus VR LLC, gave a demonstration of a makeshift head-mounted VR display to John Carmack, the famed developer of Doom, Wolfenstein 3D, and Quake classic video games. Together, they ran a successful Kickstarter campaign and released a developer kit called Oculus Rift Development Kit 1 (DK1) to an enthusiastic community. This caught the attention of investors as well as Mark Zuckerberg, and in March 2014, Facebook bought the company for $2 billion. With no product, no customers, and an infinite promise, the money and attention that it attracted has helped fuel a new category of consumer products. Others have followed suit, including Google, Sony, Samsung, and Steam. New innovations and devices that enhance the VR experience continue to be introduced.

Most of the basic research has already been done and the technology is now affordable thanks in large part to the mass adoption of devices that work on mobile technology. There is a huge community of developers with experience in building 3D games and mobile apps. Creative content producers are joining in and the media is talking it up. At last, virtual reality is real!

Say what? Virtual reality is real? Ha! If it's virtual, how can it be... Oh, never mind.

Eventually, we will get past the focus on the emerging hardware devices and recognize that content is king. The current generation of 3D development software (commercial, free, and open source) that has spawned a plethora of indie, or independent, game developers can also be used to build non-game VR applications.

Though VR finds most of its enthusiasts in the gaming community, the potential applications reach well beyond that. Any business that presently uses 3D modeling and computer graphics will be more effective if it uses VR technology. The sense of immersive presence that is afforded by VR can enhance all common online experiences today, which includes engineering, social networking, shopping, marketing, entertainment, and business development. In the near future, viewing 3D websites with a VR headset may be as common as visiting ordinary flat websites today.

Types of head-mounted displays

Presently, there are two basic categories of head-mounted displays for virtual reality—desktop VR and mobile VR.

Desktop VR

With desktop VR (and console VR), your headset is a peripheral to a more powerful computer that processes the heavy graphics. The computer may be a Windows PC, Mac, Linux, or a game console. Most likely, the headset is connected to the computer with wires. The game runs on the remote machine and the head-mounted display (HMD) is a peripheral display device with a motion sensing input. The term desktop is an unfortunate misnomer since it's just as likely to be stationed in either a living room or a den.

The Oculus Rift (https://www.oculus.com/) is an example of a device where the goggles have an integrated display and sensors. The games run on a separate PC. Other desktop headsets include HTC/Valve Vive and Sony's project Morpheus for PlayStation.

The Oculus Rift is tethered to a desktop computer via video and USB cables, and generally, the more graphics processing unit (GPU) power, the better. However, for the purpose of this book, we won't have any heavy rendering in our projects, and you can get by even with a laptop (provided it has two USB ports and one HDMI port available).

Mobile VR

Mobile VR, exemplified by Google Cardboard (http://www.google.com/get/cardboard/), is a simple housing (device) for two lenses and a slot for your mobile phone. The phone's display is used to show the twin stereographic views. It has rotational head tracking, but it has no positional tracking. Cardboard also provides the user with the ability to click or tap its side to make selections in a game. The complexity of the imagery is limited because it uses your phone's processor for rendering the views on the phone display screen. Other mobile VR headsets include Samsung Gear VR and Zeiss VR One, among others.

Google provides the open source specifications, and other manufacturers have developed ready-made models for purchase, with prices for the same as low as $15. If you want to find one, just Google it! There are versions of Cardboard-compatible headsets that are available for all sizes of phones—both Android and iOS.

Although the quality of the VR experience with a Cardboard device is limited (some even say that it is inadequate) and it's probably a "starter" device that will just be quaint in a couple of years, Cardboard is fine for the small projects in this book, and we'll revisit its limitations from time to time.

The difference between virtual reality and augmented reality

It's probably worthwhile clarifying what virtual reality is not.

A sister technology to VR is augmented reality (AR), which superimposes computer generated imagery (CGI) over views of the real world. Limited uses of AR can be found on smart phones, tablets, handheld gaming systems such as the Nintendo 3DS, and even in some science museum exhibits, which overlay the CGI on top of live video from a camera.

The latest innovations in AR are the AR headsets, such as Microsoft HoloLens and Magic Leap, which show the computer graphics directly in your field of view; the graphics are not mixed into a video image. If the VR headsets are like closed goggles, the AR headsets are like translucent sunglasses that employ a technology called light fields to combine the real-world light rays with CGI. A challenge for AR is ensuring that the CGI is consistently aligned with and mapped onto the objects in the real-world space and eliminate latency while moving about so that they (the CGI and objects in real-world space) stay aligned.

AR holds as much promise as VR for future applications, but it's different. Though AR intends to engage the user within their current surroundings, virtual reality is fully immersive. In AR, you may open your hand and see a log cabin resting in your palm, but in VR, you're transported directly inside the log cabin and you can walk around inside it.

We can also expect to see hybrid devices that somehow either combine VR and AR, or let you switch between modes.

Applications versus games

The consumer-level virtual reality starts with gaming. Video gamers are already accustomed to being engaged in highly interactive hyper-realistic 3D environments. VR just ups the ante.

Gamers are early adopters of high-end graphics technology. Mass production of gaming consoles and PC-based components in the tens of millions and competition between vendors leads to lower prices and higher performance. Game developers follow suit, often pushing the state-of-the-art, squeezing every ounce of performance out of hardware and software. Gamers are a very demanding bunch, and the market has consistently stepped up to keep them satisfied. It's no surprise that many, if not most, of the current wave of the VR hardware and software companies are first targeting the video gaming industry. A majority of the demos and downloads that are available on Oculus Share (https://share.oculus.com/) and Google Play for the Cardboard app (https://play.google.com/store/search?q=cardboard&c=apps) are games. Gamers are the most enthusiastic VR advocates and seriously appreciate its potential.

Game developers know that the core of a game is the game mechanics, or the rules, which are largely independent of the skin, or the thematic topic of the game. Gameplay mechanics can include puzzles, chance, strategy, timing, or muscle memory (twitch). VR games can have the same mechanic elements but might need to be adjusted for the virtual environment. For example, a first-person character walking in a console video game is probably going about 1.5 times faster than their actual pace in real life. If this wasn't the case, the player would feel that the game is too slow and boring. Put the same character in a VR scene and they will feel that it is too fast; it could likely make the player feel nauseous. In VR, you will want your characters to walk a normal, earthly pace. Not all video games will map well to VR; it may not be fun to be in the middle of a war zone when you're actually there.

That said, virtual reality is also being applied in areas other than gaming. Though games will remain important, non-gaming apps will eventually overshadow them. These applications may differ from games in a number of ways, with the most significant having much less emphasis on game mechanics and more emphasis on either the experience itself or application-specific goals. Of course, this doesn't preclude some game mechanics. For example, the application may be specifically designed to train the user at a specific skill. Sometimes, the gamification of a business or personal application makes it more fun and effective in driving the desired behavior through competition.

Tip

In general, non-gaming VR applications are less about winning and more about the experience itself.

Here are a few examples of the kinds of non-gaming applications that people are working on:

Travel and tourism: Visit faraway places without leaving your home. Visit art museums in Paris, New York, and Tokyo in one afternoon. Take a walk on Mars. You can even enjoy Holi, the spring festival of colors, in India while sitting in your wintery cabin in Vermont.Mechanical engineering and industrial design: Computer-aided design software such as AutoCAD and SOLIDWORKS pioneered three-dimensional modeling, simulation, and visualization. With VR, engineers and designers can directly experience the hands-on end product before it's actually built and play with what-if scenarios at a very low cost. Consider iterating a new automobile design. How does it look? How does it perform? How does it appear sitting in the driver's seat?Architecture and civil engineering: Architects and engineers have always constructed scale models of their designs, if only to pitch the ideas to clients and investors, or more importantly, to validate the many assumptions about the design. Presently, modeling and rendering software is commonly used to build virtual models from architectural plans. With VR, the conversation with stakeholders can be so much more confident. Other personnel, such as the interior designers, HVAC, and electrical engineers, can be brought into the process sooner.Real estate: Real estate agents have been quick adopters of the Internet and visualization technology to attract buyers and close sales. Real estate search websites were some of the first successful uses of the Web. Online panoramic video walk-throughs of for-sale properties are commonplace today. With VR, I can be in New York and find a place to live in Los Angeles. This will become even easier with mobile 3D-sensing technologies such as Google Project Tango (https://www.google.com/atap/projecttango), which performs a 3D scan of a room using a smartphone and automatically builds a model of the space.Medicine: The potential of VR for health and medicine may literally be a matter of life and death. Every day, hospitals use MRI and other scanning devices to produce models of our bones and organs that are used for medical diagnosis and possibly pre-operative planning. Using VR to enhance visualization and measurement will provide a more intuitive analysis. Virtual reality is also being used for the simulation of surgery to train medical students.Mental health: Virtual reality experiences have been shown to be effective in a therapeutic context for the treatment of post traumatic stress disorder (PTSD) in what's called exposure therapy, where the patient, guided by a trained therapist, confronts their traumatic memories through the retelling of the experience. Similarly, VR is being used to treat arachnophobia (spiders) and the fear of flying.Education: The educational opportunities for VR are almost too obvious to mention. One of the first successful VR experiences is Titans of Space, which lets you explore the solar system first hand. Science, history, arts, and mathematics—VR will help students of all ages because, as they say, field trips are much more effective than textbooks.Training: Toyota has demonstrated a VR simulation of drivers' education to teach teenagers about the risks of distracted driving. In another project, vocational students got to experience the operating of cranes and other heavy construction equipment. Training for first responders, police, and the fire and rescue workers can be enhanced with VR by presenting highly risky situations and alternative virtual scenarios. The NFL is looking to VR for athletic training.Entertainment and journalism: Virtually attend rock concerts and sporting events. Watch music videos. Erotica. Re-experience news events as if you were personally present. Enjoy 360-degree cinematic experiences. The art of storytelling will be transformed by virtual reality.

Wow, that's quite a list! This is just the low-hanging fruit.

The purpose of this book is not to dive too deeply into any of these applications. Rather, I hope that this survey helps stimulate your thinking and provides a perspective towards how virtual reality has the potential to be virtually anything for everyone.

What this book covers

This book takes a practical, project-based approach to teach the specifics of virtual reality development using the Unity 3D game development engine. You'll learn how to use Unity 5 to develop VR applications, which can be experienced with devices such as the Oculus Rift or Google Cardboard.

However, we have a slight problem here—the technology is advancing very rapidly. Of course, this is a good problem to have. Actually, it's an awesome problem to have, unless you're a developer in the middle of a project or an author of a book on this technology! How does one write a book that does not have obsolete content the day it's published?

Throughout the book, I have tried to distill some universal principles that should outlive any near-term advances in virtual reality technology, that includes the following:

Categorization of different types of VR experiences with example projectsImportant technical ideas and skills, especially the ones relevant to the building of VR applicationsGeneral explanations on how VR devices and software worksStrategies to ensure user comfort and avoid VR motion sicknessInstructions on using the Unity game engine to build VR experiences

Once VR becomes mainstream, many of these lessons will perhaps be obvious rather than obsolete, just like the explanations from the 1980's on how to use a mouse would just be silly today.

Who are you?

If you are interested in virtual reality, want to learn how it works, or want to create VR experiences yourself, this book is for you. We will walk you through a series of hands-on projects, step-by-step tutorials, and in-depth discussions using the Unity 3D game engine.

Whether you're a non-programmer who is unfamiliar with 3D computer graphics, or a person with experience in both but new to virtual reality, you will benefit from this book. It is not a cold start with Unity, but you do not need to be an expert either. Still, if you're new to Unity, you can pick up this book as long as you realize that you'll need to adapt to the pace of the book.

Game developers may already be familiar with the concepts in the book, which are reapplied to the VR projects while learning many other ideas that are specific to VR. Engineers and 3D designers may understand many of the 3D concepts, but they may wish to learn to use the game engine for VR. Application developers may appreciate the potential non-gaming uses of VR and want to learn the tools that can make this happen.

Whoever you are, we're going to turn you into a 3D Software VR Ninja. Well, OK, this may be a stretch goal for this little book, but we'll try to set you on the way.

Types of VR experiences

There is not just one kind of virtual reality experience. In fact, there are many. Consider the following types of virtual reality experiences:

Diorama: In the simplest case, we build a 3D scene. You're observing from a third-person perspective. Your eye is the camera. Actually, each eye is a separate camera that gives you a stereographic view. You can look around.First-person experience: This time, you're immersed in the scene as a freely moving avatar. Using an input controller (keyboard, game controller, or some other technique), you can walk around and explore the virtual scene.Interactive virtual environment: This is like the first-person experience, but it