PORTALIZACJA

WIDOCZNOŚĆ

W celu uzyskania optymalnej wydajności w wizualizacji można skorzystać z opartego o tzw. portale systemu odrzucania niewidocznych obszarów. Aby silnik wyświetlający (PIXELPLAN 3D viewer) wizualizacje mógł sprawnie ustalać w czasie rzeczywistym, które elementy mapy są w danej chwili widoczne mapę należy podzielić na odseparowane od siebie za pomocą ścian i portali obszary tzw. clustry. O ile ściany (które posiadają nieprzezroczysty materiał) zbudowane z Bloków automatycznie stanowią barierę takiego obszaru, to portale należy w mapę wstawić ręcznie. Jeżeli wizualizacja działa wystarczająco szybko tworzenie clustrów nie jest potrzebne dla jej poprawnego działania.

GEOMTERIA STRUKTURALNA

Geometria strukturalna to ściany i obiekty które są nieprzezroczyste dla systemu określania widoczności, stanowią więc obok portali barierę clustra. Barierą clustra mogą być:

Ponieważ Blok jest zawsze bryłą wypukłą i w naturalny sposób wycina on zawsze kawałek przestrzeni. Jednak model będący zbiorem trójkątów może mieć otwarte krawędzie, lub np. mieć elementy o zerowej grubości (np. 2 ściany naprzeciwko siebie w tym samym miejscu). Takie modele nie powinny być ustawiane jako strukturalne – mogą one powodować trudne do przewidzenia kwalifikowania obszarów przestrzeni jako przezroczystych lub nie przezroczystych dla systemu widoczności. Model strukturalny powinien:

Jest jednak możliwe złamanie tych zasad i użycie modelu z otwartymi krawędziami jako elementu strukturalnego. Trzeba jednak umieścić takie modele w mapie w taki sposób, żeby żadna z otwartych krawędzi nie była w obszarze do którego chcemy mieć w gotowej wizualizacji dostęp.

Geometria strukturalna dzieli mapę na obszary tylu solid – nieprzepuszczalne dla systemu widoczności oraz obszary empty, przez które można swobodnie patrzeć. Tak zrestrukturyzowaną mapę dalej dzielimy na clustry za pomocą portali.

W praktyce geometria strukturalna tworzy się automatycznie z Bloków, a w przypadku użycia modeli jako ścian wystarczy zaznaczyć odpowiednie modele jako strukturalne i ewentualnie „pozatykać” szczeliny (jeżeli jakieś są) Blokami z materiałem solid.

PORTALE

Portale są przezroczyste dla systemu widoczności i dzielą przestrzeń typu empty na clustry. Aby rozdzielić przestrzeń na dwa osobne clustry trzeba przestrzeń dokładnie (szczelnie) odseparować od siebie za pomocą portali. Przykład użycia portali znajduje się w przykładzie Vacation House.

Podział mapy na clustry ma za zadanie wygenerować informacje, którą silnik może użyć do decydowania co w danym momencie jest widoczne. Wynika z prostej własności clustrów:

Oczywiste jest więc, iż portalizacja (umieszczanie portali w mapie) ma zasadniczy wpływ na wydajność. Nie ma jednoznacznej odpowiedz na to jak portalizować, ale oglądanie mapy z włączonym pokazywaniem krawędzi i sprawdzanie, czy przypadkiem wstawienie portala nie mogłoby spowodować odrzucenia niektórych części obecnie rysowanych zawsze działa dobrze. W praktyce portale wstawiamy w:

Portal wstawia się tworząc Blok z odpowiednim materiałem. Portale powstają ze wszystkich ścian Bloku. Jeżeli chcemy wstawić pojedynczy portal – na resztę ścian trzeba dać materiał void.

Drzwi (i inne grupy) mogą zablokować portal. Informacje jak blokować portale znajdują się w opisie tworzenia drzwi.

CLUSTRY

Przy kompilacji mapy kompilator map ustala w mapie clustry. Dzieje się to w ten sposób, iż zaczyna od pozycji jakiegoś obiektu – aktora, targetu ( mapy bez obiektów, za pomocą których można ustalić początek, których pozycja 0 0 0 to środek ściany się nie kompilują) i zaczynając od tej pozycji ustala clustry. Przestrzeń clustra oddzielona jest od innych clustrów geometrią strukturalną oraz portalami (na niebiesko pokazano przykłady portali):




Niewielka nawet dziura pomiędzy przestrzeniami które wydają się nam odcięte może spowodować iż nie zostaną utworzone osobne clustry:





W praktyce czasami trudno mieć kontrolę na wszystkimi możliwymi przejściami (dla widoczności) tak, żeby oddzielić od siebie clustry tak jak się tego chce. Niezamierzone nie oddzielone geometrią strukturalną albo portalem przejście pomiędzy dwoma obszarami to leak.

LEAKI

Są dwa rodzaje leaków:




Jak widać, ponieważ z żadnej części mapy nie widać nic na zewnątrz (czyli zewnętrzna część mapy jest zawsze niewidoczna) kompilator map może ją usunąć. Tak samo jest ze wszystkimi innymi obszarami do których system widoczności nie może nigdy dotrzeć.

UNIKANIE LEAKÓW

Zlokalizowanie leaku w mapie może być trudne. Przede wszystkim trzeba zidentyfikować czy clustry powstały zgodnie z naszymi przewidywaniami. Żeby się dowiedzieć jaki jest zasięg clustra w którym obecnie znajduje się kamera można w Panelu kontrolnym silnika, w zakładce Wydajność wybrać Pokaż portale clustrów. Spowoduje to, że silnik pokaże wszystkie portale oddzielające cluster, w którym znajduje się kamera od sąsiadujących clustrów. Jeżeli zostaną pokazane portale, które nie powinny być w danym clustrze – prawdopodobnie występuje leak. Następną rzeczą, którą można zrobić, to wybranie także z zakładki Wydajność opcji Pokaż krawędzie. Spowoduje to, iż będzie widać krawędzie wszystkiego co jest obecnie rysowane. Pozwala to ustalić, czy jest rysowana jakaś część mapy, która powinna była zostać odrzucona podczas rysowania gdyby nie było leaków.

W lokalizacji leaków pomocne jest wbudowane w silnik narzędzie, które służy do znajdywania ścieżki pomiędzy dwoma punktami, takiej, która biegnie nie poprzez portale. Jeżeli więc mamy niezamierzone połączenie w mapie (np. wąska szczelinę) pomiędzy obszarami, z których chcieliśmy zbudować oddzielne clustry i nie możemy jej zlokalizować można wykonać następujący test. Ustawić kamerę w jednym punkcje i w panelu kontrolnym silnika na zakładce Leaki wybrać Ustaw punkt początkowy dla testu leaków. Silnik ustawi punkt początkowy testu w obecnym położeniu kamery. Następnie należy przemieścić kamerę w miejsce, do którego chcemy przetestować ścieżkę i wybrać Ustaw punkt końcowy dla testu leaków. Silnik ustawi punkt końcowy testu leaków w obecnym położeniu kamery. Po wybraniu Wykonaj test leaków zostanie narysowana ścieżka (nie koniecznie optymalna) która biegnie między tymi dwoma punktami nie przez portale. Pozwala to zlokalizować małe szczeliny między zamierzonymi clustrami (np. pokojami).