Ruckelei der Bewegungen bei Heightmaps
-
entschuldigung, aber ich bin nicht der Held in Erklärungen...
mein Problem liegt bei der Kollision und die daraufhin folgende Korrigierung des Objektes bei Heightmaps.
Wenn man bspw die Kamera immer 0.5 Einheiten über dem Boden bewegen will.
ypos=Heightmap[int(xpos)][int(zpos)]+0.5;
wenn man nun mit der kamera über die gebirgige Heightmap schickt, wird man stark durchgeruckelt (nicht die fps).
ich arbeite gerade aben daran, dass sich die Kamera eben sehr flüssig und ohne starken Höhenwechsel bewegt. dabei bin ich allerdings auf das Problem gestoßen, dass meine Kamera zuuu träge lief und eben in einen "Berg" eingetaucht ist.
Jetzt frage ich mich, wie das andere Programmierer bei anderen Spielen hinbekommen. Theorien würden mir reichen.
heimschmiede
-
vielleicht durch ebenere Berge und große Polygone?
-
die berge sind schon relativ eben. noch ebener, dann wären es keine berge mehr, sondern anhöhen.
-
Stichwort "Interpolation".
Bye, TGGC (Zu viele Primitive hier.)
-
Du liest ja auch die Hoehe des naechsten Vertex aus:
ypos=Heightmap[int(xpos)][int(zpos)]+0.5;
Wie waehrs, wenn du dir die Position dazwischen raussuchst?
Die Position an der du stehst ist ja in einem Dreieck und nicht an einem festen Punkt.
-
wie bekommt man denn die Höhe in einem Punkt innerhalb eines Rechtecks (zwei Dreiecken). wie sieht die Mathematik dazu aus?
heimschmiede
-
Wenn du Wissensluecken in 3D Math hast, bitte lesen:
http://www.flipcode.com/geometry/
-
danke. ich hab jetzt zwar nur grob drübergeschaut, weil ich eigentlich viel über Vektoren usw weiß, aber dafür ist mir eine Idee gekommen, wie man das rechnen kann.
Ich habs implementiert und es ruckelt tatsächlich nicht so stark!dabei kommt mir aber noch eine zweite Frage:
wie stellt man denn Kollisionen bei Bergen fest? Man steht zwar eine gewisse Höhe über dem Boden, aber man küsst mit einem Modell oder mit der Kamera die Steilwand vor einem. Hat einer von euch da eine Idee?
heimschmiede
-
Man könnte mehrere Sample Points benutzen.
Bye, TGGC \-/
-
ist ne Überlegung wert.
man nimmt einen Punkt vor sich und errechnet die entsprechende Höhe. und wenn die Höhenunterschiede über einem gewissen Wert liegen, wird das Objekt angehalten.danke an alle!