Jump to content
Unity Insider Forum
Sign in to follow this  
Kojote

Welleneffekt bei Sand

Recommended Posts

Grüße!

Ich tüftel gerade an einem Untergrund, es ist ein Sanduntergrund. Eine Textur auf eine Plane sieht recht unschön aus. Ich wollte gern etwas Struktur einbringen. Frage ist wie? Ich bin gerade auf die Idee gekommen, dass mit einem Wasser-Shader zu machen, um leichte Welleneffekte zu bekommen. Shader scheint aber nicht so zu funktionieren.

Habt ihr ne Idee wie man das machen kann?

Kojote

Share this post


Link to post
Share on other sites

Genau in die Richtung gehts, nur die Wellen sind zu groß. Das Spielfeld soll in einem Raum / Halle sein. Müssten also relativ klein sein, auch das mein Vortex Effekt da rein passt. Kannst du mir erläutern wie du das gemacht hast?

Share this post


Link to post
Share on other sites

Ist ein spezieller Shader und 3(+1) Texturen. Die Texturen erzeugen dabei die Wellenform, d.h. wenn du das Scaling der Texturen anpasst, dann kann man es auch kleiner und größer machen (ist also kein Problem). Der Shader ist ein normaler Shader (albedo+normal) mit Parallax-Feature. Über die Parallaxtextur heben die Wellen quasi zusätzlich ab.

Die Bewegung hab ich einfach über ein kleines C#-Skript gemacht, dabei werden einfach die Texturoffset gescrollt. Zusätzlich hab ich noch den Parallaxeffekt dynamisch im Laufe der Zeit verschoben.

Hier ist der Effekt mit Scaling 2 auf einem 1x1 Unity-Cube. 
Ist ein Unity Quad mit dem Effekt und der Cube liegt einfach darunter.

sbrTnW1.png

Share this post


Link to post
Share on other sites

Vielen vielen Dank, bin heute leider nicht da, aber heut Abend schau ichs mir mal an! :)

EDIT:

OK, will man ein mal Skifahren gehen und was passiert... Die gesamte Nacht Dauerregen und die Piste ist nur noch ne Matschepampe! :wacko:

OK, Planänderung, kommen wir zurück zu Unity! :lol:

Sag mal, jetzt hab ich nur drei Objekte in deiner Sandscene. Das Licht, die Kamera und Quad Big. Frage wäre wieder mal, warum ist meine Sandebene mit Prefabs von dir wieder mal wesentlich heller als in deiner Scene?

Das Material wird in der richtigen Farbe angezeigt, nur auf dem Objekt ist es viel zu hell.

Vergleich.jpg

EDIT 2: Der schildige war wieder mal Color Space. Habe mal von Gamme auf Linear geschalten. Beim letzten Projekt habe ich genau das Gegenteil gemacht. Irgendwie kappier ich den Unterschied zwischen beiden nicht. :wacko:

EDIT 3: Also ich habs nun schon über X und Y versucht, hab das Modell geändert und sonst was. Aber die Richtung kann man nur im gesamten Steuern. Das Ziel, die Textur nach innen fließen zu lassen, zum Mittelpunkt des Objekts, ist echt ne harte Nuss!

Share this post


Link to post
Share on other sites

2)
Ja, ist der Colorspace. "Linear" liefert die bessere Qualität ähnlich wie bei "Forward Rendering" vs "Deferred-Rendering". Man kann bestimmte Kameraeffekte (wie Bloom) nur im Linearspace verwenden.

3)
Ja ist denke ich nicht leicht. X und Y steuern im Endeffekt die Fließrichtung anhand der UVs der Textur. 
Ich denke für ein Fließen nach Innen musst du an den UVs deines Modells schrauben, aber wie bin ich auch überfragt.

oder wiederum einen anderen Shader nehmen. Schwebt dir sowas vor? Dann könnte ich beide Shader verbinden, also einen Parallax-Swirl-Shader :D
https://gist.github.com/ya7gisa0/5e8c093a2a13a1d4696d05f97227239b
 

Share this post


Link to post
Share on other sites

Hier hier der neue Shader sind 2 Dateien:
https://ufile.io/kys2x

In Unity dann ein neues Material erstellen und den Shader zuweisen. Nicht wundern, ich habe dem Custom-Inspektor vom Shader entfernt, dadurch sehen die Properties nun entsprechend anders aus:

G4klEjL.jpg

Wenn du dieses Material dann einer kleineren Fläche etc zuweist, dann muss folgende Settings anpassen:
- Tiling
und 
- Swirl Tiling (hier nur x und y ändern, der Rest ist egal)

Damit passt du die Texturgröße an das Mesh an und den Swirleffect.

Ich muss in den Shader noch was einbauen, damit man die Zeit besser steuern kann, muss ich mal schauen.
Das Scrollskript übrigens entfernen.

  • Like 1

Share this post


Link to post
Share on other sites

So hab nun doch noch fix ein Time Scaling eingebaut:
https://ufile.io/yy39o

Wenn du nun den "Time Scale" z.b. auf 0.5 stellst ist der Effekt nur noch halb so schnell, diesen "Time Scale" kannst du auch über ein Skript steuern:

rend.material.SetFloat("_TimeScale", 0.5f);

 

  • Like 1

Share this post


Link to post
Share on other sites

Ich denke es geht auch irgendwie indem man die UVs eines Meshes manipuliert, aber der Shader hat den Vorteil es funktioniert nun auch mit "normalen" UVs und verschiedenen Meshes.

Share this post


Link to post
Share on other sites

Diese Files waren in dem alten Projekt enthalten, was ich bereits oben verlinkt hatte. 

Aber hier noch einmal alle Shader inklusive der fehlenden Files (bin zu faul jetzt die Abhängigkeiten herauszusuchen, daher alle Files):
https://ufile.io/axpqo

(hab das Custom Editorskript auch mit eingepackt, sonst meckert er bestimmt wieder rum)


 

Share this post


Link to post
Share on other sites

Also ich habs nun mal ausprobiert, der Shader "swirl" funktioniert, "My First Lighing Shader Swirl" funktioniert leider nicht. Hab da jetzt ne ganze weile mit Einstellung herum gespielt, aber reagiert nicht.

Von dem was ich beim "Swirl" gesehen habe. Ist es möglich zu sagen, wie weit er sich dreht, bzw. das über Methode anzusprechen? Das er sich, was weiß ich 10 Umdrehung dreht und dann wieder zurück auf seine Ausgangslage? Kenne mich mit Shadern nicht aus, keine Ahnung ob so etwas möglich ist.^^

Aber echt nen toller Shader!:)

Share this post


Link to post
Share on other sites

Der Shader funktioniert schon, aber bei mir ging er erst nachdem ich ein paar mal die Texturen in den Slots ausgetauscht hatte.. Frag mich nicht warum.
Ich habe auf "My First Lightning Shader" eingestellt und dann "Normals"  und "Parallax"-Textur gesetzt. Nachdem ich diese ein paar mal geändert hatte sprang der Shader plötzlich an. Danach konnte ich auf den  "My First Lightning Shader Swirl" umschalten und er ging auch .. frag mich nicht was das für ein komisches Updateproblem ist ...

Share this post


Link to post
Share on other sites

Mhh also erst einen "My First Lightning Shader" Shader erstellen:
- Albedo setzen "ground_desertSandDuneless_2k_alb_s"
- Parallax setzen "Sand (Beachripples) 1_DISP"
- Silder auf 0.0473
- Normal setzen "Sand (Beachripples) 1_NRM"
- Value auf 0.57
- Occlusion setzen "Sand (Beachripples) 1_OCC"
- Shader umstellen auf "My First Lightning Shader Swirl"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×