no edit summary
This page serves as a jumping-off point for new developers to find any resources they might need along their path to learning to make virtual reality experiences.
==1. Learn about the hardware==Ask yourself: do you want to develop for a computer-driven headset like the Vive, or are you more interested in mobile applications such as GearVR or Google Cardboard? If you don't already own your hardware of choice, do some
reasearch and think about what would be best for both your target market and most practical to develop on. If your idea requires motion controls or high-end graphics, stick to computer-driven VR. A list of currently available hardware that is supported by Unity, Unreal, and VR web implementations:=== Computer VR :===
* '''[[HTC Vive]]''', $799 - motion controllers ship with product. iFixIt will show you [[what it looks like]] when you take it apart.
** [[VR Dev School's Vive Mini Course]]
*'''[[Razer Hydra]]''', $599 - general-purpose wired motion tracking controller for PC
(can use a smartphone as HMD)
* '''[[Gear VR]]''', $99
* '''[[Google Cardboard]]''', available as cheap as free
(can use a smartphone as HMD)
* '''[[Mozilla A-Frame]]''' is a markup language (as are HTML and XML) for making cross-platform VR software. To see it in action, visit their site on your smartphone, turn off orientation lock, and press the VR button that appears.
* '''[[Responsive WebVR]]''' is a cross-platform, web-based VR platform [[available for modification on GitHub]]. You'll probably want to brush up on [[Three.js]].
===Unreleased, but preliminary development possible
* '''[[Google Daydream]]''' - unavailable but supported by UE4 now, Unity support coming in the summer
* '''[[OSVR HDK 2]]''', $399 - will be released in July; no announced motion control
==2. Learn about the software==Designing for VR is much like designing videogames, as they are both 3D interactive experiences. The difference between designing for VR and designing for traditional
videogames is that special considerations must be made for the nuanced experiences of presence and immersion, nonlinear storytelling, locomotion which reduces motion sickness, and graphical optimization.
Most VR developers opt to use a game engine (unless they're developing for WebVR, discussed below), and should decide which they want to work with early on. Two most popular are [[Unreal Engine 4]] (UE4) and [[Unity]]. Both of these engines are very capable and will become the tool that you rely on most in your development; both have very active communities with vast resources out there to help you. These are freely available software suites capable of managing 3D environments, importing custom assets (such as 3D models, imagery, sounds, video), and programming interactivity or gameplay. Most useful of all, there are an insane number of YouTube tutorials and online guides for both engines, both official and fan-created.
The /[[learnVRdev wiki]] has links and resources that you will find useful when trying to learn how to use an engine. It's best to follow through with some tutorials to get a feel for the engine, how to manipulate objects in space, and so on. Both Unity and Unreal offer built in VR support, so you can preview your creative works directly in VR!
==3. Make or find art assets==
Now that you have an engine and headset, you'll need artwork, sound, 3D models, and animations to fill out your virtual world. You may find assets online that are free for reuse, rip assets from popular games (if you don't plan to sell your project), make your own from scratch, or modify existing assets to suit your needs. Remember that virtual realities demand visuals and audio that appear "real" when examined close-up from all sides, even if they are stylized or abstract.
The next thing that's needed for VR dev is '''3D models'''. There are two ways to go about this for a beginner.
The first (and easiest) option is to use openly available 3D models while you learn the other areas of VR development. The Unity and Unreal asset stores have easily available models that can be used for this purpose. There are some links below to other websites with openly available assets. This can be critical for the beginner VR dev, as it's very hard to learn so many things at once!
The other option for 3D models is to learn how to make them yourself. Though this is the more difficult option, it's a good choice for the long term, as the time may come when you're making a more intermediate project and want to make your own assets and visual style. There are a few programs which are very useful for 3D
Even if you decide to find premade assets, you'll probably end up needing to tweak them in 3D
modelling software so so that they're just right. Fortunately, there are plenty of resources available online. Professional design software is available at monthly subscription prices comparable to a MMORPG, and there are tutorials for just about every 3D modelling question freely available on YouTube ([[click for example for YouTube resources]]). Use the search function on every website you see! If you demand higher-quality education content, consider subscribing to [[PluralSight]]. Go through the various subreddits listed on the sidebar here and catch up on conversations in the different VR tech communities, and learn new tips and tricks.
* '''3D Modelling and Sculpting:'''
** '''[[Autodesk's Entertainment Creation Suite]]''' of software (including Maya, 3ds Max, Motionbuilder, and Mudbox with native export to Unity and UE4) is available to "students" free for three years -- no verification needed. This includes everything you need to make professional models, textures, animations, etc.
** '''[[Speedtree]]''' ($19/month) is useful for designing procedurally-generated 3D models of trees, plants, and all sorts of branching structures. These can later be extracted with many options for use in photorealistic landscapes.
===Photogrammetry (3D scanning)===
Like VR, 3D photo scanning is another futuristic technology now available for dirt cheap, and with mobile solutions. 3D scanning using photos involves taking many photographs (usually upwards of thirty) of a real-life object from as many angles as possible. These photographs are then imported into software such as [[Agisoft Photoscan]] or one of Autodesk's many solutions (they keep buying up companies, it seems), which generate highly detailed meshes from these photographs. The meshes and their color/diffuse texture map can then be exported and used in a game engine as a regular asset. [[This YouTube video]] competently demonstrates the entire process in ten minutes.
* '''Photogrammetry and 3D-scanning'''
** '''Autodesk offers a few different photogrammetry solutions''', from the free mobile- and cloud-based [[123D Catch]] to desktop photogrammetry software [[Remake]] and [[Recap 360]]. [[Here's a thread]] which discusses the differences between Autodesk's various photogrammetry solutions.
===Audio & Music===
Audio in VR doesn't need to be treated very differently from music and sound effects in movies or traditional games. Like with graphics, there is an emphasis on realism and quality. The most immersive audio in VR with be positionally spatialized depending upon the direction the player is facing respective to the sound source; Unity and UE4 must be configured for audio specialization to function correctly.
* Audio production
** Check out Oculus's [[introduction to audio spatialization]] and the Oculus Connect talk [[3D Audio: Designing Sounds for VR]]
==4. Implement Interactivity==
After you've got a feel for the engine and have some artwork to use, the next hurdle is figuring out how you will add interactivity to your projects. I highly suggest first reading up about VR user interface (UI) and user experience (UX) principles -- otherwise your players might end up with achy eyes from poor stereoscopic rendering decisions, or even vomiting from motion sickness. Fortunately, these can be avoiding simply by avoiding locking text to the viewport, or by putting the player camera in a visible capsule (car, spacesuit, cockpit) during movement to reduce nausea. And if you plan to implement hand tracking, it's a good idea to focus on making everything as real as possible -- your research and prototyping will pay off with an impressive sense of presence.
This requires some kind of scripting language. Unreal Engine 4 has an intuitive, flowchart-like scripting system called '''Blueprint Visual Scripting''', and if you're not yet comfortable programming, this may be useful for you to get started. Check [[here]] for a general introduction to Blueprints. Blueprints are powerful enough to do entire projects without having to write a line of code (though you'll be using many programming concepts). Otherwise, both Unreal and Unity have a native programming language. For Unreal, it's '''C++''', and for Unity, it's '''C#'''. Many people who are aspiring VR devs have little to no programming experience, so this step can be particularly daunting. We want to help you get past this hurdle also, so we'll be updating this wiki with resources that will teach you the fundamental programming concepts needed for VR dev.
==5. Some final tips==
If you're a solo VR dev, remember, start small. There's time for more grandiose visions once you have a solid grasp of the fundamentals, so to begin with start with a project that you think is very simple. Even Pong has more to it than you would think at the first glance. Work at it step by step, once you have a few projects up your belt you'll be in a much better position to attack some more complex problems.