Backgrounds Farb zu Grau umwandeln

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Backgrounds Farb zu Grau umwandeln

    Wegen kleine Frage, mal ganz direkt:

    Wie kann ich im GM ein Bild im Spiel, also wärend die exe läuft. ein Bild langsam von Farb zu Grau umwandeln. Ohne 2 Bilder zu verwenden. Gibt es da einen Blendmodus?

    Danke für jegliche Antworten!
    57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
  • mit ner variable.

    am punkt wo das bild überblenden soll, ne variable aktivieren, die runter/raufzählt...

    var.blend_an = 0
    var.blend = 300

    step

    if var.blend_an = 1
    var.blend -=1

    und im step_event des bildes:

    if var.blend = 300
    = 1*

    *(alphablend oder farbe in stufen manuel einstellen)

    if var.blend = 299
    = 2*


    if var.blend = 298
    = 3*

    usw

    if var.blend = 0
    var.blend = 0


    usw
  • Neee,
    das meine ich nicht! Das Bild soll ja nicht tranzparent werden. Oder mit einem anderen Farbton überdeckt werden.
    Ich will ganz einfach die Farbe wegnehmen. Das könnte man auch beim Sprite bearbeiten machen. In Graustufen umwandeln. Ich möchte es aber im Spiel.
    Ich habe schon daran gedacht das ich 2 Sprite nehme. Eins mit Farbe und das andere Grau. Ich zeichne beide übereinander, das mit Farbe oben. Und lasse das mit Farbe langsam verblassen (image_alpha).
    Aber ich das nicht! Ich möchte ein rießiges Bild (1024x768) in graustufen umwandeln. Ohne 2 Sprites oder Bachground zu nehmen.
    Der Effekt wie bei Windows XP, wenn man den Computer herunterfahren möchte!
    57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
  • Mit Blendmodes ist sowas glaub ich auch nicht zu machen. Die einzige Möglcihkeit die mir einfällt ist mit einer DLL zu arbeiten die Ein Bild in ein Graustufenbild umwandelt. Dann lädtst du dieses in den GM und wendest deine schon beschriebene Methode an.

    Man könnte es rein theoretisch auch Pixel für Pixel im GM umwandeln aber wie so oft dauert das viel zu lange.
  • Du könntest ja als Blend-Farbe auch einfach langsam Richtung "c_gray" gehen, zwar sind nicht alle Farben verschwunden aber immerhin ist es ähnlich... Die passende Funktion weis ich auch:

    GML-Quellcode

    1. image_blend = marge_color(c_white,c_gray,wert);

    Der Wert musst zwischen 0 (normal) und 1 (schwarz) liegen, 0.7 oder so sollte das maximale sein ;)
    Mehr weis ich auch nicht...
  • Danke! Zwar nicht ganz das was ich wollte, aber danke.
    1. Sind es immernoch 2 Bilder.
    2. Weiß ich noch nicht ganz wie das funktioniert. Aber bestimmt bald.
    3. Wenn man das Sprite um 50% verkleinert und das Programm nochmal startet, sieht man das der Hintergrund schwarz ist.
    ....
    Aber für das was ich machen wollte, reicht es. Ich habe nämlich mal versucht, oder eigentlich schon fertiggestellt (außer der SW-Effekt), ein WindowsXP Login Fake zu machen.
    Und wenn man da auf "Ausschalten" klickt, habe ich das mit dem SW-Effekt nicht hinbekommen.

    Aber ich glaube es geht nicht anderst.


    Aber noch eine Frage:
    Man kann noch zum schwarze ränder entfernen oder ... draw_set_blend_mode(bm_max) zum beispiel benutzen. Wisst ihr was ich meine?
    Aber das image wird dadurch auch leider tranzparent. Meine Frage:
    Wie kann man das verhindern, dass es nicht tranzparent wird.
    Es gleicht sich immer mit dem Hintergrund an.
    Aber auch die Farben des Hintergrundes nehmen einfluss.
    Wenn ich einen schwarzen habe, wird das image 100% sichtbar. Und bei weiß ist es weg.

    Man, wenn ich das jetzt noch weiß, habe ich echt viel gelernt.
    Ich meine ich bin zwar eigentlich sehr (ok ohne sehr) erfahren in GM6.
    Aber man lernt ja immer dazu.

    Nochmal Danke
    57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
  • Wieso sind es immer noch 2 Bilder? Man hat nur eins als Ausgangsbild und das andere wird doch zur Laufzeit erzeugt. Sobald du den SW-Effekt nicht mehr brauchst solltest du das SW-Sprite aus dem Speicher löschen. Im Übrigen ist das nur ein EXAMPLE, wenn du es für dein Programm verwenden willst musst du es natürlich anpassen. Schau dir mal den Code an, dann wirst du verstehen warum es nicht reicht das Sprite um 50% zu verkleinern.

    Zu deiner nächsten Frage: Welche schwaren Ränder meinst du? Hat das jetzt was mit der ursprünglichen Frage zu tuen? Ich kann leider deiner ganzen Erklärung nicht folgen. Bitte nochmal im Detail.
  • Es hat nichts direkt mit der 1. Frage zu tun.
    Aber Ich meine die blendmöglichkeiten.
    Hier habe ich mal schnell ein example gemacht. Vielleicht verstehst du mich jetzt.
    Sieh es dir mal an!
    Ich will nicht das es tranz. ist. Bei einer weißen Hint. Farbe wird es 100% tranz. Bei schwarz 0%.
    Dateien
    • blend1.zip

      (53,48 kB, 75 mal heruntergeladen, zuletzt: )
    57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DanielGM61 ()

  • Am besten benutzt du sprite_set_alpha_from_sprite.
    Aber du solltest darauf achten, dass du deine Grafik schon von Anfang an auf transparenten Hintergrund zeichnest. Ich hab jetzt aus deiner Grafik noch eine Alphagrafik gemacht. Schaus dir an:
    Dateien
    • blend1.rar

      (71,33 kB, 87 mal heruntergeladen, zuletzt: )
  • Danke! Du hast sprite_set_alpha_from_sprite(spr,sprite1); verwendet.
    Ich verstehe das nicht! Ändert das Alpha ... ?
    Du hast nun das sprite kopiert und dann? In graustufen umgewandelt, oder was?
    Die tranzparents ist bei beiden doch gleich, nur dass das 2. Farblos ist.
    ???
    Kannst du mir das bitte ausführlich erklären? Warum ist das 2. ganz weiß?
    Ich habe das schon öfters gesehen (bei ZUMA zB), aber nie begriffen.
    57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
  • Das SW-Bild gibt die Transparenz des "richtigen" Bildes für jeden Pixel an. Ein weißer Pixel in dem Graustufenbild bedeutet, dass der gleiche Pixel im farbigen Bild komplett sichtbar ist. Ein schwarzer Pixel lässt ihn komplett durchsichtig werden. Alle Graustufen dazwischen lassen das Bild mehr oder weniger transparent werden.

    Die Funktion sprite_set_alpha_from_sprite ist deshalb sehr nützlich um weiche Kanten zu erzeugen, so wie ich das auch mit deiner Grafik gemacht hab. Jedoch gab es bei deiner Grafik ein Problem was die Sache schwerer gemacht hat, und zwar, dass das Bild nicht mit transparentem Hintergrund vor lag. Ich hab einfach das Bild genommen und in PS ein bissl an Farbbalance und Kontrast usw. geregelt. Das beste Ergebnis erreichst du wenn du die Grafik als PNG mit Transparenzkanal speicherst und es mit sprite_add_alpha lädtst. Ansonsten musst du dir immer die Mühe machen 2 Bilder zu erstellen.

    EDIT: Achso, ich vergaß, du hast ja noch GM6 von daher kommt für dich nur die 2. Variante in Frage.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bl@ckSp@rk ()

  • Ach, dann kann also GM7 PNGs lesen und GM6 nicht?

    Wie meinst du das? Wenn ich ein tranz. PNG nehme, spare ich ein Bild?
    Der GM macht den Hintergrund doch auch tranz. ....
    Achso ich verstehe, du meinest von vorne weg eine png erstellen. Das Malprogramm zeigt den hintergrung tranzparent, also zB mit grauen rechtecken.
    Also wenn ich jetzt ein Bild verschmiere, wie ich es ja gemacht habe, werden bei PNGs die Farbübergänge auch entsprechend tranz. Oder?
    Aber wo bekomme ich so ein Programm? Mir ist bewusst, dass ich das nicht mit GM6.1 machen kann. Aber dennoch. (Freeware)

    Ist die sprite_set_alpha_from_sprite methode fps sparender als die blend methode?
    57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
  • Ich habe ein Programm mit dem man png tranz. zeichnen kann. Also karierter Hintergrund.
    Mit PhotoFiltre gehts.

    Bleibt noch die Frage, wie ich Cambos, oder wichtiger eine 3er Reihe auflöse und erkenne (siehe oben letzter (2lezter) Beitrag von mir).

    Danke!
    57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
  • Original von DanielGM61
    Ach, dann kann also GM7 PNGs lesen und GM6 nicht?


    Nicht ganz, beide versionen können PNGs lesen aber beim GM6 wird der Alphakanal nicht mitgeladen, beim GM7 schon.

    Original von DanielGM61
    Wie meinst du das? Wenn ich ein tranz. PNG nehme, spare ich ein Bild?
    Der GM macht den Hintergrund doch auch tranz. ....


    Ja, du sparst ein Bild, aber vorausgesetzt du benutzt GM7 und speicherst das PNG mit Alphakanal.
    Der GM nimmt einfach den Pixel unten links und macht alle Pixel dieser Farbe transparent. Sozusagen ein 1Bit Alphakanal, aber weiche Übergänge bekommst du damit eben nicht hin. Der Alphakanal eines Bildes wird nur mit sprite_add_alpha mitgeladen ansonsten kommt es darauf an ob du den Haken bei Transparenz hast oder nicht.

    Original von DanielGM61
    Aber wo bekomme ich so ein Programm?


    Ich denke mit GIMP sollte sowas gehen, das ist als Freeware erhältlich. Ich persönlich arbeite mit Photoshop, damit geht es auf jeden Fall, kostet aber eben auch.

    Die Methode mit den 2 Bildern ist im Endeffekt auch nicht schlechter, eben nur ein bissl mehr Aufwand.

    Wie man so ein Alphabild erstellt kann ich dir leider nur für PS erklären. Da musst du auf "Bild" -> "Kanalberechnungen" und dann bei Quelle 1 und 2 jeweils den Kanal "Transparenz" wählen, dann Modus "Normal" und Ziel "Neue Datei". So mach ich das immer.
  • Ähmm... Bl@ckSp@rk,...
    Nochmal zu den alpha.
    Du hast mir ja damals aus der "Sonne" ein SW erstellt.
    Links unten ist der Inhalt total weiß und der Rahmen weich.
    Bei mir rechts nicht. Was für eine Methode verwendest du?
    Geht das auch mit GM-Editor oder PhotoFiltre oder IrfanView4?
    Ich weiß dass das ne andere Methode ist als SW.
    Hab sie mal irgendwo gesehen, aber wo?
    ...
    Was ich noch schade an dieser Methode finde ist, dass man keine Animation machen kann, oder?
    Bilder
    • alphasw.jpg

      14,41 kB, 311×185, 158 mal angesehen
    57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von DanielGM61 ()

  • Du machst folgendes: Erst die Sättigung komplett auf 0 stellen sodass das Bild nur noch SW ist. Danach den Kontrast so auf +60 bis +70 stellen, je nachdem wie dunkel das Bild auch ansich ist. Das wars auch schon, mehr ist es nicht. Es kann aber sein, dass das von Bild zu Bild schwankt, deshalb wie gesagt der Tipp das Bild gleich auf einen transparenten Hintergrund zeichnen