Virtuelle RealitätVirtual Reality

Software und Architekturen Software and Architectures

Dr. Thies Pfeiffer

Cognitive Interaction Technology Center of Excellence,
Technische Fakultät, Universität Bielefeld
Cognitive Interaction Technology Center of Excellence,
Faculty of Technology, Bielefeld University

Termin:Montags, 14:15 Uhr

Raum: CITEC Auditorium

Schedule:Mondays, 2:15 p.m.

Room: CITEC Auditorium

Anforderungen an AR/VR Architekturen und Frameworks Requirements for AR/VR Architectures und Frameworks

Kern-Fähigkeiten einer VR ArchitekturCore functionalities of a VR architecture (1/2)

  • Framework zur Strukturierung und Generierung von InhaltenFramework for structuring and generating content
    • Grafik, Sound, Haptik, Olfaktorik,graphics, sound, haptics, olfactorics, ...
    • statisch, animiert, datengetriebenstatic, animated, data-driven
  • Framework zur Ansteuerung von Display-GerätenFramework for driving display devices
    • Bildschirme (2D/3D), Projektoren, HMDs, etc.computer screens (2D/3D), projectors, HMDs, etc
      • 1 zu 1: Ein Schirm eine Ansicht (2D desktop)1 to 1: one screen one view (2D desktop)
      • n zu 1: Ein Schirm mehrere Ansichten (3D desktop, HMD, PowerWall)n to 1: one screen several views (3D desktop, HMD, PowerWall)
      • 1 zu n: Mehrere Schirme eine Ansicht (gemeinsames Arbeiten)1 to n: several screens one view (cooperative tasks)
      • n zu n: Mehrere Schirme, mehrere Ansichten (CAVE)n to n: several screens several views (CAVE)
    • Sound (Stereo/5.1/7.1/X.x)sound (stereo/5.1/7.1/X.x)
    • Haptische Gerätehaptic devices
    • ...

Kern-Fähigkeiten einer VR ArchitekturCore functionalities of a VR architecture (2/2)

  • Framework zur Anbindung von EingabegerätenFramework for connecting input devices
    • Standard: Maus, Tastatur, Joystickstandard: mouse, keyboard, joystick
    • Gaminggaming: Kinect, Leap Motion, Intel Gesture Cam, Intel RealSense, Razor Hydra, Wii-Remote, OculusRift
    • Professioneller Bereich: Tracking-Systemeprofessional area: tracking systems (VICON, ART, OptiTrack, Polhemus, Fasttrak), Spacepen/-mouse, Stylus, DataGloves, Midi, Serielle Daten, Video-Kameras, 3D Kameras, Bewegungssensorenserial data, video cameras, 3D cameras, motion sensors, TUIO, ...
  • Mindestens ein Modell für die Integration von AnwendungslogikAt least one model for the integration of the application logic

Entscheidungsrelevante Aspekte einer VR ArchitekturRelevant Aspect for Selecting a VR Architecture

  • Dokumentation, Tutorialsdocumentation, tutorials
  • Skalierbarkeitscalability
    • Plattformenplatforms (Windows, Linux, MaxOS, iOS, Android, ...
    • Datenvolumenvolume of data that can be handled
    • Displaytechnologien (z.B. Anzahl der Views)display technologies (e.g. number of views)
  • Integrationsmöglichkeiten in existierende Workflowsease of integration into existing workflows
  • Unterstützung von Datenaustauschformatensupport of data exchange formats
  • Werkzeugunterstützung für den Erstellungsprozesstool support for the creation/design process
  • Rapid-Prototyping Fähigkeitensupport for rapid prototyping
    • Scriptingscripting
    • Online Scriptingonline scripting
    • Live-Debugginglive debugging

Anbindung der Display GeräteSupport for Display Devices

  • Unterstützung für verschiedene Packaging Formatesupport for different packaging formats
  • Unterstützung für aktive und passive Stereoprojektionen (z.B. Framelocking)support for active and passive stereo projections (e.g. frame locking)
  • Verschiedene Optimierungsverfahren um Hardware bestmöglich ausnutzen zu können (häufig basierend auf Szenengraph) support for optimization strategies to make the best out of the available hardware (often based on scenegraph representations)
  • Unterstützung von Nebenläufigkeit (während die Hardware einen Frame berechnet, sollte mind. ein neuer Frame schon vorbereitet werden können) support for concurrency (e.g. while the hardware is rendering a frame, the architecture should be able to prepare at least one frame in parallel)
  • Unterstützung unterschiedlicher Renderingverfahren (Ray-Tracing, Volume Rendering, etc.) support for different rendering approaches (ray-tracing, volume rendering, etc.)
  • Grafikschnittstelle häufig: OpenGL, seltener Direct X graphics API often OpenGL, less often Direct X

Modelle für die Integration der AnwendungslogikModels for the integration of application logic

  • "Immediate Mode" - Anwendung erhält direkt den OpenGL Context und zeichnet die Objekteapplication gets direct access to the OpenGL context and draws the objects
    • Als SDK: Anwender muss sich selbst um die Integration kümmernas SDK: developer has to take care of the integration
    • Als DLL Injection: Anwendung "denkt" sie arbeitet mit normaler OpenGL Bibliothekas DLL injection: application only sees standard OpenGL interface
  • Gemeinsame Datenstruktur: z.B. Szenengraph mit alternativen NutzungskonzeptenCommon data structure: e.g. scenegraph with multiple uses
    • Anwendung und Rendering greifen sequentiell auf eine gemeinsame Datenstruktur zuapplication and rendering have sequential access to the shared data structure
    • Anwendung und Rendering greifen gleichzeitig auf eine geschützte Datenstruktur zuapplication and rendering have a concurrent access to a protected data structure
    • Datenstruktur wird nach Durchgang der Anwendungsschleife gespiegelt, parallele Haltung mit Synchronisation der Datenstrukturdata structure is replicated after application access and synchronized with a parallel data structure used for rendering

Anbindung von Eingabegeräten Connection of input devices

Es gibt Software-Bibliotheken (sog. Middleware) zur Anbindung von Geräten: There are some software libraries (or Middelware) for connecting to devices:

  • Virtual Reality Peripheral Network (VRPN)
  • InstantIO (InstantIO - Dokumentation)
  • Tangible User Interface Objects (TUIO)
  • Gadgeteer (VR Juggler)
  • Robotic Service Bus (RSB) or ROS (Robot Operating System)

Geschichte der AR/VR Frameworks und Engines History of AR/VR Frameworks und Engines

Software ArchitekturenSoftware Architectures

  • VR Juggler
  • SGI Performer
  • OpenSceneGraph
  • Avango / Avango NG
  • OpenSG
  • InstantReality

SGI OpenGL Performer / IRIS Performer

  • 1991 von Entwicklern des SGI Open Inventors als performante Alternative entworfen developed in 1991 from the developers of SGI Open Inventor as performance optimized alternative
  • Lizenz: Kommerziell, Entwicklung eingestellt in 2001license: commercial, development stopped in 2001
  • Programmierspracheprogramming language: C++
  • Fokus: Multi-Prozessing, Multi-Pipline (mehrere Grafiksysteme), Trennung von Anwendung und Rendering, keine Geräte-Anbindung focus on: multi-processing, multi-pipeline (several graphic systems), separation of application and rendering, no support for devices
  • Status: verlassenabandoned
SGI Performer
SGI Performer - Logo und Grafik von der ehemaligen Produktseitelogo and graphic taken from previous product page
Bild vonimage taken from http://www.sgi.com/products/software/performer/, Dezember 2007
  • Performer hat ähnlich wie Inventor die Entwicklung in diesem Bereich geprägt. Heute sind noch Ableger von Performer, die sich an der Architektur und an Teilen des API orientieren, im Einsatz (z.B. OpenSceneGraph). Performer had, similarly to Inventor, a great influence on the development in this area. Today there are still spin-offs available that orient themselves on the architecture or even the API of Performer (e.g. OpenSceneGraph)

VR Juggler

  • Existiert seit 1997, gestartet von Dr. Carolina Cruz-Neira (Stichwort: CAVE) exists since 1997, initiated by Dr. Carolina Cruz-Neira (keyword: CAVE)
  • WWW: http://vrjuggler.org/
  • Lizenzlicense: LGPL
  • Programmiersprachenprogramming languages: C++, .NET, Java, Python
  • Besonderheit: VR Juggler bietet ein Framework zur Integration von Geräten und Anwendung, macht aber keine strengen Vorgaben für die Organisation der Szene - kann also z.B. sowohl im OpenGL "Immediate"-Modus als auch mit Szenengraph-APIs (SGI Performer, OpenSG) verwendet werden. Particularities: VR Juggler offers a framework for the integration of devices and applications, but does not pose strong requirements on the organization of the scene. The scene can thus be rendered in OpenGL "immediate" mode or using scenegraph-APIs such as SGI Performer or OpenSG.
  • Status: verlassenabandoned
Architektur von VR Juggler
Überblick der Architektur von VR JugglerOverview of the architecture of VR Juggler
Bild von http://vrjuggler.org, Januar 2012
  • Streng genommen müsste es also VR Juggler + X heißen Strictly speaking it should be called VR Juggler + X

Avango

  • Entwickelt von der GMD, jetzt Fraunhofer IAIS developed by the GMD, now Fraunhofer IAIS
  • WWW: http://sourceforge.net/projects/avango/
  • Lizenz: LGPL (aber auf Performer basierend!), Entwicklung eingestellt/eingeschlafenlicense: LGPL (but based on Performer!), development stopped/sleeping
  • basiert auf SGI Performer, Erweiterung um Skripting (Scheme), verteilte Szenengraphen, Datenfluß-Netzebased on SGI Performer, extended by scripting (Scheme), distributed scenegraph
  • Programmiersprache: C++, Scheme (LISP Dialekt)programming language: C++, Scheme (LISP dialect)
  • wurde in der Vergangenheit in de AG Wissensbasierte Systeme eingesetzthas in the past been used at the AG Wissensbasierte Systeme here at Bielefeld
  • Status: verlassenabandoned
Architektur von Avango
Überblick der Architektur von AvangoOverview of the architecture of Avango
  • Früher hieß das Framework auch einmal AvocadoIn the beginning the framework had been called Avocado

Avango NG

  • setzte die Konzepte von Avango mit OpenSceneGraph fortcontinued the concepts introduced with Avango based on OpenSceneGraph
  • Lizenzlicense: LGPL
  • basiert auf OpenSceneGraph, Erweiterung um Skripting, verteilte Szenengraphen, Datenfluß-Netze, Anbindung an VRPNbased on OpenSceneGraph, extended by scripting, distributed scenegraph, data-flow graph
  • Programmierspracheprogramming languages: C++, Python
  • Status: verlassenabandoned
Avango NG
Avango NG

OpenSceneGraph

  • basiert auf den Konzepten von Performerbased on the concepts of SGI Performer
  • 1998 als Projekt von Don Burns gestartetstarted in 1998 as a project by Don Burns
  • WWW: http://www.openscenegraph.org/
  • Lizenzlicense: OpenSceneGraph Public License basiertend aufbased on LGPL
  • Unterstützt viele Plattformen, mehrere Skriptsprachen, viele Dateiformate, Support durch eine Firmasupports many platforms, multiple scripting languages, many file formats, supported by a company
  • Programmierspracheprogramming language: C++, Python
OpenSceneGraph
OpenSceneGraph

OpenSG

  • 1999 unter anderem von Dirk Reiners gestartetstarted in 1999 among others by Dirk Reiners
  • damals als Alternative zum eingestellten Fahrenheitat that time as an alternative to the promised but not realized Fahrenheit
  • WWW: https://sourceforge.net/p/opensg
  • wurde 2001 bis 2003 im Projekt OpenSG PLUS in Deutschland geförderthas been funded in Germany between 2001 and 2003 in the project OpenSG PLUS
  • Lizenzlicense: LGPL
  • Fokus auf moderner Szenengraph-Technik, Cluster-Unterstützung, Performanz, Multi-Prozessing, Erweiterbarkeitfocus on modern scenegraph-technology, cluster support, performance, multi processing, scalability
  • Programmierspracheprogramming language: C++
  • Status: verlassenabandoned
OpenSG
OpenSG
  • wurde in der Vergangenheit in der AG Wissensbasierte Systeme eingesetzthas been used in the past by the AG Wissensbasierte Systeme at Bielefeld
  • Verteilung $\to$ mehr dazu in der nächsten Veranstaltungmore details regarding the distributed scenegraph technology are given in the next lecture

InstantReality

  • entwickelt von Fraunhofer IGD und ZGDVdeveloped by Fraunhofer IGD and ZGDV
  • WWW: http://www.instantreality.org/
  • Lizenzlicense: kommerziellcommercial
  • Besonderer Schwerpunkt auf AR/Vision-Integration, Scripting, Plattformübergreifend, Hohe Abstraktionsebenefocus on AR and vision integration, scripting, platform independence, high level of abstraction
  • Programmierspracheprogramming languages: X3D, JavaScript, Java
  • wurde bis 2015 im CITEC in Lehre und Forschung eingesetzthas been used at CITEC for research and teaching until 2015
  • Status: verlassenabandoned
InstantReality
InstantReality
InstantReality Architecture
InstantReality ArchitekturArchitecture of InstantReality

Software ArchitekturenSoftware Architectures

3DVIA virtools

  • entwickelt vondeveloped by Dassault Systems
  • WWW: http://www.3ds.com/products/3dvia/3dvia-virtools/
  • Lizenz: kommerzielllicense: commercial
  • Umfangreiche Workflowunterstützung, bis hin zur Distribution auf XBox oder Wii, Web möglich, VRPN Anbindungextensive workflow support, up to the distribution to XBox or Wii, web possible, VRPN connectivity
  • Programmierung: Grafischer Editor, Virtools Scripting Language, SDK erhältlich für Erweiterungenprogramming: graphical editor, Virtools Scripting Language, SDK available for extensions
  • wird häufig auch für empirische Studien eingesetztis often used for empirical studies
  • Seit kurzem nicht mehr erhältlich, jetzt Development has ben moved to3DVIA Studio Pro
  • Status: verlassenabandoned
3DVIA virtools
3DVIA virtools

Aktuelle AR/VR Frameworks und Engines Current AR/VR Frameworks and Engines

Software ArchitekturenSoftware Architectures

Vizard Virtual Reality Toolkit

  • entwickelt vondeveloped by WorldViz
  • WWW: http://www.worldviz.com
  • Lizenzlicense: kommerziellcommercial
  • basiert auf OpenSceneGraph, aus der Forschung heraus entstanden, Scripting, Editor, Avatarebased on OpenSceneGraph, development startet in academic research, scripting, editor, avatars
  • Programmiersprache: Python, C++ für Erweiterungenprogramming languages: python, C++ for extensions
  • wird häufig auch für empirische Studien eingesetztis often used for empirical studies
WorldViz
WorldViz Vizard

Game Engines

  • viele Game Engines sind für VR interessant many game engines are also interesting for VR development: Unreal Engine (+ UDK), Unity3D, Crytek Engine
  • meistens sind VR Frameworks nicht auf letzten Stand der Consumer-Produkte, da der Gaming-Bereich hier die Entwicklung der Geräte und entsprechender Engines vorantreibt often the larger VR engines are not en par with the state-of-the-art of consumer products, as the gaming industry drives the development of new devices and of engines that makes use of the latest technologies
  • Vorteil der Game Engines ist, dass es oft gute Entwicklungswerkzeuge, Dokumentationen und eine sehr breite Community gibt advantage of the game engines is that they often come along with excellent development tools, documentation and a broad community
  • problematisch ist bei den Game Engines meist das Rendering in Stereo (die Entwicklung im Consumer-Bereich kommt uns da entgegen), insbesondere der Betrieb von mehrseitigen Installationen und die Anbindung von Eingabegeräten jenseits von Tastatur, Maus oder Joystick/Gamepad problematic with game engines is often the rendering in stereo (but it is getting better) and in particular the usage with multiple displays and multiple views (often at most HMDs are supported), as well as the support for not-so-common input devices
  • Erweiterungen sind bei fehlendem Source Code schwierig, oft ist dieser nur über hohe Lizenzgebühren zu bekommen extensions can only be developed if the source code is provided and this is often only done after paying (expensive) license fees

Unreal Engine

  • Programmierung über BluePrints oder C++ Programmed using BluePrints or C++
  • Unterstützt alle bekannten AR und VR Plattformen Supports all major AR and VR platforms
  • Dokumentation: umfangreich Documentation: exhaustive
  • Anforderungen an Entwicklerrechner: hoch Requirements for developer computer: high
  • Plattform-Fokus: High-End Platform-Focus: high-end
  • Lizenz: nur bei Auslieferung 5% License: only on shipping 5%
  • Status: aktivactive

Unreal Engine - nDisplay

Unity3D

  • Programmierung über C# (div. Erweiterungen erlauben Alternativen) Programmed using C# (extensions may provide alternatives)
  • Unterstützt alle bekannten AR und VR Plattformen Supports all major AR and VR platforms
  • Dokumentation: umfangreich Documentation: exhaustive
  • Anforderungen an Entwicklerrechner: mittel Requirements for developer computer: middle
  • Plattform-Fokus: breit, vom mobilen Gelegenheitsspiel zu High-End VR Platform-Focus: broad, from mobile casual game to high-end VR
  • Lizenz: 25,- bis 125,- EUR pro Monat und Entwickler License: 25,- to 125,- EUR per month and developer
  • Status: aktivactive

Unity3D - UniCAVE

BlenderCave / BlenderVR

  • Blender ist ein OpenSource 3D Modelling und Rendering ToolBlender is an OpenSource 3D modelling and rendering tool
  • Mit der Blender Game Engine bietet Blender aber auch Möglichkeiten für die Realisierung interaktiver Anwendungen.with Blender Game Engine it is possible to create interactive applications
  • Die 2011 vorgestellte ErweiterungIn 2011 the extension BlenderCAVE soll auch einen Betrieb in einer CAVE ermöglichen (mit Unterstützung von VRPN).has been presented, which should allow for the use of Blender Game Engine to run a CAVE (based on VRPN device support).
  • Zwischenzeitlich wurde das Projekt am Limsi unter dem Namen BlenderVR weiterentwickelt In the meantime, the project was continued at Limsi with the name BlenderVR: http://blendercave.limsi.fr
  • Status: verlassenabandoned
BlenderCAVE by Jorge Gascón Pérez.

BlenderCave / BlenderVR

  • Blender ist ein OpenSource 3D Modelling und Rendering ToolBlender is an OpenSource 3D modelling and rendering tool
  • Mit der Blender Game Engine bietet Blender aber auch Möglichkeiten für die Realisierung interaktiver Anwendungen.with Blender Game Engine it is possible to create interactive applications
  • Die 2011 vorgestellte ErweiterungIn 2011 the extension BlenderCAVE soll auch einen Betrieb in einer CAVE ermöglichen (mit Unterstützung von VRPN).has been presented, which should allow for the use of Blender Game Engine to run a CAVE (based on VRPN device support).
  • Zwischenzeitlich wurde das Projekt am Limsi unter dem Namen BlenderVR weiterentwickelt In the meantime, the project was continued at Limsi with the name BlenderVR: http://blendercave.limsi.fr
  • Status: verlassenabandoned
BlenderCAVE by Jorge Gascón Pérez.

MiddleVR

  • MiddleVR macht(e) 3D Anwendungen fit für Virtual Reality MiddleVR brings/brought 3D applications to Virtual Reality
  • Heute liegt der Fokus auf Unity3D-basierten Anwendungen Today the focus lies on applications based on Unity3D
  • Ähnlich zu VR Juggler bietet es einen reichen Funktionsumfang und ein SDK, um Anwendungen VR-fähig zu machen. Similar to VR Juggler, MiddleVR provides a SDK which simplifies the process of making an application VR-ready.
  • MiddleVR addressiert unterschiedliche Display-Konfigurationen, 3D Interaktionen mit Geräteanbindung, Clustering für verteiltes Rendering und Benutzer Schnittstellen. MiddleVR addresses various display configurations, 3D interaction and device support, clustering for distributed rendering and user interfaces.
MiddleVR
MiddleVR

Zukünftige AR/VR Frameworks Future AR/VR Frameworks

Anforderungen Requirements

  • basiert auf offenen Standards based on open standards
  • ist plattformunabhängig is plattform independent
  • ist leicht erweiterbar is extendible
  • ist leicht zugänglich is easily accessible

Vielversprechend: Web-based VR/AR Promising technique: web-based VR/AR

WebXR ist ein Entwurf für einen Standard für die Nutzung von AR/VR Technologien im Web-Browser (https://immersive-web.github.io/webxr/). WebXR is a draft for a standard for using AR/VR technologies in the web browser (https://immersive-web.github.io/webxr/).

  • nutzt offene Web-Standards uses open web standards
  • ist plattformunabhängig is plattform independent
  • ist leicht erweiterbar is extendible
  • ist leicht zugänglich is easily accessible

Zusammenfassung Summary