Week 2

Unity3D and Content Generation Tools

Week 1 we showed off a bunch of different sample VR / AR worlds, so this week we are going to talk about how to build them, in particular with respect to Project 1.

but first lets talk about the Course Syllabus and Project 1 in some more detail

There are various libraries that have been used to create virtual reality worlds, and most of them come and go after a few years as the technology landscape changes.

Personally, I have used a variety of languages and libraries to create VR applications:

With the newer consumer level devices a couple of the free big game development engines now support VR development.

For the first two projects in the class we will be using Unity3D so people can share experiences and issues. For the thirdproject people will be (reasonably) free to choose your own engine and display platform.

Unity3D runs on windows and OS-X so you can do much of your development on a laptop and then move over to a machine connected to a VR / AR display for testing. I highly suggest that you test on the actual hardware regularly so you don't go too far down a development path that wont work for the final deployment. In the lab, there is one VIVE in the main lab, and one in the classroom, both connected to Windows PCs.

You should stick with Unity version 2018.1.3 for now so you are compatible across various platforms. You should start with the Personal Unity Installer, and have it install Unity, the Documentation, Standard Assets,  Vuforia Augmented Reality, and Windows Mono Scripting Backend, as we will be presenting and grading all of the projects on a windows PC in the lab. If you are on a non-windows machine and forget to install the Windows Mono Scripting Backend, you can come back and install it later from the same Install Utility. Be prepared to lose 4-5 gigabytes of disc space. You can have multiple versions of Unity installed at the same time in different directories in case you need to have different versions running for different classes or projects.

With Unity you will be using a combination of an IDE and writing C# code, so its a good idea to go through the introductory tutorials if you haven't used Unity before (say in the Video Game course).

The tutorials at https://unity3d.com/learn are a good place to start learning the Unity3D IDE.

This tutorial is a pretty good one for getting started with Unity and the VIVE - https://www.raywenderlich.com/149239/htc-vive-tutorial-unity
showing grabbing and tossing objects, pointing, and teleportation. Its particularly good if you have access to a headset and can go through the tutorial bit by bit adding new features as you go. Since this tutorial was written with an earlier version of the SteamVR libraries you will probably be asked to re-import those libraries when you try and open the project. You may need to first delete the current SteamVR asset folder and then re-import it, but then it should work fine with the latest SteamVR. Many of these features are already integrated into the sample Project 2 code (later pointer, teleporting, basic physics) and here you can see how they were implemented.

We are also now starting to see browser-based VR solutions such as A-Frame and WebVR- https://mozvr.com/ so this or the Unreal engine may be things to consider for Project 3.

For AR applications we will be using Vuforia under windows. There are various packages available right now with Google's ARCore https://developers.google.com/ar/ and Apple's ARKit https://developer.apple.com/arkit/ and the venerable ARToolkit https://www.artoolkit.org/ and https://github.com/artoolkit/arunity5.

a commonly used cross platform open source library is the ARToolkit - https://www.artoolkit.org/ which includes a Unity package, but its recommended that you download the latest files from Git https://github.com/artoolkit/arunity5 as the web page links haven't been updated in a while. There is a nice description at https://archive.artoolkit.org/documentation/doku.php?id=6_Unity:unity_getting_started

Content Generation Tools

Along with the main engine there are a variety of tools that can be used to create models, sounds, textures, etc. Here you are free to use the tools of your choice. The following are pretty decent free ones.

There are also various websites that provide Open Source / Royalty Free resources, just be sure to cite the creators.

a nice page on importing google SketchUp into unity3d

One important thing to keep in mind with VR is that, unlike other media, the size of the screen does not affect the size of the objects in the world. If you are watching a movie then  Humphrey Bogart or Lego Batman may vary from an inch tall to 100 feet tall depending on the display you are watching it on. In VR the display is a window into the virtual world, and changing the size of the window just gives you a bigger or smaller window, it doesn't change the size of the things the window looks out on. Scale is absolute in VR, so at some point the environment you create ends up being scaled in units of feet or meters for people to move around in. Similarly there are various image based tricks that can be used in 2D or even 3D movies, that don't work in VR where the space is really 3D.

In this course you will be doing a lot of work with Unity and the content generation tools so make sure you have access to a decent computer that can run these pieces of software.

Coming Next Time

History of VR and AR

last revision 6/4/18