Czy ścianę należy utworzyć jako płaszczyznę czy pudełko?

22

Jakie są zalety ściany jako samolotu lub skrzynki? Czy powinienem używać samolotu z zderzakiem pudełkowym zamiast zderzacza siatkowego?

Pichi Wuana
źródło

Odpowiedzi:

15

Będzie kilka różnych rzeczy, które musisz wziąć pod uwagę.

Uwaga: korzyści z opisanych poniżej optymalizacji mają tak naprawdę znaczenie tylko w przypadku mnóstwa ścian. W tym momencie warto rozważyć inne rozwiązanie, takie jak partycjonowanie przestrzeni binarnej (BSP) do tworzenia ścian w grze. To sprawiłoby, że twoje poziomy byłyby wysoce zoptymalizowane do renderowania (jeśli zostały poprawnie zaprojektowane) i do fizyki (ponieważ masz bardzo dobrą definicję tego, co koliduje, a co nie.

Wykonanie

Renderowanie wymaga więcej pola niż samolotu. Ma więcej wierzchołków i trójkątów, co oznacza, że ​​twój moduł cieniujący wierzchołki i rasterizer będą musiały być uruchamiane na większej ilości danych. Dlatego używaj pudełka tylko wtedy, gdy jest to konieczne ze względu na widoczność. W razie potrzeby usuwaj twarze, aby zobaczyć, co gracz będzie musiał zobaczyć.

Fizyka

Powinieneś zawsze używać BoxColliderzamiast, MeshCollidergdy możesz. MeshColliders muszą nakładać kolizje na twarz (lub jako wypukły kadłub) siatki i spowalniać rastrowanie i fizykę (ale jest to nieistotna ilość dla tylko jednego pudełka). Kolejną rzeczą BoxCollidersjest to, że graczowi jest znacznie trudniej przejść fazę, gdy idą naprawdę szybko. Nawet w przypadku ciągłych kolizji, jeśli nadal masz rzeczy przechodzące przez ściany, zawsze możesz po prostu rozwinąćBoxColliders

Wydajność

Jeśli znacznie szybciej pracujesz z samolotami MeshColliders(ponieważ nie musisz dostosowywać wszystkich, BoxCollidersaby pasowały do ​​ich wymiarów), może być dobrze użyć ich, jeśli uzyskasz pożądaną wydajność.

Coburn
źródło
10

Rozwijając nieco punkty „Coburna” :

Renderowanie : jeśli renderujesz ścianę tylko jako płaszczyznę, wtedy ściana będzie widoczna tylko z jednej strony, ponieważ płaszczyzna (lub ściślej jej ściany) ma tylko jedną renderowaną stronę. Jeśli więc gracz będzie w stanie poruszać się po ścianie, będziesz potrzebować wielu samolotów do pokrycia wszystkich boków, co oznacza, że ​​i tak otrzymasz pudło.

Fizyka : Proste zderzacze geometrii (kule, ramki itp.) Są zawsze szybsze do obliczenia w porównaniu do zderzaczy pełnej siatki, ponieważ nie wszystkie ściany siatki muszą być sprawdzane indywidualnie. Zamiast tego można zastosować „proste” raycasty lub obliczenia odległości (np. Odległość do środka kuli minus rozmiar kuli).

W przypadku innych silników fizycznych, które mają oddzielny „zderzacz samolotu” (czego nie ma Unity), nie ma „lepszego”. Płaszczyzna może być nieco szybsza pod względem wydajności, ale możesz natknąć się na problem szybkich obiektów przechodzących przez nią, bez faktycznego zderzenia. Następnie masz albo grubsze zderzaki (więc pole zamiast płaszczyzny) lub przejdź do ciągłego wykrywania kolizji (CCD), jak wyjaśniono tutaj .

Philip Allgaier
źródło
Niemal zawsze można wyłączyć wygładzanie tylnej powierzchni.
Bálint
2
@ Bálint True. Użytkownik może wtedy zobaczyć ścianę również z drugiej strony, chociaż w tym przypadku z niewłaściwym oświetleniem (światło wysyłane przez źródła z drugiej strony / pokoju, zamiast tego, w którym stoi).
Philip Allgaier,
W drugim punkcie nie określiłeś, czy jest to zawodowiec, czy oszust i po co. Płaszczyzna wydaje się prostsza geometrycznie niż pudełko, więc o to ci chodzi?
Bakuriu
@ Bakuriu O ile mi wiadomo, Unity nie ma „zderzacza samolotu”, więc „pudełko” jest najbliższe. Dodałem notatkę dla innych silników fizyki.
Philip Allgaier,
4

Jeszcze jedna rzecz o renderowaniu: kiedy masz własną implementację mapowania cieni, ściany wykonane z pudełek mogą być lepsze od ścian wykonanych z płaszczyzn, dzięki panoramowaniu, które może pojawiać się na płaszczyznach.

Oto wyjaśnienie objawu:

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/#peter-panning

Djindjidj
źródło
Co to jest panoramowanie Piotra?
Pichi Wuana
czy użyłeś linku, który podałem? powinno być oczywiste.
Djindjidj
0

Zawsze mi mówiono, że jeśli będziesz miał cienie, że najlepiej jest zrobić to solidnym, aby pomóc w lekkim krwawieniu, ponieważ różnica w głębokości jest mała i będzie krwawić.

Mogę się mylić, ale robię wszystkie moje ściany i takie tamte dwustronne, ściana będzie miała tylko kilka pionów, więc nie powinno być aż takiej oszczędności, ponieważ jest to samolot.

Są pewne rzeczy, które zostawiam po bokach, ale głównie na dole lub na górze rzeczy, które zawierają wiele rzeczy, które pomagają w lekkim krwawieniu.

Robię to samo z fizyką, nie wszyscy tak naprawdę o tym myśleli, ale dla mnie wydawało się słuszne stosowanie ściany jako ściany i samolotu jako samolotu, ale to tylko ja

Justin William Stanley Bryant
źródło