Udawanie obiektu 3D w celu zmniejszenia liczby wielokątów

20

Tworzę grę w jedności i buduję ogrodzenie w blenderze, ale chcę, żeby było jak najmniej poli. Mój oryginalny projekt był zbyt wysoki, więc pomyślałem, co jeśli mógłbym po prostu użyć sześcianu o sprytnie ułożonych teksturach. Tak jak:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Widać, że krawędzie wyglądają dobrze, ale wewnętrzne sekcje nie, tzn. Nic tam nie ma ... więc ktoś wie, czy można sfałszować te twarze, które sprawiłyby, że wyglądałby jak kompletna siatka. Oto, co chcę osiągnąć:

wprowadź opis zdjęcia tutaj

mr-matt
źródło
7
Na tym płocie liczę 52 wierzchołki. To nie tak wiele.
Pharap,
1
@Pharap Pamiętaj jednak, co się stanie, gdy umieścisz tysiące kopii tej siatki na granicy poziomu.
Filip
5
@Philipp Jeśli Unity prawidłowo używa obiektów bufora wierzchołków i podobnych technik optymalizacji, nie powinno to stanowić problemu. Zawsze możesz po prostu użyć ikonki billboardu z alfą, jeśli się tak martwisz. Lub jeszcze lepiej, renderuj duszka na odległość i renderuj odpowiednią siatkę, gdy gracz zbliży się wystarczająco blisko. I szczerze wątpię, aby tysiące ogrodzeń ciągnęły się za ekranem. Nawet jeśli na świecie znajduje się ponad 9000 ogrodzeń, podejrzewam, że duża ich liczba zostanie unicestwiona. Czy rzeczywiście przeprowadziłeś testy porównawcze, czy po prostu przyjmujesz założenia dotyczące wydajności?
Pharap,
6
Czy rozwijasz się na urządzenia mobilne czy na PC / konsolę? Przynajmniej na współczesnych (5-letnich lub starszych) układach GPU model 52 wierzchołków jest prawdopodobnie tańszy niż wykonywanie mieszania / maskowania alfa. Zależy to od wielu czynników (pokrycie ekranu, GPU, cieniowanie pikseli lub wąskie gardło rasteryzacji itp.), Ale stosowanie masek alfa zawsze powoduje przesadzenie. Prawdopodobnie powinieneś to porównać przed optymalizacją.
Tobias B
2
Jednym z przypadków, w którym możesz tego nie chcieć, może być sytuacja, w której musisz zignorować wykrywanie kolizji w tych lukach, na przykład jeśli próbujesz strzelać przez luki w niektórych obiektach (w niektórych strzelankach FPS) i „pocisku” -hole ( naklejka ) pojawiło się na „pustej przestrzeni” ( model ).
DoubleDouble

Odpowiedzi:

26

Jeśli dobrze rozumiem, co chcesz osiągnąć, szukasz pojęcia „oszustów”. Są to dokładnie reprezentacje 2D obiektów 3D, stosowane w celu zmniejszenia złożoności geometrycznej renderowania środowiska 3D.

Możesz myśleć o nich prawie jak o obrazach obiektów 3D, które są używane jako tekstury obiektów 2D. Kanonicznym odniesieniem do nich jest prawdopodobnie rozdział 21 książki GPU Gems 3, zatytułowany „True Impostors”. Jest publicznie dostępny tutaj . Innym ważnym odniesieniem jest rozdział 5.7 książki Game Programming Gems v.2, zatytułowany „Imposters: Adding Clutter”, w Game Programming Gems 2, Tom Forsyth.

Można je równomiernie generować w locie, aby poradzić sobie z niewielkimi zmianami kąta widzenia lub treści generowanych w czasie wykonywania. Rzuć okiem na świetny artykuł Gamasutra na ten temat, zatytułowany „Dynamiczne oszustwa 2D: prosta, wydajna implementacja DirectX 9” . Dalszy rozwój koncepcji pojawił się na „Billboard Clouds for Extreme Model Simplification” .

Aby uzyskać delikatne świetne wyjaśnienie tej koncepcji, zobacz ten wpis na blogu: http://blog.wolfire.com/2010/10/Imposters

Wreszcie, kiedy korzystasz z Unity, słyszałem o wtyczce, która automatyzuje taki proces. Nazywa się to Real Lustro Imposters .

AKTUALIZACJA: ze względu na zakończenie pomyślałem o dodaniu dwóch rzeczy, o których ostatnio pamiętałem. Po pierwsze: jest świetne wideo GDC, w którym dyrektor artystyczny SimCity wyjaśnia, w jaki sposób (intensywnie) wykorzystywał oszustów, aby osiągnąć najwyższe osiągnięcia graficzne tej gry: „GDC - Building SimCity: Sztuka w służbie symulacji”. . Po drugie, dla osób zainteresowanych Unreal Engine, ma on wbudowaną funkcję implementacji oszustów, co można zobaczyć w dokumentacji

MAnd
źródło
Więc jeśli wykonam pełny model ogrodzenia i użyję systemu LOD Real Imposters, zadziałałoby, jak myślisz?
mr-matt
5
@MatthewInglis Nie mogę powiedzieć dokładnie o wtyczce: minęło trochę czasu, odkąd nie używam Unity, więc nie mogę sprawdzić. Ale w zasadzie tak, powinien stworzyć wersję 2D twojego w pełni szczegółowego obiektu 3D. Będziesz jednak musiał bawić się konfiguracjami. Jeśli planujesz kupić wtyczkę, rozważ najpierw przeczytanie dokumentów ( drive.google.com/file/d/0B3GMQtflbloSeHhvUGJmcjluX3M/view ) i skontaktowanie się z autorem z konkretnymi pytaniami dotyczącymi produktu.
MA
0

Jeśli nie potrzebujesz interakcji z ogrodzeniem, to znaczy przez luki użyłbym prostego przezroczystego prostokąta z nadrukowaną teksturą.

PRDeving
źródło