Nie jestem pewien, jakie są odpowiednie hasła do wyszukiwania, a nawet od czego zacząć, ale wyobrażam sobie, że to jakiś efekt przetwarzania końcowego.
Widziałem takie gry, jak I Wanna Be The Boshy i You Have To Win Game, które potrafią zmodyfikować perspektywę gier 2D, aby dać im rodzaj efektu 3D (patrz zdjęcia poniżej). Boshy w zasadzie sprawia, że wygląda jakbyś był w wieży (cylindrze), podczas gdy musisz wygrać. Gra zniekształca obraz, tak że wygląda na to, że grasz na starym monitorze CRT, a konkretnie w lekko zaokrąglonym wyglądzie.
- Czy istnieje termin na ten efekt?
- Jaki jest standardowy sposób realizacji tego efektu (terminologia)?
- Jak mógłbym wdrożyć taki efekt w silniku / frameworku wysokiego poziomu, takim jak Unity lub XNA / Monogame z perspektywy 20 000 stóp? (szczegółowy kod z radością przyjęty, ale nie konieczny - zdaję sobie sprawę, że dokładne szczegóły implementacji mogą się różnić, ale szczegółowe informacje o tym, co należy zrobić, byłyby bardzo mile widziane)
Chcę być Boshy
Musisz wygrać grę
2d
graphic-effects
post-processing
SpartanDonut
źródło
źródło
Odpowiedzi:
Można to zaimplementować jako efekt przetwarzania końcowego. (W przypadku korzystania z Unity / XNA / Dx / OGL / ...)
Metoda geometrii
Zacznij od utworzenia siatki przypominającej efekt zniekształceń, który chcesz osiągnąć. (np. model półcylindra (lub stożek, kulę, sześcian, ...), upewnij się, że ustawiłeś współrzędne tekstury). Renderuj grę 2D jak zwykle, ale renderuj końcowy wynik w teksturę. Następnie renderuj geometrię zniekształceń za pomocą właśnie utworzonej tekstury. Możesz użyć świata / widoku / projekcji lub zmodyfikować rzeczywiste współrzędne geometrii / tekstury, aby kontrolować siłę zniekształcenia. (zdjęcie 1 pokazuje zwykłą grę 2D, zdjęcie 2 pokazuje tę samą teksturę rzutowaną na kulę)
Metoda zniekształceń
Narzędzia do przetwarzania obrazu często oferują efekty zniekształceń, które mogą emulować projekcję (trochę jak złudzenia optyczne). Na przykład obraz 3 został wygenerowany przy użyciu filtra wypukłości z Paint.Net
.
(Możesz znaleźć implementację (OpenGL ES 2.0) tego efektu zniekształceń z projektu GPUImage - patrz GPUImageBulgeDistortionFilter)
W zależności od implementacji dowolna metoda może być szybsza lub zapewniać lepsze dopasowanie do pożądanego wyniku. Ponieważ obie implementacje są dość proste, możesz spróbować wdrożyć obie i przekonać się, która z nich jest dla Ciebie najlepsza.
źródło