höhe im Terrain feststellen
-
Hi,
ich hab ein Terrain (BruteForce) und möchte nun die Höhe haben wo meine Spielfigur im Terrain stehen soll (auf dem boden halt).
Nun ich benutze nur einen VertexBuffer und weis net wie ich das machen soll. nebenbei sind alle Vertices in einem Pointer gespeichert:
D3DVERTEX *m_VertexData;
aber wie komm ich jetzt an die höhe? ich hab mir gedacht einen strahl mit einem Dreieck kollidieren zulassen und dann davon die Differenz zu nehmen. aber wie komm ich nun an ein dreieck??!?!
-
*push*
-
Wie Du an eines Deiner Dreiecke kommst kannst ja eigentlich nur Du wissen. Wie speicherst Du sie denn? Als indizierte Listen? Als Strips?
Ich würde auf jeden Fall eine Version des Terrains im RAM lassen, eben für die Kollision. Als Vertexfomat reicht ein normaler Vektor mit x, y, z.
-
du wirst deinen vertexbuffer vermutlich aus einer vertex-liste erstellen. heb dir die auf!
fall 1:
du renderst triangle-lists (für kollisionsabfrage geschickt)
du kannst die dreiecke folgendermaßen aus der liste holen:
VrtList(0),VrtList(1),VrtList(2)
sind die eckpunkte des ersten dreiecks.
VrtList(3),VrtList(4),VrtList(5)
die des zweiten usw.fall 2:
du renderst triangle-strips
du kannst die dreiecke folgendermaßen aus der liste holen:
VrtList(0),VrtList(1),VrtList(2)
sind die eckpunkte des ersten dreiecks,
VrtList(1),VrtList(2),VrtList(3)
die des zweiten,
VrtList(2),VrtList(3),VrtList(4)
die des dritten.dann mal viel spaß damit!