[Andorra 2D] Licht - stufiger Übergang realisieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
undzwar habe ich eine erneute Frage zu dem Thema Licht bzw. Lampe generell oder hier Andorra 2D. Alter Fragethread : hier Ich habe es geschafft eine Taschenlampe zu erstellen und weitere normale Lampen, die ich gebrauche, um einige Stellen in meinem Level zu erleuchten ( siehe Bild im Anhang). Das klappt wunderbar nur sieht das grafisch nicht unbedingt "super" aus. Mit "super" meine ich, ob es möglich wäre eine Art Übergang zwischen Licht und "Dunkelheit" zu erschaffen. Das Licht soll sozusagen Stufenweise dunkler werden... Weiß aber nicht genau wie ich das machen soll :( Habe versucht die Maske so zu Zeichnen das ein Schwarz/Weißer Kreis entsteht, der innen weiß ist und nach außen hin dunkler wird. Nur bringt dies leider nichts, es ist trotzdem alles hell xD Wie ist so ein "Stufiger Übergang" in Andorra 2D realisierbar? mfg |
AW: [Andorra 2D] Licht - stufiger Übergang realisieren
Wenn du die Maske über den Stencil-Buffer gemacht hast, kannst du damit keine Übergänge bilden, da der Stencil-Buffer ein 1-Bit-Puffer ist (0/1).
Allerdings könntest du doch innerhalb der Maske (also im hellen Bereich) eine Textur mit Alphakanal überblenden, die einen nach aussen hin dunkler werdenden Kreis darstellt (Gradient-Circle). Wie man das allerdings mit Andorra macht, keine Ahnung. Ich denke aber, das unterstützt ja auch irgendwie Blending. |
AW: [Andorra 2D] Licht - stufiger Übergang realisieren
Ich würde die Maske auf eine Textur zeichnen und anschließend diese Textur multiplikativ auf die Zeichenfläche anwenden. Wie das mit Andorra 2D geht, weiß ich aber nicht.
|
AW: [Andorra 2D] Licht - stufiger Übergang realisieren
Du kannst mit dem Canvas nochmal die gleiche Figur mit einem Gradient drüber zeichnen - zumindest für die kreisförmigen Lichter sollte das kein Problem sein. Setze dafür die äußere Farbe auf "Ad_ARGB(255, 0, 0, 0)" und die innere auf "Ad_ARGB(0, 0, 0, 0)". Siehe hierfür das Canvas-Tutorial.
Ein Problem hast du nur, wenn sich zwei Lichtquellen überschneiden. Normalerweise wird das so gelöst, dass du die Szene für jedes Licht einzeln in einen Off-Screen-Buffer (TAdRenderTargetTexture) zeichnest und das Ergebnis additiv auf das Ergebnis additiv auf den eigentlichen ausgabe Puffer blendest. Hierdurch verstärken sich die einzelnen Lichtquellen. Du kannst dir hierzu die "Surface" Demo anschauen. Am besten löst du aber erstmal das Problem mit den Gradienten und gib bescheid wenn du mit zweiterem nicht weiter kommst. Edit: Die Lösung von NamenLozer ist eigentlich viel eleganter: Hier zeichnest du auf ein Schwarzes Surface allgemein nur deine Lichter additiv (mit dem Gradienten wie oben beschrieben) und mulitiplizierst das Ergebnis mit der kompletten Szene. Nur multiplikatives Zeichnen muss noch ein die Plugins eingebaut werden (ist aber mit wenigen Zeilen erledigt): Erstmal musst du in der AdClasses Zeile 117 den Modus "bmMultiply" hinzufügen. Im OpenGL-Plugin (/dll/OpenGL/OGLMain.pas) Zeile 642
Delphi-Quellcode:
schreiben, im DirectX-Plugin (/dll/DirectX/DX3DMain.pas) Zeile 767
bmMultiply: glBlendFunc(GL_DST_COLOR, GL_ZERO);
Delphi-Quellcode:
. Dann beide Plugins neu Compilieren und fertig.
if ABlendMode = bmMultiply then begin
Direct3DDevice9.SetRenderState(D3DRS_SRCBLEND,D3DBLEND_DESTCOLOR); Direct3DDevice9.SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ZERO); end; |
AW: [Andorra 2D] Licht - stufiger Übergang realisieren
Und wenn man die Gradienden erstmal auf ein schwarzes Bild aditiv draufmalt und diese gemeinsamme Bild dann über die Szene drüberlegt?
|
AW: [Andorra 2D] Licht - stufiger Übergang realisieren
Es sollte schwerer werden den Alpha-Kanal an den richtigen Stellen transparent zu kriegen... Mit der Multiply-Lösung ist aber auch der Vorteil gegeben, dass die Lichter unterschiedliche Farben haben können.
|
AW: [Andorra 2D] Licht - stufiger Übergang realisieren
ok danke erstmal für die Hilfe
Habe es geschafft für die Kreise Gradients zu erzeugen... Für das Polygon leider noch nicht. Habe bei dem zweiten Probleme. Die Codes hab ich eingefügt nur beim Kompilieren der dlls komme ich nicht weiter. Erst fehlten Units, die ich mir dann besorgt habe. Doch Delphi will jedesmal wenn ich Kompiliere eine HostAnwendung in den Paramtern eingegeben haben oO Was muss ich tun :D |
AW: [Andorra 2D] Licht - stufiger Übergang realisieren
Bei Start|Parameter muss man die dllhost.exe einfügen.
Zu finden im system32 Ordner. Jedenfalls lief das bei mir dann immer :wink: |
AW: [Andorra 2D] Licht - stufiger Übergang realisieren
Du kannst auch die DLL einfach erzeugen mit Shift-F9 oder Projekt--> <Projektname> erzeugen.
Dann brauchst du keine Hostanwendung. |
AW: [Andorra 2D] Licht - stufiger Übergang realisieren
Hab das geschafft danke ;-)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz