JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=ccafd740bc8ae08894f5c33df58d8e5aMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

kameraposition über terrain
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 14:28    Titel: kameraposition über terrain Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 14:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 14:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 15:15    Titel: Antworten mit Zitat

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? Wink

- 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 15:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 20:47    Titel: Antworten mit Zitat

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? Question
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 20:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 20:59    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
FH
Super JLI'ler


Alter: 37
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 21:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 21:43    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 21:49    Titel: Antworten mit Zitat

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 Wink
_________________
'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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
FH
Super JLI'ler


Alter: 37
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 10.12.2004, 23:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 13:29    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 13:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 13.12.2004, 08:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum