Virtuelle RealitätVirtual Reality

Software ArchitekturenSoftware Architectures

Dr. Thies Pfeiffer

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

Termin:Freitags, 10:15 Uhr

Raum: CITEC Auditorium

Schedule:Fridays, 10:15 a.m.

Room: CITEC Auditorium

ÜberblickOverview

Inhalte der letzten Veranstaltung: ManipulationTopic of the previous lecture: Manipulation

  • Manipulationsverfahren für die Virtuelle RealitätManipulation in Virtual Reality
    • Kanonisch oder AnwendungsspezifischCanonical and application specific approaches
    • Parameter, Probleme, Eigenschaften der GeräteParameters, problems, properties of the devices
    • Manipulationsverfahren für kanonische ManipulationenApproaches for canonical manipulations

ÜberblickOverview

Inhalte dieser VeranstaltungTopics of this lecture

  • Software Architekturen für Virtuelle UmgebungenSoftware architectures for virtual environments
    • Anforderungen an eine VR ArchitekturRequirements for a virtual reality architecture
    • Wesentliche Meilensteine der VR ArchitekturentwicklungImportant milestones in the development of virtual reality architectures
    • Aktuelle ArchitekturenCurrent architectures

Anforderungen an eine VR ArchitekturRequirements for a virtual reality architecture

Anforderungen an eine VR ArchitekturRequirements for a virtual reality architecture

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
    • ...

Anforderungen an eine VR ArchitekturRequirements for a virtual reality architecture

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

Anforderungen an eine VR ArchitekturRequirements for a virtual reality architecture

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

Details

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

Details

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

Details

Anbindung von EingabegerätenConnection of input devices

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

Software ArchitekturenSoftware Architectures

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

Software ArchitekturenSoftware Architectures

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
  • WWW: http://oss.sgi.com/projects/performer/
  • 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
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)

Software ArchitekturenSoftware Architectures

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.
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

Software ArchitekturenSoftware Architectures

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
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

Software ArchitekturenSoftware Architectures

Avango NG

  • setzt die Konzepte von Avango mit OpenSceneGraph fortcontinues the concepts introduced with Avango based on OpenSceneGraph
  • WWW: http://www.avango.org/
  • 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
Avango NG
Avango NG

Software ArchitekturenSoftware Architectures

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

Software ArchitekturenSoftware Architectures

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: http://www.opensg.org/
  • 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++
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

Software ArchitekturenSoftware Architectures

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
  • wird im CITEC in Lehre und Forschung eingesetztis used for research and teaching at CITEC
InstantReality
InstantReality
InstantReality Architecture
InstantReality ArchitekturArchitecture of InstantReality

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

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
3DVIA virtools
3DVIA virtools

Software ArchitekturenSoftware Architectures

Game Engines

  • viele Game Engines sind für VR interessantmany 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 vorantreibtoften 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 gibtadvantage 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/Gamepadproblematic 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 bekommenextensions can only be developed if the source code is provided and this is often only done after paying (expensive) license fees

Software ArchitekturenSoftware Architectures

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).
  • Mittlerweile wird das Projekt am Limsi unter dem Namen BlenderVR weiterentwickeltIn the meantime, the project is continued at Limsi with the name BlenderVR: http://blendercave.limsi.fr
BlenderCAVE by Jorge Gascón Pérez.

Software ArchitekturenSoftware Architectures

MiddleVR

  • MiddleVR macht 3D Anwendungen fit für Virtual RealityMiddleVR brings 3D applications to Virtual Reality
  • Ä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

ZusammenfassungSummary

ZusammenfassungSummary

Inhalte dieser VeranstaltungTopics of this lecture

  • Software Architekturensoftware architectures
    • Anforderungen an eine VR Architekturrequirements for a virtual reality architecture
    • Wesentliche Meilensteine der VR Architekturentwicklungimportant milestones in the developement of virtual reality architectures
    • Aktuelle Architekturencurrent architectures
  • Von den vorgestellten Architekturen waren OpenSG und OpenSceneGraph bis vor kurzem die häufigsten Szenengraph-APIs in der VR-Forschung. Nach und nach finden sich aber immer häufiger Game Engines, zumindest für einfache VR Installationen. of the presented architectures, OpenSG and OpenSceneGraph have been used the most in VR research, until the recent advent of game engines - at least for small-scale VR installations
  • Als komplettes VR Framework wird häufig VR Juggler eingesetzt. as full VR framework VR Juggler is used quite often

AusblickOutlook

Verteilte VR SystemeDistributed VR Systems

  • HerausforderungenChallenges
  • SystemeSystems