Coder Social home page Coder Social logo

basespoutinterop's Introduction

Unity Kolab Environment - Collaborative Scientific Data Analysis in Virtual Reality

This repo contains the VR software part for the scientific visualization and collaboration environment created in the project Kolab-BW, funded by the MWK (state of Baden-Württemberg, Germany). It was created by the viscom group of Ulm University, Institute of Media Informatics (Prof. Ropinski) and VISUS Institute of Stuttgart University (Prof. Weiskopf).

Contents

System Architecture

The overall Kolab system consists of the VR application (this repo), a number of connected renderers (currently: inviwo, MegaMol, internal renderer) and a Loader application. As a networking infrastructure, Photon is being used right now, however it is planned to be replaced by an own solution created in year 2 of the Kolab project.

The renderers are running on the respective participating nodes locally. They communicate with the VR component through local ZeroMQ in a predefined message format (todo: separate page for comm protocol). The VR component broadcasts the renderer and player states through the Photon connection to other participants, thus keeping all participating instances in realtime sync. Additionally, voice communication channels (broadcast only for now) are being established through Photon as well.

System Requirements

See Code Repositories for corresponding source code.

  • Unity 2019.1.1f1
  • inviwo / MegaMol, compiled with Spout and ZeroMQ support
  • Example Kolab VR projects and corresponding data (todo: link to data and project examples)
  • Powerful PC (Testing environment: i7 9700K, RTX2080, 64GB RAM)
  • VR Headset/HMD (tested with Vive and Vive Pro)
  • Visual Studio (for Loader Development only)

Quick Start

  • Clone, CMake and Compile inviwo / MegaMol with ZeroMQ / Spout / Vrinterop plugins
  • Clone this repo, import to Unity
  • Clone / download example workspaces (todo: from where?)
  • Clone Loader repo, compile
  • Run loader, set initial config values (paths to EXEs, Workspace Name - has to be matching for all participants)
  • Save config in Loader (JSON file is being saved to \AppData\LocalLow\UlmUniversity\BaseSpoutInteropSettings.json)
  • Run Unity Workspaces scene for collaborative session via network
  • The MintMain scene contains the implementation of the environment

System Features

  • Basic VR movement (walking, teleport), including real-life collision avoidance for colocated multi-user VR scenarios
  • Voice communication (right grip button, "push to talk"-style)
  • Transparent handling of workspace files via loader panel in VR (point+click handles all necessary steps to fire up renderers, etc.)
  • Dataset interactions: stick controller into the visualization - trigger right rotates, trigger left moves, both triggers zoom
  • Engineeering dataset/internal renderer: exploded view (via pad up/down)
  • Cutting Plane: virtual tool which can be grabbed and placed in the dataset to cut it
  • Transfer function editor:
    • Point + trigger at TF rail: new point on the TF
    • Point, trigger hold and move left/right: move point (or min/max cone) on the TF
    • Point, trigger hold and move up: delete point on the TF
    • Point + trigger at TF swatch: open color chooser

Code Repositories

Several repositories arised during development of the system. To give credit to the people involved and keep track of the developments made in those projects, the repositories are listed below. Be aware that some of the respositories use Git LFS and Git Submodules. Thus, clone the repos with LFS installed and recursively clone submodules.

Future Work

Based on the year-1 review of the project, some specific areas are to be worked on in the future:

  • Improving the system (robustness) and software packaging to a more production-ready state
  • Making the VR part more generic to be usable for other project partners (e.g. tool abstractions, comm protocols)
  • Switching to an own networking solution (instead of Photon), which HLRS has to develop
  • Implementing and integrating with the Kolab "platform", for proper session / user handling and increased privacy and data security.

Beside those high level tasks, additional smaller tasks can be found in the Issue Tracker of this repo.

basespoutinterop's People

Contributors

geringsj avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.