Ich möchte die Kamera während einer Explosion ein wenig herumschütteln, und ich habe ein paar verschiedene Funktionen ausprobiert, um sie herumzuschaukeln, und nichts scheint das wirklich zu geben. Typ Gefühl, das ich suche. Ich habe einige willkürliche, relativ hochfrequente Sinuswellenmuster mit einer gewissen linearen Dämpfung sowie ein Rechteckwellenmuster ausprobiert. Ich habe versucht, nur eine, zwei und alle drei Achsen zu bewegen (obwohl der Dolly-Effekt in diesem Fall kaum spürbar war).
Kennt jemand ein gutes Kameraerschütterungsmuster?
Antworten:
Ich habe ein anständiges Verwackeln der Kamera durch Anwenden von Perlin-Rauschen auf die Ausrichtung der Kamera. Es gibt Ihnen einen anständigen großen Ruck mit höherfrequentem Rütteln und kann wirklich gut aussehen.
http://mrl.nyu.edu/~perlin/doc/oscar.html enthält weitere Details und Beispielcode zum Erzeugen von Rauschen.
quelle
Wenn Sie sich auf diese ruckelnde Bildschirmerschütterung aus einer Explosion beziehen, habe ich versucht, dies in meinem Prototyp-Spiel zu implementieren (es ist 2D, sollte aber, wie ich erwarte, recht gut in 3D übersetzt werden). Schauen Sie sich das Youtube-Video an und sehen Sie, ob Sie danach suchen - der Screen Shake startet gegen 1:35
Wie auch immer, ich habe es geschafft, ein Ansichtsfenster für den Bildschirm zu erstellen und den Mittelpunkt zu speichern (
centre
).Wenn eine Explosion
radius
losgeht , erstelle ich einen Zufallswert von ~ 30px. Ich versetze dann das Ansichtsfenstercentre
in zufälliger Richtung um so viele Pixel.Für jedes nachfolgende Update (zwischen dem Zeichnen auf den Bildschirm) verkleinere ich um
radius
10-20% und versetze das Ansichtsfenster um so viele Pixel voncentre
neuem. Anstatt jedoch einen zufälligen Winkel für diesen Versatz zu wählen, nehme ich stattdessen den vorherigen Ansichtsfensterwinkel voncentre
und füge 180 +/- 60 Grad hinzu.Im Grunde genommen versetze ich das Ansichtsfenster bei jedem Update (oder 10-20 ms oder so) um eine abnehmende Anzahl von Pixeln vom
centre
Bildschirm.Hier ist ein Pseudocode:
Normalerweise beende ich die Bildschirmschüttelung, wenn der Radius unter 2,0 sinkt
centre
. An diesem Punkt setze ich das Ansichtsfenster zurück auf .quelle
randomAngle += (150 + rand()%60)
, um alle +/- Probleme loszuwerden.Um ein Verwacklungsgefühl zu korrigieren, geht es weniger um die Bewegungsrichtung als vielmehr um Beschleunigungskurven.
Kameraverwacklungen tauchen in den Bereich der Animation ein und daher gelten alle Regeln der Handlung / Reaktion. Wenn Sie sich linear von Punkt zu Punkt bewegen, fühlt es sich glatt und gleichmäßig an und wirkt nicht wie ein Aufprall.
Wenn Sie den Kopf hin und her schütteln, bemerken Sie, dass er sich in der Mitte zwischen Richtungswechsel am schnellsten bewegt und auf jeder Seite langsamer wird, wenn Sie erst abbremsen und dann in die neue Richtung starten müssen.
Hier finden Sie eine Auflistung verschiedener Beschleunigungsfunktionen , die Sie auf Ihre Bewegung anwenden können. Möglicherweise möchten Sie nur die erste Bewegung mit EaseOut deaktivieren, damit sie sich etwas abrupter anfühlt, und dann mit EaseInOut den Rest, um die Kopf- / Kamerabewegung zu simulieren.
quelle
wkerslake hat recht, verwackelte kameras wirken komplexer als man denkt.
Wenn Sie eine verwackelte Kamera emulieren, müssen Sie überlegen, welchen Kameratyp (Operator) Sie nachahmen möchten. Das Gewicht der Kamera beeinflusst die Trägheit, z. Schwere Kameras gleichen kleine „zufällige“ Bewegungen aus. Ein Kameramann auf einer Schiene oder in einem Auto fügt zusätzliches Rauschen hinzu.
Die Verwendung von Perlin- oder Simplex-Rauschen ist definitiv eine Option. Dann geht es darum, das richtige Gleichgewicht zwischen verschiedenen Rauschverhältnissen zu finden. Die Interpolation zwischen Werten ist jedoch weniger rechenintensiv und kann genauso effektiv sein.
Vor einiger Zeit habe ich ein Maya-Skript gefunden, das eine Menge Dinge richtig zu machen scheint. Sie könnten einen Blick auf, dass .
Vielleicht möchten Sie auch einen Blick auf Gran Turismo (5) werfen , dessen Team beeindruckende Arbeit darin geleistet hat, verschiedene Arten von Verwacklungen mit Echtzeitkameras auszuführen, wenn Sie sich eine Wiederholung im Spiel ansehen.
quelle
Wenn Sie eine dynamische Objektphysik haben (wahrscheinlich nicht das richtige Wort, aber so wie ich es meine), bei der Objekte, die nicht repariert wurden, durch die Explosion "weggeblasen" würden, könnte die Kamera als solches Objekt betroffen sein.
Der einzige Unterschied wäre, nur die Drehung / Neigung / Gier / Roll der Kamera und nicht die Position zu ändern.
Sonst vielleicht eine Zufallszahlenfolge generieren und diese irgendwie in Rotation umwandeln? Denken Sie, dass eine Höhenkarte, Graustufen-Inhalte ein Beispiel sein könnten. Sie sind nicht völlig verschieden, sondern zufällig.
quelle