Beleuchtung und Blur-Effekt
Übersicht

LadorBetreff: Beleuchtung und Blur-Effekt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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: ![]() Und dass hier Gaussian Blur: ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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) mfg Lastmayday |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
die werte musst du in die andere richtung ändern... 10.0 wäre doppelt so schnell/stark =) | ||
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank! | ||
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran" Screenshot | Worklog Fortschritt: ca. 70% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group