Szenengraph

Szenengraph

Ein Szenengraph ist eine Datenstruktur, die häufig bei der Entwicklung computergrafischer Anwendungen eingesetzt wird. Es handelt sich um eine objektorientierte Datenstruktur, mit der die logische, in vielen Fällen auch die räumliche Anordnung der darzustellenden zwei- oder dreidimensionalen Szene beschrieben wird.

Der Begriff Szenengraph ist nur unscharf definiert. Dies liegt daran, dass konkrete Szenengraphen in der Regel anwendungsgetrieben entwickelt werden. Die Programmierer nutzen also die Grundidee, passen sie aber für die spezifischen Erfordernisse der Anwendung an. Feste Regeln, welche Funktionen ein Szenengraph erfüllen muss, gibt es daher nicht.

Hierarchische Modellierung

Aus graphentheoretischer Sicht ist ein Szenengraph ein zusammenhängender einseitig gerichteter Graph, der keine Kreise aufweist (oftmals auch ein Baum), dessen Wurzelknoten die Gesamtszene (das „Universum“) enthält. Dieser Wurzel untergeordnet sind Kindknoten, die einzelne Objekte der Szene enthalten. Diese Knoten können wiederum Wurzel eines weiteren Baumes, also einer weiteren Hierarchie von Objekten sein.

Dieser Ansatz ermöglicht die hierarchische Modellierung der Objekte in einer Szene. Jeder Knoten des Szenengraphen hat üblicherweise eine Transformationsmatrix. Bei Manipulation dieser Matrix wird das zugehörige Objekt selbst, aber auch die Objekte aller untergeordneten Knoten transformiert. Man unterscheidet in diesem Fall zwischen Objektkoordinaten (Koordinaten eines Objektes bezüglich des übergeordneten Objektes) und Weltkoordinaten (Koordinaten eines Objektes bezüglich des Ursprungs des Universums - der Wurzel des Szenengraphen). Durch diese hierarchische Sicht wird der Aufbau und das Manipulieren einer Szene deutlich vereinfacht. Man muss nicht jedes Einzelteil eines Objektes einzeln transformieren, sondern transformiert einfach die Gesamtheit aller Einzelteile.

Als Beispiel mag die Modellierung eines Autos mit vier Rädern dienen. Ein Knoten im Szenengraph repräsentiert das Objekt Auto. Dieser Knoten hat vier Kindknoten, die jeweils ein Objekt vom Typ Rad enthalten. Wird die Position oder die Lage des Auto-Knotens verändert, so wirkt sich die Veränderung auch auf alle Kindknoten, also in diesem Fall die Räder, aus. Eine manuelle Neuberechnung der Position der Räder ist also nicht erforderlich.

Bounding-Volume-Hierarchien

Oft werden Szenengraphen eingesetzt, um die Szenen einer Anwendung effizienter zu rendern oder um Berechnungen wie Kollisionsabfragen zu beschleunigen. Dazu wird zusammen mit einem Szenengraphen eine Hierarchie aus Bounding Volumes mitgeführt. Jedem Knoten ist also zusätzlich ein Bounding Volume zugeordnet, das die räumliche Ausdehnung des Knotens samt Kindknoten anzeigt. Als Bounding Volumes werden einfache geometrische Körper wie achsenparallele Quader (AABBs), am Objekt ausgerichtete Quader (OBBs) oder Kugeln verwendet.

Mit Hilfe der Bounding Volumes werden dann vor dem Rendervorgang alle unsichtbaren (also nicht im View Frustum liegenden) Elemente bestimmt. Wenn ein Knoten bereits als nicht sichtbar klassifiziert wurde, ist eine Überprüfung seiner Kindknoten nicht mehr notwendig. So kann mit geringem Aufwand die Menge der Geometrie, die potentiell sichtbar ist und darum gerendert wird, verringert werden.

Bekannte Szenengraphsysteme



Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • jMonkeyEngine — Maintainer Erlend Sogge Heggen, Skye Book, Kirill Vainer, Normen Hansen Aktuelle Version 2.1 Stable (9. März 2011) Aktuelle Vorabversion 3.0 Beta 1 (22. Oktober 2011) Betriebssystem Plattformübergrei …   Deutsch Wikipedia

  • J3D — Java 3D ist eine Klassenbibliothek von Java Klassen zur Erzeugung, Manipulation und Darstellung dreidimensionaler Grafiken innerhalb von Java Anwendungsprogrammen und Applets. Mit Java 3D können also durch ein Java Programm dreidimensionale… …   Deutsch Wikipedia

  • JAVA-3D — ist eine Klassenbibliothek von Java Klassen zur Erzeugung, Manipulation und Darstellung dreidimensionaler Grafiken innerhalb von Java Anwendungsprogrammen und Applets. Mit Java 3D können also durch ein Java Programm dreidimensionale Objekte… …   Deutsch Wikipedia

  • Java3D — Java 3D ist eine Klassenbibliothek von Java Klassen zur Erzeugung, Manipulation und Darstellung dreidimensionaler Grafiken innerhalb von Java Anwendungsprogrammen und Applets. Mit Java 3D können also durch ein Java Programm dreidimensionale… …   Deutsch Wikipedia

  • BIFS — Binary Format for Scenes (BIFS) ist eine auf VRML97 basierende und in MPEG 4 part 11 (ISO/IEC 14496 11, „Szenenbeschreibung und Anwendungs Engine“) standardisierte Beschreibungssprache für zwei und dreidimensionale multimediale audiovisuelle… …   Deutsch Wikipedia

  • ISO/IEC 9592 — PHIGS (Programmer s Hierarchical Interactive Graphics System) ist der ISO Standard (ISO/IEC 9592[1]) für 3D Computergrafik, der im Jahr 1988 verabschiedet wurde. PHIGS definiert ein Application Programming Interface, mit dem der hierarchische… …   Deutsch Wikipedia

  • IrrEdit — Irrlicht Engine Entwickler: Nikolaus Gebhardt Aktuelle Version: 1.5.0 (15. Dezember 2008) Betriebssystem: Plattformunabhängig Kategorie …   Deutsch Wikipedia

  • IrrKlang — Irrlicht Engine Entwickler: Nikolaus Gebhardt Aktuelle Version: 1.5.0 (15. Dezember 2008) Betriebssystem: Plattformunabhängig Kategorie …   Deutsch Wikipedia

  • IrrXML — Irrlicht Engine Entwickler: Nikolaus Gebhardt Aktuelle Version: 1.5.0 (15. Dezember 2008) Betriebssystem: Plattformunabhängig Kategorie …   Deutsch Wikipedia

  • Irrlicht3D — Irrlicht Engine Entwickler: Nikolaus Gebhardt Aktuelle Version: 1.5.0 (15. Dezember 2008) Betriebssystem: Plattformunabhängig Kategorie …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”