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

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

1

07.05.2012, 19:32

Dynamisches Terrain in Ogre

Guten Abend,
zur Zeit versuche ich ein dynamisches Terrain zu realisieren. Da ich eigentlich gerne Mogre benutzen wollte, habe ich zuerst hier gesucht. Bin leider nicht wirklich fündig geworden. Ich kann in Mogre/Ogre zwar ein Terrain aus einer Heightmap erstellen, es hinterher jedoch nicht mehr verändern.
Vielleicht erst mal zu dem was ich vorhabe. Die meisten kennen sicherlich noch Age of Empires2. Dort konnte man im Karteneditor die Map verändern. Man konnte sie anheben und absenken, konnte Stellen extrudieren und so weiter. Vergleichbare Prinzipien gab es in vielen Spielen. Spontan würden mir da die Tycoon Teile einfallen. Sollte klar sein denke ich. Jetzt möchte ich diese Funktionalität in 3D umsetzen. Da ich bis jetzt noch keine geeignete Datenstruktur gefunden habe, um extrudieren möglich zu machen, wollte ich erst mal kleiner anfangen und ein einfaches Terrain erstellen. Dann soll man mit der Maus eine Fläche auswählen können und diese anheben oder absenken. Wie ich die Fläche auswählen kann ist kein Problem. Schwierig wirds halt beim manipulieren. Hab schon überlegt das ganze mit XNA umzusetzen, aber wollte lieber noch mal nachfragen ob nicht doch jemand eine Möglichkeit kennt, wie sowas mit Ogre/Mogre möglich sein könnte. Wenn ich an die Vertizes vom Terrain kommen könnte und diese direkt manipulieren könnte, würde das zur Not schon reichen.

PS: War mir diesmal mit dem Forum nicht ganz sicher, aber dachte mir Terrains gehören ja irgendwo zur 3D Grafik;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

2

08.05.2012, 03:03

Dann kannst du halt nicht die Ogre Terrain Engine verwenden, obwohl ich dachte (?) dass man die Heightmap in Echtzeit verändern kann? Natürlich kannst du dann keine Überhänge erzeugen, dafür müsstest du entweder eine eigene Terrain-Klasse schreiben oder auf eventuelle 3rd person software zurückgreifen.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

08.05.2012, 06:53

Ich erinnere mich, das WümpftlBrümpftl (ich frag mich wie man den schnell ohne fehler eintippen kann...) für Xrodon II in seinem Editor mit Ogre ein deformierbares Terrain gebaut hat. Das ging ja auch zur Laufzeit. Hast du ansonten im Ogre-Forum schon gefragt?

EDIT: Schreib ihm doch eine PN da antwortet er am ehesten.

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

08.05.2012, 07:43

Werde ihm mal schreiben. Zur not würde ich es mir dann selbst bauen. Habe teilweise schon damit angefangen das ganze in XNA zu realisieren. Die einzelnen Vertizes direkt zu bearbeiten ist zur Not schon ok. Im Ogre Forum habe ich noch nicht gefragt. Dachte mir, hier gibt es ja auch ein paar Ogrekenner. Das wäre meine nächste Anlaufstelle gewesen. Schon mal Danke für die Hilfe.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

5

08.05.2012, 19:02

Klasse Idee mir ne PM zu schreiben - sonst hättet ihr lange warten müssen, bin hier nur noch ganz selten ;D

In Ogre (1.7.1 hatte ich genutzt, dürfte sich aber nicht viel verändert haben) kann man das Terrain problemlos jeder Zeit ändern. Allerdings gibt es da einige Sachen zu beachten.
Prinzipiell wird die Angelegenheit sehr langsam und rucklig wenn man größere Areale deformiert. Allerdings sind die Funktionen hierzu Threadsafe! Mit einem Parallel-For (OpenMP/TBB) oder einer einfachen manuellen Threading ist da viel gewonnen. Deutlich schlimmer wirds außerdem wenn man die Texturierung in Echtzeit ändern möchte.
Hat man einen Bereich editiert, muss man Ogre mitteilen in welchen Rect er Updates durchzuführen hat. Daraufhin werden die Vertexdaten umgehend aktualisiert und Normalen & Lightmapping in je in einen Thread delayed. Hat man man eine flüssige Deformierung (zb Anheben des Terrains) wird die Änderung solang aufgeschoben, bis für ein gewisses Zeitinterval das Terrain sich nicht mehr ändert. Erst eine Weile danach sieht man die korrekten Normalen und Beleuchtung wieder reinploppen. Bin mir gerade nicht sicher ob sich das umkonfigurieren lässt.
Bei Xrodon II hab ich eine Custom-Texturierung und Beleuchtung eingeführt weswegen eine Nachberechnung der Lightmaps nicht nötig war. Allerdings gabs ähnlich zum Ogre-Standardverfahren eine "CompositeMap" der Texturen für die Distanz, welche dann manuell upgedated wurde. Wenn man das System erstmal durchschaut ist Ogre hier sehr erweiterungsfreudig!

Fazit: Editierfähigkeit für Editoren absolut ausreichend. Für Ingame bei kleinen Flächen meist auch. Doof wirds erst wenn Terraineditierung zum Kernspielinhalt wird. Dann sollte man etwas tricksen oder sich ggf. doch was anderes überlegen.

Wenn du mehr Infos brauchst kann ich ja mal in dem alten Code wühlen. Ogre ist da aber größtenteils ganz gut dokumentiert, man findet einiges. Außerdem gibt es ein Sample in dem man das Terrain auch editieren kann (da kann man sich die Performance ohne manuelle Optimierung auch mal gut anschaun).


Je nach Anspruch würde ich davon abraten so etwas mit XNA anzufangen. Ogre bietet ein sehr ausgeklügeltes Chunked-LOD Verfahren mit Geomorphing und feinen Standardshadern! Bis man das nachgebaut kanns eine gaaaanz Weile dauern.

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

08.05.2012, 21:51

Eben das habe ich mir auch gedacht. Dass es da ein Sample geben soll habe ich zwar gefunden, das zugehörige Sample jedoch nicht. Dann werde ich mal ein bisschen weiter probieren und gucken was ich noch so finden kann. Wie gesagt, wirklich zentral ist das Feature nicht. Man soll einfach die Umwelt verändern können so wie es in früheren Spielen wie zum Beispiel Roller Coaster Tycoon auch ging. Da hinterher die Möglichkeit gegeben sein soll Flächen zu extrudieren, muss ich mir eh noch weitere Gedanken machen. Einfache Heightmaps reichen dann ja nicht mehr aus. Ich gucke mal weiter. Melde mich dann bei Gelegenheit. Schon mal Danke für die Tipps.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige

Ähnliche Themen