A Journey Into Virtual Reality

From 3D model to VR experience

Sabbatical Project / Fall 2020 : Brian James / RISD I.D.

This site is a chronical of my experiences over the Fall of 2020 where I learned to take a 3D model and transfer it to a virtual reality headset. As a teacher, I am hoping this site can serve as a general framework for students who also explore these workflows.

There were a variety of VR hardware and 3D software options to choose from when I began this project. The process I'll document here will start in Rhino 7, go to Unreal Engine 4.25 and finally to an Oculus Quest headset.

This video of my final scene was recorded on a Pixel 4 using the Oculus Android app to cast a live feed from the Oculus Quest

One of my goals when I began this sabbatical project was to make a truly mobile VR scene from a 3D model. I wanted to remove the computer and any wires from the experience.

This led to a number of concerns to contend with such as scene optimization for performance. With the Oculus Quest physically connected to my computer, polygon limits weren't much of a concern at all. Once untethered however, I found that my frame rate was best in scenes less than 500,000 polygons. This was especially true when also casting and recording the viewers interactions in VR.

Untethered

Collision Objects

Aside from visual immersion, virtual reality presents intriguing ways to experience the scene you're in. The ability to choose what objects can be passed through by the viewer keeps the experience grounded in reality. Objects in the scene can also be given collision properties allowing them to move around the scene while adhering to physical laws.

Simple primitive collision boundaries can be used or complex ones based on the vertices of the mesh objects in the scene. You can calculate something in between as well using what are called convex hulls.

The viewer can move around the scene using 'teleportation' enabled through hand held controllers connected to the Oculus Quest. This method of movement keeps the user from walking into objects surrounding them in the real world when wearing the VR headset. The Oculus Quest has a safety feature as well called the guardian that is used to prevent this.

Teleportation

Levels Of Detail

Unreal Engine 4 supports an LOD feature (Levels Of Detail) which can be customized for automatic switching between meshes of various polygonal densities depending on how much screen space they take up at any given time. Essentially less polygons equals faster performance but at the cost of detail. So if you are far away from the object it actually has less detail and as you get closer to it, the mesh swaps to progressively more detailed versions.

I used this tool for Bernini's "Apollo and Daphne" sculpture at the center of the courtyard. You can even set up conditions for switching LODs for a mesh based on the platform the scene is viewed on.

I ran my work in progress by a small focus group of local children (very local, they're actually mine) and found they were more interested in throwing things at Bernini's sculpture than admiring it... I'm so proud.

Kid Tested