Rhinox - VR Metaverse Project

Connect to a multiplayer room where you can talk with other people.

About

This is a project I worked on at my internship at Rhinox. I had a lot of fun learning a lot of new things in Unity, which was my main goal of doing my internship there. I wanted to learn about VR and got to do some networking with it as well.

Engine

The application was created in Unity C#, because I'm familiar with the engine and this was the engine used at the company. There are also a lot of packages available for the multiplayer aspect of the application alongside a whole range of other packages and tools, both public and in-house ones.

What Did I Learn?

During my internship I learned many interesting things and explored a lot of areas I had not yet explored, that mainly being networking and VR. As it was my first time creating a application in virtual reality I learned a lot in a lot of different aspects like the setup and development environment used for VR development. Also what you can, can't and shouldn't do in VR. The VR framework I used was 'Unity XR Interaction Toolkit' and the project was designed to be a standalone application on 'The Oculus Quest 2' .

"Teleporting around in the virtual environment which is networked to all other clients."



In the project I used a Unity package called 'Mirror' which is a fork of Unity's old networking solution with a bunch of bugfixes and new features. I used this to implement all the networking present in the application. The main parts that are networked are the users that join the rooms and the PowerPoint presentation. The application uses a server-client model as opposed to a peer-to-peer network.
Alongside networking I also implemented a voice chat system 'Vivox' which allows you to connect to a voice room and talk to all the people around you with positional audio. I really enjoyed the networking part and it really expanded my knowledge on it, but still have a lot to learn as well.

One of the other main challenges was 'integrating PowerPoint presentations', mainly because Office's PowerPoint files are not easy to convert to a suitable filetype that can be used by Unity to show it in engine. I ended up using a python script that uses Microsoft's DLL's to convert the PowerPoint file to images (JPG's). This comes with the drawback that to be able to convert the images the server needs to have a version of PowerPoint installed to be able to access the necessary libraries. Sending over the the PowerPoint images back over the internet also proved a challenge, but I got it working in the end.

"A PowerPoint presentation that is loaded in and shown to all other connected clients."



My coworkers really helped me to expand my knowledge on not only on programming but also on the framework they use and even the Unity engine itself, as they have a thorough and deep understanding of the engine and it's inner workings.

The Company


Rhinox is a company which, using their modular VR/AR framework, offers effective solutions in training, simulation and visualization without having to start from scratch. They can convert a wide range of CAD file formats to VR/AR-ready 3D assets which allows them to easily create and update your content and sequences.

Website: https://www.rhinox.be/
E-mail: hello@rhinox.be