explodierende Raumschiffe
-
hmmmmmmmm schrieb:
Ich meine sowas:
Gegeben ein Würfel, zerlege diesen in Tetraeder.
Bloß dass der Würfel durch ein komplexeres Objekt ersetzt wird.Du könntest es auch einfacher machen und das Model in deinem 3D-Editor explodieren lassen und dann die Animation abspielen. Wenn diese zu Ende ist, dann ersetzt du das Model während des Explosionseffekts mit Schrotteilen die du vorher designed hast.
Kannst ja für jedes Modell extra Schrott anfertigen.
Das wäre vor allem FPS-schonender.
Zumindest mein Milkshape kann Dinge explodieren lassen.
-
Dann mal anders gefragt: Kann mir jemand einen Algorithmus zum Explodieren einer Kugel in genügend viele Tetraeder sagen?
-
Einfache Möglichkeit:
Eine größere Explosion, durch Sprites dargestellt, die das Raumschiff überdeckt. In dem kurzen Moment, in dem man das Raumschiff nicht, sieht wird es gelöscht und durch eine größere Anzahl von Tetraedern o.ä. ersetzt, die dann von dem Zentrum der Explosion wegbewegt werden.
Komplizierte Möglichkeit:
Das Raumschiffmodell für die Explosion könnte schon aus vielen Bruchstücken bestehen, die alle eine eigene Transformationsmatrix besitzen. Im Moment der Explosion wird das Originalmodell durch dieses Modell ersetzt. Jedes Bruchstück jekommt zunächst die Transformationsmatrix des Original-Modells. Nach und nach werden dann die einzelnen Transformationsmatrizen geändert, sodass die Bruchstücke wegfliegen. Mit ein paar hübschen Sprites dabei sähe das bestimmt gut aus.
Edit: War jetzt nicht auf den Kugel-Zerlege-Algorithmus bezogen.
MfG, Jochen
-
Ich würde auf jeden Fall das Raumschiff im 3D-Programm in Teile zerlegen. So dass du dann ein "normales" und ein "zerlegtes" Raumschiff hast.
Bei der Explosion ersetzt du das "normale" mit dem "zerlegten", und lässt dann die Teile des "zerlegten" hübsch auseinanderfliegen.
Evtl. könnte die Animation für's auseinanderfliegen auch schon fix im 3D File vorgegeben sein.
---
Das ganze dynamisch zu berechnen wäre zwar auch möglich, aber einerseits viel mehr Aufwand zu programmieren, und andrerseits wäre das Ergebnis ziemlich sicher nicht so schön, wie wenn man das Raumschiff selbst in *passende* Teile zersägt.
Und wenn du willst dass die Teile nicht immer gleich "geschnitten" sind, machst du halt 2, 3, 4 verschiedene Versionen des "zerlegten" Raumschiffs.
-
(Ich knüpfe jetzt mal an hustbaer an)
Optional könntest du bei die Trümmer vom Raumschiff auch noch ein paar zufällige Bruchstücke beimischen. Das sorgt auch für Abwechslung. Vorberechnete Animationen dürften nicht sehr Abwechlungsreich sein. Und 50 vorberechnete Animationen machen dann auch nicht wirklich Sinn.
Das Explosionsmodell sollte auch gleich zusammen mit dem normalen Modell geladen werden. Dann kann man es hinterher auch schnell einfügen und muss es nicht erst kurzfristig laden, was schlecht für die Framerate wäre.
Wenn es ganz ausgeklügelt sein soll, könnte man sogar einen extra Thread zum Laden von Resourcen anlegen, der das Explosionsmodell parallel lädt, wenn die Lebensenergie des Raumschiffes auf ein kritisches Niveau gesunken ist und das Schiff bei den nächsten 3-4 Treffern zerstört werden könnte.
-
Zum Auseinanderfallen der Bruchstücke verwende ich PhysX.
-
hmmmmmmmm schrieb:
Zum Auseinanderfallen der Bruchstücke verwende ich PhysX.
Overkill, würde ich mal sagen. Wenn es sich um ein Raumschiff handelt, müsste es reichen, wenn man die Bruchstücke vom Ort der Explosion wegbewegt. Nennenswerte Kollisionen zwischen den Bruchstücken wird es wohl nicht geben und zusätzliche Kräfte wirken auch nicht auf die Trümmer ein.
-
Jochen S. schrieb:
hmmmmmmmm schrieb:
Zum Auseinanderfallen der Bruchstücke verwende ich PhysX.
Overkill, würde ich mal sagen. Wenn es sich um ein Raumschiff handelt, müsste es reichen, wenn man die Bruchstücke vom Ort der Explosion wegbewegt. Nennenswerte Kollisionen zwischen den Bruchstücken wird es wohl nicht geben und zusätzliche Kräfte wirken auch nicht auf die Trümmer ein.
Sonnenwinde
-
Naja, kommt halt drauf an, ob die Trümmer nur kurz zur Visualisierung da sind, oder ob sie anschliessend eigenständige Objekte mit Kollision und allem darstellen.
Falls jemand das schon relativ alte Spiel Descent Freespace kennt, dort wurde die zweite Möglichkeit gewählt.
-
naja, wie oben schon geschrieben. Ist ja letztlich nur eine Animation, die abläuft. Die Zeitlichkeit ist hier nicht so kritisch, im Gegenteil, wenn es ein Weltraumkampf mit Hit->Trefferanimation ist, und nur die beiden Zustände "Nicht Hit" oder "Hit/Explo" möglich sind, dann ist es um so schöner, wenn der Ablauf ein wenig länger dauert, denn es soll ja ein Strafe sein ;).
(Ist aber dann nervtötend, wenn man z.B. durch Passagen fliegen muß, die viel Übung erfordern)
(Und: Soundkulisse nicht vergessen: z.B.:
http://www.youtube.com/watch?v=exV826Ee17k )Es hängt also auch vom Spieltyp selber ab, was ginge. Bei 3D kann ich mir z.B. Teile vorstellen, die dem Spieler entgegenfliegen.
Außerdem sind bestimmte Teile verbeult, oder aufgeblasen, zerissen, gedrückt, verkantet, verkohlt usw. Wie hustbaer schreibt, sind mehrere Ablaufmodelle zur Variation sinnvoll. Ein Raumschiff könnte z.B. von der Explosion schon wie ein Ballon vorgeformt werden.
Wie machens die Filmleute? Mal so, mal so - man hatte z.B. in der Filmserie Airwolf( http://www.youtube.com/watch?v=WSoTY53njKc ) am Ende mit dem obligatorischen Bumm in jeder Folge fast immer die gleiche Abschußsequenz abgespielt, aber die meisten Zuschauer dürfte das kaum gestört haben.
Und in echt?
http://www.youtube.com/watch?v=4RMkA8j9rH0
http://www.youtube.com/watch?v=OZVBfiZvZos