[{"@context":"http:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/wiki.edu.vn\/wiki15\/2020\/11\/28\/szenendiagramm-wikipedia\/#BlogPosting","mainEntityOfPage":"https:\/\/wiki.edu.vn\/wiki15\/2020\/11\/28\/szenendiagramm-wikipedia\/","headline":"Szenendiagramm – Wikipedia","name":"Szenendiagramm – Wikipedia","description":"before-content-x4 Architektur von OpenSceneGraph, eine Open-Source-3D-Grafik-API, die eine funktionsreiche und weit verbreitete Implementierung von Szenendiagrammen unterst\u00fctzt. EIN Szenendiagramm ist eine","datePublished":"2020-11-28","dateModified":"2020-11-28","author":{"@type":"Person","@id":"https:\/\/wiki.edu.vn\/wiki15\/author\/lordneo\/#Person","name":"lordneo","url":"https:\/\/wiki.edu.vn\/wiki15\/author\/lordneo\/","image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","height":96,"width":96}},"publisher":{"@type":"Organization","name":"Enzyklop\u00e4die","logo":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":600,"height":60}},"image":{"@type":"ImageObject","@id":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/e\/e2\/Architecture_of_OpenSceneGraph.jpg\/300px-Architecture_of_OpenSceneGraph.jpg","url":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/e\/e2\/Architecture_of_OpenSceneGraph.jpg\/300px-Architecture_of_OpenSceneGraph.jpg","height":"214","width":"300"},"url":"https:\/\/wiki.edu.vn\/wiki15\/2020\/11\/28\/szenendiagramm-wikipedia\/","wordCount":3110,"articleBody":" (adsbygoogle = window.adsbygoogle || []).push({});before-content-x4 Architektur von OpenSceneGraph, eine Open-Source-3D-Grafik-API, die eine funktionsreiche und weit verbreitete Implementierung von Szenendiagrammen unterst\u00fctzt.EIN Szenendiagramm ist eine allgemeine Datenstruktur, die \u00fcblicherweise von vektorbasierten Grafikbearbeitungsanwendungen und modernen Computerspielen verwendet wird und die die logische und h\u00e4ufig r\u00e4umliche Darstellung einer grafischen Szene anordnet. Es ist eine Sammlung von Knoten in einem Diagramm oder einer Baumstruktur. Ein Baumknoten kann viele untergeordnete Knoten haben, aber nur einen einzigen \u00fcbergeordneten Knoten. Der Effekt eines \u00fcbergeordneten Knotens wird auf alle untergeordneten Knoten angewendet. Eine Operation, die f\u00fcr eine Gruppe ausgef\u00fchrt wird, \u00fcbertr\u00e4gt ihre Wirkung automatisch auf alle ihre Mitglieder. In vielen Programmen ist das Zuordnen einer geometrischen Transformationsmatrix (siehe auch Transformation und Matrix) auf jeder Gruppenebene und das Verketten solcher Matrizen eine effiziente und nat\u00fcrliche Methode, um solche Operationen zu verarbeiten. Ein gemeinsames Merkmal ist beispielsweise die M\u00f6glichkeit, verwandte Formen und Objekte zu einem zusammengesetzten Objekt zu gruppieren, das dann so einfach wie ein einzelnes Objekt bearbeitet werden kann. (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4Table of ContentsSzenendiagramme in Grafikbearbeitungswerkzeugen[edit]Szenendiagramme in Spielen und 3D-Anwendungen[edit]Implementierung eines Szenendiagramms[edit]Szenendiagrammoperationen und Versand[edit]Durchquerungen[edit]Szenendiagramme und Bounding Volume Hierarchies (BVHs)[edit]Szenendiagramme und r\u00e4umliche Aufteilung[edit]Standards[edit]PHIGS[edit]X3D[edit]Siehe auch[edit]Verweise[edit]B\u00fccher[edit]Artikel[edit]Externe Links[edit]Szenendiagramme in Grafikbearbeitungswerkzeugen[edit]Bei der vektorbasierten Grafikbearbeitung repr\u00e4sentiert jeder Blattknoten in einem Szenendiagramm eine atomare Einheit des Dokuments, normalerweise eine Form wie eine Ellipse oder einen Bezier-Pfad. Obwohl Formen selbst (insbesondere Pfade) weiter in Knoten wie Spline-Knoten zerlegt werden k\u00f6nnen, ist es praktisch, sich das Szenendiagramm als aus Formen zusammengesetzt vorzustellen, anstatt zu einer niedrigeren Darstellungsebene zu wechseln. (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4Ein weiteres n\u00fctzliches und benutzergesteuertes Knotenkonzept ist die Schicht. Eine Ebene wirkt wie ein transparentes Blatt, auf dem eine beliebige Anzahl von Formen und Formgruppen platziert werden kann. Das Dokument wird dann zu einer Reihe von Ebenen, von denen jede bequem unsichtbar, abgeblendet oder gesperrt werden kann (schreibgesch\u00fctzt). Einige Anwendungen platzieren alle Ebenen in einer linearen Liste, w\u00e4hrend andere Ebenen innerhalb von Ebenen bis zu einer beliebigen Tiefe unterst\u00fctzen.Intern gibt es m\u00f6glicherweise \u00fcberhaupt keinen wirklichen strukturellen Unterschied zwischen Ebenen und Gruppen, da beide nur Knoten eines Szenendiagramms sind. Wenn Unterschiede erforderlich sind, besteht eine allgemeine Typdeklaration in C ++ darin, eine generische Knotenklasse zu erstellen und dann Ebenen und Gruppen als Unterklassen abzuleiten. Ein Sichtbarkeitselement w\u00e4re beispielsweise ein Merkmal einer Ebene, aber nicht unbedingt einer Gruppe.Szenendiagramme in Spielen und 3D-Anwendungen[edit]Szenendiagramme sind n\u00fctzlich f\u00fcr moderne Spiele mit 3D-Grafiken und immer gr\u00f6\u00dferen Welten oder Ebenen. In solchen Anwendungen repr\u00e4sentieren Knoten in einem Szenendiagramm (im Allgemeinen) Entit\u00e4ten oder Objekte in der Szene.Zum Beispiel k\u00f6nnte ein Spiel eine logische Beziehung zwischen einem Ritter und einem Pferd definieren, so dass der Ritter als Erweiterung des Pferdes betrachtet wird. Dem Szenendiagramm w\u00e4re ein “Pferde” -Knoten mit einem “Ritter” -Knoten zugeordnet. (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4Das Szenendiagramm kann auch die r\u00e4umliche sowie die logische Beziehung der verschiedenen Entit\u00e4ten beschreiben: Der Ritter bewegt sich durch den 3D-Raum, w\u00e4hrend sich das Pferd bewegt.In diesen gro\u00dfen Anwendungen spielen die Speicheranforderungen beim Entwerfen eines Szenendiagramms eine wichtige Rolle. Aus diesem Grund verwenden viele gro\u00dfe Szenendiagrammsysteme Geometrieinstanzen, um die Speicherkosten zu senken und die Geschwindigkeit zu erh\u00f6hen. In unserem obigen Beispiel ist jeder Ritter ein separater Szenenknoten, aber die grafische Darstellung des Ritters (bestehend aus einem 3D-Netz, Texturen, Materialien und Shadern) wird instanziiert. Dies bedeutet, dass nur eine einzige Kopie der Daten aufbewahrt wird, auf die dann alle Ritterknoten im Szenendiagramm verweisen. Dies erm\u00f6glicht ein reduziertes Speicherbudget und eine h\u00f6here Geschwindigkeit, da beim Erstellen eines neuen Ritterknotens die Erscheinungsdaten nicht dupliziert werden m\u00fcssen.Implementierung eines Szenendiagramms[edit]Die einfachste Form eines Szenendiagramms verwendet ein Array oder eine verkn\u00fcpfte Listendatenstruktur, und das Anzeigen seiner Formen besteht einfach darin, die Knoten einzeln linear zu iterieren. Andere h\u00e4ufig verwendete Vorg\u00e4nge, z. B. das \u00dcberpr\u00fcfen, welche Form den Mauszeiger schneidet, werden ebenfalls \u00fcber lineare Suchen ausgef\u00fchrt. F\u00fcr kleine Szenendiagramme reicht dies in der Regel aus.Szenendiagrammoperationen und Versand[edit]Das Anwenden einer Operation auf ein Szenendiagramm erfordert eine Methode zum Versenden einer Operation basierend auf dem Knotentyp. Beispielsweise w\u00fcrde in einer Renderoperation ein Transformationsgruppenknoten seine Transformation durch Matrixmultiplikation, Vektorverschiebung, Quaternionen oder Eulerwinkel akkumulieren. Danach sendet ein Blattknoten das Objekt zum Rendern an den Renderer. Einige Implementierungen rendern das Objekt m\u00f6glicherweise direkt, wodurch die zugrunde liegende Rendering-API aufgerufen wird, z. B. DirectX oder OpenGL. Da die zugrunde liegende Implementierung der Rendering-API normalerweise nicht portierbar ist, k\u00f6nnen stattdessen das Szenendiagramm und die Rendering-Systeme getrennt werden. Um diese Art des Versands zu erreichen, k\u00f6nnen verschiedene Ans\u00e4tze verfolgt werden.In objektorientierten Sprachen wie C ++ kann dies leicht durch virtuelle Funktionen erreicht werden, wobei jede eine Operation darstellt, die auf einem Knoten ausgef\u00fchrt werden kann. Virtuelle Funktionen sind einfach zu schreiben, aber es ist normalerweise unm\u00f6glich, Knoten neue Operationen hinzuzuf\u00fcgen, ohne auf den Quellcode zuzugreifen. Alternativ kann die Besuchermuster kann verwendet werden. Dies hat einen \u00e4hnlichen Nachteil, da es \u00e4hnlich schwierig ist, neue Knotentypen hinzuzuf\u00fcgen.Andere Techniken beinhalten die Verwendung von RTTI (Run-Time Type Information). Die Operation kann als Klasse realisiert werden, die an den aktuellen Knoten \u00fcbergeben wird. Anschlie\u00dfend wird der Knotentyp mithilfe von RTTI abgefragt und die korrekte Operation in einer Reihe von R\u00fcckrufen oder Funktoren nachgeschlagen. Dies erfordert, dass die Zuordnung von Typen zu R\u00fcckrufen oder Funktoren zur Laufzeit initialisiert wird, bietet jedoch mehr Flexibilit\u00e4t, Geschwindigkeit und Erweiterbarkeit.Es gibt Variationen dieser Techniken, und neue Methoden k\u00f6nnen zus\u00e4tzliche Vorteile bieten. Eine Alternative ist die Neuerstellung von Szenendiagrammen, bei der das Szenendiagramm f\u00fcr jede der ausgef\u00fchrten Operationen neu erstellt wird. Dies kann jedoch sehr langsam sein, erzeugt jedoch ein hochoptimiertes Szenendiagramm. Es zeigt, dass eine gute Implementierung eines Szenendiagramms stark von der Anwendung abh\u00e4ngt, in der es verwendet wird.Durchquerungen[edit]Durchquerungen sind der Schl\u00fcssel zur Anwendung von Operationen auf Szenendiagramme. Eine Durchquerung besteht im Allgemeinen darin, an einem beliebigen Knoten (h\u00e4ufig der Wurzel des Szenendiagramms) zu beginnen, die Operation (en) anzuwenden (h\u00e4ufig werden die Aktualisierungs- und Rendering-Operationen nacheinander angewendet) und das Szenendiagramm (Baum) rekursiv nach unten zu bewegen ) zu den untergeordneten Knoten, bis ein Blattknoten erreicht ist. Zu diesem Zeitpunkt durchlaufen viele Szenendiagramm-Engines dann den Baum zur\u00fcck und wenden eine \u00e4hnliche Operation an. Stellen Sie sich beispielsweise eine Renderoperation vor, die Transformationen ber\u00fccksichtigt: W\u00e4hrend Sie die Szenendiagrammhierarchie rekursiv durchlaufen, wird eine Vor-Renderoperation aufgerufen. Wenn der Knoten ein Transformationsknoten ist, f\u00fcgt er der aktuellen Transformationsmatrix eine eigene Transformation hinzu. Sobald die Operation das Durchlaufen aller untergeordneten Knoten eines Knotens abgeschlossen hat, ruft sie die Post-Render-Operation des Knotens auf, damit der Transformationsknoten die Transformation r\u00fcckg\u00e4ngig machen kann. Dieser Ansatz reduziert die erforderliche Menge an Matrixmultiplikation drastisch.[citation needed]Einige Szenendiagrammoperationen sind tats\u00e4chlich effizienter, wenn Knoten in einer anderen Reihenfolge durchlaufen werden. Hier implementieren einige Systeme die Neuerstellung von Szenendiagrammen, um das Szenendiagramm in ein einfacher zu analysierendes Format oder einen Baum zu ordnen.In 2D-F\u00e4llen rendern sich Szenendiagramme normalerweise selbst, indem sie am Wurzelknoten des Baums beginnen und dann die untergeordneten Knoten rekursiv zeichnen. Die Bl\u00e4tter des Baumes repr\u00e4sentieren die Objekte im Vordergrund. Da das Zeichnen von hinten nach vorne erfolgt, wobei n\u00e4here Objekte einfach weiter entfernte Objekte \u00fcberschreiben, wird der Prozess als Verwendung des Painter-Algorithmus bezeichnet. In 3D-Systemen, in denen h\u00e4ufig Tiefenpuffer verwendet werden, ist es effizienter, zuerst die n\u00e4chstgelegenen Objekte zu zeichnen, da weiter entfernte Objekte h\u00e4ufig nur in der Tiefe getestet und nicht tats\u00e4chlich gerendert werden m\u00fcssen, da sie von n\u00e4heren Objekten verdeckt werden.Szenendiagramme und Bounding Volume Hierarchies (BVHs)[edit]Bounding Volume Hierarchies (BVHs) sind f\u00fcr zahlreiche Aufgaben n\u00fctzlich – einschlie\u00dflich effizientes Keulen und Beschleunigen der Kollisionserkennung zwischen Objekten. Ein BVH ist eine r\u00e4umliche Struktur, muss jedoch die Geometrie nicht partitionieren (siehe r\u00e4umliche Partitionierung unten).Ein BVH ist ein Baum von Begrenzungsvolumina (h\u00e4ufig Kugeln, achsenausgerichtete Begrenzungsrahmen oder orientierte Begrenzungsrahmen). Am Ende der Hierarchie ist die Gr\u00f6\u00dfe des Volumens gerade gro\u00df genug, um ein einzelnes Objekt fest zu erfassen (oder m\u00f6glicherweise sogar einen kleineren Teil eines Objekts in hochaufl\u00f6senden BVHs). Wenn man die Hierarchie aufsteigt, hat jeder Knoten sein eigenes Volume, das alle darunter liegenden Volumes eng umfasst. An der Wurzel des Baums befindet sich ein Volume, das alle Volumes im Baum (die gesamte Szene) umfasst.BVHs sind n\u00fctzlich, um die Kollisionserkennung zwischen Objekten zu beschleunigen. Wenn das Begrenzungsvolumen eines Objekts kein h\u00f6heres Volumen im Baum schneidet, kann es kein Objekt unterhalb dieses Knotens schneiden (daher werden alle sehr schnell zur\u00fcckgewiesen).Es gibt einige \u00c4hnlichkeiten zwischen BVHs und Szenendiagrammen. Ein Szenendiagramm kann leicht angepasst werden, um einen BVH einzuschlie\u00dfen \/ zu werden – wenn jedem Knoten ein Volume zugeordnet ist oder ein speziell erstellter “gebundener Knoten” an einer geeigneten Stelle in der Hierarchie hinzugef\u00fcgt wurde. Dies ist m\u00f6glicherweise nicht die typische Ansicht eines Szenendiagramms, aber die Aufnahme eines BVH in ein Szenendiagramm bietet Vorteile.Szenendiagramme und r\u00e4umliche Aufteilung[edit]Eine effektive M\u00f6glichkeit zum Kombinieren von r\u00e4umlicher Partitionierung und Szenendiagrammen besteht darin, einen Szenenblattknoten zu erstellen, der die r\u00e4umlichen Partitionierungsdaten enth\u00e4lt.[clarification needed] Dies kann die Recheneffizienz des Renderns erh\u00f6hen.Geodaten sind normalerweise statisch und enthalten im Allgemeinen nicht bewegte Szenendaten in einer partitionierten Form.[clarification needed] Einige Systeme verf\u00fcgen m\u00f6glicherweise \u00fcber separate Systeme und deren Darstellung. Dies ist in Ordnung und es gibt keine wirklichen Vorteile f\u00fcr beide Methoden. Insbesondere ist es schlecht, das Szenendiagramm im r\u00e4umlichen Partitionierungssystem zu haben, da das Szenendiagramm besser als das gr\u00f6\u00dfere System f\u00fcr die r\u00e4umliche Partitionierung angesehen wird.[neutrality is disputed]Sehr gro\u00dfe Zeichnungen oder Szenendiagramme, die ausschlie\u00dflich zur Laufzeit erstellt werden (wie dies bei Raytracing-Rendering-Programmen der Fall ist), erfordern eine automatisiertere Definition von Gruppenknoten. Ein Raytracer nimmt beispielsweise eine Szenenbeschreibung eines 3D-Modells und erstellt eine interne Darstellung, die seine einzelnen Teile in Begrenzungsrahmen (auch Begrenzungsplatten genannt) aufteilt. Diese Felder sind hierarchisch gruppiert, damit Strahlschnitt-Tests (als Teil der Sichtbarkeitsbestimmung) effizient berechnet werden k\u00f6nnen. Ein Gruppenfeld, das beispielsweise keinen Augenstrahl schneidet, kann das Testen eines seiner Mitglieder vollst\u00e4ndig \u00fcberspringen.Eine \u00e4hnliche Effizienz gilt auch f\u00fcr 2D-Anwendungen. Wenn der Benutzer ein Dokument so vergr\u00f6\u00dfert hat, dass nur ein Teil davon auf seinem Computerbildschirm sichtbar ist, und dann einen Bildlauf durchf\u00fchrt, ist es hilfreich, einen Begrenzungsrahmen (oder in diesem Fall ein Begrenzungsrechteckschema) zu verwenden, um schnell zu bestimmen, welche Szene Diagrammelemente sind sichtbar und m\u00fcssen daher tats\u00e4chlich gezeichnet werden.Abh\u00e4ngig von den Einzelheiten der Zeichenleistung der Anwendung kann ein gro\u00dfer Teil des Designs des Szenendiagramms durch \u00dcberlegungen zur Rendereffizienz beeinflusst werden. In 3D-Videospielen wie Quake werden BSP-B\u00e4ume (Binary Space Partitioning) stark bevorzugt, um Sichtbarkeitstests zu minimieren. Die Berechnung von BSP-B\u00e4umen aus Entwurfsszenendiagrammen dauert jedoch sehr lange und muss neu berechnet werden, wenn sich der Entwurfsszenendiagramm \u00e4ndert, sodass die Ebenen in der Regel statisch bleiben und dynamische Zeichen im r\u00e4umlichen Partitionierungsschema im Allgemeinen nicht ber\u00fccksichtigt werden.Szenendiagramme f\u00fcr dichte regul\u00e4re Objekte wie H\u00f6henfelder und Polygonnetze verwenden in der Regel Quadtrees und Octrees, die spezielle Varianten einer 3D-Begrenzungsrahmenhierarchie sind. Da ein H\u00f6henfeld selbst ein Boxvolumen belegt, ist es effizient und nat\u00fcrlich, diese Box rekursiv in acht Subboxen (daher das “Okt” in Oktree) zu unterteilen, bis einzelne H\u00f6henfeldelemente erreicht sind. Ein Quadtree ist einfach ein 2D-Octree.Standards[edit]PHIGS[edit]PHIGS war die erste kommerzielle Szenendiagrammspezifikation und wurde 1988 zum ANSI-Standard. Unterschiedliche Implementierungen wurden von Unix-Hardwareanbietern bereitgestellt. Das HOOPS 3D-Grafiksystem scheint die erste kommerzielle Szenendiagrammbibliothek gewesen zu sein, die von einem einzelnen Softwareanbieter bereitgestellt wurde. Es wurde f\u00fcr die Ausf\u00fchrung auf unterschiedlichen 2D- und 3D-Schnittstellen auf niedrigerer Ebene entwickelt. Die erste gro\u00dfe Produktionsversion (v3.0) wurde 1991 fertiggestellt. Kurz danach ver\u00f6ffentlichte Silicon Graphics IRIS Inventor 1.0 (1992), ein Szenendiagramm, auf dem aufgebaut wurde oben auf der IRIS GL 3D API. 1994 folgte Open Inventor, ein tragbares Szenendiagramm, das auf OpenGL aufbaut. Weitere 3D-Szenendiagrammbibliotheken finden Sie unter Kategorie: 3D-Szenegraph-APIs.X3D[edit]X3D ist ein lizenzfreies Open-Standards-Dateiformat und eine Laufzeitarchitektur zur Darstellung und Kommunikation von 3D-Szenen und -Objekten mithilfe von XML. Es handelt sich um einen ISO-ratifizierten Standard, der ein System zum Speichern, Abrufen und Wiedergeben von in Anwendungen eingebetteten Echtzeit-Grafikinhalten in einer offenen Architektur zur Unterst\u00fctzung einer Vielzahl von Dom\u00e4nen und Benutzerszenarien bereitstellt.Siehe auch[edit]Verweise[edit]B\u00fccher[edit]Leler, Wm und Merry, Jim (1996) 3D mit HOOPS, Addison-WesleyWernecke, Josie (1994) Der Inventor-Mentor: Programmieren objektorientierter 3D-Grafiken mit Open Inventor, Addison-Wesley, ISBN 0-201-62495-8 (Release 2)Artikel[edit]Bar-Zeev, Avi. “Scenegraphs: Vergangenheit, Gegenwart und Zukunft”Carey, Rikk und Bell, Gavin (1997). “Das kommentierte VRML 97-Referenzhandbuch”James H. Clark (1976). “Hierarchische geometrische Modelle f\u00fcr Algorithmen f\u00fcr sichtbare Oberfl\u00e4chen”. Mitteilungen der ACM. 19 (10): 547\u2013554. doi:10.1145 \/ 360349.360354.Helman, Jim; Rohlf, John (1994). “IRIS Performer: Ein leistungsstarkes Multiprocessing Toolkit f\u00fcr Echtzeit-3D-Grafiken”PEXTimes – “Inoffiziell die PHIGS-Erweiterung auf X. Offiziell war PEX kein Akronym.”Strauss, Paul (1993). “IRIS Inventor, ein 3D-Grafik-Toolkit”Externe Links[edit] (adsbygoogle = window.adsbygoogle || []).push({});after-content-x4"},{"@context":"http:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki15\/#breadcrumbitem","name":"Enzyklop\u00e4die"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki15\/2020\/11\/28\/szenendiagramm-wikipedia\/#breadcrumbitem","name":"Szenendiagramm – Wikipedia"}}]}]