Ich versuche, den Wellen- / Wassereffekt von Worms wiederherzustellen (siehe hier http://youtu.be/S6lrRqst9Z4?t=31s) ).
Hat jemand so etwas schon einmal gemacht? oder eine Idee, wie ich vorgehen würde?
Ich versuche, den Wellen- / Wassereffekt von Worms wiederherzustellen (siehe hier http://youtu.be/S6lrRqst9Z4?t=31s) ).
Hat jemand so etwas schon einmal gemacht? oder eine Idee, wie ich vorgehen würde?
Antworten:
Ja, Sie haben Recht, dieser 2D-Wassereffekt kann mithilfe der mathematischen Sinusfunktion simuliert werden :
wave = sin(phase + t * frequency) * amplitude
phase
ist eine Konstante, setzen Sie, was Sie wollen. t
in die horizontale Position der Pixel / Vertex Sie verarbeiten:t = x;
im amplitude
Laufe der Zeit ändern (dadurch bewegen sich die Wellen auf und ab):
amplitude = sin(t * wave_speed) * wave_height
Kombinieren Sie mehrere Wellen, um einen relastischeren Effekt zu erzielen:
wave_final = wave0 + wave1 + ...
.
Ändern Sie für jede Welle einige Parameter ein wenig (z. B. Phase, Frequenz, ...).
Hier ist ein kurzes Beispiel, das ich mit nur zwei Wellen gemacht habe:
http://glslsandbox.com/e#4988.0 (aktueller Browser und aktiviertes WebGL erforderlich)
HINWEIS: Dies ist ein Shader, aber dies mit 2D-Grundelementen zu tun, ist der gleiche Ansatz.
BEARBEITEN: Sie geben kein Framework oder 2D-Rendering-System an, aber hier ist, wie es mit Polygonen / Dreiecksstreifen gerendert werden könnte: