Nicht eingeloggt
Registrieren

Grundlagen: Was ist ein Node?

Grundlagen: Was ist ein Node?

Eine sehr gute Frage, Ich werde versuchen sie zu beantworten. Doch als erstes werden wir auf die grundlegenden Dinge etwas eingehen. Keine Angst, das wird jetzt keine Doktorarbeit. Du solltest aber schon mal mit dem UEd gearbeitet haben, um alles nachvollziehen zu können. Ich fange ganz unten an, bei den.....

 




Vertex

Das sind die Eckpunkte einer Form im 3Dimensionalen Raum des Editors. Jeder dieser Eckpunkt besitzt die Koordinaten X,Y und Z, die ihre genaue Position in diesem 3Dimensionalen Raum angibt. Aus diesen Eckpunkten ergeben sich die.....



Polygone

In dem Bild rechts, siehst du ein solches Polygon, gebildet aus 4 Vertex. Das muß aber nicht immer so sein, sie können auch aus noch mehr Vertexe bestehen. Was aber immer gleich ist, sie sind nur 2Dimensional. Das ist auch der Grund weshalb der "BSP Based Terrain-Builder" nur Polygone verwendet, die aus 3 Eckpunkten bestehen. Wieso?....Nun, du möchtest doch Berge und Hügel in deiner Map und um diese zu bekommen, ziehst du doch Eckpunkte nach oben. Zieht man bei einem Polygon mit 4 Eckpunkten einen Eckpunkt nach oben, entsteht eine gebogene Fläche und diese ist nicht mehr 2Dimensional, es folgen Darstellungsfehler und in manchen Fällen sogar Abstürze des Editors. Auf jeden Fall bilden mehrere dieser Polygone eine 3Dimensionale Form, im Editor benannt als...


  
Brush

Zu dem Brush gibt es eigentlich nicht viel zu sagen, mit ihm wird Materie im Editor der Umwelt hinzugefügt oder abgezogen. In der Mitte des Brush's befindet sich der Pivot, der Punkt wo sich die drei Achsen(X,Y,Z) des Brush's schneiden, wichtig für den Fall das der Brush gedreht werden soll.


Wird ein Raum aus nur einem Brush(in diesem Fall ein Cube) gebaut, besteht dieser aus 6Polys und 6Nodes (nachzulesen in den Stats unten im Bild). Jedes Polygon besitzt also einen Node. Im Editor werden die Nodes in verschiedenen Farbtönen dargestellt.


Wird nun ein zweiter Cube mit "Add" in der Mitte eingefügt und plan im Boden versenkt, schneidet dieser die Polygonfläche und die Nodes müssen neu angeordnet werden. Im Beispiel rechts wird das Bodenpolygon mit 4 Nodes dargestellt. Das läßt sich auch überprüfen den....


...die Anzeige (Stats in den "Build Options") springt auf 7Polys und 10Nodes, wenn der Brush im Boden eingefügt wird. Davon sind 1Poly und 1Node vom Cube der im Boden steckt. Weitere 5Polys und 5Nodes sind von dem Teil des Raum-Cubes, der nicht verändert wurde. Bleiben 1Poly und 4Nodes übrig, diese gehören der Bodenfläche, in welcher der zweite Cube versenkt ist.



Tip:
"Ratio" gibt das Verhältnis zwischen Polys und Nodes vom gesamten Level an. In diesem Fall besitzt jedes Polygon 1,43 Nodes. Optimal wäre ein Verhältnis von 1:1.



Zählt man jetzt die Felder (dazu muß man sich aber in der Zone/Portal-Ansicht befinden) am Boden kommt man auf 5Nodes, von denen aber eines noch zu dem zweiten Cube gehört. Das BodenPoly wurde also in 4Nodes aufgeteilt.


Wird das ganze jetzt übertrieben und versenkt immer mehr Cubes im Boden, erscheint beim Build'en irgendwann der Fehler "Warning: Node side limit reached" im Log-Fenster. Das bedeutet, das ein Poly zu oft unterteilt wurde. Die Polygone werden aber auch noch vom BSP-Tree in Nodes unterteilt, damit wird die Performance des Levels erhöht. Um zu überprüfen ob ein Poly schon zu oft geteilt wurde, wird die BSP-Optimierung in den BuildOptions vor dem Rendern ausgeschaltet und danach das LogFenster geöffnet um zu prüfen ob die oben genannte Fehlermeldung auftaucht. Wenn alles in Ordnung ist wird das Rendern wiederholt, aber mit der BSP-Optimierung angeschaltet. Sollte jetzt der Fehler auftauchen, kann mit dem BSP-Slider die Einstellung noch verändert werden.

Es gibt mehrere Möglichkeiten eine 3D-Spielewelt am Bildschirm anzuzeigen. Die einfachste wäre die entferntesten Polygone(auch die hinter dem Betrachter) zuerst darzustellen und dann den Level von dort in Richtung des Betrachters aufzubauen. Das wurde auch in den Anfängen der 3D-Grafik so gemacht. Doch Heute ist das nicht mehr möglich die Grafik wäre zu langsam, um vernünftig Spielen zu können. Die Unreal-Engine benutzt etwas anderes den sogenannte...


BinarySpacePartioning-Tree

Der BSP-Tree ordnet die Polygone als Knotenpunkte in einer Baumstruktur. Jedes Polygon schneidet den 3D-Raum mit seiner Ebene (gedachte vergrößerte 2Dimensonale Fläche des Polygons, im Bild unten grün dargestellt) in zwei Teile, einen vor dem Polygon und einen hinter dem Polygon. Die zwei Teilbäume dieses Polygons enthalten nun die Polygone die sich vor oder hinter dem Polygon befinden. Polygone die sich in beiden Teilen befinden müssen zerschnitten werden und das geschieht mit Hilfe der Nodes. Das Polygon (oder Knotenpunkt-A) besitzt also zwei Knotenpunkte, B vor dem Polygon und C hinter dem Polygon.

Ist zum Beispiel der Bereich von Knotenpunkt-B (Der Teilraum vor dem Polygon) im Spiel vom Player zur Zeit nicht einsehbar, brauch alles nach dem Knotenpunkt-B nicht berechnet und angezeigt werden. Das spart natürlich eine Menge Rechenleistung. Über dieses Thema läßt sich noch mehr schreiben, aber dann wird es wohl sicherlich eine Doktorarbeit werden.



Merke:
Wenn man BSP deaktiviert,wird die BSP nicht optimiert und die sog. BSP-Trees enstehen sehr chaotisch. Solange die Maps klein und perfomancemäßig problemlos bleiben, ist das nicht so schlimm. Bei größeren Projekten ist es aber besser,wenn man die Trees optimiert, da man mit optimierten Trees durchschnittlich 10%-15% bessere fps-Raten erreicht. Portals Cut All bedeutet, daß bei jedem ZonePortal ein BSP-Tree endet und ein neuer beginnt.

Anmerkung: Aus heutige Sicht ist eine solche Optimierung nicht mehr unbedingt notwendig. Es ist auch keine spürbare Verbesserung der Perfomance zu erkennen. Zumindest nicht in den beschriebenen Ausmaßen.


ENDE