Wir nutzen Cookies, um das allgemeine Benutzerelebnis zu verbessern. Mit der Nutzung unseres Wikis stimmst du der Nutzung von Cookies zu.

3D in Scratch

Dieser Artikel beschäftigt sich mit den Methoden die Du benutzen kannst, um in Deinen Scratch Programmen 3D-Grafiken und 3D Animationen zu erzeugen. Der Begriff „Dreidimensional“ oder kurz „3D“ bezieht sich immer auf etwas das drei Dimensionen hat, also mit Breite (x), Höhe (y) und Tiefe (z), in einem Raum mit x,y,z Achse dargestellt werden kann.

Aktuelle Entwicklung dazu: Es gibt inzwischen doch eine Art "Scratch-In-3D" siehe: GP#3D mit Snap! Beatleblocks + BYOW = Minecraft in Snap! Mtwoll (Diskussion) 14:18, 9. Feb. 2015 (CET)

Prinzip der Abbildung eines 3D-Modells auf eine 2D-Projektionsebene (z.B. Bildschirm). Gut erkennbar: Die zwei bekannten 2D-Achsen x und y (links/recht und oben/unten) und die zusätzliche dritte Achse z (hinein, hinaus), die als "Tiefenachse" 3D ermöglicht.

Scratch bietet zwar keine Werkzeuge an um 3D-Modelle direkt anzuzeigen, herzustellen oder zu bearbeiten, jedoch kann man mit den vorhandenen Elementen auf verschiedenste Art 3D-Effekte simulieren. Viele (jedoch nicht alle) 3D Methoden können mit Scratch Blöcken nachgebaut werden. Hierbei kommen die Blöcke mit denen die 2D Objekte (Sprites) bewegt und ihr Aussehen gändert wird zum Einsatz, wie z.B. die Bewegungs- und Größenänderungsblöcke. Auch die Malstift-Blöcke können zum Einsatz kommen. Die mathematischen Blöcke und die Scratch Listen werden häufig benutzt, um die 2D Elemente so zu berechnen, dass sie 3D Grafiken abbilden.

Letztendes ist natürlich jedes 3D-Bild auf einem nur zweidimensionalen Medium, wie einem Bildschirm, eine Illusion. Diese 3D Illusion in Scratch zu erzeugen, ist eine ganz schöne Herausforderung, von der man zunächst glaubt, dass sie nur mit aufwändigen Algorithmen gelöst werden kann, wie Ray Rracing, Ray Casting oder zumindest mit Drahtgittermodellen. Jedoch gibt es zum Glück für die Programmieranfänger auch ganz einfache Möglichkeiten, wobei die „Nicht drehen“ Methode sehr einfach und die 3D Scheiben Methode etwas kniffeliger ist. Vorab gerenderte 3D-Filme sind eine weitere Möglichkeit, um mit 3D in Scratch loszulegen.

Scratchcat in 3D-Abbildung (mit Blender gerendert)

Neue Methoden und Beispiele

Redaktionelle Bemerkung: Dieser Artikel "3D in Scratch" wurde seit seinem Entstehungsjahr 2012 kaum erweitert und gehört zu den meist aufgerufenen Artikeln auf Platz 6 mit >35.000 Aufrufen. Daher ist es m.E. an der Zeit, ihn gründlich zu überarbeiten und zu erweitern, weil es inzwischen neue und Methoden und Beispiele für dieses Thema gibt. Im folgenden die neue Methode "3D-Punktewolken" mit Beispiel als Start. Es wäre schön, wenn die Neuerungen zunächst in diesem Abschnitt eingefügt würden um eine Übersicht zu bekommen.

3D-Punktewolken

Dies könnte als eine komplexere Variante der 3D Scheiben Methode verstanden werden: Während bei dieser die Scheiben eigene Objekte sind, sind die Punkte bei der 3D-Punktewolken-Methode gestempelte Punkte ein und desselben Scratch-Objektes. Bei beiden Methoden wird aber die 3D-Figur aus Teilen zusammengesetzt. Während bei Ray Tracing und Ray Casting die Schnitt-Punkte der Lichtstrahlen mit der "Bild-Ebene" unabhängig von den dargestellten 3D-Figuren als Pixel gerendert werden (also mehr oder weniger als ideale farbige Punkte der Bildebene), wird bei 3D-Punktewolken die dargestellte 3D-Figur selber aus Punkten zusammengesetzt, die auch nicht genau "Punktförmig" sind, sondern eine Form, Größe und Farbe haben, je nachdem wo sich das durch einen solchen Punkt dargestellte "Teil-Stückchen" der 3D-Figur im Raum befindet.

Beispiele

25711433_144x108.png

3D Pic

19658537_144x108.png

Scramble Scan!

21724352_144x108.png

Be Happy! It's a 3D Animated Happy Face! :D

Ray Tracing

Das Raytracing-Prinzip: Vom Augpunkt aus wird ein Strahl durch ein Pixel der Bildebene gesendet und auf den nächsten Schnittpunkt mit der Szene getestet. Das Pixel wird entsprechend eingefärbt.

Raytracing (deutsch Strahlverfolgung) ist ein auf der Aussendung von Strahlen basierender Algorithmus zur Ermittlung der Sichtbarkeit von dreidimensionalen Objekten von einem bestimmten Punkt im Raum aus.

Dies ist sicher die schwierigste Methode mit der jedoch die realistischsten 3D-Computergrafiken erzeugt werden können. Daher wird sie z.B. auch für die großen Hollywood-Computeranimations-Filme verwendet. Der grundlegende Ray Tracing Algorithmus ist gar nicht so schwierig, aber extrem rechenintensiv, so dass man, um die Sache zu Beschleunigen, zu diversen Tricks (wie Raycasting s.u.) greifen muss, was die Komplexität erhöht. Ohne diese Tricks oder sehr viel Rechenpower dauert es sehr lange bis ein einziges 3D-Bild entsteht, so dass 3D-Spiele mit dem einfachen Ray Tracing Algorithmus nicht möglich sind.

In Scratch angewendet, berechnet er mit den Mathematik-Blöcken für jeden Punkt, aus dem die Scratch-Bühne besteht, die Helligkeit oder Farbe, die sich aus dem verwendeten 3D-Modell ergibt und malt jeden dieser Punkte mit den Malstift-Blöcken auf die Bühne.

Beispiele

53171_144x108.png

Full Raytracer for Scratch 1.2

334732_144x108.png

Speed Experiment

(Canthiar hat auch eine Reihe von Tutorial-Projekten gemacht, die die Mathematik beim Raytracing erklären)

Ray Casting

Raycasting in Computerspielen: Abtasten einer zweidimensionalen Karte mit regelmäßigen Strahlen
Entsprechend der oberen Grafik wird die Bildpunktfarbe festgestellt (oberer „Streifen“) und entsprechend der Entfernung wird ein vertikaler Bereich in dieser Farbe gezeichnet. Alle übrigen Bereiche sind Himmel bzw. Decke oder Boden.

In der Computerspielentwicklung bezeichnet der Begriff Raycasting das auf einer zweidimensionalen Karte basierte Berechnen einer Pseudo-3D-Ansicht. Im Gegensatz zur normalen Raytracing-Technik wird hier nur eine einzelne Bildzeile abgetastet, um das gesamte Bild zu berechnen; die Verdeckungsberechnung findet also nur in einer Ebene und nicht im Raum statt.

Da diese Technik keinem echten 3D entspricht, unterliegt sie diversen Einschränkungen: Es können keine dreidimensionalen Objekte wie Personen und Gegenstände dargestellt werden, Boden und Decke sind immer gleich hoch und Schrägen sind nicht möglich.

Es wurden diverse Umgehungslösungen gefunden, die den Eindruck der Dreidimensionalität herstellen sollen. So werden zweidimensionale Grafiken, so genannte Sprites, für beliebige Objekte verwendet, die skaliert in das berechnete Bild eingefügt werden. Texturen für Wände, Böden und Himmel wurden eingebaut, die dreidimensionale Strukturen abbilden. Himmel bzw. Decke und Boden wurden für Abschnitte einer Karte abhängig einstellbar gemacht, sodass Treppen, Durchgänge und ähnliches möglich wurden.

Populär wurde das Raycasting durch die frühen Ego-Shooter Catacomb, Wolfenstein 3D, Doom und Duke Nukem 3D, da es erheblich weniger Berechnungszeit benötigt als echtes 3D.

Beispiele

130490_144x108.png

3D Raycaster

1135568_144x108.png

Realtime 3D Raycaster Demo

Drahtgittermodelle

Drahtgittermodell eines Würfels, Ikosaeders, und einer angenäherten Kugel
Drahtgittermodell einer A4-Rakete

Ein Drahtgittermodell (engl.: wire frame model) ist ein dreidimensionales geometrisches Modell, das einen Körper lediglich durch seine Kanten repräsentiert.

Bei der Darstellung als Drahtgittermodell werden die Eckpunkte eines Objektes durch Linien miteinander verbunden. Bei gewölbten Formen werden zusätzlich sogenannte „Isoparameterlinien“ gezeichnet, weil weiche Formen nicht genügend Eckpunkte oder Kanten haben. Liegt dem darzustellenden Objekt ein Polygonnetz zugrunde, so werden einfach die Kanten desselben dargestellt. In dieser einfachen Version kann man durch das Modell (zwischen den „Drähten“) durchschauen und die ansonsten verdeckten Teile sehen.

Viele Programme in der 3D-Computergrafik besitzen Modi, um die Objekte als Drahtgittermodell darzustellen. Der Vorteil liegt in der äußerst schnellen Berechnung des Bildes. Der Nachteil ist eine untreue Abbildung der Wirklichkeit. [1]

In Scratch lassen sich 3D-Drahtgittermodelle folgendermaßen realisieren: Mit Hilfe der Mathe-Blöcken werden 3D-Punkte oder 3D-Vektoren (gerichtete dreidimensionale Linien), die in Scratch-Listen abgespeichert sind, in die 2D-Ebene der Scratch-Bühne projiziert, so dass die Ansicht mit den Mal-Blöcken aus Linien zusammengesetzt dargestellt werden kann. Als Ergebnis sieht man ein Drahtgittermodell, das häufig - je nach Anzahl der Punkte - flüssig oder Bild-für-Bild - gedreht, bzw. mit einer 3D-Kammera umfahren werden kann, und so von verschiedenen Perspektiven betrachtet werden kann. Das 3D-Drahtgittermodell, also die Inhalte der Scratch-Listen, können entweder vor der Projektion in Scratch berechnet werden (z.B. Zufalls-Punktwolken oder geometrische Körper), oder sie sind bereits Bestandteil des Scratch Programms und mit ihm abgespeichert. Im letzeren Fall können auch komplexe 3D-Drahtmodelle, die z.B. Gegenstände darstellen, abgebildet werden.

Beispiele: Einfache Drahtgittemodelle

47766_144x108.png

3d tech demo

129124_144x108.png

3d Demo- Control the camera

769041_144x108.png

Gale3D 1.2a

2740389_144x108.png

3d house test

123761073_144x108.png

3D Engine 0.4.1 Showcase

Beispiele: Drahtgittemodelle kombiniert mit Sprites

Man kann Scratch-Objekte in ein Drahtgittermodell "einbauen" indem man ihre Größe und Ort auf der 2D-Scratch-Bühne so steuert, dass sie der 3D Kammeraperspektive entsprechen und so der Eindruck entsteht, dass sie Teil des 3D-Objektes sind. Natürlich ist der 3D-Eindruck beschränkt, da sie ja flach und immer frontal auf die Kammeraperspektive ausgerichtet bleiben.

182441_144x108.png

SpRiTeD 3D Projection Engine: Release 1

Beispiele: Komplexe importierte Drahtgittermodelle

1678269_144x108.png

3d computer desk

1696281_144x108.png

Fast 3D Scratch

1695711_144x108.png

3d suzanne

347789_144x108.png

3d computer desk

Beispiele: Komplexe in Scratch erzeugte Drahtgitter-Modelle

380501_144x108.png

3D Cross-cap

Beispiele: Spiele mit 3D-Drahtgittermodellen

3261272_144x108.png

GuessTheMesh3D

„Nicht drehen“ Methode

Bei der "nicht drehen"-Methode wird der 3D-Effekt durch Bewegung, Größenänderung und Überlappung der Scratch-Objekte erzeugt. So sind lineare (also "nicht drehende" Bewegungen in x (links/rechts), y (oben/unten) und z (hinein/hinaus) möglich, aus denen man mit etwas Phantasie schöne Simulationen und 3D-Spiele machen kann. Dass sich die Objekte und Blickwinkel dabei maximal in der xy-Ebene, also ausschließlich senkrecht zur z-Achse drehen lassen, ist eine starke Einschränkung, wird aber häufig vom Betrachter übersehen.

Beispiele: 3D durch Höhen-/Größenänderung "flacher Grafiken"

Wenn man alle Objekte nur aus einer Richtung frontal sieht, reicht eine Höhen und Größenänderung "flacher Grafiken" aus, um einen 3D-Effek zu simulieren.

1253424_144x108.png

Almost perfect 3D!

1218688_144x108.png

3d car effect with petrol count!

1773242_144x108.png

Cube Runner

Beispiel: 3D Höhen-/Größenänderung von 3D-Grafiken

Wenn Objekte mit einem einzigen Kostüm verwendet werden, das nicht flach sondern eine 3D-Grafiken ist, erzielt man alleine durch Verschieben, Größenänderung und Überlagerung einen wesentlich stärkeren 3D-Effekt.

20884_144x108.png

V2 - lego model creator

545388_144x108.png

TriangleBoxShift-Miracle

322626_144x108.png

Tennis Practice Sim v1.0

348556_144x108.png

Jabberwocky 3D

322587_144x108.png

Metamorphose

463472_144x108.png

quizzworth easified

Beispiel: Paralaxen-Scrolling

Paralaxenverschiebung: Aufbau der Ebenen
Paralaxenverschiebung: Verschiebungs-Effekt

Eine besondere Variante der "nicht drehen"-Methode ist der Paralaxen-Scroll-Effekt: Hierbei wird der Effekt ausgenutzt, dass sich bei einer Bewegung entlang der x-Achse (Wahlweise auch y-Achse), die jeweils weiter entfernten Gegenstände langsamer verschieben. Dies kann man verwenden um einen 3D-Effekt allein durch mehrerer hintereinanderliegenden unterschiedlich schnell scrollenden Hintergründe zu erzeugen.


1294067_144x108.png

painting_with_4_layers_parallax_scrolling

Vorab gerenderte 3D-Filme

Wenn man nicht nur eine 3D-Grafik als Kostüm benutzt, sonderen viele, die aneinandergereiht einen Film ergebenen, in dem das abgebildete 3D-Objekt aus verschiedenen Blickwinkeln gezeigt wird, ist ein völlig faszinierender 3D-Effekt in Scratch zu erzielen.

Im Gegensatz zu einem normalem Film, dessen Bildfolge ja rein zeitgesteuert ist, kann man die Bildfolge abhängig von einer Bewegung oder Drehung des Objektes oder des Blickwinkels wählen, so dass ein interaktiver 3D-Effekt entsteht, den der Anwender mit Maus oder Tastatur steuern kann. In Wirklichkeit läuft nur ein Bild-Für-Bild Film: Daher sind alle Bewegungen beschränkt durch die vorhandenen Bilder, z.B. eine Tunnelfahrt oder eine Drehung um eine Achse.

Blender Logo und Screenshot

Methode: Du erzeugst außerhalb von Scratch Bilddateien, die ein dreidimensionales Objekt aus verschiedenen Kameraperspektiven zeigt. Je nachdem welche externe 3D-Software verwendet wird, können diese Bilder natürlich brillant aussehen und mit hohem Raytracingaufwand erzeugt sein und sogar neben der Kammerabewegung komplexe Bewegungen des 3D-Objektes enthalten. Diese vielen Einzel-Bilder werden als Kostüme in ein Objekt importiert (bzw. als Hintergründe der Scratch-Bühne). Der Bildablauf kann dann z.B. per Tastatur oder Maus gesteuert werden. Die "Kunst" liegt hier also meißt nicht in der Scratch-Programmierung sondern in der Beherrschung der externen 3D-Programme. Viele Scratcher nutzen hierzu die freie 3D-Software Blender.

Beispiele: Drehen/Umkreisen von Gegenständen

127846_144x108.png

Spin Scratch's new 3d tank!

130395_144x108.png

3D Archmage

Beispiele: Tunneleffekt

Für den Tunneleffekt wird eine Reihe von Bildern benutzt, die die Durchfahrt durch eine tunnelartige Umgebung darstellen. Wichtig ist, dass der Tunnel aus einem sich in z-Richtung regelmäßig wiederholendem Muster besteht, damit sich das erste Bild der Folge nahtlos an das letze fügt.

1250728_144x108.png

tunnel

Beispiele: Kombination von Dreh- und Tunneleffekt

In diesem Beispiel werden Tunnel und Dreheffekt kombiniert. Natürlich läßt sich der "Tunnel" nur in exakt einer Drehausrichtung "durchfahren", daher dreht der Dreheffekt zunächst in exakt diese Stellung wenn man von links-/rechts-Drehung (um die y-Achse) auf hinein-/hinaus (Bewegung längs der z-Achse) wechselt.

419538_144x108.png

3D City

Beispiele: reine 3D-Filme

Man kann natürlich mit der oben erklärten Methode einen reinen 3D-Film abspielen, wie jeden anderen Film in Scratch, indem man die einzelnen Bilder als Kostüme abspeichert und zwischen ihnen einfach in der richtigen Geschwindigkeit wechselt. Je nach Film kann dies auch beeindruckend aussehen, aber ohne Interaktivität mit dem Nutzer wird schnell klar, das es sich nur um einen reinen Film und keine wirkliche 3D-Scratch-Programmierung handelt.

595911_144x108.png

Mobius strip

Beispiele: 3D-Spielfiguren

In den obigen Beispielen wurde meistens ein Objekt mit 3D-Kostümen verwendet, welche die gesamte Bühne ausfüllen. Wenn man mehrere Objekte mit filmartig abspielbaren extern erzeugten 3D-Kostümen verwendet, kann man auch ein ganzes Spiel mit 3D-Spielfiguren bevölkern.

1955544_144x108.png

Dogfighting Scratchers-Flying Ace

3D Scheiben Methode

Dies ist einen weitere einfache Methode einen 3D-Effekt in Scratch zu erzeugen. Man denkt sich das dreidimensionale Objekt, das man darstellen will, in Scheiben zerschnitten und erzeugt für jede dieser Scheiben ein eigenes Scratch-Objekt mit einem Kostüm, das einer schrägen Draufsicht dieser Scheibe entspricht. Wenn man diese Objekt-Scheiben dann auf der Bühne übereinander anzeigt oder stempelt, sieht es aus, als ob durch die Schichtung ein 3D-Objekt entsteht, das man drehen kann, indem man alle Scheiben-Objekte gleichzeitig dreht. Das aus flachen Objekt-Scheiben zusammengesetzte 3D-Objekt kann in viele Richtungen gedreht werden, indem man die Objekt-Scheiben auf die richtige Art dreht und zueinander anordnet.

Beispiele

82317154_144x108.png

3d

371464_144x108.png

Partial Double Helix

491826_144x108.png

3d person

879549_144x108.png

3D Person editor



Code zum Einbinden ins Forum:
[wiki=de:3D in Scratch]3D in Scratch[/wiki]