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: