Anaglyphen sind Bilder, bei denen zwei Bilder in verschiedenen Farben übereinandergelegt werden, um einen 3D-Effekt zu erzeugen. Farbfilter in der 3D-Brille trennen die beiden Bilder, sodass jedes Auge nur eines der Bilder sieht. Dadurch entsteht der Eindruck von Tiefe und räumlicher Wahrnehmung. In diesem Tutorial lernst du, wie du verschiedene Körper in 3D mit Anaglyphen darstellen kannst.
Stelle zuerst sicher, dass du keinen Ordner geöffnet hast. Um sicherzugehen, drücke einfach den Shortcut für »Ordner schließen«: StrgK und dann F. Dein Workspace sollte jetzt ungefähr so aussehen:

Für diese Anleitung brauchst du ein Repository, das du klonen kannst, indem du auf den blauen Button »Clone Repository« klickst. Gib die folgende URL ein und bestätige mit Enter:
https://github.com/specht/anaglyph.git

Als nächstes musst du angeben, in welches Verzeichnis du das Repository klonen möchtest. Bestätige den Standardpfad /workspace/ mit Enter.

Beantworte die Frage »Would you like to open the cloned repository?« mit »Open«.

Wenn du auf der linken Seite im Explorer nun die Datei scene.ini siehst, hast du alles richtig gemacht. Diese Datei enthält die Anweisungen für die 3D-Szene, die du erstellen wirst.

Bevor du loslegen kannst, musst du noch eine Erweiterung installieren. Öffne dazu links die Extensions, suche die Erweiterung »Live Server« und klicke auf »Install«, um die Erweiterung zu installieren:


Wenn alles geklappt hat, solltest du unten rechts den Eintrag »Go Live« sehen. Wenn du darauf klickst, öffnet sich ein neues Tab in deinem Browser mit deiner 3D-Szene, die anfangs nur aus einem einzigen Würfel besteht.
Du solltest einen Würfel sehen, der in der Mitte des Bildschirms schwebt. Benutze die Maus, um die Szene zu drehen und zu zoomen.
Öffne die Datei scene.ini, indem du drauf klickst. Du solltest nun den Inhalt der Datei sehen, der ungefähr so aussieht:
shape = box
Ändere den Wert box in sphere, um den Würfel durch eine Kugel zu ersetzen:
shape = sphere
Speichere die Datei mit StrgS und schaue dir die Vorschau an. Du solltest nun eine Kugel sehen:
Probiere auch andere Formen aus, indem du den Wert für shape änderst. Hier sind die Formen, die du verwenden kannst:
box für einen Würfelsphere für eine Kugelcylinder für einen Zylindercone für einen Kegeltorus für einen Torus (Ring)plane für ein QuadratZusätzlich zu den geometrischen Körpern kannst auch ein Gitter anzeigen, indem du shape = grid einfügst:
shape = grid shape = sphere
Du kannst auch mehrere Formen kombinieren, indem du sie untereinander schreibst. Zum Beispiel:
shape = torus shape = sphere
Um Objekte zu verschieben, kannst du den Befehl move verwenden:
shape = grid shape = box move = 100, 0, 0
Dabei gibt move = 100, 0, 0 an, dass das Objekt um 100 Einheiten nach rechts verschoben wird. Die drei Werte stehen für die Verschiebung in den X-, Y- und Z-Richtungen.
Die Richtungen sind wie folgt:
Ein positiver Wert verschiebt das Objekt also nach rechts (X), nach oben (Y) oder nach vorne (Z), während ein negativer Wert es nach links, nach unten oder nach hinten verschiebt.
Aufgabe: Versuche, die folgende Szene zu erstellen, indem du vier Würfel erstellst:
Um Objekte zu drehen, kannst du den Befehl rotate verwenden:
shape = grid shape = box rotate = 0, 30, 0 move = -100, 0, 0 shape = box shape = box rotate = 30, 0, 0 move = 100, 0, 0
Du siehst hier ein Gitter und drei Würfel:
Aufgabe: Versuche, die folgende Szene zu erstellen, indem du drei Würfel erstellst und rotierst:
Um die Größe von Objekten mit einem Faktor zu multiplizieren, kannst du den Befehl scale verwenden:
shape = grid shape = sphere scale = 0.5 move = -100, 0, 0 shape = sphere move = 0, 0, 0 shape = sphere scale = 1.8 move = 100, 0, 0
In diesem Beispiel siehst du ein Gitter und drei Kugeln:
1.8 und nicht 1,8. Wenn du ein Komma eingibst, werden die Nachkommastellen ignoriert und die Zahl wird als ganze Zahl interpretiert.
Du kannst ein Objekt auch in alle drei Richtungen unterschiedlich skalieren, indem du drei Werte angibst:
shape = grid shape = sphere scale = 1, 0.2, 1
Hier wurde eine Kugel nur in der Y-Richtung verkleinert (auf 20%), sodass sie wie eine Scheibe aussieht:
Aufgabe: Versuche, die folgende Szene zu erstellen, indem du eine Box erstellst und sie auf die zehnfache Breite skalierst. Verschiebe die Box anschließend um 25 Einheiten nach oben, so dass sie auf dem Gitter aufliegt:
Verschiebungen, Drehungen und Skalierungen nennt man auch Transformationen. Du kannst mehrere Transformationen kombinieren, indem du sie hintereinander schreibst. Zum Beispiel:
shape = grid shape = box rotate = 0, 0, 45 move = 100, 0, 0
Hier wurde ein Würfel zuerst um 45 Grad um die Z-Achse gedreht und dann um 100 Einheiten nach rechts verschoben. Das Ergebnis sieht so aus:
Dabei ist es wichtig, in welcher Reihenfolge du die Transformationen angibst. Wenn du zuerst verschiebst und dann drehst, sieht das Ergebnis anders aus:
shape = grid shape = box move = 100, 0, 0 rotate = 0, 0, 45
Dieser Würfel schwebt jetzt über dem Gitter, weil er zuerst nach rechts verschoben wurde und danach erst um 45 Grad um die Z-Achse gedreht wurde, denn: jede Drehung findet immer um den Ursprung statt (und jede Skalierung auch).
Du kannst die Farben der Objekte kontrollieren, um verschiedene Effekte zu erzielen:
Dafür stehen dir vier Befehle zur Verfügung:
background für die Hintergrundfarbe: 0.0 bis 1.0 für schwarz bis weißstroke für die Strichfarbe: 0.0 bis 1.0 für schwarz bis weiß / off für kein Strichfill für die Füllfarbe: 0.0 bis 1.0 für schwarz bis weiß / off für keine Füllungshade für 3D-Schattierung: on für 3D-Schattierung / off für keine 3D-SchattierungIm folgenden Beispiel schalten wir die Strichfarbe aus und die 3D-Schattierung ein:
shape = grid shape = torus shade = on stroke = off
#4aa03f an.
Falls du gar keine 3D-Brille hast oder die 3D-Effekte nicht sehen möchtest, kannst du den Anaglyph-Effekt ausschalten, indem du die Zeile anaglyph = off hinzufügst:
Manchmal möchte man Teile eines Programms vorübergehend deaktivieren, ohne sie zu löschen. Dafür kannst du Zeilen auskommentieren, indem du ein Semikolon ; am Anfang der Zeile setzt. Zum Beispiel:
;shape = grid shape = box
;) kannst du auch ein Hashtag (#) verwenden, um eine Zeile auszukommentieren.
Um schnell ganze Blöcke auszukommentieren, kannst du mehrere Zeilen markieren und dann StrgK und StrgC (für »comment«) drücken. Um die Kommentare wieder zu entfernen, markiere die Zeilen und drücke StrgK und StrgU (für »uncomment«). Es gibt auch weitere Shortcuts dafür, die du im Menü finden kannst.
Während deine Szene angezeigt wird, läuft im Hintergrund eine Uhr mit. Die Anzahl der Sekunden seit dem Start der Szene wird in der Variablen t gespeichert. Du kannst diese Variable verwenden, um Animationen zu erstellen:
shade = on shape = torus rotate = 0, t * 30, 0
In diesem Beispiel wird der Torus um 30 Grad pro Sekunde um die Y-Achse gedreht. Das bedeutet, dass er nach 3 Sekunden 90 Grad geschafft hat und nach 12 Sekunden eine volle Umdrehung gemacht hat.
Profitipp: Mit Hilfe der Sinus- und Cosinusfunktionen kannst du auch sanfte Bewegungen erzeugen:
shade = on shape = box rotate = cos(t * 2) * 10, 0, sin(t * 3) * 10
Aufgabe: Erstelle eine Animation, bei der die Sonne in der Mitte steht und die Erde um die Sonne kreist. Der Mond soll dabei um die Erde kreisen:
Du kannst auch 3D-Modelle in deine Szene einfügen. Auf der Website kenney.nl gibt es eine große Sammlung von kostenlosen 3D-Modellen, die du verwenden kannst. Du kannst sie direkt in dein Projekt herunterladen und in der scene.ini einfügen. Klicke dazu auf ein Kit, um die verfügbaren 3D-Modelle zu sehen:
Wenn du viele Objekte platzieren möchtest, wirst du merken, dass du dafür viele Zeilen schreiben musst. Hier werden z. B. drei Würfel nebeneinander platziert:
Für jeden Würfel werden zwei Zeilen geschrieben:
shape = grid shape = box move = -100, 0, 0 shape = box move = 0, 0, 0 shape = box move = 100, 0, 0
Du kannst ähnliche Zeilen zu einer Schleife zusammenfassen. Wenn du z. B. schreibst:
shape = grid loop x from -100 to 100 step 100 shape = box move = x, 0, 0 end
…erhältst du genau dasselbe Bild. Dabei lassen wir eine Variable x in 100er-Schritten von -100 bis 100 laufen, wodurch drei Würfel an den gewünschten Positionen gezeichnet werden.
Um eine Schleife zu verwenden, musst du dich genau an die Syntax halten. Dabei gelten folgende Regeln:
loop und endet mit end.x.from angeben, mit welchem Wert du beginnen möchtest.end angeben, bis zu welchem Wert die Schleife laufen soll.step angeben, in welchen Schritten die Variable weiterlaufen soll. Wenn du step nicht angibst, wird eine Schrittgröße von 1 angenommen.Du kannst die oben abgebildete Schleife auch so formulieren:
shape = grid loop x from 1 to 3 shape = box move = (x - 2) * 100, 0, 0 end
Schleifen können auch verschachtelt werden. Das heisst: du schreibst erst eine äußere Schleife mit einer Variablen, und darin eine innere Schleife mit einer anderen Variablen, z. B.:
shape = grid loop z from -100 to 100 step 100 loop x from -100 to 100 step 100 shape = box move = x, 0, z end end
In der äußeren Schleife nimmt z drei verschiedene Werte an und für jeden Durchlauf der äußeren Schleife nimmt x unabhängig von z ebenso drei Werte an. Diese beiden Werte können wir jetzt verwenden, um den Würfel in x- und z-Richtung zu verschieben. Das Ergebnis sieht dann so aus:
Aufgabe: Versuche, mit Hilfe von verschachtelten Schleifen ein Gitter aus 3x3x3 Würfeln zu bauen: