QuantumVR


QuantumVR is a tool I created for my bachelor's thesis. It provides the technology and editors to easily compress virtual space. With this tool, you can create environments that contain potentially infinite amounts of space inside a finite space.

Responsibilities

  • Creating the concept for a tool that can be used to compress virtual space for VR applications

  • Implementing systems for rendering, interacting with and moving between overlapping parallel universes or spatial cells

    • Shaders for rendering spatial cells through stencil buffer based portals

    • Support for objects passing through portals

    • Spatial cell management to stop objects in different spatial cells from interacting

  • Creation of an intuitive editor for authoring spatially compressed scenes without the need to write code

    • Automated project and scene setup

    • Node editor for spatial layout authoring

    • Portal connection visualization

    • Custom inspectors for all files and components

  • Setting up two demo levels to perform usertests on different kinds of compressed spatial layouts

  • Writing a manual


Summary of my Work

I created this tool as part of my Bachelors’s thesis in the last semester of my studies. The idea behind this was to enable a new kind of room-scale VR experience, where players could explore vast environments solely by using real-world movement, no teleportation or other often un-intuitive or motion-sickness-inducing locomotion concepts required. Imagine a big, multi room virtual escape room for example. With QuantumVR, all rooms of the scenario fit inside the tracking space of the player, enabling them to move freely between all of them.

In addition to writing the thesis, there were three major parts to this project: First I had to implement the runtime side of having separate, overlapping parallel universes (called spatial cells) that would not interact with each other, with portals to move between them and make them appear seamless. Then I had to create an intuitive editor for authoring levels with these spatial cells as well as a manual for the tool, while also creating demo levels to conduct usertests on two different kinds of compressed spatial layouts.

For the first part I utilized Unity’s layer and collision matrix system, with portals utilizing the stencil buffer to render the spatial cell they are connected to, allowing for up to eight recursive portals being rendered. The biggest challenge here was to make the portals as seamless as possible when viewed and when objects or the camera pass through. Objects passing through portals also needed special treatment on the physics side since they exist in multiple spatial cells at the same time.

The the central part of the editor is a node editor for creating and editing spatial cells and the portal connections between them, which I created from scratch using Unity’s then-new UIElements framework, a framework utilizing concepts similar to HTML and CSS. Supporting this was a suite of automation scripts for setting up the project (creating layers and the collision matrix) and the scene (creating managers and helper objects, setting up the camera and applying nesseccary scripts and shaders to relevant objects), as well as custom inspectors for all scripts and files. Finally, instead of doing the actual portal rendering in the editor, I created a shader to visualize which spatial cells portals connect to by drawing them in the color of the target cell, and making them visible even when behind other geometry.

The demo levels I created were used in usertests for a research paper that was also part of my thesis. One made it very obvious that the virtual space was overlapping by utilizing the available physical space fully for each virtual room, the other one was set up to hide that fact by having more complex room shapes that only take up part of the the physical space. The question was which of these two scenarios would be easier to navigate for the users, who had to solve a simple puzzle in this environment by pressing a certain squence of color coded buttons in order to get a box that then has to be delivered back to the initial room.

 

Editor Gallery

 

Levels Gallery

Next
Next

Aori’s Spaceship Repair Shop