Staram się osiągnąć efekt wypaczenia widoczny w grach takich jak Geometry Wars .
Czy ktoś może wyjaśnić, co się tutaj dzieje? Wydaje mi się, że programista manipuluje osią Z siatki w jakikolwiek sposób, ale czy może jest jakieś znane równanie matematyczne, aby naprawdę uzyskać właściwy efekt wypaczenia?
Edycja: Mówiąc dokładniej, mam na myśli wypaczenie siatki. Jak wszystko wygląda przyciągnięte w kierunku ujemnej osi Z, a następnie odbija się.
graphics
graphic-effects
Joey Green
źródło
źródło
Odpowiedzi:
10-minutowe wdrożenie prostego systemu sprężynowego (przynajmniej tak pisze na swoim blogu ;)). System może obsłużyć wiele wypaczeń i inne rzeczy zniekształcające siatkę.
Zaktualizowano, aby dodać drobne szczegóły dotyczące dodawania:
Kilka innych szczegółów. Z wywiadu, który był kiedyś hostowany na stronie Bizarre Creations (ta strona zniknęła z powodu zamknięcia firmy), pojawiło się pytanie:
P: Jedną z najbardziej uderzających nowych funkcji graficznych w grze jest obszar gry „siatka grawitacji”. Jak sprawiłeś, że wyglądało to tak fajnie; czy każdy obiekt w grze ma swoją własną grawitację? Sama siatka składa się z 60 000 punktów, z których każdy wywiera niewielką siłę na sąsiada. Sama symulacja leży na krawędzi stabilności, co powoduje, że obraca się tak bardzo, gdy jeden z obiektów gry lekko ją naciska! Tylko kilka typów obiektów wpływa na siatkę. Ponieważ system siatki jest dość drogi do obliczenia, tak naprawdę działa na drugim rdzeniu wraz z systemem audio (pierwszy rdzeń jest przeznaczony do gry i cząstek, trzeci służy do renderowania dźwięku).
źródło
Nie wiem, czy jest to „właściwy” sposób, ale prawdopodobnie jest to po prostu przyjemna estetycznie transformacja liniowa zastosowana ze spadkiem obliczonym z odległości do punktu.
Tak więc dla każdego elementu, z którym pracujesz:
Iirc, wojny geometrii zastosowały to jako zniekształcającą osnowę do niektórych elementów, podczas gdy inne elementy, takie jak cząstki, zostały po prostu dotknięte „siłą”, bez zniekształceń. Możesz zastosować zniekształcenie w module cieniującym wierzchołki, zakładając, że masz wystarczającą liczbę wierzchołków, aby płynnie próbkować efekt. Alternatywnie możesz najpierw wyrenderować wszystko, co musi wpłynąć na bufor ekranowy, a następnie renderować wyniki na ładnie mozaikowanym kwadracie, do którego zastosujesz zniekształcenie, przed dodaniem wszystkich niezniekształconych elementów na wierzchu.
Jeśli chodzi o transformację, skalowanie da ci ssący wygląd. O ile dobrze pamiętam, działo się też trochę skręcanie, które byłoby tylko małą rotacją.
Możesz uzyskać bardziej wyrafinowane i bardziej wyrafinowane obliczenia współczynnika intensywności, aby uzyskać bardziej zwięzłe efekty. Można na przykład obliczyć kąt (a), jaki element ma względem środka, i uwzględnić w nim. Weź cos (a), aby uzyskać efekt fal promieniowych. To, co chcesz zrobić, to skonfigurować niezbędny kod rusztowania, a następnie udać się do miasta, eksperymentując z różnymi kombinacjami czynników.
źródło