Lavalampe in OpenGL
-
Tach Leute.
Ist nicht wirklich ein großes Projekt. Ich möchte nur
eine Lavalampe in OpenGL erstellen. Die Grafikausgabe wäre kein
Problem für mich, sprich Metaballs und Co. Aber ich brauch mal jemand, der ne Funktion macht, welche für das Aufsteigen und Absinken der einzelnen Metaballs sorgt.
Wenn jmd interesse hat, also hier postet, werd' ich mehr erklären.
-
Eigentlich ist das doch nicht so schwer (denke ich mal). Also ich würd z.B. zu Beginn 100 Einheiten flüssiges Wachs unten haben (Boden). Jede Einheit hat da die EigenschaftWACHS_IST_AUF_DEM_BODEN. Dann benötigst du eine zufallszahl, ob Wachs hochschweben soll.
if (rand() % (200000 - nAnzLavaAufBoden*2) == 1)
-> Mit dem ersten Wert musst du ein bisschen Rumspielen, nAnzLavaAufBoden ist also ja noch 100, der dritte wert muss auch ausprobiert werden ... jedenfalls halt so, das wenn viel Lava unten ist die W*****einlichkeit viel größer ist das eine neue Wachsblase nach oben steigt als wenn wenig Wachs da ist.
so und dann halt die Größe der Wachskugel bestimmen...
Grösse_der_Kugel = (rand() % (nAnzLavaAufBoden/4)) + 10;
-> Auch hier muss mit den Werten rumgespeilt werden!
Dann erstellst du zufällig die Startprostion , also
x = rand % 100
y = rand % 100dann gibst du der Kugel noch eine zufällige geschwindigkeit und lässt sie nach oben schweben - dann hast du die Lava oben, zB 20 Einheiten Wachs. von dort kannst du sie dann mit dem gleichen Prinzip wieder runterfallen lassen - also wie das "nach-oben-schweben" nur halt das das Wachs sich nun nach unten bewegt! Das einzige Problem ist, wenn zwei Wachskugeln in der Lampe zusammenstoßen - dann wird je nach Geschwindigkeit und Ausprallwinkel die Kugel nach unten fallen oder bei hoher geschwindigkeit vorbei und weitern nach oben schweben - die kugel die von oben kommt wird aber auf keinen fall wieder nach oben kommen!
Das ist zwar nicht sehr realistisch, weil du für das Wachs deigentlich immer die Wärme speichern müsstest - ob das Wachs nun nach unten kommt, weil kalt oder nach oben, weil warm. Aber ich denke mit dieser Technik würde sich dieses kleine projekt verwirklichen lassen.
-
Meint ihr sowas ungefähr ?
http://www.thelavalamp.org/