Weitere 3d-Anfänger Tutorials gibt's hier:
Vorraussetzungen: Grundlagen in der Benutzung von 3d sollten klar sein.
In diesem Tutorial werde ich einige hübsche Effekte präsentieren, ich fange jedoch mit einem an und reiche später welche nach.
Tutorial 1 - Schatteneffekte (Gebiete: Scaling, Trigonimetrie)
Obwohl der Gamemaker keine "wirklichen" Schatten darstellen kann, heisst es noch lange nicht, dass man keinen ähnlichen Effekt erzielen kann.
Deswegen werde ich in diesem Tutorial zwei vers. Arten von Schatten erklären, einen "festen" und einen "beweglichen".
Fangen wir mit dem leichteren an. Dafür kramen wir nochmal das Example meines alten Tutorials (Muss nicht zwangsläufig mein altes Example sein) raus.
Bei beiden Arten von Schatten wird der Schatten so geworfen, als wenn sich die Lichtquelle sich über dem
jeweiligen Objekt befinden würde (praktisch im Zenit). [1]
[1]
"Fester Schatten":
Wir erstellen ein neues Objekt, nennen wir es einfach mal obj_shadow.
In das Draw_Event schreiben wir:
Nun die Erklärung: Dieser Code Zeichnet:
1. Einen Block mit dem Durchmesser von 20 Pixeln welcher von einer Höhe von 10 bis 20 Z gezeichnet wird.
2. Eine zu 80 % transparente Fläche mit einer schwarzen Textur, welche (nahezu) auf dem Boden gezeichnet wird und um 6 Pixel im Durchmesser größer ist. (Desto höher die Lichtquelle sein soll, desto größer muss der Durchmesser des Schattens sein)
(Zur Erinnerung: alpha=1 entspricht 0% Transparenz; alpha=0 entspricht 100% Transparenz)
Das ganze kann dann in Etwa so aussehen: [2]
[2]
Diesen "Effekt" kann man nicht nur auf Blöcke, sondern auf alle geometrischen Figuren anwenden, hier z.b einen Ellipsoiden.:
"Dynamischer Schatten":
Einen ähnlichen Effekt können wir auch auf bewegliche Objekte anwenden, damit meine ich aber keine Bewegung auf der X-Y Ebene, sondern eine Z Bewegung. Dies wäre zum Beispiel eine Bewegung wie als wenn ich einen Gummiball auf den Boden werfen würde, oder ein Gegenstand der "schwebt".
Hierfür verwendet man Trigonometrie. (Alle die sich mit Trigonometrie nicht auskennen: Ihr müsst es nicht verstehen, einfach nur benutzen.)
Am besten lässt sich die Z-Bewegung mit dem Sinus einer Variable errechnen. [3]
[3] (Graph einer Sinus Funktion.)
Als erstes fangen wir an unser Objekt "block" zum Schweben zu bringen. (Auf altes Example bezogen)
Dafür erstellen wir im Create Event die Variable Z, welche wir jeden Step um 0.05 erhöhen.
Die Vorhandene Zeile
ändern wir nun in
Erklärung:
Unsere Variable Z entspricht X im Graphen, Y entspricht sin(z). [3]
In unserem Fall lassen wir Z jeden Step um 0.05 anwachsen, würden wir ihn z.B. um 0.1 anwachsen lassen würden, würde das Objekt schneller schweben. (Die Kurven wären näher beieinander)
Das Teilen durch 4 verringert den Anteil um welchen unser Objekt nach oben und unten Schwebt.
Damit würde unser Objekt schonmal schweben, aber da sicht dieses Tutorial mit Schatten beschäftigen soll, verpassen wir unserem "block" einen Schatten, welcher sich dynamisch der Höhe anpasst.
Dafür Benutzen wir Scaling und wieder Trigonometrie. Zwischen unseren vorhandenen Code fürgen wir nun
ein und enthalten letztendlich folgenden Code:
Alles anzeigen
Wer das Schweben des Blockes verstanden hat, sollte diesen Code gut nachvollziehen können.
Wer will kann auch den Alpha Wert dynamisch machen, indem der Alpha Wert desto höher das Objekt ist geringer wird und andersrum.
Möglich wäre da zum Beispiel:
Verwendung für so einen "dynamischen" Schatteneffekt habe ich zum Beispiel in meinem Spiel "Wobble 3d" gefunden. [4]

Das war's. Auch wenn sich in diesem Tutorial alles etwas schwieriger anhört als es ist, (nicht zuletzt weil mir auch Kentnisse fehlen) ist alles mit ein bisschen Übung leicht zu meistern. Da ich mir fast alles in diesem Tutorial selbst beigebracht habe, kann es schnell zu Fehlern kommen, diese bitte umgehend melden. Im Anhang nochmal alles was man in diesem Tutorial lernen konnte in einer *.gm6.
Mfg, Moolt
Vorraussetzungen: Grundlagen in der Benutzung von 3d sollten klar sein.
In diesem Tutorial werde ich einige hübsche Effekte präsentieren, ich fange jedoch mit einem an und reiche später welche nach.
Tutorial 1 - Schatteneffekte (Gebiete: Scaling, Trigonimetrie)
Obwohl der Gamemaker keine "wirklichen" Schatten darstellen kann, heisst es noch lange nicht, dass man keinen ähnlichen Effekt erzielen kann.
Deswegen werde ich in diesem Tutorial zwei vers. Arten von Schatten erklären, einen "festen" und einen "beweglichen".
Fangen wir mit dem leichteren an. Dafür kramen wir nochmal das Example meines alten Tutorials (Muss nicht zwangsläufig mein altes Example sein) raus.
Bei beiden Arten von Schatten wird der Schatten so geworfen, als wenn sich die Lichtquelle sich über dem
jeweiligen Objekt befinden würde (praktisch im Zenit). [1]

"Fester Schatten":
Wir erstellen ein neues Objekt, nennen wir es einfach mal obj_shadow.
In das Draw_Event schreiben wir:
Nun die Erklärung: Dieser Code Zeichnet:
1. Einen Block mit dem Durchmesser von 20 Pixeln welcher von einer Höhe von 10 bis 20 Z gezeichnet wird.
2. Eine zu 80 % transparente Fläche mit einer schwarzen Textur, welche (nahezu) auf dem Boden gezeichnet wird und um 6 Pixel im Durchmesser größer ist. (Desto höher die Lichtquelle sein soll, desto größer muss der Durchmesser des Schattens sein)
(Zur Erinnerung: alpha=1 entspricht 0% Transparenz; alpha=0 entspricht 100% Transparenz)
Das ganze kann dann in Etwa so aussehen: [2]

Diesen "Effekt" kann man nicht nur auf Blöcke, sondern auf alle geometrischen Figuren anwenden, hier z.b einen Ellipsoiden.:
"Dynamischer Schatten":
Einen ähnlichen Effekt können wir auch auf bewegliche Objekte anwenden, damit meine ich aber keine Bewegung auf der X-Y Ebene, sondern eine Z Bewegung. Dies wäre zum Beispiel eine Bewegung wie als wenn ich einen Gummiball auf den Boden werfen würde, oder ein Gegenstand der "schwebt".
Hierfür verwendet man Trigonometrie. (Alle die sich mit Trigonometrie nicht auskennen: Ihr müsst es nicht verstehen, einfach nur benutzen.)
Am besten lässt sich die Z-Bewegung mit dem Sinus einer Variable errechnen. [3]

Als erstes fangen wir an unser Objekt "block" zum Schweben zu bringen. (Auf altes Example bezogen)
Dafür erstellen wir im Create Event die Variable Z, welche wir jeden Step um 0.05 erhöhen.
Die Vorhandene Zeile
ändern wir nun in
Erklärung:
Unsere Variable Z entspricht X im Graphen, Y entspricht sin(z). [3]
In unserem Fall lassen wir Z jeden Step um 0.05 anwachsen, würden wir ihn z.B. um 0.1 anwachsen lassen würden, würde das Objekt schneller schweben. (Die Kurven wären näher beieinander)
Das Teilen durch 4 verringert den Anteil um welchen unser Objekt nach oben und unten Schwebt.
Damit würde unser Objekt schonmal schweben, aber da sicht dieses Tutorial mit Schatten beschäftigen soll, verpassen wir unserem "block" einen Schatten, welcher sich dynamisch der Höhe anpasst.
Dafür Benutzen wir Scaling und wieder Trigonometrie. Zwischen unseren vorhandenen Code fürgen wir nun
ein und enthalten letztendlich folgenden Code:
GML-Quellcode
- d3d_transform_set_identity();
- d3d_transform_add_translation(-x,-y,0);
- d3d_transform_add_rotation_z(direction);
- d3d_transform_add_translation(x,y,0);
- d3d_draw_block(x-5,y-4,1+sin(z)/4,x+5,y+4,6+sin(z)/4,background_get_texture(tex1),1,1)/
- d3d_transform_add_translation(-x,-y,0);
- d3d_transform_add_scaling((sin(z)/9)+1.2,(sin(z)/9)+1.2,(sin(z)/9)+1.2);
- d3d_transform_add_translation(x,y,0);
- draw_set_alpha(0.2)
- d3d_draw_block(x-5,y-4,0.1,x+5,y+4,0.1,background_get_texture(black),1,1)
- draw_set_alpha(1)
- d3d_transform_set_identity();
Wer das Schweben des Blockes verstanden hat, sollte diesen Code gut nachvollziehen können.
Wer will kann auch den Alpha Wert dynamisch machen, indem der Alpha Wert desto höher das Objekt ist geringer wird und andersrum.
Möglich wäre da zum Beispiel:
Verwendung für so einen "dynamischen" Schatteneffekt habe ich zum Beispiel in meinem Spiel "Wobble 3d" gefunden. [4]

Das war's. Auch wenn sich in diesem Tutorial alles etwas schwieriger anhört als es ist, (nicht zuletzt weil mir auch Kentnisse fehlen) ist alles mit ein bisschen Übung leicht zu meistern. Da ich mir fast alles in diesem Tutorial selbst beigebracht habe, kann es schnell zu Fehlern kommen, diese bitte umgehend melden. Im Anhang nochmal alles was man in diesem Tutorial lernen konnte in einer *.gm6.
Mfg, Moolt

Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von Moolt ()