Exkurs - X3D
Farben und Texturen
Im vorigen Abschnitt wurden bereits Farben benutzt, jedoch ohne zu erwähnen, was ansonsten der Fall wäre. Das Standard-Aussehen eines Objektes (wenn man den Appearance-Tag nicht nutzt) ist Folgendes:
Farben
<!-- rote Kugel -->
<Transform translation='0 0 0'>
<Shape>
<Sphere radius=".5"/>
<Appearance>
<Material diffuseColor="1 0 0"/>
</Appearance>
</Shape>
</Transform>
<!-- gelbe Kugel -->
<Transform translation='1 0 0'>
<Shape>
<Sphere radius=".5"/>
<Appearance>
<Material diffuseColor="1 1 0"/>
</Appearance>
</Shape>
</Transform>
<!-- gruene Kugel -->
<Transform translation='2 0 0'>
<Shape>
<Sphere radius=".5"/>
<Appearance>
<Material diffuseColor="0 1 0"/>
</Appearance>
</Shape>
</Transform>
Der Material-Tag regelt hier die Farbe. Die Farbcodierung erfolgt nach der RGB-Codierung, nur, dass nicht 255 bzw. FF in Hexadezimal der Maximalwert ist, sondern 1. Dementsprechend kann man die übliche Farbcodierung in X3D-Farbcodierung umwandeln, indem man durch 255 teilt. DiffuseColor ist die Grundfarbe eines Objekts.
Texturen
<!-- Erde -->
<Shape>
<Sphere radius="2"/>
<Appearance>
<ImageTexture url='earth.jpg' />
</Appearance>
</Shape>
Für Texturen reicht es, in einem ImageTexture-Tag den Namen eines Bildes anzugeben. Das verwendete Bild war Folgendes:
Man bemerke, dass zu den Polen hin die Landmassen gestreckt sind. Für Texturen auf komplexeren Oberflächen wie die einer Kugel ist das zur korrekten Darstellung eine Notwendigkeit.
Auf Texturen können Operationen wie Rotationen ausgeführt werden, das geht dann wie folgt:
<Shape>
<Box size='2 2 2'/>
<Appearance>
<ImageTexture url='earth.jpg' />
<TextureTransform center = '.5 .5' rotation='.79' scale='2 3' translation='1 1'/>
</Appearance>
</Shape>
Hier haben wir gleich vier Eigenschaften verändert. Rotation rotiert wie gehabt im Bogenmaß um den Punkt, der durch Center definiert wird. Translation verschiebt die Textur innerhalb der Fläche, auf der sie abgebildet wird.
Scale funktioniert anders als gewohnt: statt zu vergrößern verkleinern wir hier. Üblicherweise wird die Textur so gestreckt, dass sie auf ihrer Fläche einmal abgebildet wird. Mit scale='2 3' wird sie stattdessen horizontal zweimal und vertikal dreimal abgebildet - effektiv also in ihrer Größe halbiert bzw. gedrittelt.