Skip to content

NicoNRG2/VirtualOffice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VirtualOffice

University of Trento
Master's Degree in Information Engineering
Course of Immersive Technologies: Final Project

Motion Matching Unreal Engine Demo

Project description

Remote work and distributed team collaboration have become increasingly common. Existing tools such as Zoom, Google Meet, and Microsoft Teams have limitations when multiple participants need to share and compare visual content simultaneously: traditional screen sharing is sequential, allowing only one presenter at a time and creating friction during collaborative tasks.
This project presents Virtual Office, a Social Virtual Reality application developed in Unity 6 using the Ubiq networking framework. The system recreates an office environment where up to four remote users can collaborate in real time. Each participant is assigned a personal workstation equipped with a virtual whiteboard, a drawable 2D canvas, and virtual monitors displaying the whiteboards of all other users through Render Textures. This enables continuous awareness of collaborators’ work without requiring screen-sharing handoffs.
The project is designed for Meta Quest 3 headsets and controllers. Key technical features include a multi-chunk snapshot synchronization protocol for late-joining users, a peer-property-based workstation assignment mechanism that mitigates race conditions through a timed synchronization window, and a visibility management system that dynamically activates only occupied workstations.
Testing with up to four simultaneous users, complemented by a structured evaluation via SUS and SUS Presence Scale, validated the system's functionality and demonstrated an engaging collaborative experience. Compared to commercial platforms such as Meta Horizon Workrooms, Virtual Office is intentionally simpler and fully open-source, making it a valuable educational prototype and a foundation for future research on immersive collaborative workspaces.

Setup

First of all, install the required software:

  • Install Unity Hub
  • From Unity Hub, install an Editor: Unity 6 LTS version (6000.0.69f1)
  • When installing, add the following modules:
    • Dev tools: Microsoft Visual Studio Community 2022
    • Platforms: Android Build Support (select OpenJDK, Android SDK & NDK Tools)
    • Documentation
  • Download the project: git clone https://github.com/NicoNRG2/VirtualOffice.git
  • Open the project and the scene inside Samples/Ubiq/1.0.0-pre.16/Demo (XRI)/Demo

Create a local server

To run the application, a local Ubiq server must be started. The server is responsible for managing room creation, user connections, and network synchronization between the different VR clients.

First, install Node.js on your system. Then clone the Ubiq repository:

git clone https://github.com/UCL-VR/ubiq.git

Navigate to the Node server directory:

cd ubiq/Node

Install the required dependencies:

npm install

Finally, start the local server:

npm start

Once the server is running, users can connect to it from the Virtual Office application by entering the corresponding room code.

Meta Quest 3 APK

A pre-built APK for Meta Quest 3 is available in the Releases section of the repository.
Users who want to run the application without building the Unity project can install the APK using SideQuest.

To install the application:

  1. Install SideQuest and connect the Meta Quest 3 headset via USB.
  2. Enable developer mode on the headset.
  3. Open SideQuest and select Install APK from folder.
  4. Choose the provided VirtualOffice.apk file located in the repository.
  5. Launch the application from the Quest 3 library.

The APK version is already configured for the Meta Quest 3 and includes all required dependencies.

Usage istruction

This section describes the user experience from first launch to active collaboration:
Joining the office: when a user starts the application, they are placed in the room in front of the Ubiq panel.The first user has to create the room through the panel, while the other users have to join the created room using the room code. Once inside the room, only the workstations corresponding to currently connected users are active and visible; the rest of the office furniture is always visible to provide context. A user's workstation consists of a personal whiteboard positioned in front of them and the virtual monitors located above it.
Drawing: a virtual pen is located beside the whiteboard. The user grabs it by pressing the grip trigger on their Quest 3 controller (VR mode) or the right mouse button (flat-screen mode). Once held, moving the pen tip towards the whiteboard surface causes the nib to draw on the whiteboard.
Changing color: a button beside the workstation allows the users to open a floating color picker panel. The panel exposes three sliders (Hue, Saturation, Value) and an optional hex code input field. A color preview swatch shows the current color in real time. An Eraser button sets the color to white. The UI synchronizes automatically with the color of the pen currently in the user's hand.
Viewing other participants: the virtual monitors above each user's whiteboard display the whiteboards of the other connected participants as live Render Textures. They are read-only: users can only draw on their own whiteboard. Late Join: when a new user joins a room where other participants have already drawn on their whiteboards, the new peer automatically sees all drawings that were created before they entered the room.

Group Contribution Statement

The project was developed by two people working in parallel on a single shared Unity scene. Both team members contributed to all aspects of the project throughout its development. Specific contributions:

  • Nicola Cappellaro: lighting setup and ColorPicker UI implementation
  • Riccardo Zannoni: office design and workstation positioning

About

Virtual Office is a Social VR application developed in Unity 6 with the Ubiq networking framework, designed to support real-time remote collaboration in an immersive office environment.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors