Volumetric Fog & Mist in UE4

  • Grüße,


    ich habe im Unity Store folgendes gefunden:


    https://www.assetstore.unity3d.com/en/#!/content/49858


    Das oder etwas ähnliches hätte ich gern in der UE.


    Ich habe nur leider keine Idee, wie das in dem Umfang umzusetzen wäre. Als Plane Fläche mit Partikeleffekten habe ich das schon fertig. Aber wie bekommt man da Volumen rein? Das ganze natürlich performant.


    Ich würde mich freuen, wenn wir da mal ein paar Gedanken tauschen könnten! :)

    • Offizieller Beitrag

    Ehrlich gesagt kann ich dir nicht viel dazu sagen aber ich versuchs mal wobei wahrscheinlich jede Antwort besser ist wie meine:


    Im Prinzip kannst du dir das selber bauen in dem du dir ne Wolke aus einigen Partikel Emittern zusammenbaust. Damit die Wolke eine Wolke bleibt muss die Sterberate relativ zu Geschwindigkeit der Wolke sein. Sonst Zeichnest du nen Strich aus Partikeln in den Himmeln.


    Das die Wolke realistisch aussieht ist dann im Prinzip nichts anderes als ein gutes zusammenspiel aller Werte der Partielemiitter das alles zu Automatisieren wäre dann der Shader, wobei es da sicherlich noch viele Performance verbesserung gäbe.


    Ich glaube das volumetric hier nicht wirklich ein Volumen Shader ist sondern ein gutes Zusammenspiel aus Partiel Emitter das es so aussehen lässt als gäbe es tatsächlich ein Volumen.




    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.


    Ich hatte auch mal ein Tutorial gesehen wo jemand ein Mesh für volumetric Lights gebaut hat dabei hat er im inneren des Meshs einen Shader abgespielt wo es so aussah als würde sich Staub im Licht bewegen. Das man dies aber mit Wolken so umsetzen kann mag ich mal zu bezweifeln.



    Alternative:

    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.

  • Damit habe ich mich auch am Wochenende beschäftigt. Einfach oder relativ einfach sind Wolken am Himmel darzustellen. Sobald der Kram aber als Nebel mit Interaktion des Spielers fungieren soll, wirds haarig.


    Ne Partikelversion hab ich gebaut. Da is mir der Rechner gleich 3mal abgeschmiert. Also nicht wirklich etwas, was man hier ruhigen Gewissens Posten kann.


    Wolken am Himmel hab ich mit ner einfachen Plane gelöst und insgesamt 4 Texturen interpoliert. Das funktioniert auch ganz gut. Allerdings war dann nachts halb fünf noch der Gedanke da, dass über eine Partikelsystem zu probieren, aber da schlug dann die Müdigkeit zu.

  • Du hast da also die sleben Probleme, wie ich. :D Ich arbeite gerade an einem Material, dass "Staubpartikel" simuliert. Dort will ich dann mit Hilfe von Tesselation eine Art Wolkenmasse (!?) auf einem Mesh simulieren.


    Nachteil: Wenn man da durch geht wird es optisch kein Volumen geben. Also kann man nur mit kleinen Meshes arbeiten.


    Es ist zumindest ein Denkansatz...


    am Ende wird es wohl doch nur mit Partikeln gehen.

  • Eigentlich meine ich, dass man auch eine Fakelösung in Betracht ziehen sollte. Bewegt sich ein Objekt in Nebel oder Wolken wird es rein optisch einfach nur verdeckt. Ergo: Opacity. Das eigentliche Problem entsteht ja dadurch, dass wenn der Betrachter also die Kamera in den Nebel eintaucht, auch ein Effekt entsteht. Denn dann ist der Betrachter selbst betroffen, also kann der Fake auch über ein PostProcess gelöst werden, der einfach nur nachschaut, wann die Kamera im Nebelfeld ist.

  • Da komm ich nicht mit. Wolken sind nur von außen gesehen Wolken. Da kannste über eine Plane gehen und wunderbar mit Noise arbeiten.


    Wenn du in einer Wolke stehst, ist es Nebel. Nebel hat aber keine Noise. Nebel kann eine Dichte haben und die lässt sich auch in den Properties einstellen. Wenn du beides kombinierst, dann kannst du auch Nebelschwaden darstellen.

  • Wie Wassertexturen funktionieren weißt du? Wolken sind nichts anderes. Du Interpolierst dann nur über eine Noise. In den Videos siehst du, dass da nix mit Nebel ist. Physikalisch sind die Dinger nicht nur voluminös. Nimm ein Capsule und leg da das material draus. Dann stellst du beidseitig ein und lässt das genau wie beim Wasser eine Bewegung und eine Rotation ausführen. Fertig ist deine Wolke mit Volumen. Wenn du gut bist, kannst du noch ne Heigtmap benutzen. Man sieht in den Videos, dass ein Offset eingefügt wurde (gelbe Ränder). Wenn du dann mehrer dieser Capsules ineinander legst, haste deine Wolken.


    Die Kamera geht nur an die Wolken sehr dicht ran, aber nie rein. Es bleibt bei einem Blick von außen. Probleme entstehen aber erst, wenn du auch in die Wolke reingehst. Wenn du innerhalb einer Wolke steht, dann nimmst du nicht die Wolke wahr sonder Nebel, denn nichts anderes ist eine Wolke. Kann man grad in den Herbstmonaten gut beobachten, wenn du von Bergen in Täler fährst. Dann siehst du vom Berg aus im Tal die Wolken. Sobald du rein fährst, wirds neblich.


    Nebelschwaden sind nur durch unterschiedliche Dichte geprägt.

  • Geht auch, hab ich schon getestet. Gibt dann allerdings eher andere Dinge, die bisschen hakelig werden. Erstmal muss man den Speed in der Wolke erhöhen in Abhängigkeit von der Kamerageschwindigkeit. Dann muss man sich Gedanken machen, wie man die Wolke abschaltet, damit man noch auf den Boden schauen kann.


    Generell ist der Fake einfach eine Plane vor die Kamera zu schalten sehr schnell gemacht, nur alles andere wird dann echt zum Problem. Solang man still in der Luft steht, ist das sogar mit der beste Wolkenfake der geht.


    Daher war mir das dann etwas zu mühsam, die ganze Logik dahinter zu programmieren.