GeoMod
-
Hallo!
Ich hab mir jetzt mal darüber Gedanken gemacht wie man die Gebäude etc. in einem Spiel zerstören kann, so wie in der GeoMod Engine (Red Faction) aber ich habe absolut keine Idee wie man so etwas realisieren kann.
Statische Vertexbuffer etc. kann man da ja total vergessen und es müsste doch eigentlich total langsam laufen, aber trotzdem funktioniert die Engine relativ schnell.Auch weiß auch nicht wie man nun berechnen könnte, wie sich der Vertices bei einem Schuss in die Wand ändern.
Hat wer eine Idee wie man das machen kann? (Mich interesiert nur die Technik algemein)
cu
-
Wieso werden die kompliziertesten fragen eigentlich immer von gästen erstellt?
-
Hi !
Ich weiß leider auch nicht wie man so etwas implementieren könnte, nur folgende kurze Hintergrundgeschichte :
Red Faction ist das Einzige Spiel das die "Geomod Engine" verwendet, man kann z.B. mit einem Raketenwerfer Löcher in die Wand schießen, um so Hindernisse zu "umgraben", Gegner durch herunterfallende Geröllmassen zu behindern usw...
Der Developer der Engine meinte in einem Interview, er hätte an der Theorie dafür ein halbes Jahr gesessen. Er ist viel herumgereist und hat mit einigen Professoren gesprochen, die sich u.a. mit CSG Techniken auseinandergesetzt haben. Sie alle meinten es wäre unmöglich so etwas zu programmieren.
Naja, wie man sieht war es doch möglich. Angeblich, meinte der Devel, wäre wohl die tatsächliche Implementation sehr einfach und kurz ausgefallen, die eigentlichen Probleme wären erst nachher entstanden :
Da das Level veränderbar ist, musste die KI umprogrammiert werden. Ebenso die Lichtberechnung. Ebenso die Sichtbarkeitsberechnung (er meinte es gäbe wohl Probleme mit der existierenden Berechnung durch Portale, leider hat er nicht verraten wie die Berechnung denn nun gemacht wird)Mh, keine Ahnung ob du das hinkriegst, wünsche dir auf jeden Fall viel Glück
Edit : Räschtschreibung
[ Dieser Beitrag wurde am 28.06.2003 um 21:51 Uhr von Headhunter editiert. ]
-
Mich würde das auch interessieren.
Bei Giants z.b. bebt die ganze Erde wenn Kabuto einen Slam Dunk macht,
das ganze breitet sich dann wellenartig aus um dann wieder in den Ursprungszustand zurückzukehren.
Die Frage ist nun, wie wird so etwas gemacht?Und kann man das so implementieren das es dauerhaft so verändert bleibt?
-
Und da habe ich gleich noch eine Frage.
Währe eigentlich fließendes frei bewegliches Wasser möglich?
Also Wasser das einen 3d Raum einnimmt oder den Berg hinunterfließt
und wenn ich dann einen Staudamm am Berg hinsetze, das das Wasser dann einen See bildet bis es irgendwann überläuft.Wäre so etwas möglich?
Und wenn ja, wie?Das was man bisher so in Spielen sieht ist ja alles entweder statisch oder nur gescriptet.
-
Original erstellt von <Mr. Tong>:
**Und da habe ich gleich noch eine Frage.Währe eigentlich fließendes frei bewegliches Wasser möglich?
Also Wasser das einen 3d Raum einnimmt oder den Berg hinunterfließt
und wenn ich dann einen Staudamm am Berg hinsetze, das das Wasser dann einen See bildet bis es irgendwann überläuft.Wäre so etwas möglich?
Und wenn ja, wie?Das was man bisher so in Spielen sieht ist ja alles entweder statisch oder nur gescriptet.**
Möglich ist fast alles! Würd mich auch nicht wundern wenn das schon einmal gemacht wurde (nicht unbedingt in spielen, z.b. "grafikdemos")... Jedoch wird das bestimmt ziemlich rechenaufwändig...
-
ich sehe da irgendwie kein problem ein objekte aus dem anderen herus zu boolen, das ist doch nicht der aufwand, für portale werden dann die zwei räume einfach zu einem definiert und was bleibt noch ?
dass das sonst niemand macht liegt wohl daran, dass man den gleichen spielspass erreicht, indem designer vorher die zerstörten objekte befinieren und man das mti nem script kaput lassen geht.. ist wohl dann auch für die KI einfacher.
oder sehe ich hier etwas ganz falsch? immerhin können grafikprogramme zwei objekte mit tausendem von polys blitzschnell boolen, da dürfte ne wand mit4 polys und noch ein objekt (vielleicht deformierte kugel) nicht das problem seinm oder?
rapso->greets();
-
Alles kann man doch auch nicht zerstören. Ist das der Schlüssel zur Lösung des Rätsels?
-
Original erstellt von <Mr. Tong>:
Währe eigentlich fließendes frei bewegliches Wasser möglich?Sicher ist das möglich.
Was ist denn bitte NICHT möglich??Es könnte halt nur sehr schwierig werden das umzusetzen.
Als erstes solltest Du wohl eine kleine Physik-Engine cod0rn (oder lizenzieren).
Bißchen Schwerkraft und Masse-Berechnungen ist sowieso klar.
Aber für Wasser würd' ich da wohl noch etwas weiter gehen...Du könntest ja Mal probieren jeden Wassertropfen einzeln zu berechnen / rendern (1 Milliarde Partikel oder so)...
Du müsstest dann für jeden Wasserpartikel Kollisionsabfrage mit der Umwelt / mit den anderen Wassertropfen implementieren...
Wenn die Tropfen beim Runterlaufen gegen einen Stein donnern, daß sie entweder daran vorbei oder drüber springen oder so ähnlich, und sich ggf. aufstauen.Wie gesagt, mit Partikeln pur isset wohl ziemlich rechenaufwändig...
Also nimmst Du einen langgezogenen Quader, den Du irgendwo runterschickst, mit möglichst vielen Vertices zur interpolierten Animation...
Du müsstest die untenliegenden Vertices genau auf Bodenhöhe ausrichten, und dabei etwas - durch die "Physik-Engine" berechnet - nach unten schieben. Der gleiche Wert muß halt auch auf die obenliegenden Vetices aufgerechnet werden - am Besten etwas verzögert. Sobald dann die vordere Kante zum Beispiel mit einem Baum kollidiert, mußt Du ggf. den Kollisionspunkt suchen und das "Wasser-Mesh" an dieser Stelle splitten... die beiden Meshes würden dann (je nach Hang-Steigung) unabhängig voneinander weiterlaufen...
Damit das Wasser nicht einfach nur geradeaus irgendwo runterläuft, solltest Du halt immer die Normals der Polygone, die den Hang ausmachen, in die Fließrichtung (verzögert) mit einberechnen...
Dann wird das Wasser schön kurvig irgendwo runterlaufen...Jetzt noch Partikel, überall wo es Gischt gibt (an besagtem Baum z.B.) - und es sieht vielleicht schon nach was aus...