Zwykle dobrze jest zobaczyć pewne sprawy w szerszej perspektywie. W prezentacji danych przestrzennych, przy planowaniu zmian w strukturze miejskiej warto skorzystać z rozwiązań trójwymiarowych, oferowanych przez program CityEngine firmy Esri.
Zebranie danych
Przed przystąpieniem do wizualizacji miasta w CityEngine musimy zadbać o dane, które posłużą do stworzenia trójwymiarowego projektu. Zalecaną metodą jest rozpoczęcie pracy od przygotowania takich warstw, jak: sieć drogowa, obrysy budynków, mapa podkładowa w programie ArcMap. Dzięki temu mamy gwarancję, że zostaną one wykonane z wykorzystaniem metod i formatów, które są w pełni obsługiwane przez narzędzia importowania CityEngine. Oczywiście, nic nie stoi na przeszkodzie, aby zaimportować dane z innych źródeł, takich jak: profesjonalne programy do tworzenia obiektów trójwymiarowych (Autodesk Maya), tekstur (Adobe Photoshop) czy z rodziny programów CAD. Jeśli nie istnieją rozwiązania pozwalające na bezpośredni import, to z pomocą przyjdzie ArcMap z rozszerzeniem Data Interoperability.
Istotnym krokiem w tworzeniu projektu jest zaplanowanie tego, co chcemy zaprezentować. Ważne, aby nie przesadzić z liczbą danych, które chcemy pokazać. Czasami lepiej zrezygnować ze szczegółów, by zapewnić większą czytelność projektu.
Przygotowanie projektu
Po zebraniu danych i zaplanowaniu sposobu prezentacji projektu można przystąpić do pracy z programem Esri CityEngine. Rozplanowanie przestrzeni roboczej w tym programie jest zbliżone do znanych rozwiązań stosowanych w ArcMap. Wszystkie dane przechowywane są w konkretnym miejscu. Może to być domyślna przestrzeń robocza (workspace) lub przestrzeń zdefiniowana podczas tworzenia projektu. Każdy projekt ma odgórnie zaplanowane podkatalogi, aby łatwiej można było odnaleźć pliki odpowiedzialne za dane wektorowe czy tekstury. Oczywiście nie wszystkie dane będą dostępne przed założeniem projektu. Prawie zawsze pojawia się potrzeba dodania danych z zewnątrz lub wygenerowania ich. Pliki w każdym momencie mogą być dodane do poszczególnych podkatalogów z poziomu systemu i odświeżenia struktury w programie (klawisz F4).
Najważniejszym plikiem w projekcie jest plik scene (rozszerzenie .cej) znajdujący się w podkatalogu scenes. Stanowi on odpowiednik pliku projektu mxd w ArcMap. Korzystając z niego, uruchamiamy wizualizację. W pliku tym zapisane są również spersonalizowane ustawienia, takie jak: układ współrzędnych, zdefiniowany system pomiarowy czy rozmiar oczka w siatce pomocniczej, będącej odpowiednikiem siatki kartograficznej. Odpowiada on też za prawidłowe wyświetlanie struktury danych dodanych do projektu – konkretnych warstw, kolejności, typu (okno zawartości).
Przystąpmy więc do utworzenia nowego projektu. Z górnego menu wybieramy File New, a następnie CityEngine project. W przestrzeni roboczej właśnie pojawił się katalog z pustą strukturą, gotową do wypełnienia.
Mając przygotowany i uruchomiony projekt należy zadbać o komfort pracy. CityEngine pozwala na swobodne przełączanie się między poszczególnymi widokami (z góry, z boku, kamera ustawiona w dowolnym miejscu), trybami wyświetlania danych (możliwość wyłączenia wyświetlania obiektów zewnętrznych, ich teksturowania czy wykorzystania rastra służącego za obraz podkładowy). Wszystkie te zabiegi mają na celu zapewnienie przejrzystości projektu i jak najpłynniejszej pracy. Należy pamiętać, że oprogramowanie służące do pracy w przestrzeni trójwymiarowej potrzebuje większych zasobów niż program działający w przestrzeni dwuwymiarowej.
Powierzchnia
Podstawową warstwą, dodawaną zaraz po utworzeniu projektu, jest mapa podkładowa. W opisywanym tu projekcie zostaną użyte ortofotomapa oraz plik TIN, który posłuży jako podkład z danymi wysokościowymi. Plik ten należy wyeksportować w ArcMap do formatu .tiff. Pierwszym krokiem będzie utworzenie specjalnej warstwy w scenie, dostosowanej do przechowywania danych powierzchniowych. Należy wybrać z górnego menu zakładkę Layer, a następnie New Map Layer… Pojawi się nowe okno, w którym będzie można wskazać, jakiego typu dane będą importowane. Na potrzeby tego projektu zostanie wybrana opcja Terrain. Program poprosi o wskazanie mapy wysokościowej oraz tekstury, która zostanie udrapowana na podkładzie. Po wskazaniu obu plików program automatycznie zaimportuje i podłoży warstwy. Warto przetestować kilka konfiguracji, zmieniając szczegółowość tekstury, tak aby znaleźć jak najlepszą jakość przy zachowaniu w miarę rozsądnej wielkości pliku. W tym celu należy zaznaczyć warstwę Terrain, a następnie w oknie Inspector (po prawej stronie) zmienić wartości Terrain resolution U i V. Pliki rastrowe najbardziej obciążają projekt. Trzeba to brać pod uwagę, ponieważ będzie on eksportowany na platformę ArcGis Online.
Sieć drogowa
Sieć drogowa wraz z zabudową – to dwie najważniejsze warstwy, których nie można pominąć w procesie tworzenia wizualizacji istniejącego miasta. CityEngine ma zapisane mechanizmy pozwalające na współpracę z plikami shape czy geobazami. Podczas importu prawidłowo rozpozna on typ (warstwa liniowa, poligonowa), liczbę obiektów wewnątrz oraz zastosowany układ współrzędnych. W celu wgrania danych należy wybrać z górnego menu programu File, a następnie Import. Zostanie wyświetlone nowe okno, w którym definiuje się, jaki typ danych będzie wgrywany oraz skąd. Po zaimportowaniu program automatycznie zamieni linie w drogi, zachowując rozróżnienie na odcinki proste, skrzyżowania, i dodatkowo rozdzieli generowaną jezdnię na pas drogowy oraz chodniki po obu stronach. Wykonana zostanie również wstępna ocena topologii, w wyniku której zostaną wskazane miejsca, gdzie drogi nakładają się na siebie, przecinają lub skręcają pod nienaturalnym kątem.
Po wgraniu danych może się pojawić problem z nieprawidłowym nakładaniem się obiektów i ulice znajdą się poniżej danych podkładowych. Aby temu zaradzić, należy zaznaczyć całą warstwę dróg (prawym przyciskiem kliknąć warstwę, wybrać opcję Select, dalej Select Objects in same layer), a następnie z tego samego menu wybrać opcję Align Graph to Terrain. Warstwa zostanie dociągnięta i dopasowana do powierzchni.
Program pozwala na bardzo dużą swobodę w zakresie modyfikowania osi jezdni. Każdy odcinek może być dowolnie przesunięty, wygięty o dany kąt lub połączony z inną jezdnią. Zaimportowane linie są dopasowywane do domyślnie zapisanych szerokości jezdni, można to jednak zmienić, wybierając warstwę i zmieniając w oknie Inspector wartość streetWidthDefault. Dobrą praktyką, która poprawi płynność pracy, jest użycie narzędzia Simplify Graph – punkty pośrednie w odcinku zostaną usunięte, a w jego miejscu pojawią się odpowiednio wyprofilowane łuk lub prosta.
Zabudowa
Po zaimportowaniu i wstępnym przetworzeniu sieci drogowej następny krok stanowi dodanie zabudowy przechowywanej w warstwie poligonowej. Ważne jest, aby zachować zgodność układów współrzędnych w poszczególnych warstwach. Jeśli zaistnieje konflikt odwzorowań, program, podobnie jak w ArcMap, wyświetli komunikat o problemie z umiejscowieniem danych.
Zastosowana zostanie tutaj druga możliwość importu danych – wystarczy, że w oknie Navigator (prawa strona okna programu) zaznaczy się plik shape lub geobaza i przeciągnie go głównego okna. Dane zostaną automatycznie wgrane i dodane do sceny. Każdy zaimportowany budynek może być swobodnie edytowany po wskazaniu go. Dodatkowo pojawią się definiujące go punkty, zgodnie z tym, jak został wyrysowany w ArcMap.
Pierwsze bryły
Po przygotowaniu najważniejszych danych, takich jak: mapa podkładowa, sieć drogowa oraz obrysy budynków, można przystąpić do tworzenia wizualizacji trójwymiarowej. W tym celu należy się posłużyć atrybutami obiektów zapisanych w poszczególnych warstwach. Na etapie przygotowywania danych, do poligonowej warstwy zabudowy została dodana kolumna zawierająca informacje o wysokości budynku. Teraz zostanie ona użyta w celu odpowiedniego wypiętrzenia budynków.
Do najważniejszych rozwiązań programu CityEngine należą reguły (pliki CGA). Są to wytyczne dla programu zapisane w postaci kodu. Dzięki nim, zamiast długotrwałego tworzenia każdego obiektu, można wprowadzić automatyzację pewnych procesów, nazywaną modelowaniem proceduralnym. Daje ono możliwość wprowadzania do projektu np. różnych wersji budynków, zdefiniowanych wcześniej i gotowych do użycia. Program, bazując na wytycznych z tabeli atrybutów lub zmiennych zdefiniowanych przez użytkownika, dobiera odpowiednią regułę.
Pierwszym krokiem w opracowaniu reguł jest utworzenie w projekcie pustego pliku CGA. Z menu górnego należy wybrać File New, a następnie plik CGA Rule File. (Warto zastanowić się nad precyzyjnym nazewnictwem reguł. Pliki CGA można wykorzystywać w wielu projektach, a z upływem czasu trudno zapamiętać, co który zawiera). Program zaproponuje docelową ścieżkę do podkatalogu reguł (rules). Po utworzeniu pliku w oknie Navigator pojawi się jego podgląd. Domyślnie dodawane są informacje o tym, kiedy i przez kogo został utworzony, oraz wersja CityEngine. Jest to przydatna informacja, gdyż w wersji 2013.1 zostały dodane nowe polecenia.
Tak wygląda przykładowy kod.
attr WysokoscBudynku = 0
Bryla –> extrude(WysokoscBudynku)Budynek
Polecenie attr WysokoscBudynku = 0 odpowiada za zmapowanie danych z tabeli atrybutów. Identyczna nazwa atrybutu pojawi się w programie ArcMap, w podglądzie zawartości. Istnieje również możliwość skontrolowania danych z poziomu CityEngine. W tym celu należy zaznaczyć konkretny obrys budynku, a następnie w oknie Inspector rozwinąć zakładkę Object Attributes. Znajduje się tutaj wszystko to, co zostało wprowadzone do tabeli podczas tworzenia danych. Można również dodać kolejną kolumnę i wartości, lecz zalecana jest edycja z poziomu ArcMap. Wartość „0” w poleceniu oznacza wysokość domyślną, która zostanie użyta, jeśli z jakichś powodów nie będzie wypełniona kolumna WysokoscBudynku.
Po wprowadzeniu kodu do pliku CGA pozostaje wskazać, których danych ma dotyczyć reguła. Istnieją dwa sposoby, aby to zrobić. Pierwszy polega na przeciągnięciu pliku .cga z okna Navigator w konkretne miejsce w projekcie. Wybrany obiekt podświetli się na pomarańczowo. Drugi sposób polega na zaznaczeniu obiektów wybranych przez użytkownika, a następnie przypisaniu Rule File w oknie Inspector. Program automatycznie wygeneruje budynki na podstawie zapisanego atrybutu.
Obraz miasta jest już prawie gotowy.
Gdy potrzebne są detale
Oczywiście, wypiętrzenie bryły jest tylko jedną z bardzo licznych i rozbudowanych funkcji CGA. Modelowanie proceduralne pozwala na pracę z ogromną liczbą niezależnych obiektów (teksturowanie, kształt, dach), a także doskonale radzi sobie z detalami, wtedy gdy użytkownikowi zależy na jak najdokładniejszym odwzorowaniu obiektu. W takich przypadkach można również z atrybutów pobrać informację o liczbie pięter, wysokości parteru lub dodać obiekty zewnętrzne. W tym konkretnym projekcie obrano sobie za cel szybkie wymodelowanie miasta. Osoby zainteresowane dodawaniem detali zapraszamy do zapoznania się z przewodnikiem nr 7 Facade modeling dostępnym wraz z darmową 30-dniową wersją CityEngine 2013.1. Zbiór wszystkich poleceń CGA można odnaleźć w Pomocy, dołączonej do programu.
Prezentacja danych
Gdy projekt zawiera już sieć drogową, bryły budynków oraz mapę podkładową, można rozpocząć analizowanie propozycji nowych rozwiązań urbanistycznych. Dodanie kolejnej warstwy z obrysami proponowanej zabudowy pozwoli na spojrzenie na daną okolicę przed wybudowaniem nowych obiektów i po nim. W tym celu należy powtórzyć kroki z dodawaniem zabudowy. Aby projekt był bardziej przejrzysty, a budynki już istniejące nie nachodziły na obiekty planowane, zaleca się wyłączenie tymczasowo warstwy z zabudową. W tym celu w oknie Scene należy kliknąć ikonę oka – po prawej stronie nazwy warstwy. Podobnie można zrobić z proponowanymi zmianami w sieci drogowej, planowanej rozbudowie trakcji kolejowej lub przy rewitalizacji parku miejskiego.
Zaletą wykorzystania CityEngine do prezentowania danych jest możliwość wyeksportowania gotowego projektu do portalu ArcGIS Online i przedstawienia go w środowisku trójwymiarowym, bezpośrednio w przeglądarce. W tym celu należy zaznaczyć wszystkie obiekty, a następnie wybrać z górnego menu File Export Models i wskazać format CityEngine WebScene. Jeśli użytkownik chce, aby można było porównać istniejącą zabudowę z proponowaną, musi w oknie Export dopisać wspólną grupę dla obu warstw. Po wyeksportowaniu ponownie należy wybrać File, a następnie Share As… i wskazać wyeksportowany.3ws. Oczywiście, trzeba posiadać konto założone na portalu arcgis.com – rejestracja jest darmowa. Zapraszamy do testowania!