Aktuelle Zeit: 12.05.2025, 23:13

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Terrain hier:verschiedene Texturen
BeitragVerfasst: 19.08.2007, 19:17 
Offline

Registriert: 19.08.2007, 18:40
Beiträge: 6
Wohnort: Schwabenland
Hallo zusammen,
ich bin ganz neu im Bereich Spieleprogrammierung, insbesondere mit Irrlicht3D. Deshalb bin ich fred und alex sehr dankbar für ihre Ausführungen beim Thema "Intro-Menu-Game". Ich habe deren Ideen als Grundlage für meine (Einsteiger-)Versuche genommen....und es funzt recht gut.

Jetzt aber zu meiner Frage:
In den Tutorials gibt es ja die Beschreibung zum Terrain. Hier werden zwei Texturen verwendet um die Heightmap zu "belegen" . 1. die terrain-texture mit der skalierung 1 und die detailmap3 mit der Skalierung 20. Was man jetzt sieht, ist eine braune Mondlandschaft mit vielen kleinen Kratern. Ich möchte aber doch, je nach Höhe meiner Umgebung, braune Erde, grünes Gras, graue Felsen und evtl. weißen Schnee auf den Bergspitzen. Das heißt aber doch, daß ich die Detailmap für eine Skalierung 1 erstellen müsste, was aber bei einer Heightmap von einer Ausdehnung 256x256 doch recht "grobkörnig" ausfallen würde.

Jetzt habe ich gesehen, daß man bis zu 4 Texturen übereinander legen kann (besser: können soll). Ich komme aber bei diversen Versuchen auf keinen grünen Zweig. Es ändert sich einfach nichts und es sieht aus, als wären nur die Texturen 0 und 1 relevant. Hat von Euch schon jemand mehr Erfahrung?

Danke im voraus, daß überhaupt jemand mein Pamphlet gelesen hat

Gruß Luxar


Nach oben
 Profil  
 
BeitragVerfasst: 19.08.2007, 20:23 
Offline
Moderator

Registriert: 26.03.2007, 20:06
Beiträge: 114
Gugg dir mal den aktuellen Scrrenshot von Basecamp Union in der Screenshotgalerie an. Dort wird immer noch das selbe Verfahren wie im Tutorial verwendet. Ich habe mit Hilfe des Tools Scapemaker eine Grundtextur in der Größe 2048x2048 erstellt. Diese besteht aus den Bestandteilen Gras, Steine, Schnee, wobei auch noch mehr gehen würde. Das ganze ist nicht all zu detailiert, da es ja über das gesammte Terrain gestreckt wird, reicht aber so vollkommen aus. Auf die lege ich die Detailtextur mit nur 256x256 aber Skalierung 400. Dabei ist in der Detailtextur nur Perlin-Noise rauschen drin. Dadurch passt sie auf alle Grundmaterialien und sieht trotzdem gut aus.

Für die Verwendung von mehr als 2 Texturen musst du dir in Irrlicht neue Materialien schreiben, optional mit Shader. Aber außer wenn man wirklich Splattering im Terrain verwenden möchte, bringt das nichts, da reichen die 2 Texturen locker aus...


Nach oben
 Profil  
 
BeitragVerfasst: 20.08.2007, 07:24 
Offline

Registriert: 19.08.2007, 18:40
Beiträge: 6
Wohnort: Schwabenland
Hallo Lynxeye,

danke für Deine Antwort. Ich glaube, ich habe da noch einiges falsch verstanden. Aber Deine Beschreibung bringt mich da weiter.(Ich dachte bisher, die Heigthmap selbst hätte aus Performancegründen nur eine Ausdehnung von 256x256, aber so wie ich Dich verstehe, liege ich da ja schon völlig dabeben).

Ich gucke mir das alles nochmal genauer an.

Danke vorerst

übrigens: ich habe mir den Screenshot angesehen...ich glaube, ich gehe wieder zurück zu meinen LEGO-Steinen...so was wie Du da gemacht hast, kriege ich ja nie hin... ach, mal sehen. Bald habe ich Urlaub ;-) und Zeit zum proggen.

Gruß Luxar


Nach oben
 Profil  
 
BeitragVerfasst: 20.08.2007, 09:09 
Offline
Moderator

Registriert: 26.03.2007, 20:06
Beiträge: 114
Mhm ich glaube das ist ist jetzt auch noch nich ganz richtig.

Die Heightmap in Irrlicht darf nur 256x256 groß sein, da sonst die Maximalgröße der Indexbuffer überschritten wird. Ich hab das gesamte Terrain allerdings noch um den Faktor 16 gestreckt, was wie man sieht für ansehnliche Grafik völlig ausreicht. Damit hat man schon mal ein verdammt großes Terrain von etwa 16Km².

Beim DetailMap Material, was ich und du ja auch verwende, wird die Farbe der Grundtextur (Stage 0) mit der Farbe der Detailtextur (Stage1) vermischt. Die Grundtextur habe ich in einer Auflösung von 2048x2048 vorliegen. Darauf sind halt die Farben für Gras, Steine, Schnee. Das wird über das gesamte Terrain gestreckt, wodurch man von den Materialien nicht mehr viel erkennen kann, was aber egal ist, da durch die sich ständig wiederholende Detailtextur wieder genug Struktur hinzugefügt wird.

Eigentlich ist das ganze gar nicht so schwer, nur das Prinzip des DatailMap Materials muss dir klar sein, da kann ich dir die IrrlichtDoku und auch Google ans Herz legen, das ist ein ziemlich gebrüchliches Verfahren...

MfG Lynxeye


Nach oben
 Profil  
 
BeitragVerfasst: 20.08.2007, 14:14 
Offline

Registriert: 19.08.2007, 18:40
Beiträge: 6
Wohnort: Schwabenland
Hallo Lynxeye,

also Du gibst Dir ja wirklich Mühe mit mir. Vielen Dank dafür. Und damit Du Deinen Tag richtig gut im Sinne eines Pfadfinders begehen kannst (Jeden Tag eine gute Tat...) schreibe ich jetzt meine Erfahrungen aus der heutigen Internet-Recherche hier noch mal auf. Ich hoffe, ich hab's jetzt einigermaßen gefressen:

Die Hightmap besteht aus 256x256 Dreiecken. Wenn man jetzt im ersten Schritt die Skalierung mal wegläßt, bedeute das, daß die Grundtextur (Stage 0) also auch 256x256 Pixel hat. Jedes einzelne Pixel färbt eines der Terrain-Dreiecke ein. Somit muss jede Pixelfarbe natürlich optisch zur Höhenlage der dazugehörigen Dreiecks passen. Also tiefe Bereiche des Terrains sind grün (Gras) oder blau(Wasser). Je höher sich das Terrain erhebt, wechseln die Pixelfarben dann über braun (Erde) grau (Fels) bis weiß (Schnee). (Detailmap jetzt noch außer acht gelassen)

Wenn nun das Terrain gestreckt wird, bleibt die Anzahl der Dreiecke gleich, sie werden aber größer dargestellt. Jetzt hat man die Möglichkeit, die Grundtextur auch zu vergrößern, hier aber in dem Sinne, daß jedem Dreieck also mehr Pixel als Textur zur Verfügung stehen. Wenn man also die Heightmap um de Faktor 4 "dehnt", so hat man die Möglichkeit, jedes einzelne Dreieck mit 4 mal so viel Pixeln zu texturieren. Dadurch ist man in der Lage, schon eine gewisse Struktur in die Textur einzubringen und außerdem kann man die Übergänge an den Grenzen der einzelnen Dreiecke farblich anpassen.

Wichtig ist vor allem, daß die Grundtextur mit der Heightmap genau zusammenpasst.

Die Detailmap hat dann nur noch die Aufgabe, durch ihre eigene Struktur (das Rauschen) alles noch etwas zu glätten, verwaschen, wie auch immer. Dabei muß darauf geachtet werden, das diese Detail-Struktur, dadurch daß sie ja gekachelt über dem ganzen Terrain liegt, auch einigermaßen zu allen Geländeformen passt. Soll heißen, daß der Schnee dann nicht zu felsig, oder das Gras nicht zu steinig wirkt. Also einen guter Mittelweg finden.

Habe ich das jetzt einigermaßen richtig verstanden?

Wenn ja, dann hast Du erst mal Ruhe vor mir, wenn nein, dann auch...weil ich dann Kopfschmerzen bekomme.

Gruß Luxar


Nach oben
 Profil  
 
BeitragVerfasst: 20.08.2007, 14:42 
Offline
Moderator

Registriert: 26.03.2007, 20:06
Beiträge: 114
Joa stimmt soweit alles, außer, das man auch auf einem ungestreckten Terrain eine größere Basetextur nehmen kann. Dann kommen halt auf ein Dreieck nich 1 Pixel der Textur sondern halt zB 8. Also du kannst die Grundtextur unabhängig von der Terraingröße vergrößern. Natürlich sieht sieht es immer besser aus, je mehr Pixel pro Dreieck die Grundtextur hat, aber das kannst du ja dann selber ausprobieren...

Und das mit der Detailmap is jetz genau richtig.


Nach oben
 Profil  
 
BeitragVerfasst: 20.08.2007, 19:26 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Um mögliche Kopfschmerzen zu vermeiden:
Die Heightmap darf nicht 256 * 256 groß sein!
Erlaubte Kantenlängen sind 5, 9, 17, 33, 65, 129 und 257, dabei ist 257 * 257 bereits zu groß und funzt afaik bis jetzt nur mit speziellen Patches.
Möglich ist zB 129 * 129 oder afaik auch 129 * 257, du kannst dann mehrere Terrains aneinander legen, wenn du möchtest.

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
BeitragVerfasst: 20.08.2007, 20:29 
Offline

Registriert: 19.08.2007, 18:40
Beiträge: 6
Wohnort: Schwabenland
Hallo thephoenix,

also ich möchte Dir ja nicht widersprechen (ich habe in der API gestöbert und ehrlich gesagt kaum was verstanden) aber:
Warum ist im original Tutorial die Heightmap genau 256x256 Pixel groß ?

Daß, was ich aus der API herausgelesen habe, ist, daß diese Werte, die Du beschreibst, irgend etwas mit der Berechnung des LOD zu tun haben. :?

Okay ich nehme erst mal ´ne Aspirin.

Gruß Luxar


Nach oben
 Profil  
 
BeitragVerfasst: 20.08.2007, 20:59 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Zitat:
also ich möchte Dir ja nicht widersprechen (ich habe in der API gestöbert und ehrlich gesagt kaum was verstanden) aber:
Warum ist im original Tutorial die Heightmap genau 256x256 Pixel groß ?

Stimmt. -.-
Tatsache ist aber, dass bei 256 * 256 afaik auch nur ein Teil des Terrains tatsächlich dargestellt wird. Das hat mir mal übelste Probleme bereitet, aber wenn ich mich nicht schwer irre, stimmt, was ich gesagt habe. Versuch mal ein Terrain mit der Beispielheightmap zu erstellen und mess dann die Größe, wenn sie genau 256 * Höhe * 256 ist, Glück gehabt.
Außerdem ist es ja nur logisch, immer einen Pixel zu addieren, da ja für ein Feld mit 256 * 256 Quadraten jeweils 257 Längs- und Querstriche vorhanden sind.

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
BeitragVerfasst: 23.10.2007, 12:44 
Offline

Registriert: 19.08.2007, 18:40
Beiträge: 6
Wohnort: Schwabenland
Hallo zusammen,
ich habe in den letzten Wochen ein wenig mit dem Terrain rumgespielt:

1. thephoenix sagt es völlig korrekt: Das Terrain wird nur bei 129x129 komplett dargestellt (etwas anderes als quadratisches Seitenverhältnis habe ich nicht ausprobiert). Bei größeren Arrays fehlt ein Teil des Randes. Ich muß mal gucken, wie es sich verhält wenn man sich "auf" dem Terrain bewegt...also ob dann der fehlende Teil dargestellt wird, wenn man näher rankommt. Aber ich gleube eigentlich nicht.

2. Mir ist aufgefallen, daß das Terrain gespiegelt dargestellt wird. Habe ich das richtig beobachtet?

Gruß
Luxar


Nach oben
 Profil  
 
BeitragVerfasst: 23.10.2007, 16:32 
Offline
Moderator

Registriert: 26.03.2007, 20:06
Beiträge: 114
Joa, das ist auch so eine Eigenart von Irrlicht... gab mal nen Patch dazu, aber der ist anscheind nicht mit ins SVN gewandert.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de