Wasser - Festland Kollision
Übersicht

![]() |
NoobodyBetreff: Wasser - Festland Kollision |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group