mehrere Texturen in einem Material nacheinander ineinander überblenden

  • Hallo,
    ich arbeite gerade an einem Portal von dem aus man in verschiedene Welten reisen kann.
    Später kann man dann durch einen Mechanismus genau einstellen in welche Welt es gehen soll.
    Beim erstel Portal aber sollen sich alle möglichen Welten nacheinander abwechseln.


    Ich brauche also ein Material in dem sich ca 8 Texturen nacheinander abwechseln, möglichst mit weichem Übergang.
    Ist so etwas möglich und wenn ja wie ?
    mein erster Gedanke war über eine Timeline und Lerp die Materialien ineinander zu faden.
    Aber im Material selber kann ich ja keine Timeline erstellen und das würde ja auch nur beim Wechsel von der einen zur anderen Textur helfen.
    Wie kann ich aber 8 verschieden Texturen nacheinander ineinander faden ????


    Hat jemand von Euch eine Idee ?


    Wenn ja, bitte möglichst einfach erklären, ich bin in Blueprints und der Programmierung in UE4 noch ziemlich am Anfang ;)


    stucki

  • Ohne jetzt ins Detail zu gehen: Ich denke das abrupte Auswechseln von Texturen über Blueprints stellt kein großes Problem dar. Wie das geht kann man von einem der Basic Tutorials zu dynamischem Material ableiten.
    Da Du die Bilder jedoch verblenden willst wäre es glaube ich besser nach einem Weg zu suchen das Objekt, welches die erste Textur zeigt auszublenden und gleichzeitig ein zweites Objekt mit der nächsten Textur einzublenden.


    Ich habe mir das hier nicht komplett durchgelesen, aber vielleicht hilft Dir das weiter:
    https://forums.unrealengine.co…-I-make-objects-fade-away
    Kann aber sein, dass es auch einen Weg gibt Texturen direkt zu verblenden. Vielleicht kennt ja ein Anderer eine sinnvolle Lösung?

  • so ich hab das jetzt eine ganze Weile versucht und musste leider feststellen, das ich mit der Art und Weise wie Blueprints funktionieren einfach noch nicht zurecht komme.
    Ich denke das wird wohl eine der Aufgaben werden die später mal der UE4-Programmierer erledigen muss ;)


    Hatte nicht gedacht das etwas so einfaches so kompliziert sein kann.
    Vielleicht liegt es aber auch an der Szene.


    Ich habe eine animierte Flagge auf die ich ein transparentes Material gelegt habe.
    Das Material mit dem Lerp zwischen den 2 verschiedenen Texturen und einem FloatParameter der mit seinem Wert zwischen 0 und 1 festlegt wie die beiden Texturen ineinander geblendet werden, ist ja noch kein Problem.
    Aber sobald es in den Bereich der Blueprints geht komme ich nicht mehr klar....


    Eine andere Art das ganze anzugehen:
    Ich kann ja vom Level-Blueprint aus auf die Flagge zugreifen.
    Kann ich von hier die Transparenz der Flagge beinflussen ?
    Dann würde ich einfach 8 verschiedene Flaggen erstellen und per Timeline diese mal ein und ausblenden ...
    bestimmt nicht elegant, aber das würde ich hinbekommen, wenn es denn die Möglichkeit gibt auf die Tranzparenz eines Objektes vom Level-Blueprint aus zuzugreifen.
    Geht das ?


    stucki

  • Hi Sleepy, danke für den Vorschlag !
    Das hört sich nach einer guten Lösung an.
    Wie kann ich denn dann hinterher auf diese Texturen zugreifen ? Per Blueprint ?
    Leider habe ich noch nie mit dem Substance Designer gearbeitet....


    Warum kann ich in einem Material eigentlich keine Timeline verwenden ?
    Oder gibt es eine andere Möglichkeit in einem Material eine Zeitabhängigkeit zu erstellen ?


    stucki

    • Offizieller Beitrag

    Wie das Programmier technisch geht kann ich dir nicht sagen.


    Aber grob gesagt ist es so das du alles in SD über expose definierst. Das heißt du sagst im SD was alles wie beinflusst werden darf. Das fertiges Material exportierst du dann in die UE und kannst dort das Material direkt steuern.


    Du veränderst werte die du bereits im SD festgelegt hast.


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Hallo stucki,


    als Lösungsansatz liegst Du mit einer Reihe von Lerp Nodes sicherlich richtig.
    Die Kombination Time und Frac geben Dir Werte zwischen 0 - 1 aus und können für den weichen Übergang als Alpha Wert der Lerps genutzt werden.
    Ein Blueprint oder gar das Substance Plugin sind hierfür sicherlich überflüssig.



    Gruß
    Bob

  • @ Sleepy:
    nochmal vielen Dank für den Link !
    Da ich momentan wenig Zeit habe mich in den Substance Designer einzuarbeiten suche ich immer noch eine einfachere Methode direkt im Materialeditor von UE4


    @ Bob:
    Das hört sich doch ganz nach meiner Lösung an !!
    Ich hab das jetzt ausprobiert und es klappt wirklich gut für den Wechsel von einer Textur zuar anderen.
    Mit einem Multiplikator kann ich dann auch das Tempo des Wechsels so einstellen, wie ich ihn brauche.


    Allerdings scheint es mir, das sobald der Wert 1 erreicht ist er sofort wieder auf 0 zurückgesetzt wird.
    Jetzt sollte die aktuelle Textur aber erst einmal eine Weile stehen bleiben.
    Also müsste ich irgendwie eine Weiche erstellen sobald der Wert 1 erreicht ist.
    Dann müsste wieder ein anderer Time-Frac Wert erzeugt werden. Wenn dieser wieder 1 ist müsste der zweite Wechsel aktiviert werden und so weiter und so weiter bis ich von der 8. Textur wieder zurück zur ersten komme.


    Dazu habe ich mir mal die "If" Funktion im Material-Editor angeschaut.
    Leider bin ich damit schon wieder überfordert ....
    Kannst Du mir bitte einmal zeigen/erklären wie so eine Materialwechsel-Struktur aussehen müsste ?

  • Hier ist ein Material, welches vier Texturen im Loop durchgeht. Ohne Blende, die muss man sich jetzt noch irgendwie dazu basteln.
    Den Wert aus dem Frac multipliziere ich mit 4, damit er zwischen 0 und 3 landet.
    Mit dem Floor runde ich die Werte nach unten.
    Der Multiply(,1) dient nur als Verbindungsknoten, damit ich da oben rumfummeln kann, ohne jedesmal alle vier IF neu anschließen zu müssen.
    Die Größer als und Kleiner als Eingänge brauche ich nicht, UE besteht aber auf einem Wert. Ich gebe allen NULL, deswegen sieht es ein wenig wirr aus.


    Eine Alternative wäre alle Texturen in Eine zusammenzufassen und mit SUB-UVs zu arbeiten.

  • Alternativ zu Hirks' Material hier eine Material Function, die ausschließlich parametrisierte Lerps nutzt und damit eventuell etwas flexibler läuft.
    Wichtig: Code kopieren, neue Material Function erstellen, Code einfügen, abspeichern. Anschließend neues Material erstellen, Material Function einfügen, Paramterer beachten. (s. Screenshot)

  • @ Hirk,
    das funktioniert super.
    Allerdings hab ich keinen Plan wie ich das Ein-und Ausblenden noch einarbeiten soll ...
    Ohne sieht es schon gut aus, aber noch nicht ganz so wie es eigentlich müsste.
    Aber trotzdem nochmal großen Dank. So hab ich zumindest schon mal ein Material das zwischen verschiedenen Texturen hin und herschaltet.
    Ich denke ich kann es einfach in dem ich das ganze erweiter und die Werte anpasse auf 8 Texturen erweitern, oder ?

  • @ Bob:
    Die Funktionsweise mit dem Blenden ist natürlich sehr cool und auch viel flexibler.
    Nur funktioniert es nicht ganz wie es soll.
    Eigentlich sehe ich immer nur Blendable 1 und Blendable 2.
    Blendable 2 blendet dabei sehr schell ein, Blendable 1 braucht viel länger.
    Ich vermute das in der Zeit eigentlich noch 3 und 4 kommen sollten. Kann ich aber nicht sehen.
    Was genau meinst Du mit Parameter beachten. Kann ich da vielleicht etwas übersehen haben ?
    Aber bis auf die 10 sehe ich nichts was ich setzten könnte ....

  • stucki:


    Je nach Textur sind unterschiedliche Werte bei der Intensität wichtig, Texture Samples die weniger gut sichtbar sind einfach erhöhen andere senken.
    Die Umschaltwerte hängen ebenfalls von diesen Parametern ab, die Umschaltgeschwindigkeit der letzten zur ersten Textur müsste noch parametrisiert werden in der Material Function.

  • okay, das mit den verschiedene Werten habe ich ausprobiert und jetzt kann ich etwas mehr von den einzelnen Texturen heraussehen.
    Da aber anscheinend Blendable 1 langsamer über alles andere geblendet wird hilft es so nur wenig.
    Ich habe mir die Material Function einmal angesehen und versucht diese zu verstehen ....
    Leider kann ich nicht herausfinden wie ich die fehlende Parametriesierung ergänzen kann. Sorry, da versteh ich echt noch zu wenig von.
    Kanns Du das für mich noch ergänzen bitte ?

  • Hallo stucki,


    anscheinend hab ich das etwas falsch verstanden, ich ging von einem Übergang aller Texturen untereinander aus.
    Ein Reihe hintereinander zu schalten sollte allerdings kein Problem sein, werde mich die Woche darum kümmern und Dir berichten :)
    Leider ist es mir gerade im Moment nicht möglich daran zu arbeiten, allerdings fällt mir spontan dieser Ansatz ein, solltest Du Dich nicht gedulen wollen/können.
    1-2Lerp
    2-3Lerp
    3-4Lerp
    4-5Lerp
    5-6Lerp
    6-7Lerp
    7-8Lerp
    8-1Lerp


    Gruß
    Bob

  • Hallo Bob,
    vielen Dank für Deine Hilfe !
    Super das Du da nochmal rangehst !! Das mit der Programmierung ist echt noch nicht meine Welt.
    Hoffentlich finde ich da jemanden der mir den Bereich abnimmt ;)


    Hier übrigens mal ein Film aus dem Spiel direkt zum Thema

    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.