Chciałbym trochę potrząsnąć kamerą podczas eksplozji, a ja wypróbowałem kilka różnych funkcji do kołysania nią i wydaje się, że nic tak naprawdę nie daje tego „wow, co za huk!” Wpisz uczucie, którego szukam. Próbowałem dowolnych wzorców fal sinusoidalnych o stosunkowo wysokiej częstotliwości z odrobiną liniowego tłumienia, a także wzoru fali prostokątnej. Próbowałem przesunąć tylko jedną oś, dwie i wszystkie trzy (chociaż w tym przypadku efekt dolly był ledwo zauważalny).
Czy ktoś wie o dobrym wzorze drgań aparatu?
Odpowiedzi:
Mam przyzwoite drgania aparatu, stosując szum Perlina do orientacji aparatu. Daje przyzwoity duży wstrząs z wbudowanym drżeniem wyższych częstotliwości i może wyglądać naprawdę dobrze.
http://mrl.nyu.edu/~perlin/doc/oscar.html zawiera więcej szczegółów i przykładowy kod do generowania szumu.
źródło
Jeśli masz na myśli wstrząsające wstrząsy ekranu z eksplozji, próbowałem zaimplementować to w mojej prototypowej grze (jest to 2d, ale, jak sądzę, powinno to dość dobrze tłumaczyć na 3d). Spójrz na wideo z YouTube'a i sprawdź, czy tego właśnie szukasz - wstrząsy ekranu zaczynają się około 1:35
W każdym razie sposób, w jaki to osiągnąłem, to utworzenie rzutni dla sceena i zapisanie punktu środkowego (
centre
).Kiedy rozpoczyna się eksplozja, tworzę losowy
radius
~ 30px. Następnie przesunąłem rzutnięcentre
o tyle pikseli w losowym kierunku.Dla każdej kolejnej aktualizacji (między losowaniami do ekranu) zmniejszam
radius
o 10-20% i ponownie odsuwam rzutnię o tyle pikselicentre
. Jednak zamiast wybierać losowy kąt dla tego przesunięcia, zamiast tego wybieram poprzedni kąt rzutnicentre
i dodałem do niego 180 +/- 60 stopni.Zasadniczo każda aktualizacja (lub około 10-20 ms) przesunąłem obszar wyświetlania o malejącą liczbę pikseli od
centre
ekranu.Oto pseudokod:
Zazwyczaj zatrzymuję wstrząsanie ekranu, gdy promień jest mniejszy niż 2,0, w którym to momencie resetuję ponownie rzutnię
centre
.źródło
randomAngle += (150 + rand()%60)
pozbyciem się problemów +/-.Poprawne „wyczucie” drgania kamery polega nie tyle na kierunku ruchu, co na krzywych przyspieszenia.
Drgania aparatu nurkują w krainę animacji, dlatego obowiązują wszystkie zasady akcji / reakcji. Jeśli poruszasz się liniowo od punktu do punktu, będzie on gładki i jednolity, a nie jak uderzenie.
Jeśli potrząśniesz głową do przodu i do tyłu, zauważysz, że porusza się on najszybciej w punkcie środkowym między zmianą kierunku i zwalnia z każdej strony, ponieważ najpierw musisz zwolnić, a następnie zacząć w nowym kierunku.
Oto lista różnych funkcji łagodzenia, które można zastosować do twojego ruchu. Możesz chcieć tylko EaseOut pierwszy ruch, aby poczuć się nieco bardziej gwałtowny, a następnie EaseInOut resztę, aby zasymulować ruch głowy / kamery.
źródło
wkerslake ma rację, drgania aparatu wydają się bardziej złożone, niż mogłoby się wydawać.
Podczas emulacji wstrząsającej kamery należy pomyśleć o tym, jaki typ kamery (operatora) chcesz naśladować. Ciężar aparatu wpływa na bezwładność, np. cięższe kamery wygładzają niewielkie „losowe” ruchy. Operator kamery na szynie lub w samochodzie powoduje dodatkowy hałas.
Korzystanie z szumu Perlin lub Simplex jest zdecydowanie opcją, wtedy chodzi o znalezienie właściwej równowagi między różnymi stosunkami hałasu. Odkryłem jednak, że użycie interpolacji między wartościami jest mniej intensywne obliczeniowo i może być równie skuteczne.
Jakiś czas temu znalazłem skrypt Mayi, który wydaje się naprawiać wiele rzeczy. Można spojrzeć na to .
Warto też rzucić okiem na Gran Turismo (5) , ich zespół wykonał imponującą robotę, wykonując różnego rodzaju drgania kamery w czasie rzeczywistym, gdy oglądasz powtórkę w grze.
źródło
Jeśli masz fizykę dynamicznych obiektów [prawdopodobnie nie jest to właściwe słowo, ale coś, co mam na myśli], gdzie wszelkie nieruchome obiekty zostaną „zdmuchnięte” przez eksplozję, możesz mieć wpływ na kamerę jako taki obiekt.
Jedyną różnicą byłaby tylko zmiana obrotu / pochylenia / odchylenia / przechyłu kamery, a nie pozycja.
Poza tym, może wygenerować losową sekwencję liczb i przekonwertować ją na rotację? Pomyśl, że mapa wysokości, skala szarości może być przykładem; nie są zupełnie inne, ale są losowe.
źródło