How to get started in VR development: Difference between revisions
Appearance
No edit summary |
m Acro moved page How to Get Started in VR Development to How to get started in VR development |
||
(11 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<noinclude>{{see also|Developer Resource}}</noinclude>This page serves as a | <noinclude>{{see also|Developer Resource}}</noinclude>This page serves as a starting point for new developers to find any resources they might need along their path to learning to make virtual reality experiences. | ||
<includeonly>=</includeonly>==1. Learn about the hardware==<includeonly>=</includeonly> | <includeonly>=</includeonly>==1. Learn about the hardware==<includeonly>=</includeonly> | ||
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 research 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: | 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 research 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: | ||
<includeonly>=</includeonly>===PC VR===<includeonly>=</includeonly> | <includeonly>=</includeonly>===PC VR===<includeonly>=</includeonly> | ||
* '''[[HTC Vive]]''', $799 - motion controllers ship with product. iFixIt will show you [ | * '''[[HTC Vive]]''', $799 - motion controllers ship with product. iFixIt will show you [https://www.google.com/search?q=vive+ifixit&ie=utf-8&oe=utf-8 what it looks like] when you take it apart. | ||
** [ | ** [http://learn.vrdev.school/courses/vive-developer-mini VR Dev School's Vive Mini Course] | ||
* '''[[Oculus Rift]]''', $599 - motion controllers won't be available until fall. iFixIt [ | * '''[[Oculus Rift]]''', $599 - motion controllers won't be available until fall. iFixIt [https://www.ifixit.com/Teardown/Oculus+Rift+CV1+Teardown/60612 has also autopsied a Rift]. | ||
**[ | **[https://developer.oculus.com/documentation/ Oculus Documentation Pages] | ||
**[ | **[https://rifty-business.blogspot.com/ Oculus Rift in Action], a blog about designing for the Rift | ||
*'''[[OSVR | * '''[[OSVR HDK2]]''' - $399 | ||
*'''[[Razer Hydra]]''', $599 - general-purpose wired motion tracking controller for PC | *'''[[Razer Hydra]]''', $599 - general-purpose wired motion tracking controller for PC | ||
<includeonly>=</includeonly>===Mobile VR=== <includeonly>=</includeonly> | <includeonly>=</includeonly>===Mobile VR===<includeonly>=</includeonly> | ||
(can use a smartphone as HMD) | (can use a smartphone as an HMD) | ||
* '''[[Gear VR]]''', $99 | * '''[[Gear VR]]''', $99 | ||
** [ | ** [http://learn.vrdev.school/courses/gear-vr-developer-mini VR Dev School's Gear VR Mini Course for Unity] | ||
** [ | ** [https://www.youtube.com/watch?v=lpqBzYdxaow Fuseman's Introduction to Gear VR development in UE4] | ||
** [ | ** [https://www.youtube.com/watch?v=rNjDsNYvgfk E4 Developer Livestream: Up and Running with Gear VR] | ||
* '''[[Google Cardboard]]''', available as cheap as free | * '''[[Google Cardboard]]''', available as cheap as free | ||
* '''Google's [[Daydream View]]''' - $79 | |||
<includeonly>=</includeonly>===Web VR===<includeonly>=</includeonly> | <includeonly>=</includeonly>===Web VR===<includeonly>=</includeonly> | ||
(can use a smartphone as HMD) | (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. | * '''[[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. | ||
* '''[[Vizor]]''' is a web app that allows you to construct 3D scenes and view them across numerous platforms, including from mobile devices. Although it isn't as powerful as a game engine or open-source web platform, it is very straightforward and a great way to start creating in VR without an expensive headset. The [ | * '''[[Vizor]]''' is a web app that allows you to construct 3D scenes and view them across numerous platforms, including from mobile devices. Although it isn't as powerful as a game engine or open-source web platform, it is very straightforward and a great way to start creating in VR without an expensive headset. The [http://blog.vizor.io/ Vizor blog] has several tutorial posts. | ||
* '''[[Responsive WebVR]]''' is a cross-platform, web-based VR platform [ | * '''[[Responsive WebVR]]''' is a cross-platform, web-based VR platform [https://github.com/borismus/webvr-boilerplate available for modification on GitHub]. You'll probably want to brush up on [[Three.js]]. | ||
<includeonly>=</includeonly>==2. Learn about the software==<includeonly>=</includeonly> | <includeonly>=</includeonly>==2. Learn about the software==<includeonly>=</includeonly> | ||
Designing for VR | Designing for VR has a lot in common with designing traditional videogames, as they are both 3D interactive experiences. The difference between designing for VR and designing for traditional video games 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. | 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. | ||
Line 38: | Line 35: | ||
Outside of game engines, you may opt to develop interactive VR webpages using [[Mozilla's A-Frame]] markup language, or by using JavaScript (hack around with [[Three.js]]!), HTML5, and/or WebGL in the vein of web experiments recently put out by [[Chrome]] and [[Mozilla]]. Developing for web has the convenience of using a smartphone as the display, so you won't need an expensive headset starting off. You also won't need to compile or package any code, and can easily share your creations with your friends who also own smartphones. If this sounds like a lot of work, maybe try the easy-as pie VR scene editor [[Vizor]], which allows you to design VR imagery on the computer and then view it from mobile. | Outside of game engines, you may opt to develop interactive VR webpages using [[Mozilla's A-Frame]] markup language, or by using JavaScript (hack around with [[Three.js]]!), HTML5, and/or WebGL in the vein of web experiments recently put out by [[Chrome]] and [[Mozilla]]. Developing for web has the convenience of using a smartphone as the display, so you won't need an expensive headset starting off. You also won't need to compile or package any code, and can easily share your creations with your friends who also own smartphones. If this sounds like a lot of work, maybe try the easy-as pie VR scene editor [[Vizor]], which allows you to design VR imagery on the computer and then view it from mobile. | ||
Once you've chosen an engine or web application, the next step is to get familiar with it. Learn the basics of whatever programming language your tools use -- whether it's [[C++]] and [[Blueprints Visual Scripting]](UE4), [[C#]] (Unity), or a custom markup language for web applications. If you're developing for Android, download [[Android Studio]] and try [ | Once you've chosen an engine or web application, the next step is to get familiar with it. Learn the basics of whatever programming language your tools use -- whether it's [[C++]] and [[Blueprints Visual Scripting]](UE4), [[C#]] (Unity), or a custom markup language for web applications. If you're developing for Android, download [[Android Studio]] and try [https://developer.android.com/training/basics/firstapp/index.html deploying a basic app]. For Cardboard and Unity, check out [[Google's SDK]]. | ||
The | The [[Resources Directory]] 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! | ||
<includeonly>=</includeonly>==3. Make or find art assets==<includeonly>=</includeonly> | <includeonly>=</includeonly>==3. Make or find art assets==<includeonly>=</includeonly> | ||
Line 51: | Line 48: | ||
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 modeling. | 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 modeling. | ||
Even if you decide to find premade assets, you'll probably end up needing to tweak them in 3D modeling 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 modeling question freely available on YouTube ([ | Even if you decide to find premade assets, you'll probably end up needing to tweak them in 3D modeling 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 modeling question freely available on YouTube ([https://www.youtube.com/channel/UCaLAWpwSED-pfWkcKpxw8wQ 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:''' | * '''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. | ** '''[[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. | ||
Line 61: | Line 58: | ||
<includeonly>=</includeonly>===Photogrammetry (3D scanning)===<includeonly>=</includeonly> | <includeonly>=</includeonly>===Photogrammetry (3D scanning)===<includeonly>=</includeonly> | ||
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. [ | 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. [https://www.youtube.com/watch?v=BmqlimC1ZP0 This YouTube video] competently demonstrates the entire process in ten minutes. | ||
* '''Photogrammetry and 3D-scanning''' | * '''Photogrammetry and 3D-scanning''' | ||
** '''[[Agisoft Photoscan]]''' (from $179), a 3D scanning suite which uses DSLR photos as its source. | ** '''[[Agisoft Photoscan]]''' (from $179), a 3D scanning suite which uses DSLR photos as its source. | ||
** '''Autodesk offers a few different photogrammetry solutions''', from the free mobile- and cloud-based [[123D Catch]] to desktop photogrammetry software [[Remake]] and [[Recap 360]]. [ | ** '''Autodesk offers a few different photogrammetry solutions''', from the free mobile- and cloud-based [[123D Catch]] to desktop photogrammetry software [[Remake]] and [[Recap 360]]. [http://forums.autodesk.com/t5/remake-general-discussion/memento-recapphoto-differences/td-p/5653664 Here's a thread] which discusses the differences between Autodesk's various photogrammetry solutions. | ||
<includeonly>=</includeonly>===Audio & Music===<includeonly>=</includeonly> | <includeonly>=</includeonly>===Audio & Music===<includeonly>=</includeonly> | ||
Line 70: | Line 67: | ||
* Audio production | * Audio production | ||
** '''[[Audacity]]''', although simple on the surface, is a powerful and reliable audio editor that is entirely free and open source. | ** '''[[Audacity]]''', although simple on the surface, is a powerful and reliable audio editor that is entirely free and open source. | ||
** For '''royalty-free stock audio''', check out [ | ** For '''royalty-free stock audio''', check out [http://freesound.org/ The Free Sound Project], the [http://www.sonniss.com/gameaudiogdc2016/ #GameAudioGDC Bundle], and the [[Oculus Audio Pack]]. | ||
** Check out Oculus's [ | ** Check out Oculus's [https://developer.oculus.com/documentation/audiosdk/latest/concepts/audio-intro-spatialization/ introduction to audio spatialization] and the Oculus Connect talk [https://www.youtube.com/watch?v=IAwFN9sFcso 3D Audio: Designing Sounds for VR] | ||
<includeonly>=</includeonly>==4. Implement Interactivity==<includeonly>=</includeonly> | <includeonly>=</includeonly>==4. Implement Interactivity==<includeonly>=</includeonly> | ||
Line 78: | Line 75: | ||
'''VR UI/UX Resources''' | '''VR UI/UX Resources''' | ||
* Google's own '''[[Cardboard Design Lab]]''' is perhaps the fastest introduction to this subject. | * Google's own '''[[Cardboard Design Lab]]''' is perhaps the fastest introduction to this subject. | ||
* Google Developers - '''[ | * Google Developers - '''[https://www.youtube.com/watch?v=Qwh1LBzz3AU Google I/O 2015 Livefeed - Designing for virtual reality]''' | ||
* '''[ | * '''[https://researchvr.podigee.io/ Research VR podcast]''', which covers the developing VR industry and cognitive science, emphasizing the relationship between intentional design and conscious experience. | ||
* Leap Motion's '''[ | * Leap Motion's '''[https://medium.com/@LeapMotion/vr-design-best-practices-bb889c2dc70#.3t64dp1lb VR Design Best Practices]''' article is full of thoughtful suggestions | ||
* '''[ | * '''[https://www.youtube.com/channel/UChvlNUgZKmEd-Gul_Tdv8Uw Mitch's VR Lab]''', based on UE4, is a YouTube series many examples of UI programming and principles. | ||
* Fuseman's '''[ | * Fuseman's '''[https://www.youtube.com/watch?v=NYoqUomgTGU Introduction to VR UI in Unity]''' livestream tutorial, which explains concepts useful beyond Unity. | ||
* '''[ | * '''[https://www.youtube.com/watch?v=cyqgKZ7O-Sc&feature=share UE4 HTC Vive - How to interact with a menu using Motion controllers]''' on YouTube | ||
* '''[[ | * '''[[VR sickness]]''' | ||
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. | 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. |