Firebirds: Rozmycie ruchu w War Thunder

Dziś przyjrzymy się rozmyciu ruchu w War Thunder - czym jest, jak zostało zaimplementowane w grze i jakie wyzwania przed nami stanęły. War Thunder będzie wyglądał filmowo!

Czym jest rozmycie ruchu?

W grach wideo obrazy są tworzone od podstaw, a każda klatka wyświetla pojedynczy punkt w czasie.

Prawdziwe kamery czy nawet nasze oczy nie działają w ten sposób. Zrobienie zdjęcia wymaga czasu, a w tym czasie świat nie zawsze stoi w miejscu. Jeśli obiekt porusza się podczas robienia zdjęcia, pojawi się we wszystkich tych miejscach w tym samym czasie na ostatecznym obrazie. Nazywamy to rozmyciem w ruchu.

Wyjaśnienie podstaw

Aby zasymulować efekt rozmycia ruchu, musimy wiedzieć, jak każdy piksel przesunął się od ostatniej klatki. Wymaga to, aby wszystkie animacje i efekty ruchu zgłaszały swoje bieżące i poprzednie pozycje. Może to być jedna z najtrudniejszych części tworzenia tej funkcji. Ale na szczęście działało to już w przypadku technik antyaliasingu. Kilka animacji, które tego nie obsługiwały, stało się bardzo łatwych do wykrycia, ponieważ rozmycie ruchu zamieniało je w wielką rozmazaną smugę. Więc szybko je naprawiliśmy!

Na początek wykorzystaliśmy sprawdzoną technikę implementacji efektu, o której możesz przeczytać więcej tutaj. Zasadniczo sprawdzamy, gdzie piksel znajdował się w ostatniej klatce i gdzie jest teraz, a następnie rozmywa ten piksel wzdłuż linii pomiędzy nimi.

Aby zwiększyć wydajność obliczeń i wygładzić niektóre krawędzie, linia jest również rozmywana w kierunku do przodu, rozciągając linię poza bieżącą pozycję piksela. Aby jeszcze bardziej przyspieszyć działanie, podejmujemy pewne decyzje wspólnie dla większych bloków pikseli w oparciu o ich ogólny kierunek.

Odległość każdego piksela od kamery również musi być brana pod uwagę, aby umożliwić nam rozmycie tła i pierwszego planu oddzielnie. Rozmyta linia piksela tła może czasami przechodzić za wciąż stojącym, ostrym obiektem na pierwszym planie. Innym razem musimy zachować ostrość tła, podczas gdy piksel pierwszego planu jest rozmyty na wierzchu. Gdy dwa obiekty rozmywają się razem w jednym pikselu, ich indywidualna prędkość jest również ważna, ponieważ czasami żaden z nich nie może pozostać ostry.

Wyzwania techniczne w War Thunder

Oczywiście musieliśmy wprowadzić pewne poprawki, aby dostosować go do naszych potrzeb. Aby zdecydować, jak rozmyć piksel, musimy znać jego prędkość. Ale co, jeśli nie ma jednej odpowiedzi, ponieważ w tym samym punkcie widoczna jest więcej niż jedna rzecz? Bez zachowania szczególnej ostrożności, przezroczystość jest niewidoczna dla algorytmu.

W War Thunder mamy szklane kokpity i kolorowe żarówki przymocowane do samolotów przelatujących nad drzewami i przekraczających barierę dźwięku. Musieliśmy więc jakoś potraktować szklane powierzchnie. Tutaj mamy zupełnie różne prędkości na tym samym pikselu. Szkło jest stabilne, ale las za nim jest bardzo szybki.

Skończyło się na zastosowaniu podobnej sztuczki, jak w przypadku separacji tła i pierwszego planu. Jeśli widzimy coś przez szybę, traktujemy to jako jedną kategorię, podczas gdy bezpośrednio widoczne obiekty są inną kategorią. Nie rozmywamy jednej kategorii na drugiej, ale pozwalamy na mieszanie w jednej kategorii.

W ten sposób uzyskujemy obrazy, w których tło jest rozmyte przez szybę, ale sama szyba może zachować swoją ostrą sylwetkę.

Uwaga: w momencie pisania tego postu, specjalne traktowanie przezroczystości jest włączone tylko wtedy, gdy Rozmycie ruchu jest ustawione na maksimum.

Ograniczenia

Ponieważ mamy tylko jedną znaną prędkość dla każdego piksela, szybko poruszające się przezroczyste obiekty nie zostaną rozmyte, a jedynie obiekty tła, które możesz przez nie zobaczyć. Oznacza to również, że odbicia na takich powierzchniach mogą być rozmyte tylko w oparciu o tło.

Aby stworzyć idealny efekt, potrzebowalibyśmy doskonałych informacji. Nawet jeśli znamy pozycję piksela na ekranie zarówno w przeszłości, jak i w bieżącej klatce, nie wiemy, jaką drogę przebył między nimi. Po prostu zamazujemy go w linii, tak jakby poruszał się prosto, co prawie zawsze jest wystarczające. Ważnym wyjątkiem są koła pojazdów. Tutaj jeden punkt na kole może przemieścić się na przeciwną stronę w czasie jednej klatki. Zakładanie ruchu prostoliniowego w tym przypadku jest niewystarczające.

Na razie ten problem nie został rozwiązany, koła będą wymagały niestandardowej metody poprawnego rozmycia ruchu, która działa na innych zasadach.

Czy to realistyczne?

Rozmycie ruchu jest widoczne nie tylko w przypadku szybko poruszających się obiektów, ale także wtedy, gdy porusza się sama kamera. Na filmie jest to bardzo powszechny efekt, ale w naszym naturalnym widzeniu oko zwykle blokuje się na obiektach, utrzymując świat bardziej stabilny. Rozmycie ruchu w grach wideo jest kinowe - wygląda jak prawdziwy film nakręcony prawdziwymi kamerami. Nie przypomina to jednak oglądania świata na własne oczy.

Aby lepiej symulować ludzki wzrok, dodaliśmy opcję wyłączenia rozmycia spowodowanego ruchem kamery. Spowoduje to rozmycie szybko poruszających się obiektów, takich jak przelatujące samoloty lub eksplodujące szczątki, ale zachowa ostrość obrazu, gdy będziesz się tylko rozglądać.


Obracanie wieży z pełnym rozmyciem ruchu



Rozmycie kamery wyłączone, porusza się tylko wieża


Czy rozmycie ruchu jest dobre dla naszych gier?

Często słyszymy to pytanie i wewnętrznie prowadziliśmy rozmowy na ten temat. Niektórzy twierdzą, że daje to poczucie ruchu i sprawia, że doświadczenie jest bardziej wciągające. Podczas gdy inni twierdzą, że utrudnia to celowanie do ruchomych celów, usuwając przejrzystość, która jest ważna dla rywalizacji. Cóż, obie strony mają rację. To kwestia gustu i tego, czego oczekujesz od gry. Jeśli najbardziej interesuje cię wygrywanie i wspinanie się wzwyż, może to nie być dla ciebie - możesz to wyłączyć. Nie mamy nic przeciwko temu. Ale jeśli już osiągnąłeś to co chciałeś i chcesz zrobić film z powtórek lub po prostu chcesz poczuć prędkość podczas lotu, możesz go zmaksymalizować i użyć go do uzyskania efektu jakości filmowej.

2 Likes