D

DISCO

Designing Intelligent Spaces for Collaboration

UROP Prototype: Collaborative VR with Photon Networking

System Overview

This UROP prototype of DISCO demonstrates real-time, spatially-aware collaboration using virtual reality and generative AI. DISCO has many different prototypes, and this implementation focuses on the networking and collaborative whiteboard aspects of the broader DISCO research initiative led by Dr. Janet Johnson and Dr. Michael Nebeling.

Photon Fusion

Advanced multiplayer networking for real-time collaboration

Unity XR Toolkit

Immersive VR/MR experiences across multiple platforms

GPT Integration

Azure-backed AI for intelligent assistance and content generation

Role-based Access

Dynamic interfaces for Researchers and Participants

Smart Whiteboard

The UROP prototype of DISCO features an intelligent whiteboard system where users can draw and collaborate in 3D space. Backed by real-time RenderTexture technology, it creates a shared canvas for teams to visualize ideas together.

DISCO collaborative whiteboard illustration
Collaborative Session

Interactive Features

3D Drawing & Annotation

Draw directly in 3D space with precision controls and multi-user synchronization

GPT-Generated Text

AI-powered text generation for notes, summaries, and creative content

Auto-Rendered Graphs

Instantly visualize data with AI-generated charts and graphs

Time Rewind

Navigate through session history with 5-minute snapshots

Whiteboard Technical Details

An in-depth look at how the whiteboard system works in the UROP prototype of DISCO and how Photon networking facilitates real-time collaboration.

Whiteboard Architecture

The whiteboard system in the UROP prototype of DISCO is built using Unity's texture manipulation capabilities. At its core, it consists of four main components:

Whiteboard Component

Creates and manages a Texture2D that serves as the drawing canvas, applied to a 3D object in the virtual environment.

Marker Component

Handles user input for drawing, using raycasting to detect when the marker touches the whiteboard and applying pixel changes to the texture.

History Manager

Periodically saves snapshots of the whiteboard state, allowing users to navigate through the history of changes.

Network Synchronization

Uses Photon networking to synchronize whiteboard changes across all connected clients in real-time.

This architecture creates a seamless collaborative experience where multiple users can draw on the same virtual whiteboard simultaneously, with changes visible to everyone in real-time.

Multiuser Architecture

This UROP prototype of DISCO leverages Photon Fusion to demonstrate multiplayer capabilities. The architecture implemented in this prototype enables researchers to create and manage rooms while participants can join and collaborate in real-time, supporting the research goals of Dr. Janet Johnson and Dr. Michael Nebeling.

Researcher
Master Client
Room Creation
Photon RoomOptions
Participant
Auto-Join
Participant
Auto-Join
Participant
Auto-Join
Shared Persistent 3D Room
Synchronized via Photon Fusion

Researcher Role

  • Creates and configures rooms
  • Access to admin controls
  • Can modify environment

Participant Role

  • Auto-joins based on room code
  • Collaborative access
  • Focused interface

AI Integration Note

While this UROP prototype focuses on the networking and collaborative whiteboard aspects, the broader DISCO project by Dr. Janet Johnson and Dr. Michael Nebeling includes advanced AI capabilities for intelligent assistance during collaborative sessions. These AI features were developed by the broader research team.

Project Gallery

Visual documentation of the UROP prototype of DISCO in action, showcasing the interface and collaborative features implemented in this specific version of the project.

Previous Prototype in Action

Previous Prototype in Action

Users testing the DISCO system with VR headsets in a collaborative environment.

Researcher View – Hosting and Controls

Researcher View – Hosting and Controls

Interface for researchers to create rooms, manage settings, and control the collaborative environment.

Research Poster

This research poster outlines the UROP prototype of DISCO presented at the University of Michigan, one of several prototypes developed under the broader DISCO research initiative.

DISCO Research Poster

Click on the poster to view in full size

My Contributions

As the developer on this project, I specifically focused on implementing three core components:

Photon Integration

Implemented the multiplayer networking foundation using Photon Fusion, enabling real-time collaboration across multiple VR headsets with low-latency synchronization.

Whiteboard System

Developed the collaborative whiteboard with RenderTexture technology, supporting multi-user drawing, annotations, and the time-rewind feature that captures snapshots every 5 minutes.

Base Prototype

Created the foundational Unity XR environment, including the role manager system that differentiates between researcher and participant interfaces and permissions.

Project Context

This work was conducted as part of the research initiative led by Dr. Janet Johnson and Dr. Michael Nebeling, with the AI components and theoretical framework developed by the broader research team. My focus was on the technical implementation of the collaborative systems for this specific UROP prototype.

Technical Highlights

This UROP prototype of DISCO leverages several technologies and custom implementations to demonstrate collaborative VR capabilities. Here are some key technical components implemented in this specific prototype.

C# Scripting

Advanced C# scripting for RenderTextures and whiteboard drawing functionality

// Whiteboard drawing implementation
private void UpdateTexture(Vector2 uvCoord, Color color) {
  texture.SetPixel((int)(uvCoord.x * textureSize.x),
  (int)(uvCoord.y * textureSize.y), color);
  texture.Apply();
}

GPT-Flask Bridge

Custom API bridge between Unity and Azure OpenAI services

// Flask API endpoint for GPT integration
@app.route('/api/generate', methods=['POST'])
def generate_text():
  data = request.json
  response = openai.Completion.create(
    engine="text-davinci-003",
    prompt=data['prompt'],
    max_tokens=150
  )
  return jsonify({'text': response.choices[0].text})

Snapshot Manager

Time-based snapshot system for whiteboard history

// Snapshot creation and management
private void CreateSnapshot() {
  Texture2D snapshot = new Texture2D(
    whiteboard.texture.width,
    whiteboard.texture.height
  );
  snapshot.SetPixels(whiteboard.texture.GetPixels());
  snapshot.Apply();
  snapshots.Add(Time.time, snapshot);
}

Photon Callbacks

Network synchronization for multiplayer experiences

// Photon network callbacks
public override void OnPlayerEnteredRoom(Player newPlayer) {
  base.OnPlayerEnteredRoom(newPlayer);
  if (PhotonNetwork.IsMasterClient) {
    photonView.RPC("SyncWhiteboard", newPlayer, 
      Convert.ToBase64String(whiteboard.EncodeToPNG()));
  }
}

Role Manager

Dynamic interface control based on user roles

// Role-based interface management
public void SetUserRole(UserRole role) {
  currentRole = role;
  switch (role) {
    case UserRole.Researcher:
      EnableResearcherControls();
      break;
    case UserRole.Participant:
      EnableParticipantControls();
      break;
  }
}