Modelowanie budynków dla programu Google Earth (opracowano na potrzeby przedmiotu Modelowanie Przestrzenne) Modelowanie budynków w programie SketchUp będzie odbywało się z wykorzystaniem większości dostępnych narzędzi, poznanych na poprzednich zajęciach. Aby jednak stworzony model dobrze się nadawał do umieszczenia w programie Google Earth, trzeba poznać kilka specyficznych wymagań. Podczas uruchomienia programu SketchUp 8 pojawia się ekran powitalny, w którym tym razem wybierzemy szablon Google Earth Modeling Meters. Pierwszą rzeczą, jaką musimy zrobić, modelując dla Google Earth, to geolokalizacja modelu. W SketchUp wersji 8 operacja ta została bardzo uproszczona. Klikamy na pasku narzędzi ikonę Add Location... pojawi się okno dialogowe Add Location... w którym znajdujemy interesujący nas obiekt, wpisując jego lokalizację w górnej części paska menu. Następnie po odpowiednim zbliżeniu na obiekt klikamy przycisk Select Region. Pojawi się okno wyboru, którego możemy zmieniać wielkość za pomocą niebieskich pinezek. Gdy jesteśmy zadowoleni z efektu klikamy przycisk Grab wybrany fragment mapy pojawia się w oknie programu SketchUp w środku układu współrzędnych. Wraz z mapą zostają również zaimportowane dane o ukształtowaniu terenu, które możemy włączyć klikając ikonę Toggle Terrain. Na płaskim terenie miasta wynik jej działania nie zawsze będzie widoczny, aby sprawdzić czy rzeczywiście działa prawidłowo można zaimportować np. kawałek widoku Tatr. Pobrany podkład mapy dobrze jest również wykorzystać do zrobienia tekstury dachu. W tym celu zaznaczamy podkład i wybieramy File/Export/2D Graphic... Do wyboru mamy kilka podstawowych formatów graficznych. W prawym dolnym rogu nowo otwartego okna dialogowego znajduje się przycisk Options, po kliknięciu w który mamy możliwość zmiany wielkości zapisywanego obrazka (domyślnie zaznaczona jest opcja Use view size, powodująca zapis obrazka w rozmiarach w jakich został ściągnięty do SketchUp'a). Zapisany obraz możemy później edytować w dowolnym programie do obróbki grafiki. Pewnym ułatwieniem podczas modelowania będzie dostosowanie układu współrzędnych do zaimportowanego podkładu. W tym celu wybieramy narzędzie Axes. Klikamy w lewym dolnym rogu budynku, aby umieścić początek układu współrzędnych, następnie przesuwamy kursor wzdłuż dolnej krawędzi budynku i klikamy, aby umieścić czerwoną oś. Podobnie przesuwamy wzdłuż lewej krawędzi, aby umieścić oś zieloną. Po takiej operacji mamy układ współrzędnych dostosowany do krawędzi budynku. Teraz możemy zacząć rysować bryłę. Używając narzędzia linii obrysowujemy krawędzie dachu, a następnie wyciągamy utworzonego face'a na 14 m do góry mamy gotową podstawową bryłę budynku. Jesteśmy gotowi do rozpoczęcia teksturowania wykonanymi zdjęciami. Podobnie jak bryły również i zdjęcia powinny zostać odpowiednio przygotowane. Dobrze jest pamiętać o kilku zasadach już na etapie robienia zdjęć do modelu.
Dystorsja perspektywiczna i beczkowata Bardzo trudno jest otrzymać zdjęcie budynku, które byłoby wykonane dokładnie w rzucie izometrycznym względem jego ścian, zwłaszcza jeżeli nie mamy dość miejsca na odpowiednie oddalenie się od niego. Należy jednak mieć na uwadze, że im bliżej budynku się znajdujemy, tym wiesze zniekształcenie perspektywiczne będzie narzucone na nasze zdjęcie. Wpływ odległości od budynku na zniekształcenie perspektywiczne zdjęcia. W aparatach kompaktowych, zwłaszcza z szerokokątnym obiektywem, możliwe jest również zaistnienie dystorsji beczkowatej podczas fotografowania przy najszerszym kącie. Polega ona na zaokrągleniu pionowych linii, zwłaszcza tych znajdujących się najbliżej brzegu kadru. Aby tego uniknąć należy próbować wykonać zdjęcia z dalszej odległości z użyciem zoomu (wpływ dystorsji beczkowatej maleje wraz z długością ogniskowej), a jeśli nie jest to możliwe umieszczanie budynku w kadrze w taki sposób, aby krawędzie ścian znajdowały się w pewnym oddaleniu od brzegu kadru. Kadrowanie i optymalizacja rozmiaru Po odpowiednim zrobieniu zdjęcia należy zadbać o przygotowanie go do użycia jako tekstury. Pierwszą istotną rzeczą jest odpowiednie wykadrowanie, pozwalające pozbyć się nadmiaru nieba i/lub otoczenia. Jest to szczególnie ważne, gdy fotografujemy z nadmiarem aby uniknąć opisanej wcześniej dystorsji beczkowatej. Kolejna ważna rzecz to zmiana rozmiaru zdjęcia. Fotografia wykonana aparatem z matrycą 8MP w formacie 3:2 przy najniższym stopniu kompresji JPEG ma rozmiar około 3450x2300 pikseli oraz objętość około 4MB. Jest to zdecydowanie zbyt dużo dla programu Google Earth. To samo zdjęcie po zmniejszeniu rozdzielczości (w programie graficznym, nie w menu aparatu!) do 800x533 pikseli ma objętość mniejszą niż 100kB. Gdy dodatkowo zostanie ono wykadrowane jego rozmiar, a zarazem objętość jeszcze się zmniejszy. Jeśli posiada się pewne doświadczenie w pracy z programami graficznymi można również usunąć ze zdjęć budynku elementy, które go zasłaniają, np. drzewa, latarnie uliczne, ludzi czy samochody. Gdy mamy już odpowiednio przygotowane zdjęcie pora na jego zaimportowanie do programu SketchUp. W tym celu wybieramy z menu File/Import... otworzy się okno dialogowe, w którym na
dole z listy rozwijanej wybieramy odpowiedni typ pliku, selekcjonujemy odpowiednie zdjęcie, oraz po prawej stronie okna zaznaczamy Use as texture. Do kursora zostanie przyczepiony lewy dolny róg wybranego zdjęcia. Umieszczamy go w lewym dolnym rogu bryły, a następnie przeciągamy kursor w prawo i klikamy na prawej lub górnej krawędzi bryły w takim miejscu, aby zdjęcie pokryło całą widoczną powierzchnię ściany. Nie jest istotne to, że będzie ono zbyt duże lub nie do końca dobrze wykadrowane, gdyż w kolejnym kroku zajmiemy się dopasowaniem go do powierzchni ściany. Klikamy prawym przyciskiem myszy na ścianie i wybieramy Texture/Position jak na rysunku. Pojawi się zwielokrotniony obraz tekstury z przyczepionymi pinezkami. Istnieją dwa sposoby dostosowania zdjęcia do płaszczyzny bryły, za pomocą pinezek nieruchomych, bądź ruchomych. W metodzie z użyciem pinezek nieruchomych (kolorowych) każda z pinezek odpowiada za inne przekształcenie: pinezka czerwona odpowiada za umiejscowienie tekstury, jej przesuwanie będzie zmieniać pozycję całego zdjęcia w przestrzeni. pinezka zielona odpowiada za skalowanie jednorodne/obrót tekstury, jej przesuwanie w kierunku pinezki czerwonej powoduje zmniejszanie zdjęcia, natomiast odsuwanie od czerwonej powiększanie zdjęcia; obrót wokół czerwonej pinezki spowoduje obracanie tekstury wokół punktu zaczepienia czerwonej. przesuwanie pinezki niebieskiej w kierunku czerwonej powoduje skalowanie niejednorodne w osi pionowej, natomiast przesuwanie na boki pochylenie ukośne tekstury pinezka żółta odpowiada za korekcję dystorsji, głównie perspektywicznej. Należy mieć na uwadze odpowiednią kolejność manewrowania pinezkami. Najlepsze wyniki daje kolejność opisana wyżej (czerwona zielona niebieska żółta) z względu na ilość stopni swobody tekstury. Podczas manewrowania pinezką czerwoną możemy jednocześnie zmieniać pozycję trzech pozostałych. Kolejne pinezki mają już ograniczenia, np. podczas manewrowania pinezką niebieską, czerwona i zielona pozostają na swoich miejscach, a przy manewrowaniu żółtą wszystkie trzy pozostałe są nieruchome. Aby użyć metody pinezek ruchomych musimy najpierw kliknąć prawym przyciskiem na zdjęcie i w menu kontekstowy odznaczyć Fixed Pins. Wszystkie pinezki zmienią się wtedy na jednakowe. Klikamy w jedną z nich, aby odczepić ją od tekstury, a następnie umieszczamy w nowym miejscu, na jednym z rogów budynku (na zdjęciu). Potem przeciągamy pinezkę tak, aby znalazła się w rogu bryły, który reprezentuje dany róg budynku. W ten sposób postępujemy z pozostałymi trzema. Gdy już ustawimy zdjęcie w odpowiednim miejscu, z menu kontekstowego wybieramy Done wszystkie zmiany zostaną zaakceptowane i ściana będzie oteksturowana. Może się zdarzyć, że jedno zdjęcie będziemy musieli podzielić na dwa lub więcej, szczególnie tam, gdzie występują załamania budynków. Nie zawsze też mamy dostęp do wszystkich ścian danej
budowli. W takim przypadku możemy spróbować ekstrapolować istniejące zdjęcie na niewidoczne ściany. Aby to zrobić wybieramy fragment płaszczyzny, z którego chcemy pobrać materiał na teksturę i rysujemy tam prostokąt. Klikamy wewnątrz niego prawym przyciskiem myszy i wybieramy Make Unique Texture. Następnie wybieramy narzędzie Paint Bucket i przytrzymując klawisz Alt klikamy wewnątrz narysowanego prostokąta, aby pobrać próbkę tekstury. Potem wystarczy kliknąć w miejscu docelowym, aby cały face został pokryty zadanym materiałem. Po tej operacji możemy usunąć narysowany prostokąt. Możliwe, że zajdzie konieczność wcześniejszego podzielenia ściany narzędziem Line, aby na każdym fragmencie móc zastosować inną teksturę. Powtarzamy czynności opisane wyżej, aż będziemy mieli oteksturowany cały budynek, łącznie z dachem. Jeżeli chcemy wymodelować dodatkowe elementy, jak balkony, kominki, czy też inne wystające elementy lepiej jest zrobić to przed oteksturowaniem. Ewentualnie należy tworzyć dodatkowe elementy z dala od budynku a następnie umieszczać je na właściwym miejscu. W przeciwnym wypadku, gdy powiedzmy chcemy wyciągnąć jakiś element ściany będzie on wyciągany razem z narzuconą teksturą. Kolejnym krokiem będzie przystosowanie modelu do umieszczenia w programie Google Earth zgodnie z zamieszczonymi poniżej wskazówkami. Zasady optymalizacji modeli dla Google Earth 1. Usuwanie niepotrzebnej geometrii Podczas modelowania biurka, na pewnym etapie mieliśmy do czynienia z liniami wewnątrz blatu, które nie tworzyły żadnej geometrii. W tym przypadku zalecane było usunięcie owych linii mimo iż nie były one wprost widoczne dla obserwatora. W przypadku modelowania dla Google Earth usuwanie niepotrzebnej geometrii idzie jeszcze dalej. Przyjmuje się założenie, że każda płaszczyzna niewidoczna dla obserwatora jest zbędna, jak również zbędne są linie, tworzące zbędne podziały face'ów. Pierwsze założenie oznacza, że będziemy usuwać również płaszczyzny znajdujące się od spodu modelu (pod terenem). Drugie wymusza na nas tworzenie brył, których ściany będą, o ile to możliwe, jedną płaszczyzną. Na rysunkach widzimy obiekt, składający się z trzech brył przed oraz po dokonaniu optymalizacji, o której mowa. PRZED
PO 2. Modelowanie tylko najbardziej istotnych szczegółów Nasz model powinien składać się z jak najmniejszej liczby poligonów. Spowodowane jest to koniecznością w miarę szybkiego wyświetlania nawet na starszych komputerach. W przypadku, gdyby całe miasto było wymodelowane z dużą dbałością o szczegóły byłby spory problem z załadowaniem nawet części modeli. Nie ma zatem konieczności modelowania obiektów takich jak okna, drzwi, czy niewielkie reliefy na kamienicach, gdyż większość z nich będzie widoczna po oteksturowaniu modelu odpowiednio wykonaną fotografią. 3. Stosowanie pojedynczych płaszczyzn, zamiast całych brył Kolejnym sposobem na uproszczenie modelu, jest stosowanie tam gdzie to możliwe pojedynczych face'ów. Ta metoda sprawdza się np. w przypadku kolumn podtrzymujących fragmenty budowli, które znajdują się w bliskiej odległości od niej. Narysowanie pojedynczej płaszczyzny z narzuconą teksturą daje lepsze efekty wizualne, jak również zmniejsza o 5 liczbę użytych face'ów. W kontekście całego modelu takie zabiegi nie powinny rzucać się w oczy obserwatorowi. 4. Upraszczanie krzywych Krzywe w programie SketchUp są w zasadzie liniami łamanymi, składającymi się z odpowiednio dużej liczby segmentów, aby dać wrażenie krzywizny. W przypadku łuków domyślna liczba segmentów wynosi 12. Aby zobaczyć te fragmenty, musimy włączyć opcję View/Hidden Geometry. Tak duża liczba segmentów wpływa negatywnie na ogólną złożoność modelu. Aby ją zmniejszyć, po narysowaniu fragmentu krzywej (łuku lub okręgu) wpisujemy z klawiatury liczbę segmentów, z jakich ma się składać krzywa i literkę s (np. dla krzywej z 5 segmentów wpisujemy 5s). Taki zabieg może kilkukrotnie zmniejszyć liczbę face'ów użytych w modelu bez straty dla jego wyglądu. 12 segmentów 4 segmenty 5. Tworzenie komponentów Gdy w modelowanym budynku pojawia się pewna liczba takich samych elementów (np. wystające balkony) dobrze jest utworzyć z jednego z nich komponent, a kolejne tworzyć kopiując jeden
istniejący. Aby stworzyć komponent wybieramy cały obiekt, a następnie z menu kontekstowego (prawy klawisz myszy) wybieramy Make Component. Każda kopia komponentu jest jego instancją, zatem każda zmiana w jednym z komponentów pociągnie identyczną zmianę w pozostałych. Komponenty można traktować jak odwołania do istniejącej definicji geometrii. Zmiana w jednym komponencie powoduje identyczną zmianę w pozostałych. 6. Używanie kolorów W przypadku niewielkich, nieistotnych, bądź słabo widocznych elementów lepiej jest używać kolorowania powierzchni zamiast narzucania tekstur z fotografii. W tym celu w oknie dialogowym narzędzia Paint Bucket, z listy rozwijanej należy wybrać Colors i wybrać odpowiedni kolor. Karta Edit daje nam możliwość dowolnego dostosowania koloru do naszych potrzeb przy pomocy standardowych modeli takich jak RGB czy HSL. 7. Ukrywanie krawędzi Ukrycie krawędzi brył, z jakich złożony jest model znacznie poprawia jego wygląd. Aby ukryć wszystkie krawędzie modelu przełączamy się na styl Wireframe włączając równocześnie widok ukrytej geometrii (View/Hidden Geometry) i wybieramy wszystkie krawędzie. Klikamy prawym przyciskiem w jedną z nich i wybieramy Hide. Po przełączeniu z powrotem do stylu Shaded With Textures otrzymamy model z widocznymi wszystkimi teksturami lecz ukrytymi krawędziami. Jeśli w modelu istnieją jakieś komponenty należy dla nich również powtórzyć tą procedurę. Na końcu musimy jeszcze dostosować model do ukształtowania terenu. W tym celu włączamy widok terenu i patrzymy od spodu na podkład mapy. Wszystkie dolne krawędzie modelu powinny znajdować się odrobinę pod powierzchnią terenu. Jeśli tak nie jest musimy przesunąć cały model nieco w dół. Najlepiej podczas przesuwania chwycić za wierzchołek najbardziej wysunięty ponad teren. Tak skonstruowany model jest gotowy do wysłania.