Basemapy

Basemap, czyli jak użyć mapy topograficznej do odwzorowania realnego świata w TRS.

Artykuł ten pomaga rozwiązać problem nurtujący twórców map realnych (a także opartych na miejscach z rzeczywistego świata):

Jak wiernie odwzorować przebieg torów, dróg, budynków, zieleni itp?

Można użyć do tego map lub zdjęć satelitarnych (Geoportal lub Google Maps), odwzorowując metodą „na oko”. Jednak lepszą metodą jest użycie mapy lub zdjęcia bezpośrednio w grze, jako podkładu do budowania świata. Oczywiście mapa musi być w odpowiedniej skali (1:1 w grze). Pomijam potrzebę posiadania map/schematów stacji – z map i zdjęć satelitarnych nie zawsze uda się odczytać układu rozjazdów w głowicach. Chodzi o przebieg linii „przez miasta, wsie, łąki i pola”, nie o precyzyjne odtworzenie układu torów.

W internecie można znaleźć dodatki służące do tego celu. Ja również popełniłem własne – ponieważ strona jednego z autorów zadziałać nie chciała a zrobienie własnych okazało się szybsze niż szukanie w necie 🙂

Dodatki te mają jedną wspólną cechę: Są to zwyczajne kwadratowe płaszczyzny, o wymiarach 1000mx1000m (1x1km), stanowiące obiekt scenery. Obiekt taki pokryty jest teksturą, będącą fragmentem mapy topograficznej lub zdjęcia, obejmujących obszar także 1x1km. Po wstawieniu takiego obiektu, mamy do dyspozycji fragment mapy o takim wymiarze i skali 1:1. Zazwyczaj w zestawie jest więcej niż jeden taki kwadrat, co pozwala przygotować większy odcinek jednorazowo. Moich jest 21, co daje ponad 20km mapy „na raz” (przy idealnym wycinaniu fragmentów „na styk” można zrobić pełne 21km, jednak lepiej mapy wycinać ‚na zakładkę’, co ułatwia potem pasowanie ze sobą).

Istnieją także mapy innych autorów dostosowane do wielkości pojedynczej planszy w TRS (720x720m). Ich użycie jest w zasadzie identyczne jak wyżej opisanych, różni się jedynie sposób przygotowania fragmentu mapy na teksturę.

Poniższy artykuł opiera się na naszym rodzimym portalu Geoportal:

http://maps.geoportal.gov.pl/webclient/

oraz na dodatkach mojej produkcji, o nazwach Basemap00 do basemap20.

Potrzebny będzie również program graficzny, umożliwiający wycinanie określonych fragmentów obrazu (Gimp, Phooshop, Corel PhotoPaint itp). Przykłady obrazkowe bazują na programie Corela.

Metod na zdobycie mapy/zdjęć jest mnóstwo. Można zeskanować mapę z atlasu, mapę sztabową, można użyć map dostępnych w Internecie, a także zdjęć lotniczych/satelitarnych. Najprostszym chyba sposobem jest użycie wspomnianego Geoportalu, który ma „w sobie” i zdjęcia i mapy.

Otwieramy Geoportal (link wyżej) i znajdujemy interesujący nas obszar (w tym przypadku wjazd do Gdyni Głównej od strony Gdańska):

Czerwonymi kółkami zaznaczyłem trzy ważne opcje:

Wybieramy przycisk Raster, co otworzy nam mapę topograficzną, jak na screenie, a następnie zamykamy panele górny i boczny przyciskami w małych kółkach, co powiększa nam widoczny obszar mapy. Jeśli nasza przeglądarka posiada opcję „pełny ekran” – używamy jej. Posiadane przeze mnie Internet Explorer, Mozilla Firefox i Opera mają tą funkcję pod klawiszem F11.

Następnie musimy wybrać skalę wyświetlonej mapy. Na podstawie eksperymentów ustaliłem, że do terenów zabudowanych i rejonów stacji optymalna jest skala 1:5000. Do szlaków „przez wioski” – 1:10000-1:20000. Większe skale (bardziej oddalone) są już za mało dokładne, natomiast mniejsze (poniżej 1:5000) – obejmują zbyt mały obszar. Skala 1:1000 (najmniejsza w Geoportalu) używana powinna być przy pracy ze zdjęciami, dla odwzorowania układu torowego, np. w głowicach).

Wybraną skalę wpisujemy „ręcznie” w odpowiednie okienko. Po wpisaniu skali, pozamykaniu bocznych paneli i włączeniu trybu pełnoekranowego Geoportal prezentuje się tak:

Na screenie zaznaczyłem znany nam już przycisk Raster (sąsiadujący z nim przycisk Orto włącza zdjęcia lotnicze/satelitarne), okienko do wpisania skali a także (na dole) linijkę, która będzie nam potrzebna za chwilę.

Ustawiamy mapę tak, aby cały interesujący nas obszar (przeznaczony na jeden kwadrat Basemap) znalazł się na ekranie. Otwierając mapę, czekamy aż wczyta się w całości a na linijce pokaże się podział i wartości liczbowe (odległości). Następnie kopiujemy widoczną mapę najprostszym możliwym sposobem: robimy screen, używając znanego wszystkim klawisza PrintScreen na klawiaturze.

Geoportal zostawiamy otwarty, przyda sie jeszcze.

Następnie otwieramy program graficzny i wklejamy do niego nasz screen jako nowy obraz:

Powinniśmy otrzymać coś podobnego do powyższego rysunku – zrzut ekranu z naszym fragmentem mapy. Uwaga! Obraz zmniejszamy narzędziem powiększ/pomniejsz widok, nie skalujemy go. Ma być taki, jaki jest, o rozdzielczości ekranu!

Teraz czeka nas trochę klikania w programie graficznym, w celu dopasowania kawałka mapki do dodatku Basemap.

Najpierw musimy ustalić, ile pikseli obrazu odpowiada odległości np. 100m na mapie. W tym celu powiększamy sobie fragment rysunku z linijką i jakimkolwiek narzędziem (maską, wycinakiem – byle podawało „w locie” rozmiar zaznaczonego obszaru) na linijce obramowujemy odcinek odpowiadający 100m:

W moim przypadku (rozdzielczość ekranu 1280×1024 i skala mapki 1:5000) odcinkowi 100m na mapie odpowiada 69 pikseli. Stąd proste obliczenie mówi nam, że obszar 1x1km na ekranie to kwadrat 690×690 pikseli

Używamy narzędzia do wycinania, aby uzyskać fragment mapy o takim rozmiarze:

W programie Corel Photopaint wielkość obszaru do wycięcia (690×690) można podać ręcznie a następnie ramkę o takim wymiarze przesunąć w potrzebne nam miejsce, z czego skwapliwie korzystam 🙂

Po użyciu wycinaka otrzymujemy kwadratowy wycinek mapy obejmujący obszar dokładnie 1x1km, czyli pasujący do naszego dodatku Basemap. Ponieważ jednak TRS nie przyjmie nam obrazu (tekstury) o rozmiarze 690×690 (długość boku musi być potęgą liczby 2, czyli 32, 64, 128, 256, 512, 1024, 2048 itd), nasz obrazek musimy przeskalować. Zalecam skalowanie „w górę”, czyli powiększanie – w grze będzie lepsza jakość. Na koniec usuwamy wszelkie zaznaczenia, maski – o ile jakichś uzywaliśmy.

Używamy narzędzia do skalowania obrazu i „przeliczamy” go na wymiar 1024×1024 piksele. Powstały plik będzie miał ponad 3MB, ale nie przejmujemy się tym, bo przecież dodatki te używane są tylko przy tworzeniu mapki. Na gotowej mapie ich nie będzie i nie wpłyną na wydajność.

Mając gotowy plik z mapą, wrzucamy go do odpowiedniego dodatku.

W tym celu otwieramy CMP i wyszukujemy Basemap, który chcemy obdzielić naszą teksturą (mapką):

W szukajce wpisujemy Basemap (na screenie uzupełniłem o szukanie po KUID użytkownika), wybieramy z listy dodatek i otwieramy go do edycji w Eksploratorze (klawisze Shift-Ctrl-E).

W otwartym oknie sprawdzamy ścieżkę do folderu otwartego dodatku:

Następnie wracamy do programu graficznego i zapisujemy naszą mapkę jako teksturę właśnie otworzonego dodatku.

Wybieramy Zapisz Jako/Save As i przechodzimy do folderu, który stworzył nam CMP. Oczywiście cały czas w ramach okna „Zapisz jako” 🙂 Kierujemy się przy tym ścieżką z okna Eksploratora:

Ustawiamy typ pliku na Targa Bitmap (TGA), kompresję wyłączamy. W folderze dodatku znajduje się jeden plik, o nazwie 1.tga. To jest właśnie plik tekstury, który jest nakładany na kwadrat Basemap w grze. Zastępujemy ten plik naszym fragmentem mapy, zapisując go pod tą samą nazwą. Na pytanie programu, czy zastąpić istniejący plik, odpowiadamy twierdząco:

Jeśli pojawi się pytanie o tryb eksportu do TGA – zaznaczamy tryb normalny:

Zamykamy obraz w programie graficznym (całego programu nie musimy, jeśli chcemy obrabiać następne kawałki mapy), sprawdzamy w otwartym przez CMP oknie, czy plik 1.tga jest właściwy (czy zawiera zapisaną przez nas teksturę), następnie zamykamy to okno.

Wracamy do CMP i zatwierdzamy zmiany poczynione w dodatku – zaznaczając go i używając klawiszy Ctrl-M. Jeśli przy nazwie nie pojawi się czerwony wykrzyknik – odnieśliśmy sukces 🙂

Te czynności (od PrintScreena z Geoportalu do zapisania tekstury w folderze dodatku i zatwierdzenia go) powtarzamy tyle razy, ile chcemy jednocześnie użyć map. Oczywiście za każdym razem otwieramy inny dodatek, nie zapisujemy w kółko jednego i tego samego. Jeżeli nie zmienialiśmy skali mapy (naszego przykładowego 1:5000) ani rozdzielczości ekranu, to nasz przelicznik (tu 690 pikseli na 1km) jest aktualny i nie musimy go w kółko wyliczać. Po prostu przesuwamy widczny fragment mapy, robimy screen, wklejamy do programu graficznego i wycinamy odpowiedni kawałek (u nas 690×690).

Zalecam wycinać fragmenty tak, żeby zachodziły na siebie (na brzegach kwadratów były te same fragmenty) – ułatwi to potem spasowanie większej ilości mapek ze sobą.

Odpalamy TRS. Wyszukujemy na liście dodatków (scenery) zmodyfikowany przez nas kwadrat Basemap i wstawiamy go na mapę:

Dla lepszej widoczności wyłączamy teksturę gruntu (przycisk zaznaczony czerwonym kółkiem na drugim screenie).

Na takim podkładzie budujemy świat – kładziemy tory, ulice, stawiamy domy, drzewa itp.

Na koniec usuwamy mapkę Basemap.

Oczywiście takich fragmentów możemy na raz użyć więcej – w moim packu jest 21 kwadratów basemap, co umożliwia użycie jednocześnie 21 fragmentów mapy. Opisana operacja jest powtarzalna – jesli wykorzystamy cały obszar objęty mapkami, wrzucamy do dodatków kolejne fragmenty mapy i budujemy dalej.

Procedurę przeliczania pikseli na metry robimy tylko raz dla określonej pary rozdzielczość ekranu-skala mapy. Jeśli w naszym przykładzie wyszło nam 690 pikseli na 1km, to jeśli nie zmienimy rozdzielczości ekranu i zawsze będziemy używać skali 1:5000 – to zawsze wycinamy kwadrat 690×690 pikseli. Czyli dla następnych fragmentów mapy etap pomiarów pomijamy 🙂 Musimy tylko pamiętać o przeskalowaniu gotowego fragmentu do 1024×1024.


Dodatkowym problemem, który możemy napotkać, jest kwestia teksturowania terenu.

Jak pisałem wyżej, najwygodniejszym sposobem pracy z basemapami jest praca przy wyłączonych teksturach (przezroczystej siatce ziemi). Ale jak tu nakładać tekstury według mapy, skoro tekstury mamy wyłączone i nie widać, co robimy? A po włączeniu tekstur – znika nam mapa.

Można przełączać widok siatki, ale ani to szybkie, ani wygodne.

Do „ogarnięcia” tego tematu powstał zestaw linii pomocniczych, zwanych tu baseliniami.

Jest ich „całe mnóstwo”, o nazwach (i zastosowaniu): las, łąka, pole, zabudowa, piaski, bagna, inne tereny, park, ogród, działki, przemysł, magazyny, place.

Są to spline służące do obramowania odpowiednich obszarów na mapie, w celu zaznaczenia gdzie jaka tekstura być powinna.

Na przezroczystej siatce odpowiednimi liniami obrysowujemy sobie obszary lasów, pól, miast, łąk itd, pomagając sobie mapą topograficzną lub zdjęciami na basemapach. W ten sposób oznaczamy obszary, które pokryjemy odpowiednimi teksturami.

Następnie włączamy teksturowanie – i dla wygody ukrywamy warstwę z basemapami – i malujemy, według naszego gustu i zdolności „inżyniera krajobrazu”:

Baselinie są widoczne na Minimapie.

Powodzenia!

R.Bach

P.s. (bo się ludziska pytają): Basemapy pobierzecie z tej strony, poszukajcie w Downloadzie. To są moje dodatki, więc na mojej stronie ich się szuka 🙂

Dodaj komentarz