JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Terrain Test
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 15:53    Titel: Antworten mit Zitat

Mir schon klar, dass das da stand, allerdings wollte ich wissen warum verändert sich die Farbe, sprich deren Position im Baum? So wie ich die Quadtree implementierung noch im Kopf habe, sollte sich da eigentlich nichts ändern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 16.02.2004, 15:54    Titel: Antworten mit Zitat

=]Mid[=]Night[= hat Folgendes geschrieben:
@miracleboy: erst oben lesen, dann fragen


Erst mal die Forumsregeln lernen und dann weniger spammen Wink

@Christian: Soll das ne neue terrainengine fürs neue Buch werden ? Werden dann also LOD Techniken und Cullingtechniken beschrieben ? Und wieso süpeicherst du die Indexbuffer in Extradatein, soll das schneller sein ?
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 17:09    Titel: Antworten mit Zitat

Hallo,

ich speichere die IndexBuffer in einer Datei, weil ich finde, dass dies einfacher zu verstehen ist, als sie im Code zu automatisch zu generieren. Fande ich sehr unübersichlich.
Ich lade die Dateien einfach in eine Indexbuffer, mehr nicht, sehe ich jetzt kein Problem mit

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 17:11    Titel: Antworten mit Zitat

Es ändert sich keine Position und auch keine Farbe, es geht darum wie ein Tile aussieht. Ein Tile hat 4 Childs, von denen sich wiederum jedes in 4 Childs unterteilen kann, die Farbe ändert sich nur, wenn ein Kind unterteilt wird. Dann werden halt die Kinder in 4 Farben dargestellt usw.. Ich dachte, dass was passiert ist offensichtlich...

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 16.02.2004, 17:21    Titel: Antworten mit Zitat

Ich hab schon kein Problem damit Wink ich fands nur ungewöhnlich.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 17:25    Titel: Antworten mit Zitat

Wenn du einen einfachen Weg kennst, die Buffer zu gernerieren, dann schnell her damit.

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 17:46    Titel: Antworten mit Zitat

Noch was, ich würde mir ein bischen Diskussion über Technik, Geschwindigkeit, Alternativen usw. wünschen, wenn jemand Interesse hat.

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 16.02.2004, 17:52    Titel: Antworten mit Zitat

Wie du wünscht Wink

haste feste LOD Stufen die auch nach der Flachheit des terrains gehen ?
Planst du ein Layersystem einzubauen so das man verschiedene Texturen rendern kann ?

Die Indexbuffer zu generieren ist doch nicht allzu schwer oder bei Stufe 1 nimmst du jeden Vertex des Elements bei Stufe 2 jedes 2te solange bis es nicht mehr geht eben. Backfaceculling wäre auch schon ein Schritt in die nächste Richtung.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 18:14    Titel: Antworten mit Zitat

Okay,

Backface Culling ist schon aktiviert - ev . habe ich nicht verstanden, was du meinst.

Wann welche LOD-Stufen gewählt wird, ist abhängig von der Entfernung, Winkel geht auch, ist aber nicht aktiviert. Es nur von der Entfernung (Center der Kachel) ist nicht so schön, da das Terrain dann immer schlechter aussieht, wenn man "schärg" in Terrain guckt.

Zitat:

Die Indexbuffer zu generieren ist doch nicht allzu schwer oder bei Stufe 1 nimmst du jeden Vertex des Elements bei Stufe 2


Hmm, verstehe ich nicht. Ich arbeite nur mit einem einzigen VB. 17*17 Vertices. Dieser wird in Abhängigkeit der Kachelgröße skaliert und die Höhen werden angepasst. Mit Hilfe der Indexbuffer werden aus diesem einen VB die Vertices geholt, die benötigt werden. Es gibt also nicht wirklich verschiedene Stufen, sondern nur einen VB, der per Matrix skaliert und positioniert wird. Die IB sorgen nur dafür, dass gezielt die Vertices an den Rändern weggelassen werden.

Zu den Texturen:

Momentan gibt es Alphatexuren für das gesamte Terrain, mit denen die Verschiedenen Texturen für das Terrain ausgewählt werden (momentan, Gras, Stein, Sand, Demo folgt.) Die Texturen werden dann wieder pro Tile gesetzt (Alphatexturen über das ganze Terrain).

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 18:27    Titel: Antworten mit Zitat

Noch was, es wird immer zuerst die Kachel gerendert, die am weitesten vom Spieler entfernt ist. Ansonsten habe ich keine vernünftige Möglichkeit gefunden den LOD Level zu bestimmen.

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 16.02.2004, 18:30    Titel: Antworten mit Zitat

Wie das mit den Alphatexturen gemeint ist verstehe ich nun wieder nicht ganz. Ich mache das so das ich die Vertexe meiner Landschaft je Layer einen Alphawert gebe so kann ich einen guten editor schreiben und alles so blenden ohne extra Texturen zu verwenden. Das macht sich bei dynamischen Sachen auch recht gut (Krater die dunkler werden und ne verbrannte Textur bekommen).
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 18:47    Titel: Antworten mit Zitat

GF 4 ti 4200 128mb 8x
solid: ~80 fps
wire: ~40 fps Shocked

in wie weit hast du backface culling schon eingebaut? schon so richtig, dass backfaces gar nicht mehr durch die pipeline gejagt werden?

könntest du mal so listenartig aufschreiben, was du so machst, wie das ganze generiert wird, und wie dann die anzeige erfolgt. dann läßt sich auch besser diskutieren, ganz durchsteigen tu ich nämlich nicht...ich hab mich bis jetzt auch mehr mit raumaufteilung als mit LOD systemen beschäfigt.

und was meint ihr, braucht eine terrain engine alles, reicht soein lod system oder sollte man zusätzlich noch einen octree fürs culling nehmen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 21:54    Titel: Antworten mit Zitat

Chewie hat Folgendes geschrieben:

und was meint ihr, braucht eine terrain engine alles, reicht soein lod system oder sollte man zusätzlich noch einen octree fürs culling nehmen.


Ich denke ein Quadtree und Bounding Boxes um die Tiles ist gut genug.

Was ich mache:

1. Heightfield einlesen (1025x1025)
2. Vertexbuffer anlegen (17x17 Vertices)
3. IndexBuffer einlesen
4. Quadtree und Stufen (64x64,32x32,16x16,...1x1) anlegen. Der Quadtree ist statisch, er wird nur einmal zu Beginn angelegt. Dabei merkt sich ein Quadtree Node nur seine Skalierung, Position, Zeiger auf seine Children (klar!) sowie Pointer auf seine Nachbarn (damit man weiss in welcher Auflösung die Nachbarn gerendert werden)
5. Rendern, dabei wird in der obersten Ebene des Quadtrees begonnen und es wird geschaut, welches Tile am weitesten von der Spielerposition weg ist. Wenn das Tile gefunden wurde, wird bestimmt, in welcher Auflösung es gerendert wird. Ist es weit weg, wird es in der höchsten Skalierungsstufe gerendert, ansonsten werden die Children gebeten sich zu rendern, die entscheiden dann wiederum, wer am weitesten weg ist und in welcher Skalierungsstufe...
Wenn sich ein Tile entschlossen hat sich zu rendern, wird der (eine) Vertexbuffer (statisches class member) gelockt, die Höhen werden aus der Heightmap gelesen und der Vertexbuffer wird angepasst (y-Werte). Dann wird die Matrix des Tiles gesetzt (Position und Skalierung) und zu guter letzt folgt der DrawIndexPrimitive Aufruf.

Vorteile (aus meiner Sicht):

1. Ziemlich einfaches System (das Finden der Nachbarn und die Erzeugung der Indexbuffer ist etwas grausam, aber okay)
2. Niedriger Speicherverbrauch (ein Vertexbuffer mit 17x17 Vertices), Indexbuffer sind zusammen ca. 20 Kb (auch eher vernachlässigbar)
3. Dadurch dass die Höhen dynamisch angepasst werden, kann das Terrain ohne Probleme zur Laufzeit verformt werden, außerdem wird Geomorphing möglich.
4. Geschwindigkeit ist gut (die jetztige Version ist viel zu detailiert).

Nachteile:
1. Das dynamische Update der Höhen ist Prozessorintensiv (bei mir macht das alleine 25% der Rechenleistung aus) - ich denke, dass sollte man mit einem Vertexshader machen können (sehe ich aber auch Probleme, z.B. 1025x1025 Textur, unterschiedliche Offsets zwischen den LODstufen) und die Koordination - sollte dann aber umsonst sein, die Grafikkarte könnte das nebenbei, es werden nur Werte kopiert -> FallenAngel84?.
2. Der Vertexbuffer wird sehr oft pro Frame gelockt und upgedatet, ich kann nicht sagen, ob das alle Grafikkarten können, ob man hier mit mehrern VB als Caches (Round Robin) arbeiten sollte. Hinzu kommen neben den Höhen auch noch Texturkoordinaten.



Okay, mit Backface Culling scheinen wir was anderes zu meinen. Für mich bedeutet dies, Dreiecke nur mit der Vorderseite zu zeichnen. Momentan werden alle Tiles, auch die die komplett von Spieler wegzeigen gerendert, es gibt auch bei View Frustum Culling oder sonst irgendwas.

View Frustum Culling macht schon Sinn, gerade mit dem Quadtree. Alles andere halte ich für zu kompliziert....was meint ihr, gerade bei der Tilegröße.


Mit den Texturen mache ich das so:

Ich habe eine Alphamap (nur Alphawerte), die über das Terrain gezogen wird und die Übergänge zwischen zwei "Bodentypen" beschreibt. Z.b. Sand/Grass. Ein Alphawert von 0.7 in der Alphatextur bedeutet z.B. 70% der Sandtextur und 30% der Grasstextur an dieser Stelle verwenden usw.

Christian

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 16.02.2004, 22:05    Titel: Antworten mit Zitat

Coole Sache.

Ja per Shader sollte das möglich sein, dazu müsstest du aber ein Pointer
auf eine Verwendbare Liste übergeben (rohe texturdaten gehen nicht). Das ganze ist sonst ziemlich Prozessorlastig wie du sagtest. Ein Pronblem wäre dann auch noch der kleine Vertexbuffer 17x17 bei einer recht detailierten Umgebung könnte durch die vielen Renderaufrufe für Performanceschwierigkeiten sorgen.

Das mit den Alphamaps finde ich persönlich als schlechte Idee da man so nur schwer einen anständigen Realtime editor für Terrain erstellen kann. So wie ich das sehe muss man da schon beim Zeichnen genau überlegen wie alles aufgebaut ist. Vieleicht könnte man ein Grafikfornmat verwenden das mehrere Alphamaps unterstützt, müsste man aber auch das auslesen implementieren.

Dein LOD System interessiert mich auch schon sehr, klingt gut.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 16.02.2004, 22:09    Titel: Antworten mit Zitat

Schein so, als ob es bei den nVidia GraKas GeForce Probleme mit dem wire-Rendering gibt.
Die ATI schaffen das anscheinend.
Aber was sagt dazu meine uraltkarte? Crying or Very sad
Wahrscheinlich 1 FPS.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7  Weiter
Seite 2 von 7

 
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