Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 10.12.2004, 14:28 Titel: kameraposition über terrain |
|
|
Moin Moin,
ich habe mich mit dem Terrain aus Kapitel 28 beschäftigt und hab schon hin und her überlegt wie ich das anstellen könnte:
Wie kann ich rausfinden über welchem Vertex des Terrains sich die Kamera befindet?
Grund, ich möchte einbauen, wenn man sich über das Terrain bewegt und eine beispielsweise eine Steigung kommt, sich die Kamera automatisch mit erhöht.
Danke im voraus! _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 10.12.2004, 14:42 Titel: |
|
|
Hi,
habe zwar das Buch nicht aber egal:
1. Wenn das Terrain BruteForce gerendert wird und relativ groß ist, kannste das schonmal knicken.
2. Wenn Optimierungen des Terrains z.B. BSP oder Octree/Quadtree/Hextree vorhanden sind, testest du erstmal wo die Position des Spieles ist (jeder Tree besteht aus Boxen, da sollte es kein Problem sein).
Dann lockt man den VertexBuffer und IndexBuffer (oder holt sich die Daten aus dem Ram) und jagt einen Strahl hinunter von der Position und testet diese mit jedem Dreieck (Dreiecke haste ja, du renderst sie ja).
Wenn ein Dreieck getroffen wurde (kann ja immer nur eins sein, da ein Strahl unendlich dünn ist) übergibst du die Normale des Dreiecks (sollte vorberechnet sein für Lichtberechnungen) und positionierst daran die Kamera.
- Patrick _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.12.2004, 14:54 Titel: |
|
|
mit erhöht, meinst du nur auf der y Achse nach oben, oder das die sich enigt, also quasi imemr paralel zum Terrain ist?
Bei ersteren müsstest du die Position der Kamera und die des Terains berechnen, so dass du dann eine relative Kameraposition zum Terrain hast. Dann müstest du die durch die größe der Dreiecke teilen, und an der Stelle die Farbe in der Highmap suchen. Diese Farbe musst du dann genauso multiplizieren wie zur erstellung des Terrains und du hast die Höhe an dieser Stelle. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 10.12.2004, 15:15 Titel: |
|
|
Jonathan_Klein
Also bei aller Ehre, aber noch komplizierter, umständlicher und performancefressender (Auslesen der Farbe auf dem Terrain [sehr ungenau] und daraus ein Dreieck erstellen) gings irgendwie nicht mehr, gell?
- Patrick _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.12.2004, 15:57 Titel: |
|
|
also ne, das sehe ich anders! Da das nur Brutforce ist, wäre das testen mit allen einzelnen Dreiecken garantiert langsamer als einfach einen Speicherbereich (von dem Bild als Array) auszurechnen und den Wert an dieser Stelle zu holen! _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 10.12.2004, 20:47 Titel: |
|
|
Ich hab im Buch mal etwas weitergelesen und als nächstes geht es dort um Tiles. Wenn ich das richtig verstanden habe teile ich quasi das terrain in ein raster (tiles) auf.
Wenn ich jetzt ein Terrain mit der Größe von sagen wir 128x128 habe, wäre es doch rein theoretisch möglich 128x128 tiles zu machen, und dort einfach zu prüfen ob die kamera drüber ist (für die tiles hätte man ja koordinaten). Geht das so?  _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.12.2004, 20:54 Titel: |
|
|
willst du das wie auf S. 455 2 Absatz machen? Dann schau dir dazu einfach mal das letzte Beispiel an, da sollte das drin sein _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 10.12.2004, 20:59 Titel: |
|
|
Ja, vom Prinzip her schon... hört sich eigentlich gar nicht so schwer an. Hast du das schonmal gemacht? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
FH Super JLI'ler
Alter: 37 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 10.12.2004, 21:09 Titel: |
|
|
Ich habe mal ein Programm geschrieben, das genau das macht, aber ohne Kamera-Poistion ermitteln. ABER: Das ist SEHR viel Code. Falls du ihn brauchst, schick ich ihn dir. Man sieht ihm allerdings an, dass ich einige Probleme hatte.
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.12.2004, 21:43 Titel: |
|
|
@FH: Rall ich jetzt echt net, was das sollen könnte. Wenn es ihm doch nur um die kamerapositionberechnung geht, was sollte ihm dein Prog nützen? Vieleicht hab ich das aber auch nur falsch verstanden. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 10.12.2004, 21:49 Titel: |
|
|
Jonathan_Klein
FH hat sehr wahrscheinlich seine Arrays im RAM aufgeteilt in kleine Quads, rendert das Terrain jedoch BruteForce. Jedes kleine Array-Quad repräsentiert ein Teil des Terrains, von hier aus kann er ganz einfach die Position aus ermitteln und muss nur dieses kleine Quad auf eine Kollision testen mit den Enthaltenden Dreiecken.
In der Regel macht man sowas jedoch eher über einen BSP Baum für die Kollisionsabfrage und rendert das Terrain über Octree/Quadtree/Hextree bzw. über den GeoMapping Algo.
Fürn Anfang reichts was FH gemacht hat, jedoch bei größeren Terrains bringt das nicht mehr viel, da die Grafikkarte überfordert ist  _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
FH Super JLI'ler
Alter: 37 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 10.12.2004, 23:50 Titel: |
|
|
Wenn du mit BruteForce meint, dass ich alles render, ist das nicht korrekt. Bei einer Highmap von annähernd 1024*768 gehen einige Rechner baden. Ich teste aus, ob ein Tile gerendert werden soll, und Zeichne es dann. Dabei kann man die Tilegröße angeben. Das ist im Grundprinzip Christians Ansatz (war zu faul, nach nem neuen zu suchen. Inzwischen mache ich das sowieso komplett anders).
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 12.12.2004, 13:29 Titel: |
|
|
Hat jemand ein Tutorial für das erstellen von Quad-Trees? Hab auch schonmal auf zfx.info rumgesucht, aber da gibt's immer nur bruchstücke. Gibt's da irgendwas? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
xardias JLI Master

Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 12.12.2004, 13:42 Titel: |
|
|
Mein Vorschlag dazu (wie ich es mal realisiert habe):
heightmap im speicher lassen. aktuelle kameraposition in position auf der heightmap umrechnen (also verschiebung des terrains und evtl scale faktoren "rückwärts" rechnen). Wenn du zwischen den pixeln auf der Heightmap liegst (also z.B. koordinaten [34,64/12,32]) Die Höhe linear interpolieren.
[edit]
Quadtrees |
|
Nach oben |
|
 |
schneidi74 Senior JLI'ler

Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 13.12.2004, 08:23 Titel: |
|
|
Ich hoffe, dass ich das jetzt richtig verstanden habe: ich lege über das komplette Terrain ein Raster und teile das dann des öfteren durch 4. Soweit so klar. Jetzt aber die Quizfrage. Wo mach ich das am cleversten?!?! Schon bei der Heightmap? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
 |
|