Großes Terrain (Landschaft)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

vanjolo

Betreff: Großes Terrain (Landschaft)

BeitragDi, Sep 09, 2008 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie würdet ihr ein großes Terrain ähnlich wie bei Flugsimulationen umsetzen.

Mein Ziel ist es eine möglichste große Landschaft abzubilden. Siedlungen und Pflanzen sind alle bereits sehr Low Poly und sollten vor Spielbeginn Zufallsverteilt werden.

Ich habe mit einer Plane herumprobiert und dort per Zufall alle möglichen Objekte verteilt. Leider geht dann die Performance exterm in die Knie.

peacemaker

BeitragDi, Sep 09, 2008 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Sprites in der Ferne, die dazu noch zu wenigen Surfaces zusammengeschlossen werden helfen immer ungemein.
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Sep 09, 2008 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
So lange man nicht für jeden Quadratmeter ein Quadtile einstellt, sollte eine Heightmap von 1024x1024 bereits sehr groß ausfallen. Auch komerzielle Spiele benutzen noch oft ein Quadtiles dessen Kantenlänge etwa 3 Flugzeuglängen entsprechen. Dadurch hättest du bereits eine Fläche von etwa 100 km^2, was eine Flugzeit von Levelkante zu Levelkante bei 500 km/h etwa 12 min veranschlagen würde.

Höhere bzw. detailiertere Auflösungen können dann durch zusätzliche Meshes eingestellt werden. Also für Landebahnen, Gebäude etc...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

vanjolo

BeitragDi, Sep 09, 2008 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann könnte man die Landschaft auch gleich als einzelnes Mesh bauen? Die Positionierung wäre einfacher.

Weiß jemand ob und wie man bei Milkshape Texturen kacheln kann? Ich würde eine Plane erstellen und die Textur darauf kacheln. Dann die Objekte direkt auf die plane setzten.

Macht das Sinn?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Sep 09, 2008 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein einzelnes Mesh könnte nichtmal ganze 256x256 Tiles haben, da sonst die Vertexanzahl zu groß wäre.

Man kann allerdings mehrere Meshes aufeinander kacheln, was die Surfaceanzahl unnötiger Weise erhöht. Dazu habe ich mal ein Meshterrain erstellt, der absolut nachtlose Meshes erstellt und automatisch aneinander fügt. Jedoch ist dieser nur schneller, so lange die Heightmap nicht über 256x256 groß ist, da eben kein LOD berechnet wird. Bei größeren Meshes wird es langsamer, denoch etwas schöner zum ansehen. Bei 1024x1024 ergibt das aber bereits keinen Sinn mehr, da zu langsam.

Warum genügt denn LoadTerrain nicht deinen Erwartungen? Mit TerrainDetail kannst du das Aussehen ganz der Systemperformance anpassen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

vanjolo

BeitragDi, Sep 09, 2008 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Terrain Maps wirken bei mir immer mickrig trotz großem Scale. Ich weis nicht was ich falsch mache.

Die Größenausdehnung würde ich mir wünschen in etwa wie auf dem Screen hinzubekommen.

user posted image

ozzi789

BeitragDi, Sep 09, 2008 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du die Kamera-sichtweite schon geändert ?
CameraRange
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Sep 09, 2008 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Schönes Bild. Ich würde auch gerne bis zur Ende nächster Woche Crysis als Konkurenten ansehen, indem ich ein eigenes Spiel auf dem Markt schmeiße.

Man sollte sich im klaren sein:

- Dass man meisten alleine arbeitet
- Dass man sein Projekt innerhalb einer absehbarer Zeit fertig bekommen will
- Dass man nur sehr schwer gegen 30 Profis die 3 bis 4 Jahre jeweil bis 12h/Tag arbeiten ankommt.

Das mit CameraRange ist so eine Sache. Vielzu gerne würde man CameraRange 0.00001, 1000000 machen. Doch das geht nicht. CameraRange sollte nur innerhalt des Faktors ~ 1:1'000 bis max 10'000 verschoben werden. Das heisst; um nicht alle Objekte in einem Spiel neu skallieren zu müssen, setzt man CameraRange einfach um (verschiebt den Faktor wohlgemerkt).

Die erstaunliche ''Tiefe'' im Bild kommt daher, weil bereits im Vordergrung hochdetailierte Texturen zu erkennen sind. Die Tiefe kommt also aus dem Zusammenspiel zwischen Vordergrund und Hintergrund der zudem noch mit einem leichtem Fog versehen ist. Volumetrische Wolken geben dem ganzen noch das i-Tüpfelchen.

Es gilt also mit intelligenten Texturdesign das ganze so hinzubekommen. Wie man im Bild auch erkennen kann, sind garnichtmal so viele Quads vorhanden, nur eben hochdetailierte Texturen. Da man aber mit Blitz3D vom Haus aus nicht on-the-fly Texturen einfach so nachladen kann, ohne das es zwischendurch hackt, wird das ganze etwas schwiriger. Entweder man lädt alles in den Speicher ein und versucht mit möglichst wenigen Tiles auf dem Terrain projeziert, dem ganzen ein gutes Aussehen zu verleihen, oder man lädt zwischendurch nach (unter Blitz3D nur mit stottern verbunden). In beiden Fällen wird aber ein eigen erstelltes LOD und Terrainsystem von nöten sein. Das unterscheidet sich also von LoadTerrain und professioneller Spieleentwiklung.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Der_Schläfer

BeitragMi, Sep 10, 2008 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe kürzlich für eine grössere Szene eine Meshterrain-Funktion geschrieben, und die tut inzwischen schon recht ordentlich... Ich habe die Methode mit den Textur-Layern benutzt, wo man im Prinzip pro Textur ein eigenes MeshTerrain hat und dann alle Veretxpunkte bis auf die mit der Textur die man einzeigen möchte vertesteckt bzw von anfang an weglässt.

Tönt jetzt nach extrem-Highend, ist es aber nicht unbedingt.
Am besten währe es, wenn du deine Landschaft zum Beispiel aus einem bild ausliest, in eine riesige bank schreibst und dann irgendwie um den spieler herum "den bonden generierst"., evtl noch mit verschieden mesh-detailstufen, weil echtzeit-vertexbearbeitung sollte im gegensatz zu echtzeit-texturbearbeitung nämlich gehen, soviel ich weiss (belehrt mich wenn ihr damit gescheitert seid)

das problem ist halt unter anderem auch dass meshes nur eine begrenzte anzahl vertexpunkte haben können, deshalb musst du entweder das terrain in viele terrains aufteilen oder aber eben dauernd LODs hinzufügen bzw entfernen...

ist eine heidenarbeit aber anders wirst du keine zufriedenstellenden resultate erzielen (blitz3d ist schliesslich auch nicht für solches zeugs gerdacht, der flugsimulator hat bestimmt eine eigene grafikengine)

Von Blitztzerrains und riesigen vorberechneten Texturen würde ich dir dringend abraten, vor allem wenn dein Game auch auf nicht-extrem-highend computern laufen soll, deren grafikarten zum beispiel ein texturgrössenlimit von 2048 haben.

Noch wegen Vegetation und lowpaly-Häusern und so: Du solltest unbedingt eine Funktion schrieben, die deine Objekte zu SInglesurface-Clustern zusammenfasst, die in der entfernung ausgeblendet werden können (manuell per hideentity oder mit entityautofade). Alles andere (viele entitys, viele surfaces usw) braucht (zu)viel leistung.

zufällig generierte landschaften die nach deinem Bild aussehen sind übrigens auch sehr schwer zu machen...

DerHase

BeitragMi, Sep 10, 2008 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ein Buch zum Thema, online bei NIVEA Wink

klicki klicki
Play Satyr!
 

vanjolo

BeitragMi, Sep 10, 2008 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke euch, ich sitze gerade an einer Lösung die vielleicht zufriedenstellend wird. Wink

Der_Schläfer

BeitragMi, Sep 10, 2008 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hoffe doch Wink
Einen flugsimulator auf b3d-basis habe ich jetzt noch nie gsehen

Edit: Ups, von du willst ja gar keinen proggen -.-

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group