Virtual Reality Cave

Page

 

What is it?

A small game inside a VR Cave to show kids how a ecosystem works.

It’s currently being displayed in “La Rodadora” Museum at Ciudad Juarez.

Here are some pics of the system in action:

vrCave_PhotovrCave_Side

vrCave_cave

 

 

The Cave had 5 proyections, the only thing left without proyection was the roof.

 

 

 

vrCave_person

 

 

 

The interaction with the users was made using the “shadow” of the user in the wall taken from the kinect input.

 

 

What did I do?

I was given a theme and an overview of the application to propose and design the gameplay of the VR cave.

I also coded everything in the system from the kinect input processing and the networking to the game itself.

In Summary:

  • Design of Gameplay and Interaction.
  • Kinect Input Processing DLL using OpenGL and OpenNI.
  • Networking between Client and Server PC’s in Unity.
  • Proyection Distortion Shader for multiple screens.
  • Mesh generation and collision from kinect Input.
  • Game and Main Application Coding.

How did I do it?

To create the virtual cave it was necesary to use 2 computers with NVidia surround in each PC.

The server handled 2 Kinects and the 3 main proyections in the cave.

The client handled the other kinect and the entrance proyection as well as the floor.

I used  OpenNI 2.0 for the Kinect input.

vrCave_Convex

 

The kinect area was delimited using a box which could be setup inside the C++ proyect and was handleld using separate files for each kinect setup.

After that it was necessary using clustering to separate each blob to create a convex hull  of every person. For this i used DBSCAN.

 

This module returned a 2D Array that contained each convex hull on a kinect at that frame. It was handled using a DLL to be able to use this information in Unity 3D.

 

What was the hardest challenge in this project?

The hardest problem was creating a individual convex hull that could collide with the elements of the wall.

Also as a extra note, after the release of the system it had a problem with a memory leak inside C#, which i was suprised to see because of the Garbage Collector, however it seems this was made because of the Mesh Generation every frame. It seems unity holds a reference to every mesh you create somehow so it had to be deleted manually before destryoing the object.

Final Thoughts

Looking back and after some research I strongly regret not using a ATI card and a stronger PC instead of 2 separate ones to avoid the network problems.

That would have helped a lot to improve development time and make it easier for the museum personnel to operate it.

16_VRCave