Wasser - Festland Kollision

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Noobody

Betreff: Wasser - Festland Kollision

BeitragDo, Jun 14, 2007 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Für mein aktuelles Game habe ich ein Terrain, das mit einer Heightmap geladen wird und eine Wasserfläche, die mit CreateTerrain() erstellt wird.
Pro Frame werden die Vertexe des Wassers mithilfe des Sinus auf und ab bewegt, was auf das Festland zulaufende Wellen darstellen soll.
Das funktioniert alles prächtig, nur wollte ich jetzt dort, wo das Wasser auf das Festland trifft, einen Schaum erstellen, den man ja auch ganz gut am Meer beobachten kann.
Ich komm jetzt einfach nicht drauf, wie ich die Kollisionspunkte berechnen soll, damit die Gischt einigermassen realistisch aussieht.
Ich hab mir schon überlegt, durch die vorderen Punkte des Wassers Geraden zu ziehen, diese dann mit dem Land zu schneiden und danach auf den Verbindungslinien der Schnittpunkte dann die Gischt zu zeichnen.
Ich könnte mir aber vorstellen, dass das ziemlich rechenintensiv wird und so die FPS stark runterzieht.
Mit den einzelnen Punkten des Wassers und des Landes zu arbeiten wird auch schwierig, da ich aus Geschwindigkeitsgründen beim Wasser so wenig Vertexe wie möglich verwendet habe.
Könnt ihr mir dabei helfen?
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Silver_Knee

BeitragDo, Jun 14, 2007 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
da du ein terrain vorliegen hast funktioniert das da:
Code: [AUSKLAPPEN]
terra_y#=TerrainY(terrain,x#,y#,z#)

x,y,z sind dann die vektorkoordinaten
und terra_y ist die höhe des terrains an diesem punkt.

dann noch fragen:
Code: [AUSKLAPPEN]
If tera_y>y then MachGischtDaHin(x,terra_y,z)

Noobody

BeitragFr, Jun 15, 2007 8:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Dies würde dann immer Gischt machen, wenn ein Vertexpunkt des Wassers eine bestimmte Höhe überschreitet.
Das hab ich mir auch schon überlegt, aber weil das Wasser nur wenige Vertexe besitzt (128*128, dazu noch skaliert), würde das nicht so schön funktionieren.
Ausserdem würde diese Abfrage bei allen Wellen ab einer bestimmten Höhe Gischt einzeichnen.
Was ich machen will, ist die Gischt dort zu zeichnen, wo die Wellen dann aufs Festland treffen.
Und der Schaum, der sich mit den Wellen auf den Strand schiebt und wieder zurückzieht, hat dann ja auch verschiedene Y-Werte.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Dreamora

BeitragFr, Jun 15, 2007 8:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht nicht mit Blitz3D

dazu müsstest du Pixelshader nutzen wenn du es nicht auf dem Mesh anwenden kannst, was dir bei massiver Skalierung der Objekte nicht möglich sein wird.


Das einzige was dir sonst möglich ist, wäre das Wasser nicht aus einem block zu machen sondern eigentlich so etwas wie ein OctTree Wasser statt einfach nur 1 Grid.

dann könntest du an Land viele Polygone haben -> super für gischt

draussen hats fast keine Polys -> siehst du sowieso nicht also auch super


bzw. einfach dort wo du bist viele polys sonst wenige ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group