Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

03.05.2008, 09:51

Ein Terrain erstellen

Hallo an alle,

ich habe mich jetzt einige Zeit mit der Spieleprogrammierung beschäftigt. Habe jetzt damit begonnen ein eigenes Terrain zu erstellen. Was ich hinbekomme ist eine Heightmap zu laden und eine Detailmap darüberzulegen. Ich arbeite übrigens mit der Irrlicht Engine. Soweit so gut. Ich bekomme es hin, das Terrain darzustellen. Allerdings ist es sehr klein. Wie bekomme ich es nun hin ein Terrain zu erstellen, welches z.B. 10km² groß ist. Muss ich hier mit Terrain Tiling arbeiten? Wie gehe ich die Sache richtig an? Ist es besser mit Terrain Mapping zu arbeiten oder schöner das Terrain als Mesh zu erstellen?. Wie genau funktioniert das mit dem Terrain Tiling? Ich habe bereits eine Menge gegoogelt zu diesem Thema aber alles was ich finden kann bringt mich auch nur auf den Stand auf dem ich gerade stehe.
Kennt vllt. jemand ein gutes Tutorial zum erstellen eines Terrains in C++ und Direct X bzw. mit der Irrlicht Engine?
Was mich auch interessiert, wie ich Straßen und Wege auf die Terrain lege. Ist es hier besser mit Color Mapping zu arbeiten und wenn ja wie funktioniert das mit dem Color Mapping genau?

Ich weiß das ist jetzt mal ne ganze Menge. Danke schon mal im voraus für eure Mühe.

Gruß
gd

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

03.05.2008, 16:37

uiuiui, ne menge fragen^^

1.

Zitat von »"gravedigger"«

Wie bekomme ich es nun hin ein Terrain zu erstellen, welches z.B. 10km² groß ist. Muss ich hier mit Terrain Tiling arbeiten?


Du musst nicht unbedingt Terrain Tiling anwenden, aber es bietet sich an, weil man dann schön nachladen + culling der einzelnen tiles geht leichter, da sowieso alles aufgeteilt ist.
Um ein Terrain über mehrere Kilometer zu bekommen, solltest du das Tiling anwenden, sowie würde ich eine begrenzte anzahl an Terrains (jedes Teil sei mal ein terraim), meinetwegen 3x3 terrains (je meinetwegen 512x512 Cells) immer nur anzeigen. Wenn man an eines der Randterrains schreiten, wird dann das nächste nachgeladen (muss man schauen wie man das clever implementiert. Je Terrain solltest du aus performancegründen LOD Algorithmen anwenden (Goemipmapping ist toll :)), d. h. somit kannst du jedes terrain in kleinere aufteilen udn die auch durch Quadtrees cullen bzw. detailstufe erniedrigen / erhöhen.

Ergo: ist sicherlich nciht ganz einfach aber machbar :)

2.

Zitat von »"gravedigger"«

Was mich auch interessiert, wie ich Straßen und Wege auf die Terrain lege. Ist es hier besser mit Color Mapping zu arbeiten und wenn ja wie funktioniert das mit dem Color Mapping genau?


auch da scheiden sich die geister. Du hast drei möglichkeiten(die mir einfallen):
- auf der Textur für das terrain ist alles drauf (+ Strassen). hat den vorteil, dass es an sich schneller zu rendern ist,a ber auch beim verändern des terrains eine menge aufwandt betrieben werden muss
- in schichten mappen (schätze das is dein colormapping). unetrste schicht is der Boden (z. b. Gras oder Sand). die zweite schicht ist die strassentextur, die dritte eine alphamap. die alphamap sollte da wo strasse sein sol weiss sein und der rest schwarz. d. h. die alphamap ist für die zweite schit, wodurch du schon flexibler die strasse anpassen kannst, indem du einfach neue weisse wegen einzeichnest auf der alphamap. theoretisch geht das asuch über eine A8R8G8B8 map, aber ich würde die extra-variante bevorzugen
- die dritte Variante wäre durch extra erzeugte Polygone,wo du dann die strasse drauf mappst, was an sich am flexbielsten ist, aber auch recht aufwändig sein kann, wenn du schöbe kurfeven haben willst

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

04.05.2008, 09:46

Also da du mit Irrlicht arbeitest, kann dein Terrain max 128x128 Punkte (bzw. 129x129 Pixel) groß sein. Die Irrlicht kann auch die entsprechende LOD Techniken und um es einfach größer zu machen, kannst du es erstmal soweit skalieren, dass die Punkte nen vernüftigen Abstand voneinernander haben.

Bei deinen Straßenproblem musst du mal schauen, da die Irrlicht bei den Standardmaterialien Probleme mit einfachen Alphablending auf Alphakanalbasis hat. Ich meine nämlich, dass dies mit Irrlicht unter OGL nicht einwandfrei geht.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

tnecniv

Treue Seele

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

4

04.05.2008, 11:46

Ich arbeite auch mit irrlicht und benutze das hier:

http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=20940&postdays=0&postorder=asc&start=0

funktioniert ganz gut, aber ist natürlich nicht selbstgeschrieben, falls des dein ehrgeiz war.
gruß Vincent
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

5

05.05.2008, 16:00

@TrommlBomml.

uiuiui ne Menge antworten:D . Da muss ich mich doch noch ein bißchen tiefer einlesen in die ganze Geschichte. Ist echt komplexer als ich gedacht habe. Aber danke für deine Antworten. Dadurch weiß ich schon mal über was ich mich noch alles informieren muss.

@nox.
Also ob es unter irrlicht Schwierigkeiten gibt mit OGL stört mich gerade etwas weniger, da ich sowieso mit DX9 arbeite. Wo finde ich denn auf der irrlicht seite, dass das Terrain max. 128x128 pixel groß sein kann?

@tnecniv
Hi Vincent, also mit dem Algo habe ich auch schon versucht zu arbeiten, bin aber noch nicht ganz dahinter gestiegen, wie ich z.B. die von der klasse geladene Colortexture ändere und wie ich diese Terrain nutze um dort eine Straße einen Weg einzubauen. Hast du vllt. mal etwas Beispiel Code wie man diese Klasse sinnvoll einsetzen kann? Oder ne gute Doku dazu???


Gruß
gravedigger

tnecniv

Treue Seele

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

6

05.05.2008, 17:18

kommt ein bisschen darauf an was du machen willst..
also das mit der colormap macht er über vertex.color. da gibts doch die funktion: terrain->setColor(x,y,color)
die kannst du benutzen um die grundfarbe für jeden vertex zu setzen und dann packst du noch ne detail texture drüber. er schrteibt was von: terrain->getMaterial(0).setTexture(1, driver->getTexture("texture"))
für irrlicht 1.4 welche version beutzt du denn?
auf jeden fall kannst du noch mit terrain->setTileUV die UV-Koordinaten der einzelnen tiles bestimmen...
zu den straßen: das ist meiner erfahrung nach recht kompliziert, dass schön hinzubekommen... musst du eventuell ein bisschen das terrain umschreiben, fürchte ich..

ich hoffe ioch konnte dir ein wenig helfen
gruß vincent
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

7

06.05.2008, 10:19

Benutze schon Irr 1.4.

Habe ich auch befürchtet dass ich noch umschreiben darf. Dazu muss man aber erst mal verstehen wie Straßen im allgemeinen importiert werden. Zählen Straßen denn eher zum Environment Mapping womit ich auch Wasser etc. implementiere?
Ansonsten ist das Tiled Terrain schon sehr gut. Muss man jetzt nur noch auf seine Bedürfnisse anpassen.

tnecniv

Treue Seele

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

8

06.05.2008, 13:55

Naja, du musst dir villeicht auch überlegen, was du mit den sraßen machen willst: sollen die einfach fix auf dem terrain drauf sein oder kommen die nachträglich rauf...
am besten find ich persönlich die 2 varante von tromml. das mit dem direkt auf die textur ist blöd, weil du um auf einem großen terrain auch detailierte straßen zu haben dann eine dementsprechend hochauflösende textur brauchst. oder natürlich man hat mehrere texturen, wäre aber ressourcen unfreundliche. . müsste man sich von wegen nachladen überlegen.. das letzte mit den extrapolygonen ist glaub ich auch deshalb nicht soo schick, weil man eventuell Z-fights (oder wie das hieß..) bekommt...wenn du bei dem TiledTerrain bleiben willst, würd ich mir glaub ich überlegen, wie ich die straßen mit auf die detailtexture krieg, und dann kann man den tiles ja entsprechende koordinaten zu weisen. soweit ich das weiß unterstützt irrlicht von hause aus nur vertices mit zwei texturkoordinaten. da muss man sich auch nochmal was überlegen... naja, das sind so meine gedanken dazu..
gruß
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

9

06.05.2008, 14:03

das mit den z-buffer fights lässt sich minimieren, indem man minimalen abstand lässt (opengl hat da eine möglichkeit namens polygon-offset, wobei ich glaube das dass bei irrlicht keine rolle spielt, aber vielleicht gibt es sowas da ja auch!). auch eine art skirt (seitlich angebrachte polygone) könnte den abstand vergrößern zwischen der strasse und dem boden, was aber bei detaillierten strassen noch mehr overhead erzeugt. muss man abwägen.

10

08.05.2008, 08:49

@vincent
Also die Straßen bzw. Wege, sollen auf jeden Fall in der Tesxtur vertieft sein. Also nicht aufgelegt sondern halt so wie man sich z.B. einen Trampelpfad vorstellt. Kann man das auch erreichen wenn man sie nachträglich aufbringt?

Werbeanzeige