PORTALIZACJA
WIDOCZNOŚĆ
W celu uzyskania optymalnej wydajności w wizualizacji można skorzystać z opartego o tzw. portalesystemu 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 portaliobszary tzw. clustry. O ile ściany (które posiadają nieprzezroczysty materiał) zbudowane z Blokówautomatycznie stanowią barierę takiego obszaru, to portale należy w mapęwstawić ręcznie. Jeżeli wizualizacja działa wystarczająco szybko tworzenie clustrównie 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ą clustramogą być:
-
Blok w automatyczny sposób, jeżeli jego materiał jest nieprzezroczysty i nie jest on elementem grupy.
-
Model jeżeli we właściwościach ma ustawione pole strukturalny na tak i nie jest on elementem grupy.
Ponieważ Blokjest zawsze bryłą wypukłą i w naturalny sposób wycina on zawsze kawałek przestrzeni. Jednak modelbę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 modelenie powinny być ustawiane jako strukturalne – mogą one powodować trudne do przewidzenia kwalifikowania obszarów przestrzeni jako przezroczystych lub nie przezroczystych dla systemu widoczności. Modelstrukturalny powinien:
-
zamykać swoim mesh’em kawałek przestrzeni – nie posiadać otwartych krawędzi,
-
nie posiadać ścian jedna naprzeciwko drugiej, wycinany kawałek przestrzeni musi zawsze mieść pewna niezerowa grubość.
Jest jednak możliwe złamanie tych zasad i użycie modeluz otwartymi krawędziami jako elementu strukturalnego. Trzeba jednak umieścić takie modelew mapiew 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 clustryza pomocą portali.
W praktyce geometria strukturalna tworzy się automatycznie z Bloków, a w przypadku użycia modelijako ścian wystarczy zaznaczyć odpowiednie modelejako strukturalne i ewentualnie „pozatykać” szczeliny (jeżeli jakieś są) Blokamiz materiałem solid.
PORTALE
Portalesą przezroczyste dla systemu widoczności i dzielą przestrzeń typu emptyna clustry. Aby rozdzielić przestrzeń na dwa osobne clustrytrzeba 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 clustryma 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:
-
Ponieważ clustry oddzielone są portalami, to z jednego do drugiego clustra można się dostać tylko przez portal.
-
Konsekwencją tego jest fakt, iż jeżeli jesteśmy w danym clustrze, to inne clustry mogą być widziane jedynie poprzez portale, wiec jeżeli portalu do innego clustra nie widać bezpośrednio, lub poprzez inne portale to nie widać także innego clustra.
Oczywiste jest więc, iż portalizacja (umieszczanie portaliw mapie) ma zasadniczy wpływ na wydajność. Nie ma jednoznacznej odpowiedz na to jak portalizować, ale oglądanie mapyz włączonym pokazywaniem krawędzi i sprawdzanie, czy przypadkiem wstawienie portalanie mogłoby spowodować odrzucenia niektórych części obecnie rysowanych zawsze działa dobrze. W praktyce portalewstawiamy w:
-
drzwi,
-
okna,
-
przejścia pomiędzy kondygnacjami (schody),
-
korytarze i pomieszczenia, które maja skomplikowany kształt – patrz przykłady poniżej.
Portalwstawia się tworząc Blokz odpowiednim materiałem. Portalepowstają 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ć portaleznajdują się w opisie tworzenia drzwi.
CLUSTRY
Przy kompilacji mapy kompilator mapustala w mapieclustry. Dzieje się to w ten sposób, iż zaczyna od pozycji jakiegoś obiektu – aktora, targetu ( mapybez 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ń clustraoddzielona jest od innych clustrówgeometrią 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 portalemprzejście pomiędzy dwoma obszarami to leak.
LEAKI
Są dwa rodzaje leaków:
-
Leaki pomiędzy obszarami które chcieliśmy oddzielić i stworzyć osobne clustry.
-
Leaki z jakiegoś clustra na zewnątrz mapy – w przypadku takiego leaka kompilator map nie będzie mógł zdjąć zewnętrznej części mapy:
Jak widać, ponieważ z żadnej części mapynie widać nic na zewnątrz (czyli zewnętrzna część mapyjest zawsze niewidoczna) kompilator mapmoż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 mapiemoże być trudne. Przede wszystkim trzeba zidentyfikować czy clustrypowstały zgodnie z naszymi przewidywaniami. Żeby się dowiedzieć jaki jest zasięg clustraw 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śćopcjiPokaż 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 clustryi 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óww 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).