Hey Leute.
Hab eben mal versucht etwas hässliges naja… “wasser” zu rendern.
Undzwar wie folgt:
ich habe eine periodenzahl, also anzahl bögen pro reihe
nun berechne ich periodenzahl² zufällige zufallsamplituden.
die schiebe ich in den shader, und passe dort auch die y
koordinate der einzelnen punkte an. ich benutze triangle strips,
also periodenzahl strips mit jeweils periodenzahl perioden * 180 punkten…
das ganze ist etwas langsam… weil ich keine index buffer verwende. die
verstehe ich irgendwie nicht. (schon, aber bekomms nicht hin sie anzuwenden…)
Nun. Für die y animation, also dass die wasser wellen sich nach oben und unten bewegen
hab ich folgendes gemacht (das kommt nach dem was gleich kommt): vertex.y *= cos(radians((1.0f / amplitude) * animationStep))
also je größer die amplitude, desto langsamer nach oben und unten bewegen…
so sieht das “wasser” aber ziemlich blöd aus, weil es sich ja noch zu den seiten bewegen soll.
dazu dachte ich, verschiebe ich einfach die phasen, also (x * animationStep), dass versuchte ich, und zwar so:
y anpassung ohne phasen verschiebung: nvin.y = amplitude * sin(radians(nvin.x)) * sin(radians(nvin.z));
y anpassung mit phasen verschiebung: nvin.y = amplitude * sin(radians(nvin.x) * 0.001 * animationStep) * sin(radians(nvin.z) * 0.001 * animationStep);
also. das erste, ohne verschiebung, ist ja eigentlich klar, ich bilde quasi wellen in dem ich sin(x) * sin(z) nehme, (hier noch mit radians() weil ich ja
von 0 - 180 hochzähle, um 180 punkte pro periode zu haben und nicht pi * irgendwas) und das ganze mal die amplitude der jeweiligen periode.
Mit phasenverschiebung, dachte ich, nehm ich einfach das jeweilige x und z mal animationStep, (mal 0.001 weil sonst zu schnell), aber das ergebnis ist…
nicht wie erwartet.
die sinus funktion ist doch so: a * sin(bx) a ist für die höhe, amplitude, und b quasi die verschiebung also phase…
aber das klappt so irgendwie nicht. jemand ne spontane idee was falsch sein könnte?
Danke fürs lesen!
Die jar schildert das problem. (bewegen wasd und maus, enter halten für render vorgang MIT phasenverschiebung…)
*** Edit ***
ou. verschiebung war ja nicht b, sondern bx + c…
naja das problem lösen tuts aber trozdem nicht. und zwar funktioniert es jetzt
zwar … glaube ich… so halb, aber die sinus cosinus wellen schneiden sich jetzt nicht mehr perfekt…
obwohl sie es doch eigentlich sollten?? ergebnis in der 2.ten jar… wobei man hier
die veränderung durch die verschiebung erst nach n paar sekunden wirlklich erkennen kann, so ca 20