Visit Your Design (Virtually)! A Rhino-to-Rift Guide / by Yiliu Shen-Burke

Oh hi there.

If you've had any form of internet access over the past year, you probably know that VR is like, gonna be HUGE. The first consumer version of the Oculus Rift starts shipping at the end of this month, and after that it's only a short, slippery slope to this:

Let's say you're an architectural designer who's super excited about the coming subsumption of physical reality and want in on the virtual action ASAP. In VR you can build whatever the hell you want, without pesky clients and regulators telling you annoying things about budgets and code! But how to get started?

I spent the last week figuring this out, and unfortunately it really did take that long to get a basic workflow down. VR is still in its 'installation phase', which means that there's a lot of jostling and confusion out there about the hardware and software. Hopefully things will calm down soon, but for the moment, you do have to be prepared to spend some time setting this up.

If you follow this guide and don't run into any unanticipated hurdles, it shouldn't take more than a few hours of tinkering to start running around inside your Rhino model.

Ready to go? Let's go.


WHAT

Hardware

  • MacBook Pro 15" with Retina Display (mid-2012)

Oculus doesn't officially support Macs because of their inability to drive the headset at a constant 75+ frames per second in many video games. This leads to nausea and headaches, which are indeed bad. If you are a designer, however, chances are good that you use a Mac (because you like pretty things). Luckily, static architectural models appear to be far less taxing to run than games, so I've been able to maintain 75 fps on my rig even in very large environments.  Part of developing this workflow was the trial-and-error necessary to determine which combination of (mostly older/deprecated) software and drivers still works with Mac hardware. If you have a Mac with an NVIDIA graphics card at least as capable as mine (650M), you should be fine. I have no idea how Macs with only integrated or AMD graphics cards will fare, although you are more than welcome to swap tales in the comments.

  • Oculus Rift Development Kit 2

I don't know if the DK1 can be used with this workflow, but maybe? The consumer version that's coming March 28 will probably not work because it will probably require (the as-yet-unreleased) Oculus Runtime 1.0, which will probably be incompatible with any Mac laptops.

Software

  • Oculus Runtime 0.6.0.1 for Windows

The key constraint on the software side of things is that Oculus Runtime 0.7 and 0.8 will not work on a MacBook Pro. That means that we have to use Runtime 0.6.0.1 instead, which therefore means that we have to use Windows 7 or 8 and Unity 4. Frowny face.

  • Windows 8.1 Pro (via Boot Camp)

I've tested this successfully with both Windows 7 and Windows 8.1. I would really not recommend trying to run this with Parallels/VMWare because of potential graphics performance and driver issues. If you are on Windows 10, you officially need to use Oculus Runtime 0.7 or 0.8 instead of 0.6.0.1, but (again) neither of those newer runtime versions will work on a MacBook Pro. Actually, there does seem to be a way to get Runtime 0.6.0.1 working in Windows 10, but you have to have upgraded from Windows 7 or 8... otherwise it will break your computer like it broke mine that time I tried it. Frowny face.

  • Rhino 5

Or any other 3D modeling software that can export .obj mesh files, like SketchUp or Blender.

  • Unity 4.6.9 for Windows

This is the latest version of Unity that I can successfully use with this workflow. Unity 5 has lovely native support for VR, but sadly requires Oculus Runtime 0.7 or 0.8. Again, frowny face.

  • Oculus Unity 4 Integration 0.6.0.0

For whatever reason, version 0.6.0.1 of the Unity 4 Integration package has an OVRPlayerController component that doesn't jive with this setup, and leads to a black screen on the DK2. Don't worry if this last sentence doesn't make any sense to you yet; just use version 0.6.0.0 instead of 0.6.0.1 of the integration package.


HOW

Because my target audience here is architects and architecture students, I will pretend that you already have Windows running on Boot Camp, with Rhino (Sketchup or your 3D modeler of choice) set up. If you are using Windows 10... you'll have to decide whether you are willing downgrade to Windows 7 or 8 for the sake of the future. No pain/no gain, two steps forward/one step back, etc. Or you can try that hack for running Oculus Runtime 0.6.0.1 on Windows 10.

First, let's get your DK2 working properly.

Step 1: Download and install the latest NVIDIA drivers for your Mac and version of Windows.

In my case, this is version 362.00; it's possible that newer versions of the NVIDIA drivers will break this setup, so if you install newer drivers and your DK2 isn't working, then try reverting to version 362.00.

Step 2: Install all four of these C++ redistributables (yes really all four).

It's possible you already have some or all of these installed on your computer, especially if you are running Windows 8+. Don't worry; the installer will detect this and leave well enough alone.

Step 3: Download and install version 0.6.0.1 of the Oculus runtime for Windows; restart to complete installation.

Step 4: Get your DK2 and the positional tracker all plugged in and set up.

Here's a handy guide from Oculus on how to do so.

Now that Oculus Runtime 0.6.0.1 is installed on your computer, there should be a little eye-con (get it?) in the notification tray. Click on this and then on "Rift Display Mode"; in here, make sure your Rift is in Direct Display mode.

 
 

Click on the eye-con again, and open the OculusConfigUtil; fiddle with the settings and such. Use the Demo Scene to make sure your Oculus is working properly.

 
 

 

Your hardware is all good to go! Now, this is how you turn your Rhino model into a standalone, VR-enabled app.

Step 5: Download and install Unity Editor 4.6.9 for Windows.

Step 6: Watch and follow Nathan Melenbrink's great three-part video tutorial on properly importing your Rhino model into Unity 4.

A few words on this part of the process:

  • The videos run about an hour in length, and the actual process of porting your Rhino model into Unity can take many times longer, depending on how detailed your model is geometry/material-wise. Happily, if you make changes to the Rhino model, you can simply re-export over the .obj file that Unity references, and things will mostly work out okay.
  • Don't add the FirstPersonPlayerController object like Nathan tells you to, because it won't work with your DK2 (more on this later).
  • Don't build your project for the web player (more on this later).
  • Make sure that all mesh face normals face "out" in Rhino. The easiest way to ensure this is to only use closed polysurfaces in your model, but this isn't necessary if you check mesh normals carefully (Nathan covers this).
  • Make that the meshes representing anything you don't want people to walk/fall through (like the terrain or walls) has a Mesh Collider component added to them in Unity (Nathan also covers this).

Step 7: Now that your Rhino model is happily in Unity, download and import version 0.6.0.0 of the Unity 4 Integration package.

You'll want to unzip the downloaded file and throw the folder somewhere easy to reach, like the desktop.

Then, in Unity, go to the dropdown menu item "Assets" -> "Import Package" -> "Custom Package...". Navigate to the folder you just unzipped, go into the folder "OculusUnityIntegration", and select "OculusUnityIntegration.unitypackage". When prompted, import all the assets, which will appear in a new folder inside your project called "OVR".

Step 8: Add the OVRPlayerController component to your scene.

In your Project tab, click on "Favorites" -> "All Prefabs", and find the "OVRPlayerController" component.

 
 

Drag this into your scene and move it around until it is where you want the player to start when the application launches. Make sure that the bottom of the OVRPlayer object does not go through the ground/floor, because if it is does your player will immediate fall through the floor and keep falling... forever!

Step 9: Build your project for Windows.

Once your meshes and player controller are all set, press Ctrl + Shift + B or go to "File" > "Build Settings..." to bring up the build settings dialogue.

 
 

First, click on the "Add Current" button to add your scene to the build list. Then make sure you are making a "PC, Mac & Linux Standalone" application, that your "Target Platform" is "Windows", that your "Architecture" is "x86" or "x86_64", and that none of the boxes are checked.

Lastly, click "Build" (not "Build And Run") and point to the folder where you want your finished application to appear. Hit "Save".


DONE!

To visit your newly created virtual pocket universe, simply make sure that your DK2 is plugged, then double click on the standalone .exe that Unity built. Note that there might be a long moment of black between the "Made With Unity" screen and when you enter your world.

The basic controls are:

  • WASD or arrows keys to move
  • Q and E keys to rotate your 'body'
  • Space bar to bring up the debugging HUD, where you can check if your computer is delivering a consistent 75 fps to the headset

Thanks for making it all the way to the end of this (admittedly lengthy) tutorial. At the moment, unfortunately, there is not a more streamlined way to do this, nor does it look like there ever will be for currently existing Macs (unless somebody writes a program that partially or fully automates the above process).

If you check back in a few days, I will have posted some tweaks you can make to improve your virtual experience, like lightmapping, jumping, automatic rotation, etc.

Happy VRing!

- Yiliu