Virtuelle Realität

Software Architekturen

Dr. Thies Pfeiffer

AG Wissensbasierte Systeme, Technische Fakultät, Universität Bielefeld

Termin: Freitags, 10:15 Uhr

Raum: S2-121

Überblick

Inhalte der letzten Veranstaltung: Immersion und Präsenz

  • Versuch von Begriffsdefinitionen
  • Verfahren zur Messung von Präsenz und Immersion

Überblick

Inhalte dieser Veranstaltung

  • Software Architekturen für Virtuelle Umgebungen
    • Anforderungen an eine VR Architektur
    • Wesentliche Meilensteine der VR Architekturentwicklung
    • Aktuelle Architekturen

Anforderungen an eine VR Architektur

Anforderungen an eine VR Architektur

Überblick

  • Eine VR Architektur muss als Basis-Fähigkeit
    • ein Framework zur Generierung der Inhalte bieten (Fokus liegt meistens auf graphischen Inhalten),
    • unterschiedliche Display-Geräte einheitlich ansteuern können,
    • mehrere Eingabegeräte möglichst einheitlich anbinden können und
    • mindestens ein Model für die Integration mit der Anwendungslogik anbieten.
  • Wichtige optionale Eigenschaften sind
    • Integrationsmöglichkeiten in existierende Workflows,
    • Unterstützung von Austauschformaten,
    • Werkzeugunterstützung für den Erstellungsprozess und
    • Rapid-Prototyping Fähigkeiten
      • Scripting
      • Online Scripting
      • Live-Debugging

Anbindung der Display Geräte

  • Unterstützung für verschiedene Packaging Formate
  • Unterstützung für aktive und passive Stereoprojektionen (z.B. Framelocking)
  • Verschiedene Optimierungsverfahren um Hardware bestmöglich ausnutzen zu können (häufig basierend auf Szenengraph)
  • Unterstützung von Nebenläufigkeit (während die Hardware einen Frame berechnet, sollte mind. ein neuer Frame schon vorbereitet werden können)
  • Unterstützung unterschiedlicher Renderingverfahren (Ray-Tracing, Volume Rendering, etc.)
  • Grafikschnittstelle häufig: OpenGL, seltener Direct X

Modelle für die Integration der Anwendungslogik

  • "Immediate Mode" - Anwendung erhält direkt den OpenGL Context und zeichnet die Objekte
  • Gemeinsame Datenstruktur: z.B. Szenengraph
    • Anwendung und Rendering greifen sequentiell auf eine gemeinsame Datenstruktur zu
    • Anwendung und Rendering greifen gleichzeitig auf eine geschützte Datenstruktur zu
    • Datenstruktur wird nach Durchgang der Anwendungsschleife gespiegelt, parallele Haltung mit Synchronisation der Datenstruktur

Anbindung von Eingabegeräten

Software Architekturen

  • VR Juggler
  • SGI Performer
  • OpenSceneGraph
  • Avango / Avango NG
  • OpenSG
  • InstantReality
  • Vizard
  • Virtools
  • Game Engines (Unreal, Crytek, Unity)

Software Architekturen

SGI OpenGL Performer / IRIS Performer

  • 1991 von Entwicklern des SGI Open Inventors als performante Alternative entworfen
  • WWW: http://oss.sgi.com/projects/performer/
  • Lizenz: Kommerziell, Entwicklung eingestellt
  • Programmiersprache: C++
  • Fokus: Multi-Prozessing, Multi-Pipline (mehrere Grafiksysteme), Trennung von Anwendung und Rendering, keine Geräte-Anbindung
SGI Performer
SGI Performer - Logo und Grafik von der ehemaligen Produktseite
Bild von 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).

Software Architekturen

VR Juggler

  • Existiert seit 1997, gestartet von Dr. Carolina Cruz-Neira (Stichwort: CAVE)
  • WWW: http://vrjuggler.org/
  • Lizenz: LGPL
  • Programmiersprachen: 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.
Architektur von VR Juggler
Überblick der Architektur von VR Juggler
Bild von http://vrjuggler.org, Januar 2012
  • Streng genommen müsste es also VR Juggler + X heißen

Software Architekturen

Avango

  • Entwickelt von der GMD, jetzt Fraunhofer IAIS
  • WWW: http://sourceforge.net/projects/avango/
  • Lizenz: LGPL (aber auf Performer basierend!), Entwicklung eingestellt/eingeschlafen
  • basiert auf SGI Performer, Erweiterung um Skripting (Scheme), verteilte Szenengraphen, Datenfluß-Netze
  • Programmiersprache: C++, Scheme (LISP Dialekt)
  • wurde in der Vergangenheit in de AG Wissensbasierte Systeme eingesetzt
Architektur von Avango
Überblick der Architektur von Avango
  • Früher hieß das Framework auch einmal Avocado

Software Architekturen

Avango NG

  • setzt die Konzepte von Avango mit OpenSceneGraph fort
  • WWW: http://www.avango.org/
  • Lizenz: LGPL
  • basiert auf OpenSceneGraph, Erweiterung um Skripting, verteilte Szenengraphen, Datenfluß-Netze, Anbindung an VRPN
  • Programmiersprache: C++, Python
Avango NG
Avango NG

Software Architekturen

OpenSceneGraph

  • basiert auf den Konzepten von Performer
  • 1998 als Projekt von Don Burns gestartet
  • WWW: http://www.openscenegraph.org/
  • Lizenz: OpenSceneGraph Public License basiertend auf LGPL
  • Unterstützt viele Plattformen, mehrere Skriptsprachen, viele Dateiformate, Support durch eine Firma
  • Programmiersprache: C++, Python
OpenSceneGraph
OpenSceneGraph

Software Architekturen

OpenSG

  • 1999 unter anderem von Dirk Reiners gestartet
  • damals als Alternative zum eingestellten Fahrenheit
  • WWW: http://www.opensg.org/
  • wurde 2001 bis 2003 im Projekt OpenSG PLUS in Deutschland gefördert
  • Lizenz: LGPL
  • Fokus auf moderner Szenengraph-Technik, Cluster-Unterstützung, Performanz, Multi-Prozessing, Erweiterbarkeit
  • Programmiersprache: C++
  • wurde in der Vergangenheit in der AG Wissensbasierte Systeme eingesetzt
OpenSG
OpenSG
  • Verteilung $\to$ mehr dazu in der nächsten Veranstaltung

Software Architekturen

InstantReality

  • entwickelt von Fraunhofer IGD und ZGDV
  • WWW: http://www.instantreality.org/
  • Lizenz: kommerziell
  • Besonderer Schwerpunkt auf AR/Vision-Integration, Scripting, Plattformübergreifend, Hohe Abstraktionsebene
  • Programmiersprache: X3D, JavaScript, Java
  • wird in der AG Wissensbasierte Systeme in Lehre und Forschung eingesetzt
InstantReality
InstantReality
InstantReality Architecture
InstantReality Architektur

Software Architekturen

Vizard Virtual Reality Toolkit

  • entwickelt von WorldViz
  • WWW: http://www.worldviz.com
  • Lizenz: kommerziell
  • basiert auf OpenSceneGraph, aus der Forschung heraus entstanden, Scripting, Editor, Avatare
  • Programmiersprache: Python, C++ für Erweiterungen
  • wird häufig auch für empirische Studien eingesetzt
WorldViz
WorldViz Vizard

Software Architekturen

3DVIA virtools

  • entwickelt von Dassault Systems
  • WWW: http://www.3ds.com/products/3dvia/3dvia-virtools/
  • Lizenz: kommerziell
  • Umfangreiche Workflowunterstützung, bis hin zur Distribution auf XBox oder Wii, Web möglich, VRPN Anbindung
  • Programmierung: Grafischer Editor, Virtools Scripting Language, SDK erhältlich für Erweiterungen
  • wird häufig auch für empirische Studien eingesetzt
3DVIA virtools
3DVIA virtools

Software Architekturen

Game Engines

  • viele Game Engines sind für VR interessant: 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
  • Vorteil der Game Engines ist, dass es oft gute Entwicklungswerkzeuge, Dokumentationen und eine sehr breite Community gibt
  • 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
  • Erweiterungen sind bei fehlendem Source Code schwierig, oft ist dieser nur über hohe Lizenzgebühren zu bekommen

Zusammenfassung

Zusammenfassung

Inhalte dieser Veranstaltung

  • Software Architekturen
    • Anforderungen an eine VR Architektur
    • Wesentliche Meilensteine der VR Architekturentwicklung
    • Aktuelle Architekturen
  • Von den vorgestellten Architekturen sind OpenSG und OpenSceneGraph die häufigsten Szenengraph-APIs.
  • Als komplettes VR Framework wird häufig VR Juggler eingesetzt.

Ausblick

Verteilte VR Systeme

  • Herausforderungen
  • Systeme