Die folgende Auflistung führt die von uns benutzten Knoten in Abgrenzung
zu VRML auf.
X3D-Knoten
Hier handelt es sich um den Wurzel-Knoten, in dem die Knoten WorldInfo,
Background, Viewpoint und Group eingehängt sind.
WorldInfo
Eignet sich für den Einsatz eines Kommentars am Dateianfang, um die virtuelle
Welt kurz zu beschreiben, mit einem Titel zu versehen bzw. auf Urheberschaft
hinzuweisen.
Background
Ursprünglich (in VRML) diente der Background-Knoten der Definition
von Farben, um Himmel und Erde zu simulieren. Da hier aber die Zielsetzung
verfolgt wird, den Szenengraph auf wenige wesentliche Szenenelemente zu
reduzieren, reicht hier ein einfarbiger Hintergrund aus.
Viewpoint
Der Viewpoint-Knoten beschreibt eine Kamera, die an einem bestimmten
Ort ( Position) der Welt aufgehängt ist und eine bestimmte Richtung
( Orientation) schaut. Der Sichtwinkel der Kamera wird durch das
Attribut fieldofView im Bogenmaß eingestellt. Durch das Attribut
Description lässt sich jeder Kamera ( Viewpoint) eine
Bezeichnung zuordnen.
Eine bei VRML vorgesehene automatisierte Dynamik des Kamerawechsels in
Zeitschritten wird in dieser Version als zu luxuriös angesehen und daher
weggelassen, ebenso wie die Option eines sprunghaften bzw. interpolierten
Kamerawechsels (letzterer ermöglicht dramatische Effekte).
Die Viewpoints werden bereits zu Anfang in den Knoten X3DScene eingebaut, da
sie als fest installiert gelten sollen. Es ist weniger sinnvoll, dass ein
Viewpoint mit einer Szene mitwandert, wobei man ihn in den Gruppenknoten
mit einbauen müsste.
Gruppe
Um Knoten zu
gruppieren, und diese geschlossen zu ,,transformieren'', können diese im
Knoten Group zusammengefasst werden.
Um wiederum untergeordnete
Gruppen relativ zum Elternknoten zu positionieren, wird Group
selbst wieder als Element von Group aufgeführt.
Der noch bei
VRML zusätzlich vorgesehene Transform-Knoten ist hier der Kürze
halber (s. Reflexion der DTD-Entwicklung) kein eigenständiger Knoten mehr,
sondern fließt hier in den Group-Knoten ein durch die Elemente
Translation, Scale, ScaleOrientation und Rotation.
Shape, Material
Geometrien ( Sphere, PointSet, IndexedLineSet,
IndexedFaceSet) sind in einem Shape-Knoten eingeschlossen. Der
Shape-Knoten ist dabei selbst keine Geometrie, er verbindet vielmehr
Geometrien mit Material eigenschaften (Farbe- und
Lichteigenschaften).
Die Mehrzahl der bei VRML noch unter
Oberflächeneigenschaften ( Appearance) aufgeführten Attribute
betreffen die Textur (z.B. Ziegelsteinmuster). Texturen werden hier aber als
überflüssig angesehen und daher weggelassen.
Die Attribute des hier verwendeten Material-Knotens ( shininess,
DiffuseColor, SpecularColor, ambientIntensity) beschreiben in welcher Weise
Licht von einem Objekt reflektiert wird, so dass eine Farbwahrnehmung
entsteht. Weggelassen wurde in dieser Version emissiveColor, ein
Attribut, das glühende Objekte modelliert, die kein Licht emittieren und
daher keine Objekte beleuchten. Das Attribut tranperency ist
rausgenommen worden, wäre aber in einer zweiten Fassung durchaus denkbar.
Sphere
IndexedFaceSet wurde ursprünglich als hinlängliche
Geometrie, aus der sich komplexere Objekte aufbauen lassen, angesehen.
Rundkörper wie Kugel, Zylinder und Kegel erforden hohen Rechenaufwand
(Grund: bestehen aus vielen Flächen, etliche komplizierte Lichtberechnungen
müssen durchgeführt werden) und sollten daher generell rausgelassen werden.
Die Sphere wurde aber schließlich als ein so grundlegender Körper
betrachtet, dass sie doch als Approximation (Eingabe von longitude,
latitude ), bzw. als ,,vorgefertigte'' dreidimensionale Geometrie (Eingabe
eines radius ) angeboten wird.
PointSet
Die Generierung einer Geometrie als
Punktwolke erfolgt mittels des Knotens PointSet . Das Attribut
CoordinateVector verweist auf ein Punkte-Array mit 3D-Vektoren. Über das
Attribut ColorVector läßt sich zusätzlich eine beliebige Farbe
für jeden Punkt angeben, wobei die Anzahl der Fabwerte mit der der Punkte
übereinstimmen muß. Als Ergänzung zu VRML ist es hier möglich, den
Punkten über pointsize eine Größe zu verleihen.
IndexedLineSet
Der Knoten IndexedLineSet enthält zusätzlich zu den Attributen von
PointSet das Attribut coordIndex . coordIndex definiert
Polygone mittels gegen den Uhrzeigersinn aufgeführten Punkteindizes. Die
Polygonanzahl korrespondiert hierbei wiederum mit der Anzahl der unter
colorVector aufgeführten Farbwerten. Sie werden in entsprechender
Reihenfolge mit den Farbwerten versehen. Die in VRML über colorPerVertex
vorgesehene Option Farbwerte aus den Farbwerten von Endpunkten zu
interpolieren, besteht in dieser Version nicht. Das Attribut eventIn
wurde ebenfalls weggelassen. Als Ergänzung zu VRML ist es hier möglich, den
Punkten über linesize eine Breite zu verleihen.
IndexedFaceSet
Die Syntax dieses Knotens ist identisch mit IndexedLineSet . Die Polygonzüge können als
gefüllte Flächen angesehen werden. In VRML vorgesehene und hier
vernachlässigte Optionen sind mitunter ccw, solid, convex, creaseAngle,
texCoord :
ccw (counterclockwise) : bietet die Auswahl, ob Punkte
mit oder gegen den Uhrzeigersinn eingegeben werden.
solid : bietet an, ob unabhängig vom Viewpoint beide
Flächen eines Polygons oder nur die Vorderfront sichtbar sind (ersteres
ermöglicht eine Innenbetrachtung).
convex : gibt an, ob alle Polygone in der Shape konvex sind.
creaseAngle : ermöglicht die benutzerdefinierte Vorgabe eines
Winkels, ab dem aneinanderstoßende Kanten ,,smooth '' statt kantig
dargestellt werden.
texCoord : ermöglicht Flächen, eine Textur zuzuordnen.
NormalVector
Dieser Knoten kann zur Definition von Flächennormalen verwendet werden. Mit
Flächennormalen im Zusammenhang stehende Phänomene können hierdurch
definiert werden.
DirectionalLight, PointLight, SpotLight, Attenuation
DirectionalLight entspricht einer gleichmäßigen
Beleuchtung, die von einer unendlich weit positionierten Lichtquelle
ausgeht.
PointLight :stellt eine fest positionierte ( Point)
punktförmige Lichtquelle dar, die gleichmäßig mit einer gewissen Reichweit
( Radius) in der Intensität abnehmend ( Attenuation) in alle
Richtungen strahlt.
SpotLight : entspricht einem Scheinwerferlicht,
das in eine bestimmte Richtung ( Direction ) strahlt. Der Wirkungsbereich
erstreckt sich kegelförmig, weshalb die Angabe von Winkeln ( beamWidth
und cutOffAngle ) erforderlich ist. Eine Abschwächung der
Lichtintensität erfolgt hier außerdem mit zunehmendem Winkel.
Attenuation :entspricht Abschwächungsfaktoren.
Jeder Lichtknoten verfügt über das Attribut ambientIntensity,
welches die Helligkeit des von der Lichtquelle emittierten Umgebungslichtes
angibt, das sich auf alle Objekte der Szene gleichermaßen auswirkt.