prev up next

Previous: Vorstellung der VRML-Knoten Up: Elemente des X3DScene-Aufbaus Next: Anwendung der DTD in XML-Beispielen

Detaillierte Beschreibung der DTD

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.



prev up next
Previous: Vorstellung der VRML-Knoten Up: Elemente des X3DScene-Aufbaus Next: Anwendung der DTD in XML-Beispielen