Beleuchtung und Blur-Effekt

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Lador

Betreff: Beleuchtung und Blur-Effekt

BeitragSo, Sep 19, 2010 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.

Ich möchte für mein 2D-Rollenspiel in der Nacht gerne eine Beleuchtung (z.B. eine Fackel, die der Spieler mit sich führen kann) einbauen. Dadurch soll dann um den Spieler herum die Tiles "normal" hell gezeichnet werden, aber als Kreis und nicht eckig (wie z.B. bei Anno).
Meine Map besteht wie gesagt aus Tiles (48x48) mit 4 Layern. Layer1-3 sind unterhalb des Spielers und Layer4 wird über dem Spieler gezeichnet. Der Tag-Nacht-Effekt wird mittels SetColor 50-255 realisiert.
Ich hab schon versucht, einen weißen Kreis über den Spieler zu legen, der dann SetAlpha 0.2/0.4 hatte. Auch einen Lightblend hab ich schon versucht. Das sieht zwar auch nicht gerade schlecht aus, aber es ist eben nicht der erwünschte Effekt. Kennt jemand eine bessere Idee?

Außerdem würde ich auch gerne einen Blur-(Verwisch-)Effekt in mein Spiel einbauen. Dieser soll dann die Tilemap, NPCs, Gegner, den Spieler, am besten aber nicht das Interface verwischen (am liebsten in verschiedenen Stärken), aber nur eine bestimmte Zeit lang. Ich hab gelesen, dass man dazu die Durchschnittswerte von zwei benachbarten Pixeln ausrechnen und zeichnen muss. Aber ist das bei einer Auflösung von z.B. 1024x768 (was ja fast 800.000 Pixel sind) ein enormer Rechenaufwand. Habt ihr Erfahrung mit so etwas und könnt mir einen besseren Vorschlag machen?

Ich bin für jede Hilfe dankbar!

MFG Lador

P.S.: Wer sich ein Bild von meinem Spiel machen möchte, der kann sich gerne den Worklog dazu ansehen. Gibt dort auch einen Link für die Demo.
https://www.blitzforum.de/worklogs/210/
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran"
Screenshot | Worklog
Fortschritt: ca. 70%

Skabus

BeitragSo, Sep 19, 2010 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke mal am einfachsten wirds sein, wenn du einfach 4 oder 5 BackBuffer Informationen speicherst,
und diese dann per Alphawert übereinanderanzeigst, so entsteht ein ziemlich starker, kaskadierender Blur-Effekt.

So lese ichs zumindest immer wenns darum geht einen einfachen Blur Effekt zu generieren.

Bei einzelnen Teilen kannst du ja z.B. diese in einen extra Speicherbereich(Buffer) speichern, und diese dann über deine einzelnen Tileschichten zeichnen.

Das geht mit deinem Interface auch, du kannst ja erst die 5 Bufferteile übereinanderanzeigen und dann ein Interface drüberrendern.

Und das mit den benachbarten Pixeln ausrechnen wäre "Gaussian Blur", ich hab mich damit noch nicht beschäftigt,
aber abhängig davon wie genau das aussehen soll, wäre Gaussian Blur auch gar nicht nötig.

Das hier wäre son typischer kaskadierender Blur-Effekt:

user posted image

Und dass hier Gaussian Blur:

user posted image


Müsstest du mal genau sagen, was davon du eher benötigst.

MfG Ska
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat

aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit!
Ein SNES-RPG mit Handels- und Wirtschaftselemente.
Infos?Hier: http://www.blitzforum.de/worklogs/234/
Besucht meine Seite:
www.seelenfriedhof.de.vu

Lastmayday

BeitragSo, Sep 19, 2010 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
tag!

also eine einfache Beleuchtung wäre es über lightblend und einer image zu machen.
dazu nimmt man eine png mit alpha, und einem weißen "blob" in der mitte. diese dan so zeichnen:

BlitzMax: [AUSKLAPPEN]
SetBlend(LIGHTBLEND)
SetColor(255,255,0) 'gelb
SetAlpha(0.5 + (Sin(MilliSecs() / 20.0) / 20.0)) 'läst den fleck langsam pulsieren wobei wert 1 die geschwidigkeit ist und wert 2 die insensität
DrawImage(glow, 300, 300)
SetBlend(ALPHABLEND)


mfg Lastmayday

NightPhoenix

BeitragSo, Sep 19, 2010 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
@Beleuchtung
Zur beliebig einstellbaren Beleuchtung ohne einer Überhellung des Leuchtkreises fällt mir spontan eine dazu genau umgekehrte Methode ein.

Du zeichnest über den gesamten Bildschirm einfach eine beliebig (je nach Tageszustand) transparente Bildfläche (einfarbig) in Schwarz über dein Level. Dieses Bild hat in seiner Mitte einen Alpha-Kreis (weiche Transparenz, mittig 100& transparent) welcher also keinen Effekt auf die Transparenz des Gesamtbildes zeigt.

So kannst du den Tageszustand einfach über die Transparenz (bzw. Färbung) der Maske simulieren.
 

Lador

BeitragMo, Sep 20, 2010 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Zuerst mal danke für all die Antworten. Ich bin leider aus zeitlichen Gründen nur kurz zum Testen gekommen.

Skabus:
Ich hab mal den kaskadierenden Blur-Effekt ausprobiert, indem ich einen Screenshot 4mal mit den Alphawerten 0.8, 0.6, 0.4 bzw. 0.2 immer etwas leicht versetzt (0|0, 2|2, 4|4, etc.) habe. Das gab einen sehr schönen Effekt. Ich denke auch, dass ich diesen sehr gut umsetzen kann.

Lastmayday:
Das mit dem Pulsieren hat bei mir nicht ganz funktioniert. Ich hab einen weißen Kreis in ein Bild gespeichert (in deinem Beispiel glow) und dann deinen Code übernommen. Mir kam es so vor, als ob es sich minimal verändert hätte, aber nicht sehr deutlich. Hab auch die Werte von 20.0 zu 1000 verändert und es hab keine Veränderung (denke ich). Aber das Beispiel sah sehr gut aus.

NightPhoenix:
Zitat:
Du zeichnest über den gesamten Bildschirm einfach eine beliebig (je nach Tageszustand) transparente Bildfläche (einfarbig) in Schwarz über dein Level. Dieses Bild hat in seiner Mitte einen Alpha-Kreis (weiche Transparenz, mittig 100& transparent) welcher also keinen Effekt auf die Transparenz des Gesamtbildes zeigt.


Versteh ich ehrlich gesagt nicht ganz. ^^ Also ein Bild, das sowohl schwarz ist, aber auch einen Kreis in der Mitte hat. Und was meinst du mit dem zweiten Satz des Zitates? Alpha-Kreis? In einem Paint-Bild?^^

MFG Lador
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran"
Screenshot | Worklog
Fortschritt: ca. 70%

Lastmayday

BeitragMo, Sep 20, 2010 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
die werte musst du in die andere richtung ändern... 10.0 wäre doppelt so schnell/stark =)
 

Lador

BeitragMi, Sep 22, 2010 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank!
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran"
Screenshot | Worklog
Fortschritt: ca. 70%

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group