grabash'a dłubanie

TUTORIALE - tylko po polsku 
część 2 - pierwszy dodatek 

[PL] Tutoriale - wskazówki mniej lub bardziej pomocne w tworzeniu swoich produkcji  
[ENG] Tutorials - only Polish language version  

Strona główna
Homepage
Dworce
Railway stations
Tła
Backgrounds
Budynki
Buildings
Infrastruktura
Infrastructure
Stare
Old stuff
TUTORIALE
tylko PL

CZĘŚĆ 1 - WSTĘP      CZĘŚĆ 2 - PIERWSZY DODATEK        CZĘŚĆ 3 - ZAAWANSOWANY PROJEKT

CZĘŚĆ 4 - EDYTOWALNE NAPISY

ZAJĘCIA PRAKTYCZNE
Po zapoznaniu się z funkcjami gMax'a, warto wykorzystać naszą wiedzę do wykonania dwóch ćwiczeń. W pierwszym chciałbym pokazać jak zbudować prosty sklep blaszak i pokryć go teksturą na dwa sposoby UVW Mapping oraz Unwrap UVW. Natomiast drugie zadanie (patrz CZĘŚĆ 3 - ZAAWANSOWANY PROJEKT) będzie przykładem zbudowania wieży wodnej - model bardziej skomplikowany w konstrukcji i mapowaniu. Oba projekty będą kompletną ścieżką od A do Z - pobranie materiałów, wymiarów, modelowanie i umieszczenie w TRS - czyli eksport obiektu i dodanie do niego pliku config.txt - dodatkowo omówimy optymalizację projektu. Wszystkie materiały do zadań znajdziesz w katalogach http://www.chomikuj.pl/grabash w dziale Programy do TRS 2k4\materiały do ćwiczeń.

Do roboty!

SKLEP BLASZAK
Dziś rano zrobiłem kilka fotografii opuszczonego blaszaka pod moim blokiem. Ze zbioru ujęć wybrałem 3 które najbardziej nadają się do mapowania oraz jedno poglądowe. Ze względu na uproszczony charakter ćwiczenia pominę wykonanie zadaszenia przed wejściem. Skupimy się na zbudowaniu prostopadłościanu, wyciągnięciu tekstur oraz mapowaniu.

zbiór zdjęć do tekstur
Zbiór zdjęć sklepu do tekstur


Na początek należałoby wyciągnąć wymiary z tych rysunków. Podczas sesji zmierzyłem drzwi boczne - wejście dla personelu. Wysokość tych drzwi to 2,20m. Uruchamiam program Texture Maker a w nim Texture Extraction. Wczytuję zdjęcie z widokiem bocznym i ustawiam siatkę tak by górna krawędź była na wysokości drzwi. Według programu wysokość drzwi w pikselach to 830. Przypisuję dla tej sytuacji 2,20m rzeczywistych do 830px. Przesuwam górną krawędź siatki aż do końca linii dachu - teraz wysokość w px wynosi 1167 (vide rys. poniżej).

pomiary na teksturze
Pomiary na teksturze


Teraz musimy przypomnieć sobie równanie na krzyż, czyli:


2,20 = 830

x = 1167

z czego:

830 * x = 2,20 * 1167

z czego:

830 * x = 2567,40

kolejno:

x = 2567,40 / 830

x = 3,09m

Dzięki temu równaniu wyciągnęliśmy wysokość budynku bez jego dokładnego pomiaru, bazując jedynie na wysokości drzwi. W zaokrągleniu możemy przyjąć wysokość 3,10m. Podobnie musimy obliczyć szerokość budynku z zależności:


2,20 = 830

x = 1888

gdzie wynikiem będzie:

x = 5,00m

Na razie przerwiemy obliczenia ponieważ przy obecnym zaznaczeniu obrazu możemy dokonać renderowania grafiki do tekstury. Jako, że budujemy prosty dodatek, nie ma większego sensu by tworzyć wielką teksturę. Muszę pamiętać o tym, że prócz ściany bocznej potrzebuję jeszcze frontową i tylną. Drugą boczną mogę sklecić z tylnej bądź użyć ponownie bocznej już wybranej. Zakładam że stworzę jeden plik graficzny, który będzie zawierał 3 tekstury ściany. Ustawię je w pionie. Wysokość wynikowego pliku będzie miała 256px a szerokość 128px - dlatego dzielę 256 przez 3. Wynikiem jest 85,333(3). Dla wygody ustalam, że ściany frontowa i tylna będą miały wysokość 86px a boczna 84px. Teraz muszę wprowadzić w okienka Size (pod podglądem planowanej tekstury odpowiednio wielkości 128 (dla szerokości) i 84 (wysokości). Dodatkowo podbijam parametr Sharpen na poziom 10-14, dzięki czemu zyskam ostrzejszą grafikę. Jeżeli obszar zaznaczony siatką w 100% pokrywa ścianę, a wpisane dane są odpowiednie mogę rozpocząć renderowanie wybierając klawisz Render. Następnie w oknie Rendering ustalam jakość (Quality) na poziomie wysokim (High) i klikam przycisk Render. Po krótkiej chwili otworzy się okno Output i jeżeli wynik jest satysfakcjonujący to klikamy przycisk zapisu (Save).

proces wyciągania tekstury ze zdjęcia
Proces wyciągania tekstury ze zdjęcia


Proces powtarzamy przy użyciu kolejnych zdjęć. Pamiętając, że plik wynikowy ma mieć wysokość 86px. Efektem będzie uzyskanie surowca na teksturę, który po ustawieniu grafik w pliku końcowym (np. w GIMPie lub PS) powinien w przybliżeniu wyglądać jak ten obok. Zapisujemy go pod nazwą np. sciany.tga jako plik 24-bitowy o założonych wymiarach 128x256px.

finalna tekstura dla wszystkich ścian sklepu
Finalna tekstura dla wszystkich ścian sklepu


Dodam tylko, że zdjęcie frontu jest zniekształcone przez fakt zrobienia go pod kątem, a nie prostopadle. Przeszkodą w wykonaniu prawidłowego ujęcia, jest drzewo rosnące w pobliżu - korzystając z faktu, że tworzymy prosty dodatek i nie będę poruszał zagadnienia retuszu grafiki użyjemy przy renderowaniu okienka Correction X ustawiając wartość na -6. Pozwoli to zminimalizować stratę. Oczywiście przy zaawansowanych budynkach polecam zabawę w retusz gdyż szkoda tracić perspektywę przez przeszkodę terenową. Do pełni szczęścia brakuje nam jeszcze tylko szerokości ściany frontowej lub tylnej. Podczas wykonywania tekstury tylnej ściany możemy obliczyć długość budynku podstawiając do równania wysokość uzyskaną z pierwszego rachunku.
Po nałożeniu siatki na tylną ścianę dostaję liczby y=1230 oraz x=2475. Do kalkulatorów:


3,10 = 1230

x = 2475

x * 1230 = 3,10 * 2475

x * 1230 = 7560,90

czyli:

x = 7672,50 / 1230

x = 6,24m

Teraz mamy komplet obliczeń oraz wszystkie tekstury, dzięki którym możemy przystąpić do stworzenia pierwszego prostopadłościanu w gMax.

Po uruchomieniu TACS od razu powiększam okno z rzutem Perspective. Z menu bocznego wybieram przycisk Box i zaczynam rysować na środku prostopadłościan. Z wciśniętym LPM przeciągam na płaszczyźnie poziomej myszkę, następnie zwalniam klawisz i podjeżdżam myszką do góry. Powinna pojawić się mniej lub bardziej podobna bryła do tej z rysunku 29.

Rysunek 29: ręcznie wykonany Box
Rysunek 29: ręcznie wykonany Box


Ponieważ jej wymiary są mocno umowne musimy wpisać takie jak nam wyszły z równań. Przypomnę, że wysokość budynku to 3,10m, jego długość 6,24m a głębokość 5,00m. Korzystam z okienek w lewym menu i wpisuję podane wymiary w kolejności 5,00 / 6,24 / 3,10. Podczas wprowadzania wartości bryła zacznie się przekształcać zgodnie z naszymi wpisami. Jako, że lubię w projektach porządek, dlatego wyśrodkujemy go sobie w naszym układzie współrzędnym wybierając narzędzie do przesuwania (skrzyżowane strzałki). Uaktywnią się okienka w pasku stanu opisane x, y, z. Po wpisaniu w każdym z nich wartości 0 przeniesiemy prostopadłościan w centralny punkt projektu.

Rysunek 30: prostopadłościan po wprowadzeniu rzeczywistych wymiarów
Rysunek 30: prostopadłościan po wprowadzeniu rzeczywistych wymiarów


Aby powiększyć widok wystarczy kliknąć ikonę Zoom Extense z paska stanu (kwadrat otoczony kątami), dzięki temu cały obiekt zajmie okno.

Kolejnym krokiem będzie usunięcie podłogi (gdyż ta i tak nie będzie widoczna w symulatorze) oraz oddzielenie dachu. Gdybym umieścił teksturę np. papy w pliku tex.tga to wtedy nie musiałbym tego robić. Jednak mapowanie różnych plików graficznych wymaga by dana tekstura była przypisana do konkretnej płaszczyzny.

Klikamy PPM na obiekcie i z listy rozwijalnej wybieramy ostatnią opcję Convert To, a później Convert to Editable Mesh. Nasz prostopadłościan staje się siatką płaszczyzn.

Rysunek 31: przekształcenie bryły w edytowalną siatkę
Rysunek 31: przekształcenie bryły w edytowalną siatkę


Musimy obrócić naszą bryłę tak by zobaczyć spód. Z paska stanu klikamy ikonę Arc Rotate Seleceted i z wciśniętym LPM przeciągamy myszkę do góry. Z lewego menu uaktywniamy zakładkę Modify, a w dziale Selection klikamy na czerwony kwadrat, który opisany jest jako Polygon (rysunek obok).

Rysunek 32: wybór z zakładki Modify dla Polygonów
Rysunek 32: wybór z zakładki Modify dla Polygonów


Klikamy LPM na podłoże a na klawiaturze wciskamy przycisk Delete. Powinniśmy zobaczyć mniej więcej widok jak na rysunku poniżej.

Rysunek 33: bryła po usunięciu podłoża
Rysunek 33: bryła po usunięciu podłoża


Jako, że dach będzie mapowany inną grafiką niż ściany budynku warto odseparować go od reszty bryły. Obracamy, przy użyciu Arc Rotated Selected, bryłę do położenia domyślnego - z wciśniętym LPM przesuwamy kursor z góry na dół.

Dla lepszej orientacji sugeruję wybrać PPM na nazwie rzutu i z menu podręcznego wybrać opcję Wireframe - teraz nasz obiekt będzie przedstawiony jako zbiór krawędzi.

Rysunek 34: tryb Wireframe
Rysunek 34: tryb Wireframe


Ponieważ wciąż znajdujemy się w trybie edycji siatki i mamy kontrolę nad polygonami, dlatego spróbujemy wybrać krawędź dachu LPM. Po tej akcji krawędź górna powinna zostać zaznaczona na czerwono. Zwróć uwagę na to, że Pivot ustawił się centralnie w wybranej płaszczyźnie.

Rysunek 35: selekcja górnej płaszczyzny
Rysunek 35: selekcja górnej płaszczyzny


Przy aktywnym zaznaczeniu wybieramy z lewego menu, w dziale Edit Geometry przycisk Detach – odłącz. Wyświetli się okienko z możliwością nadania nazwy nowo utworzonego obiektu. Istnieje również możliwość oddzielenia polygonów jako kopii zaznaczenia. Jeżeli zaznaczyłbym check box Detach As Clone, podstawowa bryła pozostanie bez zmian a do projektu zostanie dołączony nowy prostokąt oparty na górnej części bryły. Jako, że naszym celem jest utworzenie samodzielnych ścian i dachu, nie zaznaczam nic z opcji tylko klikam przycisk OK.

Rysunek 36: proces oddzielenia górnej płaszczyzny od bryły
Rysunek 36: proces oddzielenia górnej płaszczyzny od bryły


Finiszem modyfikacji będzie kliknięcie na podświetlonej nazwie w lewym menu Editable Mesh. Dzięki temu opuszczamy tryb edycji siatki i mamy kontrolę nad stworzonymi płaszczyznami.

Po tych wszystkich operacjach zapisujemy nasz projekt. Wspomnę, że należy CZĘSTO dokonywać zapisu, gdyż gMax to kapryśna aplikacja, która potrafi doprowadzić do szału w przypadku lekceważenia. W menu Customize > Preferences... wybierz zakładkę Files, a w niej upewnij się, że zaznaczone są opcje Backup on Save (wykonaj kopię zapasową przy zapisie) oraz Increment on Save (zwiększ numer przy zapisie - zmieniana jest nazwa pliku projektu o jedną cyfrę, by można zachować proces zmian i nie nadpisać z błędem poprawnego pliku). Podstawy BHP opóźniające efekt osiwienia twórcy! Mapowanie zaczynamy od wczytania w gMax Material Editor grafik ścian i dachu. Wcześniej utworzyliśmy w Texture Makerze poszczególne składowe ścian a w programie graficznym połączyliśmy je w jedność. Do pokrycia dachu, wykorzystam plik papa.tga, który wykorzystuję w swoich projektach. W tym miejscu pragnę jeszcze raz przypomnieć (co zawsze robiłem na forach TRS), że moje tekstury nie są ograniczone żadnymi prawami autorskimi. Proszę korzystać z nich jeżeli tylko masz ochotę. Jedyne czego oczekuję to poinformowanie mnie w mailu, o fakcie wykorzystania i ew. zrzucie ekranowym tworzonego dodatku. OK - wracamy do pracy. Otwieramy gMax Material Editor klikając w górnym menu przedostatnią ikonę (czerwona kula pokryta szachownicą). W otwartym oknie klikamy przycisk new, którym rozpoczynamy dodawanie nowej tekstury do projektu. Pliki z grafiką warto przechowywać w katalogu z projektem, aby sprawniej zarządzać nim. W zakładce Diffuse wybieramy ikonę skoroszytu z szachownicą Assign texture - pick map file. Przeszukując katalog ustalamy, który plik graficzny będzie wczytany. Najpierw stworzymy materiał ścian a później papy.

Rysunek 37: poszczególne etapy przypisywania grafik do materiałów
Rysunek 37: poszczególne etapy przypisywania grafik do materiałów


Staraj się nadawać unikalne nazwy materiałom w linijce Name, w zaawansowanych zadaniach unikniesz przeszukiwania materiałów pod nic nieznaczącymi nazwami Mtl #xxx.

Zabierzmy się za mapowanie - pierwszy będzie Unwrap UVW. Najpierw przejdziemy z widoku Wireframe do Smooth + Highliths. W tym celu klikamy PPM na nazwie rzutu i wybieramy pierwszą opcję z menu podręcznego. Kiedy mamy zdefiniowane już oba materiały możemy od razu przypisać je do właściwych polygonów. Z listy Scene Materials ustalamy materiał sciany - nie zamykając gMax Material Editor, klikamy LPM na płaszczyzny ścian, po czym wracamy kursorem do edytora i wybieramy przycisk apply (przypisz). Operację powtarzamy dla dachu, zmieniając z listy materiałów na papa i przed zatwierdzeniem uaktywniając polygony tworzące dach. Co prawda wstępnie widok nie jest zbyt imponujący, ale to tylko kwestia kilku operacji. Po przypisaniu materiałów do odpowiednich części można wyłączyć edytor materiałów.

Rysunek 38: proces przypisywania materiału
Rysunek 38: proces przypisywania materiału


Następnie z lewego menu wyszukujemy zakładkę Modify. Upewnij się, że masz aktywne zaznaczenie na polygonach tworzących dach i wybierz operand Unwrap UVW. Analogicznie powtarzamy dopisanie Unwrap do ścian. Jeżeli mamy w tej chwili zaznaczone ściany to przejdźmy do ich właściwego mapowania. Z lewego menu w opcji Unwrap UVW klikamy na symbol „+” dzięki czemu rozwinie nam się drzewko z jedną pozycją Select Face. Po kliknięciu na niej zostanie podświetlona na niebiesko a my powtarzamy dla każdej z płaszczyzn następującą ścieżkę akcji:
     a) LPM ustalamy jedną ze ścian - znakiem wyboru będzie dodanie do polygonów żółtego obwodu.
     b) z lewego menu należy użyć przycisku Planar Map, znajdującego się w dziale Parameters, który pokryje teksturą sciana.tga powierzchnię.
     c) z górnej części Parameters klikamy na Edit... otwierając nowe okno Edit UVWs.
     d) ustawiamy kotwice zgodnie z kształtem budynku. W ustawianiu wystarczy skorzystać z narzędzia Move, w którym dostępne są następujące manewry widoczne na rysunku obok. Oczywiście w bardziej zaawansowanych kształtach praca nie będzie przebiegała wyłącznie na regulacji kotwic w pionie lub poziomie. Możliwe, że będzie konieczne skorzystanie z obrotu, skalowania lub odbicia lustrzanego.
     e) po idealnym ustawieniu zamykamy okno Edit UVWs przechodzimy do kolejnej ściany i zaczynamy od podpunktu a).

Rysunek 39: opcje dotyczące przesuwania kotwic
Rysunek 39: opcje dotyczące przesuwania kotwic


Na grafice poniżej znajdziesz przedstawienie procesu opisanego w podpunktach od a) do e) dla każdej ze ścian.

1) front

Rysunek 40: mapowanie ściany przedniej
Rysunek 40: mapowanie ściany przedniej


2) lewy bok

Rysunek 41: ściana boczna
Rysunek 41: ściana boczna


3) tył

Rysunek 42: mapowanie zaplecza
Rysunek 42: mapowanie zaplecza


4) prawy bok

Rysunek 43: mapowanie drugiego boku
Rysunek 43: mapowanie drugiego boku


Edycję kończymy kliknięciem na Select Face na lewym marginesie, tak by zniknęło niebieskie podświetlenie tej opcji.

5) dach - od biedy można by zostawić mapowanie jedynie po wyborze Planar Map na prostokącie tworzącym dach, ale chcemy by tekstura nie była zbyt rozmazana.

Rysunek 44: ostatni szlif - mapujemy dach
Rysunek 44: ostatni szlif - mapujemy dach


Teraz spróbujemy osiągnąć ten sam wynik, jednak przy wykorzystaniu UVW Map. Tekstury przypisujemy identycznie jak w pierwszym przypadku, ale jako operand zakładki Modify, wybieramy UVW Map dla ścian i dachu. W tym trybie mapowania nie mamy żadnego dodatkowego okna służącego do precyzyjnego umiejscowienia grafiki na płaszczyznach. Nasze modyfikacje i nastawy dokonujemy przy użyciu suwaków U Tile, V Tile oraz W Tile. Dodatkowo kontrolujemy położenie na wybranej ścianie przy użyciu narzędzia do Select and Move, czyli skrzyżowane strzałki oraz Select and Rotate, obrót z górnej belki ikon. Takie mapowanie jest bardzo skuteczne gdy mamy do czynienia z powtarzalnym motywem, np.: mur, ściana długiego budynku, dachy. W przypadku naszego małego blaszaka będzie to raczej sztuka dla sztuki, gdyż dodatkową czynnością będzie rozdzielenie każdej ściany i ustawianie grafiki niezależnie. Zaczniemy od podziału ścian sklepu. Należy kliknąć LPM w lewym menu na Editable Mesh, co spowoduje podświetlenie funkcji na niebiesko. Upewnij się, że w zakładce poniżej, zatytułowanej Selection wciśnięta jest ikona Polygon. Następną czynnością będzie wybór każdej ze ścian oraz użycie klawisza Detach znajdującego się poniżej. Robimy dokładnie to samo jak przy oddzieleniu dachu od ścian w etapie modelowania W efekcie otrzymamy 4 niezależne ściany. Aby powrócić do edycji i tym samym mapowanie musimy ponownie kliknąć LPM na Editable Mesh, tak by wyłączyć podświetlenie.

Rysunek 45: podział ścian sklepu
Rysunek 45: podział ścian sklepu


Dla każdej ściany dodajemy operand UVW Map. Ponieważ nasze płaszczyzny nie są skomplikowane możemy rozważyć tryb Box, gdyż daje nam największą kontrolę grafiki w przestrzeni 3D.

1) ściana frontowa i zaplecze - grafika przedstawia mapowanie frontu. Dla wykonania tylnej ściany wystarczy przerwać proces na podpunkcie b).


2) ściana boczna z drzwiami.


3) ściana boczna z lewej strony.


4) dach.


I to właściwie koniec modelowania i mapowania. By ten dodatek pojawił się w TRS wystarczy wyeksportować, dorzucić grafiki sciana.tga oraz papa.tga do katalogu z eksportem oraz dopisać plik config.txt. EXPORT. Upewnij się, że nie masz zaznaczonego żadnego elementu projektu. Z menu File wybierz Export... .Wyświetli się nam okno Select File to Export, w którym należy namierzyć podkatalog x:\Trainz\World\Custom\scenery (jeżeli nie masz jeszcze podkatalogu scenery to możesz go stworzyć). W tym miejscu tworzymy nowy katalog, w którym nie może być polskich liter. Nazwijmy go np.: blaszak01.



W tym katalogu możemy zapisać plik wynikowy naszego projektu. Dlatego w linijce Nazwa pliku wpisujemy blaszak, a następnie przycisk Zapisz. Proces eksportu nie jest zbyt długi w przypadku tak prostego projektu, dlatego pewnie nie wiele zauważysz prócz zniknięcia okna Select File To Export.



Teraz możemy zamknąć już gMax'a.

Do katalogu blaszak01 wrzucamy nasze obie tekstury sciany.tga i papa.tga. Zauważ, że są tu już cztery inne pliki, w tym dwa o nazwie identycznej z teksturami. Każdy materiał użyty w projekcie będzie miał swój plik konfiguracyjny nazwa_pliku.texture.txt.



Klikamy PPM w wolnym miejscu w tym katalogu i tworzymy przy użyciu menu podręcznego nowy plik tekstowy. Po otworzeniu go w notatniku rozpoczynamy wpis o mniej więcej takiej treści jak poniżej:



Zamykamy plik - nadajemy mu nazwę config przy zapisie - uruchamiamy TRS i szukamy naszego blaszaka na liście dodatków w Poland\budynki pod nazwą Sklep blaszak 01.

Et voila - obok możesz podziwiać dodatek w akcji.

UWAGA!!! Kompletny poradnik znajdziesz na moim CHOMIKU w dziale Programy do TRS 2k4!!!

© Copyright by Ryszard Choiński - Wszelkie prawa autora zastrzeżone