Ich versuche, den Warp-Effekt zu erzielen, den Sie in Spielen wie Geometry Wars sehen .
Kann mir jemand erklären, was hier los ist? Ich habe das Gefühl, dass die Z-Achse des Gitters in irgendeiner Weise vom Programmierer manipuliert wird, aber gibt es vielleicht eine bekannte mathematische Gleichung, um wirklich den richtigen Verzerrungseffekt zu erzielen?
Edit: Um genauer zu sein, meine ich das Verziehen des Gitters. Wie alles in Richtung der negativen Z-Achse gezogen aussieht und dann abprallt.
graphics
graphic-effects
Joey Green
quelle
quelle
Antworten:
Eine 10-minütige Implementierung eines einfachen Federsystems (oder so sagt er in seinem Blog ;)). Das System kann mit mehreren Verwerfungen und anderen das Gitter verzerrenden Dingen umgehen.
Aktualisiert, um einige kleinere Details hinzuzufügen:
Ein paar andere Details. Aus einem Interview, das früher auf der Bizarre Creations-Website gehostet wurde (diese Website ist jetzt aufgrund der Schließung des Unternehmens verschwunden), ging eine Frage hervor:
F: Eine der auffälligsten neuen grafischen Funktionen im Spiel ist der Spielbereich "Schwerkraftraster". Wie hast du das so cool aussehen lassen? Hat wirklich jedes Objekt im Spiel seine eigene Schwerkraft? Das Gitter selbst besteht aus 60.000 Punkten, von denen jeder eine geringe Kraft auf seinen Nachbarn ausübt. Die Simulation selbst befindet sich am Rande der Stabilität, was dazu führt, dass sie so stark schwingt, wenn eines der Spielobjekte einen kleinen Stoß auslöst! Nur wenige Objekttypen wirken sich auf das Raster aus. Da die Berechnung des Rastersystems ziemlich teuer ist, wird es zusammen mit dem Audiosystem auf dem zweiten Kern ausgeführt (der erste Kern ist dem Gameplay und den Partikeln gewidmet, der dritte wird zum Rendern des Audios verwendet).
quelle
Ich weiß nicht, ob es einen "richtigen" Weg gibt, aber es handelt sich wahrscheinlich nur um eine ästhetisch ansprechende lineare Transformation, die mit einer Abnahme angewendet wird, die aus der Entfernung zu einem Punkt berechnet wird.
Also für jedes Element, mit dem Sie arbeiten, würden Sie:
Iirc, Geometry wars wendete dies als verzerrende Verzerrung auf einige Elemente an, während andere Elemente wie Partikel nur von der "Kraft" beeinflusst wurden, ohne verzerrt zu werden. Sie können die Verzerrung in einem Vertex-Shader anwenden, vorausgesetzt, Sie haben genügend Vertices, um den Effekt reibungslos abzutasten. Alternativ können Sie alles, was Sie brauchen, zuerst in einem Offscreen-Puffer rendern und dann die Ergebnisse in einem schön tessellierten Quad rendern, auf das Sie die Verzerrung anwenden, bevor Sie alle nicht verzerrten Elemente oben hinzufügen.
In Bezug auf die Transformation erhalten Sie durch Skalieren das saugende Aussehen. Wenn ich mich richtig erinnere, gab es auch einige Drehungen, die nur eine kleine Drehung sein würden.
Sie können mit Ihren Berechnungen des Intensitätsfaktors immer ausgefeilter werden, um verrückter wirkende Effekte zu erzielen. Sie können beispielsweise den Winkel (a) berechnen, in dem sich ein Element relativ zum Mittelpunkt befindet, und diesen berücksichtigen. Nehmen Sie cos (a) und Sie können Radialwellen im Effekt erzeugen. Was Sie tun möchten, ist sich mit dem erforderlichen Gerüstcode einzurichten und dann in die Stadt zu fahren, um mit verschiedenen Kombinationen von Faktoren zu experimentieren.
quelle