Farbe (Color and Opacity) in einem Widget ändern mit Effekt auf Animation

  • Hi zusammen.

    Ich habe in meinem Projekt gerade einen ganz dusseligen Fehler gefunden. Und zwar geht es um Folgendes ...


    Ich habe einen UMG_Button erstellt, der verschiedene Funktionen beinhalten soll, die ein Standardbutton nicht hat. Nun habe ich ihn so aufgebaut, dass er zwei Images beinhaltet, eins als Hintergrund für den Hovereffekt.

    Der Hovereffect sollte so gestaltet sein, dass ich eine Animation abspiele, die über den Alphawert von Collor and Opacity, den Hintergrund reinfaden lasse. Das funktioniert auch ganz gut.

    Jetzt habe ich aber folgendes Problem, und zwar, wenn ich diesen Button in das eigentliche HUD einfüge und die Farbeinstellungen für diesen Hintergrund ändern will, bleibt er trotzdem noch immer weiß (Standardeinstellungen). Das ist auch kein Wunder, denn in der Animationstimeline ändere ich zwar nur den Alphawert, aber die Werte für RGB bleiben halt auf 1 stehen. Das scheint man auch im Blueprint des Widgets nicht überschreiben zu können. Die Farbeinstellungen der Animation scheinen also vorang vor den Constructoreinstellungen zu haben.

    Gibt es da eine Möglichkeit den Farbwert über eine Variable an den UMG_Parent inkl. der Animation zu übergeben?

    • Offizieller Beitrag

    Jetzt habe ich aber folgendes Problem, und zwar, wenn ich diesen Button in das eigentliche HUD einfüge und die Farbeinstellungen für diesen Hintergrund ändern will, bleibt er trotzdem noch immer weiß (Standardeinstellungen). Das ist auch kein Wunder, denn in der Animationstimeline ändere ich zwar nur den Alphawert, aber die Werte für RGB bleiben halt auf 1 stehen.

    Wenn die Animation abläuft werden die Werte durch die Animationüberschrieben?


    Wenn ich richtig verstehe, änderst du RGBA über ein Blueprint und über eine Animation ? Das funktioniert natürlich nicht.

    Macht das den Sinn ? Du kannst ja nicht per Animation die Farbe auf Schwarz stellen und im Blueprint sagen die Farbe soll weiß sein ist ja klar das sich hier dinge überschreiben.


    Ich weiß nicht was du vorhast oder warum das tun willst.

  • Ich glaube, da hilft ein Screenshot.

    Ich wollte es halt so machen, wenn ich mit der Maus über den Button hover, wollte ich nicht, dass der Hintergrund so aufpoppt und sich ändert, sondern halt etwas sanfter reinfaded und beim Verlassen des Mauszeigers halt umgekehrt rausfaded.

    Also habe ich da halt so eine kleine Animation erstellt, die den Alphawert hochschraubt.


    Was ich aber nicht bedacht habe, es wird in der Animation ganz logisch immer die gesamte Struktur von Color and Opacity in die Animation übernommen, du kannst halt nicht nur den Alphawert alleine nutzen für die Animation. Das war halt auch am Anfang mein Denkfehler, du siehst ja auf dem Screenshot das RGB alles auf 1 ist, also weiß.

    Darüber hatte ich mir nie Gedanken gemacht, weil ich wollte die Farbe dann halt im Setup anpassen, wenn ich den Button in einem Widget nutze. Aber eigentlich ist ja klar, dass er für die Animation die dort gespeicherten Werte nimmt. Das ist irgendwie ein wenig unglücklich.


    Deswegen habe ich gehofft, dass irgendjemand eine Idee hätte, wie ich auch per BP die Farbe in der Animation mit ändern könnte.


    P.S. Die normalen Timelines gehen ja leider auch nicht in Widgets, sonst hätte ich darüber ja den Alphawert ändern können.

    • Offizieller Beitrag

    Ich weiß nicht wie du dir das Ergebnis vorstellst. Ein Button wird durch das Licht bestimmt ob er gedrückt oder nicht gedrückt ist.


    Bei einem nicht gedrückten Button ist der Rand unten und rechts schwarz (siehe Bild 1) bei einem gedrückten Button ist dieser Effekt einfach invertiert.






    Wenn du beim drücken deines Buttons die Grafik also Vertikal und horizontal spiegelst, bekommst du ein gedrücker Button Effekt.

    Wenn ich diesen Effekt im Substance Designer erzeugen will, brauch ich Button als Highpoly, ich Bake die Normalmap auf eine Plane und generiere aus der Normal die Curvature. Die Curvature erzeugt genau diesen Effekt.


    Eine andere Möglichkeit wäre es diesen Effekt durch eine Normal zu erzeugen und diese Normal einfach zu invertieren. Somit hast du auch dieses rein und raus. Damit käme die Information nicht aus der Diffuse (Textur) sondern NUR aus der Normal heraus.


    Du hättest eine Hintergrund Farbe

    dein Button hat eine Farbe

    und eine Grafik mit Transparenz die du invertierst.

    Oder

    dein Colorkanal ist leer und du hast nur eine Normal die du inverierst.


    Damit musst du Opacity auch gar nicht anfassen.

  • Wieso jetzt Button gedrückt oder nicht gedrückt? Ich rede hier vom Hovereffeckt, wenn du mit der Maus über den Button gehst. Und da bestimme ich ja, wie dieser Effekt aussehen soll, nichts mit Licht und Schatten oder so. Einfach nur ein Hintergrund, der sich langsam rein und raus faded.

    Und doch, genau dazu muss ich Opacity anfassen. Anders geht es halt nicht.