Skip to content

maxchalabi/OceanDaze

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

24 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒŠ Ocean Daze

An immersive VR ocean exploration experience with biometric interaction using EEG and EMG signals.

Ocean Daze is a Unity-based virtual reality project that combines underwater exploration with real-time biometric feedback. Created during the 2025 Hack1Robo Hackathon, this project allows users to interact with a virtual ocean environment using brain (EEG) and muscle (EMG) signals through Lab Streaming Layer (LSL) integration.

โœจ Features

  • Immersive VR Environment: Explore a beautiful underwater world with realistic water shaders and effects
  • Biometric Interaction: Control aspects of the experience using EEG (blink detection, jaw clench) and EMG signals
  • Real-time Signal Processing: Python-based LSL streams for live physiological data integration
  • Cross-Platform XR Support: Compatible with various XR devices including Android XR and OpenXR platforms
  • Marine Life: Interact with underwater creatures and environments
  • Advanced Water Effects: Featuring underwater post-processing and realistic water shaders

๐Ÿ› ๏ธ Technology Stack

Unity Components

  • Unity Version: 2023.x (Universal Render Pipeline)
  • XR Interaction Toolkit: 3.2.1
  • XR Hands: 1.6.1
  • Lab Streaming Layer for Unity: LSL4Unity integration
  • Universal Render Pipeline (URP): 17.0.3
  • OpenXR: 1.15.1
  • Android XR OpenXR: 1.0.1

Python Components

  • pylsl: Lab Streaming Layer Python interface
  • numpy: Numerical computing
  • scipy: Signal processing (bandpass filtering, Welch method)

๐Ÿ“‹ Prerequisites

For Unity Development

  • Unity 2023.x or later
  • Universal Render Pipeline (URP) support
  • XR-compatible VR headset (Meta Quest, Pico, or OpenXR-compatible device)
  • Windows, macOS, or Linux development environment

For Biometric Features

  • Python 3.7 or later
  • Lab Streaming Layer (liblsl)
  • EEG/EMG hardware compatible with LSL (e.g., OpenBCI, Muse, or similar)
  • Required Python packages (see Installation)

๐Ÿš€ Installation

Unity Project Setup

  1. Clone the repository:

    git clone https://github.com/yourusername/OceanDaze.git
    cd OceanDaze
  2. Open in Unity:

    • Open Unity Hub
    • Click "Add" and select the OceanDaze folder
    • Open the project with Unity 2023.x or later
  3. Install dependencies:

    • Unity will automatically resolve package dependencies from Packages/manifest.json
    • Wait for package installation to complete
  4. Open the main scene:

    • Navigate to Assets/Scenes/
    • Open BasicScene.unity or SampleScene.unity

Python LSL Setup

  1. Navigate to the Python scripts directory:

    cd LSL_Ocean_Daze
  2. Create a virtual environment (recommended):

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install required packages:

    pip install pylsl numpy scipy

๐ŸŽฎ Usage

Running the VR Experience

  1. Connect your VR headset:

    • Ensure your XR device is properly connected and recognized
    • Enable developer mode if required (e.g., for Meta Quest devices)
  2. Configure XR settings:

    • Go to Edit > Project Settings > XR Plug-in Management
    • Enable your target platform's XR plugin
  3. Run the scene:

    • Click the Play button in Unity Editor, or
    • Build and deploy to your XR device

Using Biometric Features

  1. Set up your EEG/EMG hardware:

    • Connect your biometric sensors
    • Ensure they are streaming data via LSL
  2. Run the appropriate Python script:

    For EEG blink and jaw clench detection:

    python eeg_blink_jaw_updated.py

    For EMG blink detection:

    python Emg_detection_blinks.py

    For EMG duration tracking:

    python emg_dur.py

    For signal visualization:

    python plotting_signal.py
  3. Start the Unity application:

    • The Unity application will automatically detect and connect to LSL streams
    • Biometric events will trigger interactions in the VR environment

๐Ÿ“ Project Structure

OceanDaze/
โ”œโ”€โ”€ Assets/
โ”‚   โ”œโ”€โ”€ Hack1robo/              # Main project assets
โ”‚   โ”‚   โ”œโ”€โ”€ Audio/              # Sound effects
โ”‚   โ”‚   โ”œโ”€โ”€ Creatures/          # Marine life models
โ”‚   โ”‚   โ”œโ”€โ”€ Models/             # 3D environment models
โ”‚   โ”‚   โ”œโ”€โ”€ Prefabs/            # Reusable game objects
โ”‚   โ”‚   โ”œโ”€โ”€ Scenes/             # Unity scenes
โ”‚   โ”‚   โ”œโ”€โ”€ Scripts/            # C# gameplay scripts
โ”‚   โ”‚   โ”œโ”€โ”€ Terrains/           # Underwater terrain assets
โ”‚   โ”‚   โ””โ”€โ”€ Textures/           # Visual textures
โ”‚   โ”œโ”€โ”€ IgniteCoders/           # Water shader system
โ”‚   โ”œโ”€โ”€ Paro222/                # Underwater effects
โ”‚   โ”œโ”€โ”€ Samples/                # Sample scenes and tutorials
โ”‚   โ”œโ”€โ”€ Scenes/                 # Main application scenes
โ”‚   โ”œโ”€โ”€ VRTemplateAssets/       # VR interaction templates
โ”‚   โ””โ”€โ”€ XR/                     # XR configuration
โ”œโ”€โ”€ LSL_Ocean_Daze/             # Python LSL scripts
โ”‚   โ”œโ”€โ”€ eeg_blink_jaw_updated.py    # EEG processing
โ”‚   โ”œโ”€โ”€ Emg_detection_blinks.py     # EMG blink detection
โ”‚   โ”œโ”€โ”€ emg_dur.py                  # EMG duration tracking
โ”‚   โ””โ”€โ”€ plotting_signal.py          # Signal visualization
โ”œโ”€โ”€ Packages/                   # Unity package dependencies
โ”œโ”€โ”€ ProjectSettings/            # Unity project configuration
โ””โ”€โ”€ README.md

๐Ÿง  Biometric Interaction Details

Supported Signal Types

  • EEG Blinks: Frontal electrode blink detection (Fp1/Fp2)
  • Jaw Clenches: EMG detection from jaw muscles
  • EMG Events: General muscle activation patterns

Signal Processing Pipeline

  1. Bandpass Filtering: Removes noise and isolates relevant frequency bands
  2. Threshold Detection: Identifies events based on statistical analysis
  3. Refractory Periods: Prevents false positives from rapid events
  4. LSL Streaming: Sends processed events to Unity in real-time

๐Ÿค Contributing

We welcome contributions! Please feel free to submit pull requests or open issues for bugs and feature requests.

Development Team

  • Oliwia Jankowska
  • Max Chalabi
  • Massimo Ruben
  • Margot Fita
  • Karolina Piwko
  • Alexia Ilie
  • Ervan Achirou

๐Ÿ“œ License

Ocean Daze is free software distributed under the GNU General Public License v3.0 (or later).

Copyright ยฉ 2025 Oliwia Jankowska, Max Chalabi, Massimo Ruben, Margot Fita, Karolina Piwko, Alexia Ilie, Ervan Achirou.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

๐Ÿ† Acknowledgments

  • Created during the 2025 Hack1Robo Hackathon
  • Built with Lab Streaming Layer
  • Water shaders by IgniteCoders
  • Underwater effects by Paro222
  • Unity XR Interaction Toolkit samples

๐Ÿ“ž Support

For questions, issues, or feedback:

  • Open an issue on GitHub
  • Contact the development team through the repository

๐Ÿ”ฎ Future Development

  • Additional biometric interaction modes
  • More marine environments and creatures
  • Multiplayer support
  • Enhanced visualization of biometric data
  • Additional VR platform support
  • Procedural ocean generation

Dive into the depths. Control with your mind. Experience Ocean Daze. ๐ŸŒŠ๐Ÿง 

About

Ocean Daze Unity project setup

Resources

License

Unknown, GPL-3.0 licenses found

Licenses found

Unknown
LICENSE
GPL-3.0
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •