Copyright Witold Jaworski, 2009-2015. All rights reserved

wjaworski@airplanes3d.net

http://airplanes3d.net

This work is licensed under Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License

W szczególności, publikowanie przekładu tej książki na inne języki wymaga pisemnej zgody Autora.

Niniejsza książka może być kopiowana i rozpowszechniana na następujących warunkach:

- Każda kopia powinna zawierać informację o Autorze;

- Nie wolno używać tej książki do celów komercyjnych;

- Nie wolno zmieniać tekstu ani przekształcać w jakikolwiek sposób układu tej publikacji.

ISBN: 978-83-939677-3-5

Ta książka jest dostępna w formatach: PDF, EPUB (3.0), i MOBI (KF8). Użyj matrycy format/platforma z http://airplanes3d.net/formats-000_e.xml aby lepiej poznać właściwości każdego z nich na najpopularniejszych tabletach i komputerach. Odpowiedni plik w każdym z tych formatów możesz pobrać ze strony tego projektu: http://airplanes3d.net/wm-000_e.xml.

Ilustracja na stronie tytułowej:

Para P-40B z 47 Pursuit Squadron USAAC, której udało się wystartować 7 grudnia 1941r do walki z japońskim nalotem na Pearl Harbor. Pilotują je porucznicy: Kenneth Taylor i George Welch.
47 PS był w tym czasie oddelegowany na ćwiczenia strzeleckie w ustronny, północny zakątek wyspy Oahu, na polowe lądowisko Haleiwa. To obszar nie był blokowany przez japońskie samoloty. (Pearl Harbor leżało na przeciwnym brzegu wyspy). Pas startowy biegł wzdłuż brzegu morza. Tak ta para samolotów mogła wyglądać zaraz po starcie. Fotografia tła przypomina autentyczny fragment brzegu w pobliżu lotniska Haleiwa
Tworzenie tej sceny jest opisane w IV tomie tej książki.

Spis treści

Wstęp

Po co ta książka została napisana?

Co zawiera ta publikacja

Konwencje zapisu

Jak czytać tę książkę

Budowa modelu

Rozdział 1. Przygotowanie „warsztatu pracy”

Rozdział 2. Kompozycja najprostszej sceny

2.1 Przygotowanie kamery i oświetlenia

2.2 Przypisanie podstawowych materiałów

2.3 Otoczenie sceny

Rozdział 3. Podstawy teksturowania

3.1 Wprowadzenie

3.2 Tekstury nierówności

3.3 Rozwinięcie w przestrzeni UV

3.4 Tekstura nierówności — c.d.

3.5 Tekstury odbicia (i rozpraszania) światła

3.6 Podsumowanie

Rozdział 4. Teksturowanie modelu

4.1 Rozwinięcie UV płata

4.2 Rozwinięcie UV kadłuba

4.3 Rozwinięcie UV pozostałych powierzchni

4.4 Rysowanie obrazu powierzchni samolotu

4.5 Kompozycja obrazów tekstur nierówności (Nor)

4.6 Kompozycja obrazów tekstur odbicia (Ref)

4.7 Tekstura barwy

4.8 Znaki rozpoznawcze i napisy

4.9 Inne tekstury

4.10 Alternatywny kamuflaż — plamy

4.11 Podsumowanie

Szczegóły obsługi programów

Rozdział 5. GIMP — szczegóły obsługi

5.1 Instalacja

5.2 Wprowadzenie

5.3 Otwieranie pliku (obrazu)

5.4 Zapisanie pliku (obrazu)

5.5 Kadrowanie obrazu

5.6 Linie pomocnicze (guides)

5.7 Widok: powiększanie, przesuwanie

5.8 Zmiana rozmiaru obrazu

5.9 Warstwy — zarządzanie

5.10 Dodanie warstwy (z innego pliku)

5.11 Dodanie warstwy (pustej)

5.12 Usunięcie warstwy

5.13 Rysowanie

5.14 Usuwanie fragmentów obrazu

5.15 Zaznaczenie obszarem prostokątnym

5.16 Zaznaczenie obszarem nieregularnym

5.17 Zaznaczanie — wg wskazanego koloru

5.18 Zmniejszanie/zwiększanie obszaru zaznaczenia

5.19 Zaznaczanie — narysowanym obszarem

5.20 Zaznaczenie — poprawianie za pomocą Quick Mask

5.21 Zaznaczenie — zachowywanie obszaru w zakładce Channels

5.22 Obrót

5.23 Przesunięcie

5.24 Przekoszenie (Shear)

5.25 Skalowanie

5.26 Identyfikacja wartości RGB z obrazu wyświetlanego na ekranie

5.27 Definiowanie nowego pędzla

5.28 Definiowanie skrótów zmieniających parametry narzędzia

5.29 Rozmycie metodą Gaussa

5.30 Nanoszenie śladów dymu i innych zabrudzeń

5.31 Nanoszenie przetarć i odprysków farby

Rozdział 6. Inkscape — szczegóły obsługi

6.1 Instalacja

6.2 Wprowadzenie

6.3 Otwieranie i zapisywanie do pliku

6.4 Ustalenie rozmiaru obrazu

6.5 Wstawienie dodatkowego obrazu rastrowego

6.6 Obrazy rastrowe — właściwości

6.7 Eksport do obrazu rastrowego

6.8 Widok: powiększanie, przesuwanie

6.9 Warstwy — zarządzanie

6.10 Warstwy — dodanie nowej

6.11 Warstwy — usuwanie

6.12 Zaznaczanie obiektów (selekcja)

6.13 Zmiana kolejności obiektów

6.14 Linie pomocnicze (guides)

6.15 Dokładnie określanie pozycji obiektu

6.16 Rysowanie linii

6.17 Właściwości kształtu

6.18 Edycja linii

6.19 Linie krzywe

6.20 Odwzorowanie obrysu zawierającego łuk

6.21 Odwzorowanie krzywizny

6.22 Rysowanie prostokąta

6.23 Edycja prostokąta

6.24 Rysowanie elipsy

6.25 Edycja elipsy

6.26 Przesunięcie

6.27 Ramka selekcji

6.28 Skalowanie

6.29 Obrót

6.30 Przekoszenie (Skew)

6.31 Wstawienie i edycja tekstu

6.32 Wyrównanie tekstu do krzywej

6.33 Powielenie obiektu

6.34 Rysowanie linii kropek (nitów)

6.35 Dokładna transformacja obiektu (Transform)

6.36 Przeniesienie obiektu na inną warstwę

6.37 Łączenie obiektów w grupę

6.38 Wypełnienie gradientem

6.39 Odwzorowanie nierówności na poszyciu samolotu

6.40 Posługiwanie się filtrem

6.41 Odwzorowanie szczegółów powierzchni krytych płótnem

6.42 Stworzenie filtru imitującego zabrudzenia

6.43 Wykorzystanie specjalnych czcionek True Type

6.44 Wektoryzacja bitmap

Rozdział 7. Blender — ogólne

7.1 Instalacja

7.2 Otwieranie pliku

7.3 Zapisanie pliku

7.4 Ustawienie środowiska pracy

7.5 Pliki konfiguracji Blendera

7.6 Kopia bezpieczeństwa i odtwarzanie

7.7 Kursor 3D — ustalanie położenia

7.8 Układ ekranu (Screen layout ) — zarządzanie

7.9 Instalacja i usuwanie dodatków (add-ons)

7.10 Sceny — zarządzanie

7.11 Kontrolka wyboru barwy

7.12 Edytor węzłów (Node Editor)

7.13 Obsługa listy

Rozdział 8. Blender — edytor obiektów (Object Mode)

8.1 Rysowanie walca (Cylinder)

8.2 Wstawienie źródła światła (Lamp)

8.3 Wstawienie kamery (Camera)

8.4 Zmiana właściwości kamery (Camera)

8.5 Chwilowe ukrycie obiektu (Hide Selected)

8.6 Wyrównanie widoku do orientacji obiektu (Align View to Selected)

8.7 Przypisanie obiektu do warstwy

8.8 Przypisanie materiału do obiektu

8.9 Przypisanie ograniczenia Track To

Rozdział 9. Blender — edytor siatki (Edit Mode)

9.1 Lustrzane odbicie siatki (Mirror)

9.2 Dopasowanie widoku do zaznaczonych elementów siatki (Align View to Selected)

9.3 Przypisanie materiału do siatki

9.4 “Zwykłe” rozwijanie siatki (Unwrap)

9.5 Rozwijanie poprzez rzutowanie siatki (Project from View)

9.6 Definiowanie grupy wierzchołków (Vertex Group)

9.7 Zaznaczenie krawędzi jako szwu (Seam)

9.8 Dodanie alternatywnego rozwinięcia UV (UV Map)

9.9 Sterowanie zwrotem wektorów normalnych (Normal)

9.10 Sterowanie kierunkiem normalnych wzdłuż krawędzi siatki

Rozdział 10. Blender — edytor materiałów (Cycles)

10.1 Zdefiniowanie nowego materiału

10.2 Wprowadzenie do kompozycji materiałów

10.3 Grupowanie węzłów

10.4 Wykorzystanie grupy węzłów

10.5 Węzły Layer Weighti Fresnel

10.6 Wykorzystywanie informacji o typie śledzonego promienia (Light Path)

10.7 Wykorzystanie informacji o geometrii powierzchni (Geometry)

10.8 Nazwy materiałów, tekstur i grup węzłów

10.9 Użycie prostego obrazu nieba (Sky Texture)

10.10 Sonda obrazu otoczenia

10.11 Transformacja współrzędnych (Mapping)

10.12 Dodanie obrazu tekstury (Image Texture)

10.13 Dodanie panoramy otoczenia (Environment Texture)

10.14 Użycie tekstury gradientu (Gradient Texture)

10.15 Proceduralne tekstury „szumu” (Noise Texture, Vornoi Texture, Musgrave Texture)

10.16 Podstawienie obrazu na tło renderingu

10.17 Komponowanie otoczenia sceny

10.18 Skonfigurowanie materiału: szkło (Plexiglas)

10.19 Skonfigurowanie materiału: dural i inne powierzchnie (Gloss Paint)

10.20 Węzły pomocnicze

10.21 Wykorzystanie alternatywnych rozwinięć UV (Attribute)

10.22 Wykorzystanie współrzędnych tekstury (Texture Coordinate)

10.23 Wykorzystanie spektrum barw (Color Ramp)

10.24 Węzły Curves

Rozdział 11. Blender — edytor UV (UV/Image Editor)

11.1 Pojęcia podstawowe

11.2 Wprowadzenie do UV/Image Editor

11.3 Zaznaczanie elementów siatki

11.4 Kursor 2D

11.5 Przesunięcie (Translate)

11.6 Obrót

11.7 Skalowanie

11.8 Przypinanie (Pin ) i rozwijanie (Unwrap)

11.9 Podstawienie (przypisanie) obrazu

11.10 Wyrównywanie (Align)

11.11 Zapisanie rozwinięcia UV do pliku

11.12 Tworzenie nowego obrazu

11.13 Zapisanie nowego obrazu

11.14 Bezpośrednie malowanie po powierzchni modelu (tryb Texture Paint)

Rozdział 12. Blender — pozostałe

12.1 Zdefiniowanie nowego materiału (dla Blender Renderer)

12.2 Wygładzanie linii obrazu

12.3 Linie pomocnicze (Grease Pencil)

Dodatki

Rozdział 13. Dodatkowe wyjaśnienia

13.1 Struktura danych modelu i sceny w Blenderze

13.2 Arytmetyka barw

13.3 Określanie dokładnych barw samolotu

13.4 Odbicie światła przez materiały (IORi współczynnik Fresnela)

Skorowidz

Słownik

Bibliografia

Po co ta książka została napisana?

Bo zawsze chciałem stworzyć model samolotu w komputerze. A gdy już to zrobiłem — stwierdziłem, że to dobra zabawa, i że warto tym doświadczeniem podzielić się z innymi.

Dawno temu byłem zwykłym modelarzem i robiłem redukcyjne modele samolotów. To hobby dość specyficzne. Ślęczymy miesiącami nad naszym dziełem, starając się nanieść na kawałek materiału maleńkie nity, złącza blach, czy drobne detale tablic przyrządów. Sądzę, że postronnym obserwatorom zajęcia wędkarzy wydadzą w porównaniu z modelarzami mniej męczące, choć podobnie monotonne. W dodatku, zamiast tworzyć ładne, błyszczące miniaturki, nanosimy na ich powierzchnię (o zgrozo!) zabrudzenia i przetarcia, jakie powstawały podczas intensywnego używania. Szpecimy je, aby wyglądały jak rzeczywiste, zużyte i gdzieniegdzie pordzewiałe maszyny. Całą naszą nagrodą jest pokazanie naszych dzieł komuś, kto potrafi docenić ich finezję. Zdarza się to raz na jakiś czas. Mówiąc szczerze, dziwnym trafem są to zazwyczaj inni modelarze. A może ukrytą nagrodą jest możliwość nawiązania dyskusji na tak ezoteryczne tematy, jak wyższość Spitfire’a IX nad FW 190 A4? Albo paląca kwestia, jak był pomalowany P-40, na którym Witold Urbanowicz latał nad Chinami w 1943r?

Otóż chciałbym teraz zaoferować kolegom modelarzom (i nielicznych koleżankom – jakoś tak się te proporcje układają) zupełnie nowy materiał i narzędzia. Zamiast własnego, czasami nieco pobrudzonego aerografem biurka — okno na inny świat, w głębi ekranu.

Jest tu niezwykle plastyczny materiał, który można „wytłaczać” w dowolne powłoki, bez obawy że go zabraknie. Są tu farby, dla których można dokładnie ustalić odcień i zasady nakładania. Jest tu możliwa do osiągnięcia dokładność, której nie uzyskasz nigdzie indziej, ani w skali 1:24, ani w 1:18. Tu, gdy stwierdzisz, że okapotowanie silnika samolotu, który zrobiłeś rok temu, powinno mieć inny kształt, zawsze możesz ten błąd poprawić. I to nie raz! Tu nigdy Twój model nie obrośnie kurzem. Nie będziesz wysłuchiwał narzekań domowników na to, że nie ma już gdzie zmieścić Twojej kolekcji. Możesz tu powielić swoje dzieło – choćby po to, by odwzorować je w kilku różnych wersjach malowania. I możesz przesłać swój model innym hobbystom, takim jak Ty, bez obawy że coś się z nim stanie podczas transportu. Z obiektów, które w ten sposób stworzysz, można szybko budować całe sceny.

Jedyne, do czego trzeba się przyzwyczaić, to to, że niczego w tym świecie nie można dotknąć. Możesz tylko patrzeć, i łapać wszystko myszką. Przynajmniej na obecnym etapie rozwoju technologii, urządzenia dotykowe (ang. haptic devices) są nadal drogie i prymitywne. Za to możemy obserwować szybki rozwój drukarek 3D. Przypuszczam że za dwa — trzy lata będziemy mogli na nich „drukować” np. dokładne części modeli.

Ten świat wirtualnego modelarstwa stał niepostrzeżenie dostępny. W istocie każdy komputer, kupiony po 2005r, to silna stacja graficzna, o której w latach 90-tych można było tylko pomarzyć. Około 15 lat temu „ruszył z miejsca” nowy model matematyczny, służący do odwzorowania powierzchni. Mam na myśli powierzchnie podziałowe (ang. subdivision surfaces). Pozwoliły stworzyć Shreka i dziesiątki innych postaci z filmów animowanych za pomocą komputera. Ten nowy model matematyczny skierował do lamusa powierzchnie NURBS, wykorzystywane od lat 70-tych. Powierzchnie podziałowe pozwalają łatwo uzyskiwać naprawdę złożone kształty. W miarę dobrze radzą sobie ze zmorą NURBS – otworami i wycięciami.

Co więcej – odpowiednie programy, które potrafią to wszystko wykorzystać, stały się dostępne za darmo! Stworzyły je dziesiątki programistów Open Source. Ludzie ci chcą pokazać, że stać ich co najmniej na to samo, co twórców najlepszych programów komercyjnych. I to zaczęło im się udawać! Być może, trochę w tym zdrowej ambicji („ja to zrobię lepiej!”), oraz innego rytmu powstawania takich produktów. Podczas pracy nad nimi nie ma, typowego dla komercyjnych projektów pośpiechu, związanego z napiętymi terminami. (A pośpiech rodzi błędy). W efekcie pracy odpowiednio dużej grupy entuzjastów powstaje dobry, stabilny program.

Podsumowując – kupując do domu komputer do gier, kupiłeś wszystko, co potrzeba do wejścia w świat wirtualnego modelarstwa. Nie będę oszukiwał, że nie ma tu tego, co jest nieodłączną cechą pracy każdego modelarza: wielotygodniowego wysiłku. Mam jednak nadzieję, że ta książka ułatwi Ci, drogi Czytelniku, jak najszybsze osiągnięcie pożądanych rezultatów. Potem możesz pójść dalej i zrobić to samo jeszcze lepiej, niż tu proponuję. Przeczytanie dalszych stron, oszczędzi Ci dużo czasu i – niekiedy – frustracji. Ta ostatnia bywa nieodłącznym składnikiem pracy z „tą głupią maszyną” – komputerem. Postaram się nie zanudzać i pokazywać dużo obrazków, więc mam nadzieję, że „Wirtualne modelarstwo” Cię zainteresuje.

Witold Jaworski

Co zawiera ta publikacja

„Wirtualne Modelarstwo” uczy „od zera”, jak tworzyć takie modele samolotów, jak pokazany na okładce. Aby szybciej udostępniać Czytelnikom uaktualnione fragmenty tej książki, zdecydowałem się stworzyć i opublikować wyciągi z jej tekstu, związane z określoną dziedziną. Są to: „Tom I: Przygotowania”, „Tom II: Modelowanie”, „Tom III: Materiały i tekstury”, oraz „Tom IV: Detale i renderowanie”. Przebieg pracy prezentuję na przykładzie modelu myśliwca Curtiss P-40B. Maszyna ta zawiera klasyczne rozwiązania, stosowane w większości samolotów tego okresu. Z całym rozmysłem nie wybrałem Spitfire, Mustanga, Thunerbolta, Focke-Wulfa czy Messerschmita. Nie chciałem zabierać Ci przyjemności samodzielnego odwzorowania tych słynnych samolotów.

Możesz tworzyć model każdego myśliwca z okresu II wojny światowej[1], czytając jednocześnie kolejne rozdziały z tej książki. To wcale nie musi być P-40. Wszystkie te samoloty wykonuje się podobnie. W trakcie pracy na pewno zetkniesz się ze wszystkimi zagadnieniami, które są tu opisane.

Ta książka ma służyć zarówno tym, którzy dopiero zaczynają swoją przygodę „w 3D”, jak i tym, którzy mają już w tej dziedzinie pewne doświadczenie. W związku z tym zdecydowałem się ją podzielić na dwie części:

- część pierwsza ("Budowa modelu") to tekst podstawowy, który koncentruje się na tym, co trzeba zrobić;

- część druga ("Szczegóły obsługi programów") to szczegółowe opisy, jak posłużyć się odpowiednim programem, by osiągnąć efekt, pokazany w części pierwszej.

Cały tekst ma dużo stron, z czego "Szczegóły obsługi programów" zajmują ok. 40%. Układ tej części przypomina tekst systemu pomocy (Help) do programu. To krótkie (na jedną lub dwie strony), nie zawierające więcej niż kilka ilustracji, opisy pojedynczych poleceń.

Dzieląc materiał na część podstawową i „szczegółową”, starałem się uniknąć niepotrzebnych, wydłużających niezmiernie tekst, wskazówek w rodzaju „kliknij tu, a potem naciśnij tamto”. W odpowiednich miejscach części pierwszej umieściłem odnośniki do części drugiej. Jeżeli nie znasz programu, o którym akurat piszę, korzystaj z tych odnośników i czytaj umieszczone w nich informacje szczegółowe[2]. Przygotowałem je tak, abyś nauczył się posługiwać wszystkimi narzędziami "od zera", w trakcie czytania głównego tekstu. Gdy już będziesz wiedział, jak zrobić to, co opisuję — po prostu przestaniesz do nich zaglądać.

Książka zawiera jeszcze jedną część: „Dodatki”. To materiały, które mogą być ciekawe dla co dociekliwszych Czytelników. Tematyka „Dodatków” przypomina trochę "groch z kapustą": od pewnych zagadnień optyki (deformacja obrazu na fotografii), do odwzorowania profili lotniczych. A oprócz tego: metody zaawansowanej weryfikacja rysunków samolotu (na poziomie tworzenia planów modelarskich), oraz szczegółowy opis właściwości powierzchni podziałowych. Nie musisz do „Dodatków” zaglądać, choć sądzę, że niektórzy mogą w tych materiałach znaleźć dla siebie coś interesującego.

[1] (str. 9) No, może tych z silnikami rzędowymi. Nie opisałem tu, jak modelować widoczne z zewnątrz elementy chłodzonych powietrzem silników gwiazdowych — cylindry, popychacze, karter, przewody. Może w kolejnym wydaniu książki podjąłbym się modelu P-36?

[2] (str. 9) Zakładam, że korzystanie z części drugiej będzie zawsze wyrywkowe. Stąd większość z zagadnień, które tam się znajdują, jest omówione bez dalszych odnośników. Takie podejście powoduje, że np. opis skalowania w edytorze siatki Blendera jest niemal dosłowną kopią opisu z edytora obiektów. Różnią się tylko ilustracjami i paroma zdaniami. Po prostu nie wiem, który z tych tematów otworzysz jako pierwszy, a w każdym chciałbym dostarczyć pełną informację.

Konwencje zapisu

Wskazówki dotyczące klawiatury i myszki oparłem na założeniu, że masz standardowe:

- klawiaturę — w normalnym układzie amerykańskim, 102 klawisze (dodam także parę uwag o klawiaturze notebooka, bo sam na takiej pracuję);

- myszkę — wyposażoną w dwa przyciski i kółko przewijania (które daje się także naciskać: wtedy działa jak trzeci, środkowy przycisk).

Wywołanie polecenia programu będę zaznaczał następująco:

Menu→Polecenie

taki zapis oznacza wywołanie z menu „Menu” polecenia „Polecenie”. W przypadku bardziej zagnieżdżonych menu może wystąpić więcej strzałek!

Panel:Przycisk

taki zapis oznacza naciśnięcie w oknie dialogowym lub panelu "Panel" przycisku „Przycisk”. Czasami mogę także w ten sposób napisać o przełączniku lub liście rozwijalnej. ("Panel" to pojęcie związane z ekranem Blendera, wyjaśnienia — patrz „Tom II: Modelowanie”)

Naciśnięcie klawisza na klawiaturze:

Alt-K

myślnik pomiędzy znakami klawiszy oznacza jednoczesne naciśnięcie obydwu klawiszy na klawiaturze. W tym przykładzie trzymając wciśnięty Alt, naciskasz K;

G, X

przecinek pomiędzy znakami klawiszy oznacza, że je naciskasz (i zwalniasz!) po kolei. W tym przykładzie najpierw G, a potem X (tak, jak gdybyś chciał napisać wyraz „gx”).

Naciśnięcie klawisza myszki:

LPM

lewy przycisk myszy

PPM

prawy przycisk myszy

SPM

środkowy przycisk myszy (naciśnięte kółko przewijania)

KM

kółko przewijania (pełni tę rolę, gdy jest obracane)

Na koniec — „w kwestii formalnej”: jak mam się do Ciebie zwracać? Zazwyczaj w poradnikach używa się formy bezosobowej („teraz należy zrobić”). To jednak, mówiąc szczerze, czyni czytany tekst mniej zrozumiałym. Aby ta książka była jak najbardziej czytelna, zwracam się do Czytelnika w krótkiej, drugiej osobie („teraz zrób”). Czasami używam także osoby pierwszej („teraz zrobiłem”, „teraz zrobimy”). Tak jest mi łatwiej[1].

[1] (str. 10) Podczas pracy nad modelem traktowałem nas — czyli Ciebie, drogi Czytelniku, i siebie, piszącego te słowa — jako jeden zespół. Może trochę wyimaginowany, ale w jakiś sposób prawdziwy. Przecież pisząc tę książkę ja także wiele się uczyłem, bo wiedziałem, że każde zagadnienie mam Ci porządnie przedstawić!

Jak czytać tę książkę

„Wirtualne modelarstwo” najlepiej jest czytać na możliwie dużym, kolorowym tablecie, takim jak Kindle Fire 8.9”, lub na komputerze stacjonarnym, w aplikacji Kindle for PC. Ze względu na kolorowe ilustracje o dużej rozdzielczości, zdecydowanie odradzam próby użycia mniejszych czytników wykorzystujących technologię e-ink, takich jak Kindle Touch czy Kindle Paperwhite[1].

Ta książka jest dostępna w kilku popularnych formatch. Użyj tej matrycy format/platforma aby lepiej zorientować się we właściwościach każdego z nich dla każdego z najpopularniejszych czytników/komputerów. To pozwoli zdecydować, który z tych formatów będzie najlepiej pasować do Twoich potrzeb. Każdą wersję tej książki możesz pobrać ze strony tego projektu.

Na stosunkowo dużym ekranie Kindle Fire 8.9” książkę można czytać w układzie pionowym (Rysunek i.3.1). Ilustracje „Wirtualnego modelarstwa” dostosowują się dynamicznie do szerokości ekranu:

Rysunek 0.3.1 Strony książki na Kindle Fire 8.9”

W tym poradniku chciałem, aby tekst i powiązane z nim ilustracje pojawiały się jak najbliżej siebie. W tym celu musiałem połączyć je w jedną, ciągłą zawartość i pozwolić czytnikowi dzielić ją na strony. Dlatego czasami może się zdarzyć, że ilustracja znajdzie się na jednej stronie, a jej podpis — już na następnej. Wynika to z niedoskonałości obecnie używanych formatów książek elektronicznych. (Nie mogłem zastosować żadnego rozwiązania które wymusiłoby na czytniku pozostawianie ilustracji i jej podpisu razem).

Rysunek i.3.2 Ustawienia czytnika (Kindle Fire 8.9”)

W ustawieniach czytnika dla tej książki proponuję wybrać niezbyt duży rozmiar czcionki (Settings: Font Size: 3 lub 4). W ten sposób podstawowy tekst będzie miał wysokość dopasowaną do odsyłaczy na ilustracjach (tekst podstawowy powinien być o około 50% wyższy od tekstu na ilustracjach). Ustaw także wąskie marginesy (Margins:Narrow), aby ilustracje były jak największe (Rysunek i.3.2):

Tło wszystkich ilustracji jest białe, stąd książka najlepiej wygląda z białym tłem (Color Mode). Odstęp pomiędzy liniami tekstu (Line Spacing) można ustawić na szeroki, a domyślną czcionkę (Font) — na szeryfową Georgia.

Gdy ustawisz tablet poziomo, czytnik podzieli treść książki na dwie „rozłożone” strony (Rysunek i.3.3):

Rysunek i.3.3 Domyślny sposób wyświetlania przy poziomym układzie tabletu

Uważam, że w takim układzie jest mniej czytelna, przede wszystkim ze względu na zmniejszone ilustracje.

Na szczęście możemy taki tryb wyłączyć. W opcjach programu (Settings) naciśnij More Options, aby przejść na drugi ekran. Przełącz tam tryb Two Column na Off (Rysunek i.3.4):

Rysunek i.3.4 Wyłączenie trybu „rozłożonych stron”

Rysunek i.3.5 Powiększanie ilustracji poprzez obrót tabletu

Rozmiar wszystkich ilustracji w tej książce zależy od rozmiaru ekranu: ich szerokość jest ustawiona jako % aktualnej szerokości ekranu. Stąd w ustawieniu poziomym wszystkie ilustracje są proporcjonalnie większe gdyż ekran tabletu jest szerszy.

Gdy wyłączysz tryb Two Column, możesz szybko powiększać ilustracje z bieżącej strony poprzez obrót tabletu, jak na Rysunku i.3.5:

Rozmiar czcionki każdego tekstu spoza ilustracji pozostaje taki sam w obydwu położeniach: pionowym i poziomym. Położenie poziome wydłuża linie tekstu do więcej niż 72 znaków na linię. (Optymalną długość linii tekstu to 66-72 znaki. Linie dłuższe lub krótsze czyta nieco trudniej). Co więcej, ekran Kindle Fire w położeniu poziomym nie jest zbyt wysoki, i potrafi wyświetlic tylko jedną ilustrację i kilka linii tekstu. Stąd proponuję używać ustawienia poziomego do szybkich powiększeń, a pionowego — do normalnego czytania.

Kindle Fire wyświetla przełącznik Two Column tylko wtedy, gdy tablet jest ustawiony poziomo!

Ta książka zawiera mnóstwo hipertekstowych odsyłaczy. Są wyróżnione cienkim podkreśleniem. W głównym tekście te hipertekstowe skróty sa przypisane do symboli nagłówków, sekcji, czy numerów stron (Rysunek i.3.6):

Rysunek i.3.6 Użycie skrótów hipertekstowych

Używaj przycisku Back (Rysunek i.3.6) do powrotu z takiego „hipertekstowego skoku” w poprzednie położenie w książce. (Gdy tablet jest ustawiony poziomo, znajdziesz ten przycisk z prawej strony ekranu).

Wyjątkiem w użyciu przycisku Back jest powrót z przypisu na Kindle Fire: użyj w tym celu numeru fizycznej strony, umieszczonego za numerem przypisu (Rysunek i.3.6). (Rób tak, dopóki Amazon nie usunie błędu z oprogramowania dla tego tabletu. W przeciwnym razie po jakimś kolejnym naciśnięciu Back zamknie się książka i trzeba ją ponownie otworzyć).

W tej książce referencją jest każdy numer fizycznej strony. Numery te pochodzą z książki formacie PDF, i choć nie odpowiadają stosowanym przez Kindle „lokalizacjom” (loc)to pozostawiłem je aby tekst tej publikacji był we wszystkich formatach taki sam. (No, może poza tą sekcją wproadzenia, która jest specyficzna dla każdego z zastosowanych formatów).

Starając się by ta publikacja elektroniczna była bardziej czytelna niż typowe papierowe poradniki, przesunąłem większość szczegółowych opisów z tekstu głównego do podrozdziałów. W ich miejscu pozostawiłem hipertekstowe odsyłacze. Skorzystaj z tych skrótów aby poznać wszystkie niuanse opisywanych operacji. W ten sposób główny wątek książki pozostaje wolny od rozpraszających uwagę detali.

* * *

Przypuszczam że często będziesz czytał ten poradnik pracując jednocześnie na komputerze. I choć sądzę, że najlepiej się taką książkę czyta na tablecie, to możesz czasami możesz nie mieć żadnego „pod ręką”. Wtedy użyj darmowego programu Kindle for PC, dostarczanego przez Amazon na komputery z systemami Windows (Rysunek i.3.7). (Istnieją jeszcze Kindle for Mac i Kindle for Android. Wszystkie wyglądają bardzo podobnie):

Rysunek i.3.7 Przeglądanie tej książki w programie Kindle for PC

Zauważ że ta aplikacja ma pod menu rozwijalnym pasek narzędzi. Kliknij w jedną z jego ikon (Rysunek i.3.7) aby otworzyć panel ustawień (Settings — Rysunek i.3.8):

Rysunek i.3.8 Ustawienia Kindle for PC

Podobnie jak na Kindle Fire możesz ustawić tu rozmiar podstawowego tekstu, szerokość marginesów czy barwę tła (białą).

W Kindle for PC nie ma możliwości zmiany kroju czcionki podstawowego tekstu — niezależnie od oryginalnych ustawień, wszystko jest wyświetlane w jednolitej czcionce szeryfowej (prawdopodobnie to Georgia).

Kursor myszki zmienia się ponad każdym hipertekstowym linkiem we „wskazującą dłoń” (Rysunek i.3.8). Gdy w takim miejscu klikniesz myszką — przejdziesz do odpowiedniej strony (Rysunek i.3.9):

Rysunek i.3.9 Powrót do poprzedniego położenia w książce

Aby powrócić z takiego „skoku” do poprzedniego miejsca w książce, naciśnij przycisk Back, umieszczony w pasku ponad tekstem (Rysunek i.3.9).

Wersja tej aplikacji Amazon na tablety firmy Apple — Kindle for iOS — nie otwiera poprawnie tej książki. Dopóki Amazon nie usunie tego błędu[2], najlepszym rozwiązaniem dla tabletów IPad jest pobrać tę książkę w formacie EPUB i czytać ją w darmowej aplikacji iBooks.

[1] (page 11) Takie czytniki wyświetlają „Wirtualne modelarstwo” poprawnie, ale to, co zobaczysz na ich małych czarno-białych ekranach będzie przypominało kserokopię prawdziwej książki!

[2] (page 15) Błąd jest związany z wyświetlaniem ilustracji tej książki. To obrazki w popularnym formacie SVG, których pewien kluczowy element z niewiadomych przyczyn nie jest przetwarzany oprogramowanie Amazon na specyficzny format dla systemu iOS. Błąd został zgłoszony na wiosnę 2014, nie mam pojęcia kiedy będzie naprawiony. Obejście zaproponowane przez Amazon zdegradowałoby jakość ilustracji.

Budowa modelu

W tej części kontynuujemy pracę nad uformowanym modelem P-40B. Jego stworzenie jest opisane we wcześniejszych tomach „Wirtualnego modelarstwa” (patrz „Tom I: Przygotowania”, „Tom II: Modelowanie”).

Rozdział 1.  Przygotowanie „warsztatu pracy”

W tym rozdziale omówimy pokrótce instalację oprogramowania, z którego będziemy korzystać. W tym tomie to:

- Blender: program podstawowy;

- GIMP: pomocniczy, do edycji obrazów rastrowych;

- Inkscape: pomocniczy, do edycji obrazów wektorowych;

To oprogramowanie jest udostępniane w zasadach licencji GPL. Oznacza to m.in., że nie można pobierać za nie żadnych opłat. (Oczywiście, jeżeli masz gest, a program Ci się bardzo spodoba, możesz wspomóc twórców dotacją — ale na zasadzie zupełnej dobrowolności. Szczegółowy opis, jak to zrobić, znajdziesz na stronie internetowej każdego z tych projektów.)

Przypuszczam, że większość czytelników tej książki używa komputera z Windows. Podczas opisu instalacji koncentruję się wyłącznie na tym środowisku. Sam go używam. Nie mam żadnych doświadczeń z Linuksem, ani z Mac OS, więc nie będę pisał o instalacjach, których nie wykonałem. Jeżeli używasz systemów innych niż Windows — poszukaj wskazówek na stronach tych programów (ich adresy są w kolejnych sekcjach rozdziału).

Przygotowałem także trochę materiałów dodatkowych, i udostępniłem je jako spakowane pliki zip:

Pliki towarzyszące tej książce możesz pobrać ze strony: http://samoloty3d.pl/wm3_p.xml . Utrzymuję tam ich aktualne wersje[1].

Następujące pliki są ważną częścią tej książki:

- source.zip: zawiera skrypty Pythona, plany P-40B, udostępnione przez producenta fragmenty rysunków technicznych (P-40E), i inne pomocnicze materiały;

- p40.zip, p40w.zip: Zawierają historię zmian (pliki *.blend) modelu P-40, oraz kilka obrazów tła, wykorzystanych w tej książce. Każdej sekcji tej książki odpowiada plik ze spakowanego folderu history\;

- textures1.zip, textures2.zip: folder, zawierające kolejne wersje tekstur odpowiadające poszczególnym modelom z pliku p40.zip, i robocze pliki, wykorzystywane do ich stworzenia. (Podzieliłem te dane na dwie części ze względu na znaczny rozmiar zawartych w nich plików rastrowych);

Rozpakuj wszystkie pobrane pliki *.zip do tego samego folderu. W trakcie ich rozpakowania stworzą odpowiednie podkatalogii (pliki nie wymienione powyżej należą do innych części tej publikacji):

[1] (str. 20) Na tej stronie znajdziesz także odpowiedzi na najczęstsze pytania zadawane przez Czytelników, oraz informacje o zmianach w opisywanym oprogramowaniu, jakie się pojawiły po publikacji tej książki.

Rozdział 2.  Kompozycja najprostszej sceny

Do dalszej pracy będziemy potrzebować: kamery, tła, oświetlenia. Ustawimy je wstępnie w tym rozdziale. Opowiem tu także trochę więcej o materiałach w Blenderze. (Do tej pory wspomniałem o nich zaledwie, gdy potrzebowaliśmy zabarwienia powłoki na kontrastowy kolor — por. Tom II). W tym rozdziale pokażę, jak uzyskać typowe powierzchnie samolotu: wypolerowanego duralu, połyskliwego lakieru, i matowego kamuflażu. Będzie to nam potrzebne podczas tworzenia szczegółów samolotu — podwozia, wnętrza kabiny. Uważam, że najlepszą metodą na wykonanie takich drobnych elementów jest od razu stworzyć je w ostatecznej postaci, pokryte odpowiednimi materiałami. W ten sposób nie będziesz musiał do nich nie wracać. Stąd po uformowaniu podstawowej bryły samolotu wprowadzam w świat materiałów i tekstur. Gdy już go poznasz, powrócimy do tworzenia detali modelowanej maszyny (por Tom IV).

Zdecydowałem się podać w tym rozdziale “prosty przepis kuchenny” na kompozycję sceny. Nie będę się tu rozpisywał o możliwościach oświetlenia, tylko pokażę jak je ustawiać dla uzyskania efektu otwartej przestrzeni. Nie będę mówił o sztuce kompozycji, tylko powiem, gdzie należy ustawić kamerę. Takie minimalistyczne podejście wynika z ogromu możliwości, jakie się kryją w tych zagadnieniach. A ja chcę tu pokazać coś, co można stosunkowo łatwo uzyskać, i co będzie w miarę dobrze wyglądać. Gdy zrobisz już pierwszy model, gorąco zachęcam do dalszej, samodzielnej nauki. Wokół jest kilkadziesiąt książek o Blenderze (licząc razem te w języku angielskim i polskim). W Internecie znajdziesz tysiące różnego rodzaju samouczków (tutoriali), więc ze źródłem wiedzy nie powinno być problemu. Sądzę, że wkrótce bez większego trudu będziesz w stanie tworzyć dużo lepsze sceny od przedstawionych w tej publikacji.

W tym rozdziale będziemy wykorzystywać materiały z towarzyszącego tej książce pliku source.zip. Pliki *.blend odpowiadające rezultatom poszczególnych sekcji rozdziału znajdziesz w pliku p40.zip. (Adres miejsca, z którego można pobrać te pliki, znajdziesz na. str. 20).

Numery rozdziałów w tym tomie są inne niż w kompletnej książce, dlatego pliki z rezultatami sekcji tego rozdziału noszą nazwy zaczynające się od P40B-0 5. *.

2.1  Przygotowanie kamery i oświetlenia

W tej sekcji skorzystasz z umiejętności, które nabyłeś w Tomie II — „Blender – pierwsze kroki”. Dokładniej chodzi o sekcje 3.3 i 3.4. Zacznij od odszukania domyślnej kamery i źródła światła w pliku naszego modelu (Rysunek 2.1.1):

Rysunek 2.1.1 Wstępne poprawienie położenia kamery i światła

Domyślna kamera (o nazwie Camera) i źródło światła (o nazwie Lamp) powinny się znajdować na warstwie 20. (Umieściliśmy je tam na samym początku pracy — p. str. 373). Włącz widoczność tej warstwy i przesuń je z domyślnego położenia w nowe, bardziej odległe (Rysunek 2.1.1). Jeżeli ich tam nie ma (bo np. usunąłeś je wcześniej) — wstaw nowe (Add→Camera — str. 401, Add→Lamp — str. 400), w miejsca, które pokazuje Rysunek 2.1.1b). Przenieś je także (M, szczegóły — str. 406) na warstwę 20 [1].

Przełącz się teraz na widok z kamery (0, lub View→Cameras→Active Camera). Przy okazji możesz wyłączyć wyświetlanie obrazu tła (Background image), bo widok z kamery także je wyświetla. Projekcja, którą uzyskasz w oknie 3D View, ma silną deformację perspektywiczną (“rybie oko” — Rysunek 2.1.2a):

Rysunek 2.1.2 Widok z kamery: przed i po skorygowaniu parametrów kamery

Przejdź do właściwości kamery (zestaw Object Data, panel Lens — str. 402). Zwiększ jej ogniskową (Focal Length) do 70mm, a zasięg (Clipping Start/End) wydłuż dziesięciokrotnie (Start = 1, do End = 1000 jednostek). Następnie odsuń kamerę od modelu wzdłuż jej lokalnej osi Z (G,Z,Z), by ująć cały model (Rysunek 2.1.2b).

Na ekranie masz trzy okna 3D View. Pozostaw w jednym z nich widok z kamery, a w pozostałych dwóch ustaw rzuty: z przodu i z góry. Obserwując na bieżąco obraz z kamery, spróbuj w pozostałych oknach przesunąć ją tak, by ująć cały samolot. W trakcie tych manipulacji zapewne zauważysz, że kamera nie zachowuje się tu tak “mądrze”, jak to pokazywał Rozdział 3 w Wyciagu II. Tutaj możesz bez problemu “zgubić” cały samolot z kadru. Kamera ciągle “patrzy” w tę samą stronę. Dlaczego tak się dzieje? Bo nie jest jeszcze przypisana do odpowiedniego celu!

Rysunek 2.1.3 Obiekt Target - cel dla świateł i kamery

Stwórzmy więc cel dla kamery. Włącz widoczność warstwy 10 i wstaw na nią nowy obiekt o nazwie Target (żadnych przedrostków numerycznych, bo to obiekt specyficzny dla tej sceny). Może wyglądać jakkolwiek, byleby nie był ani za mały, ani za duży, tylko “w sam raz” do złapania i przesunięcia. Osobiście zawsze rysuję go jako nieskomplikowany graniastosłup (walec, bez wygładzenia, z niewielką liczbą ścian), o promieniu 3 jedn. (Rysunek 2.1.3). Aby wyróżniał się na tle innych części modelu przypisz mu czerwony materiał Artifical.

Rysunek 2.1.4 Odsunięte: kamera i źródło światła

Teraz przypisz do kamery i światła ograniczenie (constraint) typu Track To, podając jako cel obiekt Target (Ctrl-T, Track To. szczegóły — patrz str. 408). Aby kamera objęła cały samolot, odsuń ją na większą odległość. Można to zrobić także w samym widoku z kamery. Zaznacz jej obiekt, a następnie naciśnij G,Z,Z. To włączy przesuwanie kamery wzdłuż lokalnej osi Z, która zawsze jest skierowana prostopadle do płaszczyzny ekranu.

Obiekt Target pozostaw w pobliżu centrum modelu — to “focus” kamery. Podobnie jak kamerę, oddal od modelu także źródło światła (Rysunek 2.1.4):

Rysunek 2.1.5 Ustawienia światła Sun

Na koniec wyłącz warstwę 10, aby obiekt Target przestał być widoczny.

Kamerę już ustawiliśmy, teraz czas na oświetlenie. Zaznacz światło Lamp i zmień jego nazwę na Sun. Następnie we właściwościach jego danych (zestaw przycisków Object Data):

- nadaj temu blokowi danych nową nazwę: Sun (bądźmy konsekwentni!);

- zmień typ źródła światła: na “słońce” (Sun, w panelu Lamp);

- ustaw barwę tego światła na białą;

- upewnij się, że intensywność światła wynosi 1.0 (pole Energy, w panelu Lamp);

- upewnij się, że włączone jest rzucanie cieni (opcja Ray Shadow z panelu Shadow);

To źródło światła powinno być tak ustawione, jak to pokazuje Rysunek 2.1.5.

Jednocześnie wyłącz widoczność warstwy 16, zawierającej śmigło. Dopóki nie zostanie “rozkręcone” w kolejnych klatkach animacji i nie włączymy efektu “rozmycia w ruchu”, lepiej żeby go na tej scenie nie było widać.

Pamiętaj: Blender renderuje tylko zawartość warstw, które są aktualnie widoczne. Daje to Ci możliwość określenia, co ma się pojawić na ostatecznym obrazie.

Po tych ustawieniach przyszedł czas na “pierwszy strzał”. Naciśnij F12 (Render→Render Image) , by wygenerować pierwszy rendering naszego modelu (Rysunek 2.1.6):

Rysunek 2.1.6 Pierwszy rendering

Efekt jest daleki od pożądanego, nieprawdaż? Cały samolot wygląda jak wykonany z szarego plastiku. To dlatego, że nie przypisaliśmy powierzchniom żadnego konkretnego materiału. Celowo zacząłem od takiego “zera”. Przez ten i dalsze rozdziały będziemy tę scenę stopniowo poprawiać, aż stanie się warta pokazania.

Jeżeli na Twoim renderze prawy płat jest zupełnie czarny — rozwiązanie problemu znajdziesz na str. 431.

Spróbujmy rozjaśnić całość włączając tzw. korekcję gamma barw tej sceny (sRGB — str. 387). Ten przełącznik znajdziesz w panelu Color Management z zestawu Scene. Nazywa się Display Device (Rysunek 2.1.7):

Rysunek 2.1.7 Rozjaśnienie tła...

Rysunek 2.1.8 …nie rozjaśnia wcale modelu!

Być może miałeś już go włączony — wtedy od razu otrzymałeś taki rezultat, jaki pokazuje Rysunek 2.1.8. Tło i model pojaśniały, ale cienie nadal pozostały „kosmicznie czarne”.

Teraz należałoby rozpocząć „pracę z oświetleniem” sceny, dodając dodatkowe źródła światła i stosując inne sztuczki, aby rezultat zaczął przypominać rzeczywisty obiekt. Taki proces opisałem w pierwszym wydaniu tej książki, w której wykorzystywałem domyślny silnik renderujący Blendera (Blender Internal, albo BI). Choć jego kod był rozwijany do 2010r, to niektóre jego fragmenty pamiętają jeszcze połowę lat 90. XX w.

Rysunek 2.1.9 Zmiana renderera na Cycles

W kwietniu 2011 jeden z kluczowych programistów Blendera — Brecht van Lommel — zaprezentował pomysł drugiego silnika renderującego, o nazwie Cycles. Po kilku miesiącach przygotowań Cycles zostało włączone do wersji 2.61 Blendera jako alternatywny renderer. Aby z niego skorzystać, wystarczy wybrać pozycję Cycles Renderer z listy rozwijalnej w nagłówku okna Info (Rysunek 2.1.9).

Rysunek 2.1.10 Drobne zmiany w ustawieniach (zestaw Render)

Przełączenie na Cycles zmienia nieco panele w zestawie Render i kilka innych szczegółów interfejsu użytkownika (przekonasz się o tym za chwilę). Blender Internal należy do tzw. biased renderers, wykorzystujących uproszczony (czyli szybszy do obliczenia) model oświetlenia. Takie silniki generuje ostateczny obraz „kawałek po kawałku”. Cycles jest jednym z unbiased renderers, wykorzystujących model oświetlenia zbliżony do rzeczywistego. Unbiased renderers tworzą ostateczny render na zasadzie kolejnych przybliżeń. W każdym przybliżeniu (tzw. próbce — sample) generują cały obraz. Pierwsze przybliżenie jest bardzo niedoskonałe, pełne kolorowego szumu. Jednak w kolejnych próbkach te zaburzenia zazwyczaj szybko znikają. Cycles mógłby tak poprawiać obraz w nieskończoność. W panelu Sampling zestawu Render należy określić, po jakiej liczbie próbek ma zakończyć pracę (Rysunek 2.1.10). Domyślne wartości pól Sampling: Samples (Render:10, Preview:10) są trochę za małe dla takiego modelu jak nasz samolot. Pierwszą proponuję zwiększyć — do 100 albo nawet do 500, a drugą zmniejszyć do zera.

Potem już możesz nacisnąć F12. Rysunek 2.1.11 przedstawia uzyskany rezultat (por. Rysunek 2.1.8):

Rysunek 2.1.11 Ta sama scena, renderowana za pomocą Cycles

Teraz model wygląda jak niedoświetlony obiekt z gliny. Cienie jednak są łagodne, i widać więcej szczegółów.

W Blenderze możesz także uruchomić podgląd renderu w dowolnym oknie 3D View. Służy do tego nowy tryb Viewport Shading, o nazwie Rendered (Rysunek 2.1.12):

Rysunek 2.1.12 Cycles umożliwia przełączenie trybu wyświetlania okna 3D View na podgląd renderu

W przypadku Cycyles ten obraz jest cyzelowany w nieskończoność, gdy liczba próbek podglądu = 0 (por. Rysunek 2.1.10). Umożliwia Ci to oszacowanie, ile próbek trzeba ustawić w polu Samples:Render, by ostateczny rezultat był pozbawiony początkowych szumów. Cycles zmienia zawartość podglądu dynamicznie. Na przykład — przejdź do zestawu World i spróbuj rozjaśnić kolor tła sceny (Rysunek 2.1.13a):

Rysunek 2.1.13 Podgląd renderu reaguje na bieżąco na zmianę każdego parametru

Przekonasz się, że każdy ruch myszką powoduje rozpoczęcie próbkowania od nowa. Próbki liczą się szybko, co pozwala na interaktywną pracę z efektami widocznymi w podglądzie. Co więcej, w trybie Renderer nadal możesz zmieniać projekcję, oglądając renderowany model z różnych stron. Zawsze warto to zrobić — chociażby po to, by znaleźć takie wady modelu, jak brzydkie cienie na owiewce kabiny (Rysunek 2.1.14a):

Rysunek 2.1.14 Efekt sprawdzania modelu na podglądzie renderu — dziwne cienie na owiewce kabiny

Rysunek 2.1.14b) pokazuje, że te cienie widać także w trybie Solid, który wykorzystywaliśmy podczas modelowania (por. także Tom II). Nie rzucały się tak bardzo w oczy, więc umknęły mi podczas poprzedniej weryfikacji modelu (Tom II). Takie artefakty pojawiają się w pobliżu ostrych załamań siatki, która jest cieniowana jako „gładka” (ma włączony tryb Smooth Shade). Teraz trzeba poprawić ten błąd, bo te czarne przebarwienia zepsują nam efekt oszklenia kabiny (por. str. 428). Znikną, gdy skorygujesz ustawienia siatki w panelu Object Data:Normals (Rysunek 2.1.15):

Rysunek 2.1.15 Skorygowanie błędnego cieniowania za pomocą ustawień z panelu Normals

Wystarczy zmniejszyć kąt graniczny Angle z domyślnych 180º do 30-90º i włączyć opcję Auto Smooth. W podobny sposób poprawiłem siatkę wiatrochronu. Auto Smooth skutecznie eliminuje ciemne przebarwienia z owiewki — zarówno w trybie Solid, jak i na podglądzie renderu (Rysunek 2.1.15b).

Zawsze zwracaj uwagę na ciemne przebarwienia siatki podczas modelowania — i od razu je eliminuj. Zaoszczędzisz sobie w ten sposób późniejszych zaskoczeń.

Jeżeli jakaś projekcja uzyskana w podglądzie renderu podoba Ci się szczególnie, możesz ją bardzo łatwo zamienić w ostateczny obraz. Najpierw tylko odłącz aktywną kamerę od śledzenia obiektu Target (Alt-T, albo Object→Track→Clear→Clear Track). Potem wystarczy w oknie podglądu użyć skrótu Ctrl-Alt-0 (View→Align View→Align Active Camera to View).

Możesz także dodawać do sceny kolejne kamery, czyniąc każdą kamerą aktywną (Ctrl-0 albo View→Cameras→Set Active Object as Camera). W ten sposób możesz utrwalić wiele alternatywnych ujęć swojej sceny.

Póki co, aby wydobyć z Cycles ich pełną siłę, należy zacząć korzystać z ich ustawień w trybie tzw. węzłów (Nodes). O tym, co to jest, dowiesz się w następnej sekcji. Na razie po prostu zaznacz nasze „słońce” (obiekt Sun) i naciśnij przycisk Use Nodes w panelu Nodes zestawu Object Data (Rysunek 2.1.16):

Rysunek 2.1.16 Przełączenie źródła światła w tryb węzłów (Nodes)

Podobny przycisk znajdziesz także w ustawieniach otoczenia (zestaw World). Przełącz je także na Nodes.

Przełączenie w tryb węzłów spowodowało pojawianie się w panelach World:Surface i Object Data:Nodes obiektu Sun czegoś, co jest niezbędne: kontrolek Strength (por. Rysunek 2.1.16). To sterowanie intensywnością każdego z tych dwóch komplementarnych źródeł światła. Parametry World:Surface sterują rozproszonym, bezkierunkowym światłem otoczenia. Z kolei właściwości Object Data:Nodes obiektu Sun opisują kierunkowe, równoległe światło słoneczne. Dotychczasowy („podwodny”) efekt uzyskaliśmy gdy intensywności obydwu źródeł wynosiły 1.0. Spróbujmy teraz to zmienić w coś bardziej „atmosferycznego”.

Zmniejsz natężenie otoczenia (World:Surface:Strength) do 0.6, i jednocześnie zwiększ intensywność oświetlenia słonecznego (Object Data:Nodes:Strength) do 2.5. Rezultat przedstawia Rysunek 2.1.17:

Rysunek 2.1.17 Model po zróżnicowaniu natężenia światła rozproszonego i słońca

Teraz nasz model wygląda nieco lepiej — jak w jakiś pochmurny dzień. Uwzględniając niebieskawy odcień światła otaczającego, można zacząć przypuszczać, że jest to model w kolorze białym. (Tak jest w istocie — obiekty którym nie przypisano jeszcze żadnego materiału są w Cycles białe i zupełnie matowe. Wyglądają tak, jak gdyby były uformowane z białej gliny). Co prawda tło jest teraz ciemniejsze, ale w dalszych sekcjach pokażę, jak można je zasłonić jakimś bardziej wiarygodnym obrazkiem.

Oczywiście, skorzystaj z trybu podglądu tego renderu, by obejrzeć ten model ze wszystkich stron. Zwróć uwagę na wymodelowane krawędzie okapotowania silnika. W zasadzie te linie wyglądają poprawnie, poza dwoma (Rysunek 2.1.18a). Cienie i rozjaśnienia są na nich większe niż na sąsiednich panelach!

Rysunek 2.1.18 Korygowanie zbyt mocnego cienia na krawędzi okapotowania silnika

Ten efekt wynika z dwukrotnie mniejszej liczby ścian tego fragmentu (jego siatka — B.350.Cowling.004 —pozostała jak w Tomie II, podczas gdy sąsiednie segmenty później zagęściliśmy). Aby nadrobić tę różnicę, wystarczy zwiększyć liczbę podziałów z 2 do 3 (Rysunek 2.1.18b). To wyrównuje krawędzie (Rysunek 2.1.18c).

Jak napisałem poprzednio, na razie nasz model wygląda jak przy oświetleniu w jakiś pochmurny dzień. W takich warunkach światło słoneczne jest rozproszone, wywołując łagodne i rozmyte cienie (Rysunek 2.1.19):

Rysunek 2.1.19 Efekt dla rozproszenia cieni = 1.0

Rysunek 2.1.20 Efekt cieni słońca

Spróbuj zmniejszyć tę wartość, na przykład o połowę. Spowoduje to wyostrzenie cienia i pewne rozjaśnienie powierzchni oświetlonych światłem słońca (Rysunek 2.1.20a). Takie cienie są jednak nadal zbyt rozmyte. (Przyjrzyj się cieniom rzucanym przez przedmioty w słoneczny dzień — są bardzo ostre). Dlatego, aby dobrze odwzorować silne światło słoneczne, trzeba użyć odpowiednio mocnej „lampy” typu Sun o bardzo małych rozmiarach — rzędu 0.05 – 0.01 (Rysunek 2.1.20b). Można, oczywiście, zredukować rozmiar słońca do zera (Rysunek 2.1.20c), ale wtedy nawet bardzo odległe cienie pozostaną ostre, przez co będą mniej realistyczne.

Inną metodą rozjaśnienia całości obrazu jest wydłużenie „czasu ekspozycji” — wartość Exposure w panelu Film zestawu Render (Rysunek 2.1.21) . Mogłoby się wydawać, że przesadziłem tu już z tym światłem — niektóre miejsca na kadłubie stały się oślepiająco białe. Należy jednak pamiętać, że zazwyczaj samolot jest pokryty jakimś ciemnym kamuflażem, a słońce na wysokości kilku kilometrów potrafi być naprawdę ostre. Przy okazji spróbowałem w panelu Film zwiększyć nieco intensywność wygładzania linii (Width — por. str. 561) — by nie było widać granic pikseli na prowadnicach owiewki kabiny.

Rysunek 2.1.21 Rozjaśnienie renderu poprzez wydłużenie „czasu ekspozycji” (Film:Exposure)

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-5.01.blend (por. str. 20).

Podsumowanie

- Domyślne parametry kamery Blendera zazwyczaj wymagają zmiany (str. 22). Uważaj na zbyt małą wartość Clipping Start, gdyż może wywołać sztuczne “przebicia” wewnętrznych powłok modelu (por. Tom II).

- Aby łatwo manipulować kamerą i oświetleniem, skieruj je na jakiś pomocniczy obiekt (“cel”, za pomocą ograniczeń Track To — str. 23). Alternatywnie możesz przesuwać kamerę wzdłuż lokalnych osi jej obiektu (wykorzystując skróty G,X,X, albo G,Y,Y, albo G,Z,Z). Jeszcze inną metodą jest przypisanie aktywnej kamerze aktualnego widoku w oknie 3D View (Ctrl-Alt-0 — por. str. 27);

- Blender umieszcza na renderingu tylko obiekty z warstw, które są aktualnie widoczne;

- Obecnie Blender udostępnia dwa alternatywne silniki renderujące: Blender Renderer (znany także jako Blender Internal — BI) oraz Cycles (str. 25). W tej książce do renderowania będziemy używać Cycles;

- Cycles umożliwia wykorzystanie wygodnego, interaktywnego podglądu renderu (str. 26);

- Podgląd renderu ułatwia znalezienie na modelu skaz, które należy poprawić (str. 26, 28);

- Podstawowe oświetlenie sceny w locie uzyskujemy za pomocą: światła typu Sun (kierunkowe, wywołujące cienie), i rozproszonego światła otaczającego ustawianego w zestawie World (str. 28). Intensywność (Strength) każdego z tych źródeł należy dobrać odpowiednio do założonych warunków oświetlenia. Ustaw więcej światła otaczającego a mniej słonecznego gdy niebo ma być zachmurzone, i na odwrót gdy ma być słonecznie;

- Ostrość cienia światła słonecznego (Lamp:Size) pozwala sterować poziomem rozmycia cieni. Należy stosować duże wartość dla uzyskania rozmytych cieni (jak w pochmurny dzień), a bardzo małe — dla uzyskania cieni ostrych (odpowiednich dla jasnej, słonecznej pogody) (str. 29);

- Wygładzanie renderowanych linii domyślnie wykorzystuje metodę (filtr) Gauss. Intensywnością wygładzania można sterować za pomocą parametru Film:Width z zestawu Render (str. 29);

[1] (str. 22) Zgodnie z podziałem elementów sceny na warstwy (por. Część II) to jest ich właściwe miejsce.

2.2  Przypisanie podstawowych materiałów

Materiałem (material) nazywa się w Blenderze zespół parametrów opisujących sposób odbijania światła. Materiał, oprócz tak intuicyjnych własności jak barwa, posiada wiele innych atrybutów (np. “chropowatość” — roughness). Może także zawierać tekstury, których piksele “lokalnie” zmieniają wartości niektórych parametrów (np. zarysowanie szyby — to lokalna zmiana jej przejrzystości). O teksturach dowiesz się więcej w następnym rozdziale.

W tej sekcji utworzymy i przypiszemy do siatek dwa podstawowe materiały: B.Skin.Camouflage dla powierzchni zewnętrznych, i B.Skin.Inner dla powierzchni wewnętrznych[1]. W przyszłości B.Skin.Camouflage stanie się kamuflażem samolotu. Przy okazji przygotujemy także przejrzysty materiał osłony kabiny pilota.

Zacznij od stworzenia materiału B.Skin.Camouflage i przypisania go do powierzchni prawego płata (w zestawie Material — patrz str. 433). Do wyświetlania w trybie Solid przypisz mu na razie kolor pomarańczowy (ustawiając Settings:Viewport Color na R = 1.0, G = 0.27, B = 0.0 — por. str. 434). Taki kontrastowy kolor zdecydowanie odróżnia się od szarości powłok bez przypisanego materiału. Dzięki temu łatwiej dostrzeżesz obiekty, którym jeszcze trzeba go przypisać (Rysunek 2.2.1). Potem zmienimy barwę tego materiału na inną.

Rysunek 2.2.1 Dwa podstawowe materiały, naniesione na powierzchnię skrzydła.

Zwróć uwagę, że do lewego skrzydła B.Skin.Camouflage „przypisał się sam”. To dlatego, że materiał jest powiązany z siatką, a nie z obiektem. Obydwa płaty: prawy i lewy, korzystają z tej samej siatki: B.100.L.Wing [2].

Stwórz także materiał dla powierzchni wewnętrznych: B.Skin.Inner. Nadaj mu kolor zielonkawy (R = 0.10, G = 0.12, B = 0.0)[3] i przypisz np. do siatki wnęki podwozia (B.120.WheelBay — Rysunek 2.2.1). Teraz przed nami trochę pracy: trzeba przypisać odpowiedni materiał do każdej siatki modelu (por. str. 414). Pewną pomocą będzie możliwość kopiowania materiału na całą grupę obiektów (Ctrl-L, Material — por. str. 414).

Mówiąc szczerze, rozdział o materiałach wstawiłem w tym miejscu książki wyłącznie po to, by oszczędzić Ci jak najwięcej takiej roboty. Czeka nas jeszcze wytworzenie wielu małych części. Tym “drobiazgom” będziemy już przypisywali materiały na bieżąco, zaraz po uformowaniu. Gdybyśmy najpierw przygotowali cały model, aż do ostatniego detalu, a potem zabrali się za przypisywanie materiałów — pracy byłoby jeszcze więcej. Wzrosłaby także szansa, że jakiś fragment pozostanie omyłkowo pominięty.

Koniec gadania, bierzmy się do roboty. Sądzę, że najwygodniej będzie przypisywać obiekty “warstwa po warstwie”. Za każdym razem włącz widoczność tylko jednej warstwy, gdyż znajduje się tam kilka — kilkanaście obiektów. To odpowiednia “porcja” na jeden raz, bo łatwiej jest dostrzec i zaznaczyć każdy przedmiot. Dodatkowo, dużą pomocą jest możliwość chwilowego ukrywania pojedynczych obiektów (H, Hide Selected — patrz str. 404 [4]). Rysunek 2.2.2 pokazuje przypisywanie materiałów na warstwie 1 (zespół skrzydła):

Rysunek 2.2.2 Przypisywanie materiałów — wykorzystanie polecenia Hide Selected (chwilowe ukrywanie obiektów).

Czasami może pojawić się taka sytuacja, jak w gondoli podwozia głównego: zewnętrzna część siatki powinna być przypisana do materiału B.Skin.Camouflage, a część wewnętrzna — do B.Skin.Inner. Na szczęście w każdej siatce w Blenderze można wyznaczyć wiele obszarów, i każdemu z nich przypisać inny materiał (a dokładniej — tzw. material slot, czyli „łącze materiału”). Robi się to w trybie edycji, w zestawie Material (szczegóły — str. 415). Najpierw przypisz do całej siatki jeden materiał. Najlepiej wybierz ten, który zajmuje na niej najwięcej ścian (w tym przypadku — jest to zewnętrzny B.Skin.Camouflage). Takie przypisanie automatycznie tworzy pierwsze łącze materiału, do którego są na razie przypisane wszystkie ściany. Potem stwórz drugie łącze i przypisz do niego ściany. Do tego nowego łącza przypisz mu materiał B.Skin.Inner (Rysunek 2.2.3):

Rysunek 2.2.3 Przypisanie fragmentowi siatki materiału “wnętrza” (B.Skin.Inner).

Alternatywną techniką do tej, którą pokazuje Rysunek 2.2.3, będzie pomalowanie fragmentu tekstury B.Skin.Camouflage na kolor wnętrza samolotu, lub fragmentu tekstury B.Skin.Inner na kolor zewnętrzny. Zastosujemy je wszędzie tam, gdzie granica kolorów przebiega poprzez ściany (Nie ma sensu, w imię podziału barw, wstawiać dodatkowych krawędzi).

Rysunek 2.2.4 pokazuje przykłady obszarów, które najlepiej będzie „zamalować” na inny kolor:

Rysunek 2.2.4 Obszary, w których układ ścian uniemożliwia zastosowanie w siatce dwóch materiałów

Sukcesywnie przypisuj zawartość kolejnych warstw do materiałów. W przypadku ramek kabiny zacznij od przypisania ich do barwy “wewnętrznej” (B.Skin.Inner). Barwa zewnętrzna (B.Skin.Camouflage) jest zaledwie dodatkiem do tego podstawowego zabarwienia (Rysunek 2.2.5):

Rysunek 2.2.5 Ramki kabiny — tu “dominującym” materiałem jest wewnętrzny B.Skin.Inner.

Efekt przypisania materiałów B.Skin.* do samolotu demonstruje Rysunek 2.2.6:

Rysunek 2.2.6 Model po przypisaniu materiału do wszystkich elementów.

Jeżeli cały samolot stał się pomarańczowy, oznacza to, że przypisaliśmy do materiałów B.Skin.Camouflage i B.Skin.Inner wszystkie powłoki, które należało przypisać. Teraz można zmienić z powrotem barwę B.Skin.Camouflage na jakąś bardziej umiarkowaną (nadal to będzie barwa tymczasowa).

Proponuję ustawić ten kolor (Settings:Viewport Color) na jasnoszary (V = 0.8[5]) (Rysunek 2.2.7):

Rysunek 2.2.7 Model po zmianie barwy materiału B.Skin.Camouflage wyświetlanej w 3D View na jasnoszary.

Pamiętaj, że takie materiały jak B.Skin.Camouflage, czy B.Skin.Inner, są przypisane do wielu siatek. Gdy zaznaczasz pojedynczy obiekt i zmieniasz jakąkolwiek jego właściwość, zmienisz ją dla wszystkich pozostałych fragmentów modelu które używają tego materiału[6].

Ten sam materiał może na renderze w Cycles mieć zupełnie inny kolor. Na razie jednak nasz samolot będzie na nim także szary (ustaw wartość V = 0.5 w trybie HSV kontrolki Surface:Color) (Rysunek 2.2.8):

Rysunek 2.2.8 Robocza barwa B.Skin.Camouflage na renderze: szary (V = 0.5)

Do tej pory ten materiał był zupełnie matowy. Teraz warto mu nadać odpowiedni połysk (Rysunek 2.2.9):

Rysunek 2.2.9 Dodanie połysku

Oglądane od strony słońca (por. str. 23) powierzchnie samolotu powinny mieć tylko niewielkie odbłyski (Rysunek 2.2.9a). Pełen blask skrzydeł uzyskasz, ustawiając je „pod światło” (Rysunek 2.2.9b).

Jak uzyskać efekt, który przedstawia Rysunek 2.2.9? To rezultat połączenia dwóch podstawowych rodzajów powierzchni: matowej i lustrzanej. Rodzaje powierzchni określa się w Cycles jako shaders. (W dalszym tekście będę używał nazwy „shadery” — z góry przepraszam wszystkich polonistów!). Do tej pory używaliśmy powierzchni zupełnie matowej — shadera Diffuse (por. chociażby panel Material:Surface, Rysunek 2.2.8 — jest tam wybrany w polu Surface). Połączenie dwóch shaderów najwygodniej jest zdefiniować je w edytorze węzłów (oknie Node Editor). Jeżeli jeszcze nigdy go nie używałeś, i w ogóle niezbyt wiesz co mam na myśli — przeczytaj szczegółowe wprowadzenie na str. 389. Przedstawiam tam, jak używać węzłów do definiowania materiału. W Cycles, jak się przekonasz, prawie wszystko ustawia się w Node Editor — nie tylko materiały, ale także źródła światła. (Tu świecić może każda siatka — wystarczy w schemat jej materiału wstawić shader Emission).

We wprowadzeniu do Cycles (str. 435) pokazuję krok po kroku, jak zbudować schemat typowego materiału „z połyskiem” (Rysunek 2.2.10a). To połączenie za pomocą węzła Mix Shader powierzchni matowej (Diffuse BSDF) i połyskliwej (Glossy BSDF). Zwróć uwagę na trzeci węzeł wejściowy: Layer Weight. Jest podłączony do „wagi” łączonych powierzchni (Mix Shader:Fac). W ten sposób udział „lustrzanej” powierzchni Glossy BSDF został uzależniony od kąta nachylenia ścianek modelu do obserwatora (por. str. 447). To typowe rozwiązanie dla uzyskania zwykłych odblasków światła na powierzchni:

Rysunek 2.2.10 Zdefiniowanie nowego shadera — Gloss Paint

Skoro to typowe rozwiązanie, warto te węzły połączyć w taką grupę, jaką pokazuje Rysunek 2.2.10b). (Szczegółowy opis tworzenia grupy znajdziesz na str. 440). W ten sposób zdefiniowaliśmy nasz własny, wyspecjalizowany shader (Rysunek 2.2.10c). Zwróć uwagę, że z węzłów wchodzących w skład grupy możesz wybrać parametry, którymi będzie sterować jej użytkownik. W odróżnieniu od przykładu ze strony 440, zdecydowałem się tu rozdzielić barwy matowego (Diffuse) i połyskliwego (Specular) składnika powierzchni. Uzyskanemu w ten sposób shaderowi nadałem nazwę Gloss Paint (ang. „lakier”).

Aby się przekonać, że shader Gloss Paint zasługuje na swoją nazwę, zmień na chwilę jego kolor Diffuse na czerwony i zmniejsz szorstkość Roughness do 0.05 (Rysunek 2.2.11):

Rysunek 2.2.11 Zastosowanie shadera Gloss Paint do stworzenia efektu bardzo gładkiej powierzchni

Na powierzchni pojawiły się „twarde” odbicia światła słońca, jak na pomalowanej „na wysoki połysk” sportowej awionetce. Zauważ także, że odcień powłoki zależy od stopnia szarości koloru Specular (Rysunek 2.2.12):

Rysunek 2.2.12 Wpływ koloru Specular na powierzchnię Gloss Paint

Kamuflaż samolotów bojowych jest zazwyczaj bardziej matowy. Aby uzyskać taki efekt, zwiększ szorstkość (Roughness) powierzchni do 0.15 — 0.20 (Rysunek 2.2.13):

Rysunek 2.2.13 Zastosowanie shadera Gloss Paint do stworzenia półmatowej powierzchni

Zwróć uwagę, że odblaski słońca stały się na niej większe, ale jednocześnie bardziej rozmyte („miękkie”).

Na podglądzie renderu obejrzyjmy znów nasz model ze wszystkich stron. Czasami możesz znaleźć na jego powierzchni dziwne „srebrne” elementy (Rysunek 2.2.14):

Rysunek 2.2.14 Efekt „odwróconych ścian”

Gdy używaliśmy prostego materiału opartego wyłącznie na Diffuse BSDF, ten fragment kadłuba nie odróżniał się od innych. Co mu się teraz stało?

To sprawa orientacji ścianek siatki! Siatki pozostałych elementów kadłuba mają ściany skierowane na zewnątrz, a ta — nie. Orientację ścian określają tzw. wektory normalne (czyli prostopadłe do płaszczyzny ściany — ang. normal). Aby je zobaczyć, włącz wyświetlanie tych wektorów na siatce (w przyborniku właściwości, paneli Mesh Display — por. str. 425, Rysunek 9.9.1). Potem wymuś przeliczenie zwrotu normalnych (Ctrl-N, albo Mesh→Normals→Recalculate Outside — por. str. 425) (Rysunek 2.1.15):

Rysunek 2.2.15 Przełączenie zwrotu wektorów normalnych do ścian siatki

Następnie przełącz się z trybu Edit Mode w Object Mode, a niepożądany efekt zniknie (Rysunek 2.2.16):

Rysunek 2.2.16 Ten sam element po poprawieniu kierunku normalnych

Rysunek 2.2.17 Użycie shadera Gloss Paint w materiale B.Skin.Inner

W ten sam sposób popraw kierunki normalnych na drugim „srebrnym” elemencie — klapkach wylotu chłodnicy cieczy (Rysunek 2.2.16).

Gdy już zrobisz porządek z powierzchniami zewnętrznymi, czas ulepszyć materiał powierzchni wewnętrznych (B.Skin.Inner). Wymień używany tam dotychczas shader Diffuse BSDF na nasz Glossy Paint (Rysunek 2.2.17, szczegóły — str. 445). Tylko nie zapomnij zmienić podstawowego koloru tego materiału na Curtiss Green!

Po tej zmianie przejrzyj starannie na podglądzie renderu wszystkie elementy wykorzystujące ten materiał. Powierzchnie wewnętrzne mają zazwyczaj dużo źle zorientowanych ścian. Czasami część pojedynczej siatki może być poprawna, a druga część — błędna, tak ja w przypadku wnętrza kabiny (Rysunek 2.2.18):

Rysunek 2.2.18 Korygowanie kierunku normalnych na wewnętrznych powierzchniach kadłuba

Zazwyczaj w takim przypadku proste przeliczenie (Ctrl - N) nie pomoże. Trzeba zaznaczać w Edit Mode błędnie zorientowane ściany i przełączyć ich kierunek poleceniem Filp Normals (por. str. 426).

Najwięcej kłopotów sprawiła mi na tym etapie siatka wnęki klapy skrzydła (B.101.Flap Bay — (Rysunek 2.2.19a). Zemściło się próba uzyskania „blachy z zakładką” przy zastosowaniu pojedynczych ścian (Rysunek 2.2.19b). Dla renderów tworzonych za pomocą BI to było dobre rozwiązanie, ale na potrzeby Cycles należałoby zrezygnować blachy o profilu „C” i zamknąć ten przekrój drugą ścianą (Rysunek 2.2.19c):

Rysunek 2.2.19 Eliminacja „dwustronnych” ścian we wnęce klapy

Alternatywnie można wykorzystać w materiale B.Inner.Skin flagę Geometry:Backfacing (por. str. 456).

Na koniec tej sekcji przypiszemy owiewce kabiny odpowiedni materiał, imitujący szkło organiczne (plexiglas). Nadajmy mu nazwę B.Glass.Canopy. Poniżej przedstawiam kluczowe etapy kompozycji tego materiału. Szczegółowy opis, wraz z omówieniem występujących problemów, znajdziesz na str. 492.

Upewnij się, że wszystkie przejrzyste elementy modelu mają nadaną grubość (czy to na etapie modelowania, czy też modyfikatorem Solidify). Jeżeli jej nie mają, Cycles potraktuje przestrzeń, którą zamykają, jak lite szkło!

W Cycles mamy do dyspozycji „gotowy” shader szkła: Glass BSDF. Jednak w scenie oświetlonej światłem kierunkowym (Sun) materiał bazujący wyłącznie na tym węźle pozostawia wiele do życzenia (Rysunek 2.2.20):

Rysunek 2.2.20 Efekt zastosowania shadera Glass BSDF

Łącząc shadery Glass i Transparent za pomocą flag Light Path można temu zaradzić (Rysunek 2.2.21):

Rysunek 2.2.21 Shader Glass BSDF + efekt cienia

Brakuje tu jeszcze połysku. Uzyskasz go podobnie jak dla powierzchni nieprzejrzystych: łącząc shader podstawowy (Glass BSDF) z shaderem Glossy BSDF. Do wagi tego połączenia podłącz współczynnik Fresnel (por. str. 494). Rysunek 2.2.22 przedstawia użycie zbudowanego w ten sposób shadera Plexiglas:

Rysunek 2.2.22 Ostateczny materiał owiewki — shader (grupa) Plexiglas (Glass BSDF + Glossy BSDF + efekt cienia)

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-5.02.blend (por. str. 20).

Podsumowanie

- Podstawowymi materiałami, które odwzorują pokrycie samolotu, są: B.Skin.Camouflage — na powierzchnie zewnętrzne, B.Skin.Inner — na powierzchnie wewnętrzne. Dodatkowo owiewka jest wykonana ze szkła — B.Glass.Canopy.

- Ten sam materiał — np. B.Skin.Camouflage — może być przypisany do wielu siatek. By łatwo odszukać siatki, do których nie został przypisany, zmień na chwilę jego barwę na jakąś kontrastową, np. pomarańcz (str. 31).

- Materiał najlepiej jest przypisać do siatki zaraz po jej stworzeniu (by na pewno o niej nie zapomnieć). W tej książce nie chciałem jednak wcześniej zawracać początkującemu Czytelnikowi głowy materiałami. Stąd trzeba je było przypisać dopiero teraz, do wszystkich siatek naraz (str. 32);

- Siatkę można w Blenderze podzielić na obszary, z których każdy będzie przypisany do innego materiału (tzw. indeksu materiału) — str. 32. W ten sposób można przygotować element, którego część ma mieć kolor wnętrza samolotu, a część — kamuflaż zewnętrzny;

- Nie zawsze na siatce można wyróżnić ściany, biegnące wzdłuż granicy podziału kolorów. W takim przypadku nie ma sensu ją zagęszczać wyłącznie z tego powodu. Lepiej będzie “namalować” ten fragment na teksturze (str. 33);

- W Cycles masz do dyspozycji proste „elementy podstawowe”: shadery Diffuse, Glossy, Glass, Transparent. Łącząc je ze sobą w edytorze węzłów (Node Editor) możesz tworzyć efekty, odpowiednie dla realistycznych materiałów (str. 35);

- Możesz także tworzyć swoje własne węzły — łącząc wybrany zespół elementów w grupę (str. 35). Grupowanie węzłów pozwala wyróżnić istotne parametry zespołu i ukryć wszystkie pozostałe. To zwiększa czytelność schematów. Ułatwia także wykorzystanie tego samego efektu w kilku różnych materiałach. W tym rozdziale zdefiniowaliśmy uniwersalny shader „powierzchni z połyskiem” — Gloss Paint, który został użyty w materiałach powierzchni zewnętrznych (B.Skin.Camouflage — str. 36) i wewnętrznych (B.Skin.Inner — str. 38);

- Każdy „połyskliwy” materiał wymaga w Cycles właściwej orientacji ścian siatki (wektory normalne muszą być zwrócone „na zewnątrz”). Ściany o niewłaściwej orientacji mają na renderze charakterystyczną „lustrzaną” powierzchnię. Łatwo je znaleźć na podglądzie, nadając materiałowi jakiś ciemny kolor (str. 37). Ten efekt znika po skorygowaniu zwrotu normalnych (str. 37);

- Nie należy tworzyć w modelu ścian, w których widoczne są obydwie strony (str. 38). Jedna z tych stron na pewno wyjdzie na renderze nieprawidłowo, ze względu na przeciwny zwrot wektora normalnego!

- Mimo obiecującej nazwy, sam standardowy shader Glass BSDF nie wystarcza do uzyskania efektu odpowiedniego dla powierzchni szkła organicznego. Ma to związek z typem oświetlenia, wybranego dla naszej sceny. Wymaga dodania połyskliwości (poprzez połączenie z shaderem Glossy BSDF). Można także zastosować tu uproszczony efekt przejrzystych cieni (za pomocą shadera Transparent BSDF i flagi Input Path:Is Shadow Ray — str. 39). Taki efekt pozwala wyłączyć obliczenia tzw. kaustyki, co skraca czas renderowania obrazu;

- Do odwzorowania szkła organicznego (a także zwykłego szkła) stworzyliśmy wyspecjalizowany shader Plexiglas (str. 39). Wykorzystamy go nie tylko w materiale osłony kabiny (B.Canopy.Glass), ale także w tarczach przyrządów pokładowych i osłonach świateł pozycyjnych;

[1] (str. 31) Jeżeli chcesz poznać reguły, którymi kieruję się proponując nazwy materiałów — p. str. 458.

[2] (str. 31) Literę "L" w środku nazwy tej siatki dodałem zawczasu, gdyby trzeba było je rozdzielić — w jedno skrzydło będzie wstawiony reflektor do lądowania

[3] (str. 31) Wewnętrzne powierzchnie P-40B były malowane farbą podkładową Zinc Chromate, której odcień zależał od liczby nałożonych warstw (por. str. 581). Na razie przyjmijmy takie zgrubne przybliżenie tego koloru

[4] (str. 32) Kombinacja Alt-H (Show Hidden) przywraca widoczność wszystkim ukrytym obiektom

[5] (str. 34) Wszystkie wartości barw, podaję dla włączonej tzw. korekty gamma, czyli z włączoną opcją Color Management (por. str. 387);

[6] (str. 34) Materiał to jeden z rodzajów tzw. „bloku danych” (datablock) Blendera. Wyjaśnienie tego pojęcia i takich powiązań znajdziesz na str. 570;

2.3  Otoczenie sceny

Rysunek 2.3.1 „Wypolerowany metal” — ustawienie materiału B.Skin.Camouflage

Otoczeniem sceny zajmowaliśmy się do tej pory tylko przez chwilę, w pierwszej sekcji tego rozdziału (por. str. 26, 29). Wszystko, co wtedy zrobiliśmy, to rozjaśnienie domyślnej, jednolitej brawy tła za modelem.

W rzeczywistości nigdzie chyba nie zetkniesz się z taką „jednobarwną otchłanią. Do oceny komponownanych materiałów lepiej użyć czegoś, co bardziej przypomina docelowe otoczenie, w którym chcemy zobaczyć nasz model. Najlepiej się chyba o tym przekonać po ustawieniu materiału samolotu na coś w rodzaju wypolerowanego duralu. Taką powierzchnię otrzymasz, zmieniając ustawienia B.Skin.Camouflage w sposób pokazany przez Rysunek 2.3.1 (szczegóły — str. 501).

W jednolitym otoczeniu (Rysunek 2.3.2a) model wcale nie wygląda jak „srebrna maszyna” (Rysunek 2.3.2b):

Rysunek 2.3.2 Metaliczna powierzchnia w sztucznym, jednolitym otoczeniu

Gdy zastosujesz nawet najprostszy (generowany przez program) obraz nieba: Sky Texture (Rysunek 2.3.3a, szczegóły — str. 459), model wygląda zdecydowanie lepiej (Rysunek 2.3.3b):

Rysunek 2.3.3 Metaliczna powierzchnia w otoczeniu wygenerowanego obrazu nieba (Sky Texture)

Jeszcze lepsze efekty można uzyskać, podstawiając jako tło prawdziwe, panoramiczne zdjęcie (Rysunek 2.3.4):

Rysunek 2.3.4 Metaliczna powierzchnia w otoczeniu uzyskanym ze zdjęcia panoramicznego (Environment Texture)

(Szczegółowy opis, jak podstawiać takie zdjęcie jako Environment Texture znajdziesz na str. 468).

Ale czy można w Blenderze „podstawić” za modelem jakieś zwykłe zdjęcie, powiedzmy takie jak te, które pokazuje Rysunek 2.3.5?

Rysunek 2.3.5 Zdjęcie z powietrza — tło dla obrazu naszego modelu (© Tomo.Yun — www.yunphoto.net).

To całkiem proste: należy podłączyć do wejścia Color shadera Background węzeł Texture Image z tą fotografią, nałożoną w trybie Texture Coordinate:Window (szczegóły — na str. 479). Plik ze zdjęciem pokazywanym przez Rysunek 2.3.5 znajdziesz wśród materiałów towarzyszących tej książce (por. str. 20). Umieściłem go w folderze p40\background\ pod nazwąnebraska.png [1].

Aby dobrze dopasować model do fotografii, warto poprawić położenie słońca na scenie. Na zdjęciu, które wybraliśmy, widać tzw. „widmo Brockenu”: cień samolotu na chmurze, otoczony tęczową aureolą. To bardzo ułatwia nam zadanie: możemy być pewni, że słońce powinno znajdować się za kamerą. Proponuję ustawić źródło Sun tak, jak pokazuje to Rysunek 2.3.6:

Rysunek 2.3.6 Dopasowanie położenia słońca do fotografii

Przyznam się, że odsunąłem trochę słońce w prawo, by uzyskać odblask na owiewce kabiny!

Rysunek 2.3.7 przedstawia podgląd renderu tak przygotowanej sceny:

Rysunek 2.3.7 Model, ustawiony „przed zdjęciem” (wykorzystanie obrazu tła w mapowaniu Window)

Zwróć uwagę (por. Rysunek 2.3.7 i Rysunek 2.3.5), że obraz tła uległ rozciągnięciu, dopasowując się do proporcji okna renderu.

Mapowanie w trybie Window deformuje tło tak, by wypełniło okno renderu. Jeżeli nie chcesz takich zniekształceń, dopasuj proporcje ostatecznego obrazu (Render:Dimensions) do proporcji zdjęcia.

Takie proste „podstawienie” zdjęcia za modelem ma pewną wadę: nie możesz w znaczący sposób zmieniać jasności otoczenia (Background:Strength = 1.0). Jeżeli spróbujesz to zrobić, obraz tła stanie się za jasny lub zbyt ciemny.

Istnieje jeszcze jedyna wada tego rozwiązania. Obrazu w mapowaniu Window nie można podstawiać jako tła dla modelu o „srebrnych” i/lub połyskliwych powierzchniach. Tworzy się wówczas nieprawidłowy obraz odbić otoczenia (Rysunek 2.3.8):

Rysunek 2.3.8 Nieprawidłowe odbicia otoczenia, występujące w mapowaniu obrazu tła w trybie Window

W takiej sytuacji pozostaje zbudować otoczenie „hybrydowe” , w którym odbicia na powierzchni modelu będą pochodzić z panoramy otoczenia, a tło, widoczne za modelem — ze zdjęcia. Szczegółowy opis budowy takiego środowiska znajdziesz na str. 482. W tej sekcji przedstawię tylko jego ogólną koncepcję.

Zacznijmy od stworzenia panoramy. Rysunek 2.3.9 przedstawia dwa obrazy, które w tym celu przygotowałem:

Rysunek 2.3.9 Przygotowanie obrazów panoramy

Każdy z nich zostanie przypisany do węzła Environment Texture, więc musi mieć proporcje 1:2 (por. str. 468). Pierwszy z obrazów (Rysunek 2.3.9a) posłuży nam do odwzorowania górnej półsfery (nieba). (To darmowa próbka z portalu www.cgskies.com ) . Dolna część tej panoramy jest jednolicie czarna. Aby podstawić w to miejsce obraz ziemi o odcieniu zgodnym z obrazem tła, przygotowałem drugą panoramę (Rysunek 2.3.9b). Powstała ze złożenia obrazu tła z jego własnym „lustrzanym” odbiciem. Wolna przestrzeń powyżej nie ma znaczenia, więc wypełniłem ją kolorem białym — byleby tylko całość miała proporcje 1:2.

Panoramy najłatwiej jest sprawdzać za pomocą tzw. sondy — testowej kuli, w której powierzchni odbija się całe otoczenie (szczegóły — str. 462). Rysunek 2.3.10 przedstawia złożenie obrazów górnej i dolnej półsfery za pomocą gradientu (Gradient Texture):

Rysunek 2.3.10 Kompozycja panoram górnej i dolnej półsfery za pomocą gradientu

Taką kompozycję (Rysunek 2.3.10d) buduje się z dwóch węzłów Environment Texture (Rysunek 2.3.10a,b), połączonych w węźle Color→Mix za pomocą gradientu (Rysunek 2.3.10c). (Szczegóły — str. 485).

Rysunek 2.3.11 przedstawia odbicie tak zestawionego otoczenia na powierzchni modelu:

Rysunek 2.3.11 Odbicie panoramy na powierzchni modelu

Gdy panorama jest gotowa, można ją połączyć z obrazem tła używając węzła Light Path (Rysunek 2.3.12):

Rysunek 2.3.12 Dodanie obrazu tła (szczegóły — por. str. 488)

Obraz tła (Image Texture) podłączyłem do odrębnego shadera Background. Pozwala to na niezależną regulację jasności odbić otoczenia na powierzchni modelu. Shadery panoramy i tła są łączone za pomocą flag Light Path: Is Camera Ray (tło) oraz LightPath: Is Transmission Ray (tło za szybą kabiny) (Rysunek 2.3.13):

Rysunek 2.3.13 Test połyskliwego modelu w otoczeniu hybrydowym

Uważam, że takie „hybrydowe” otoczenie może się przydać w wielu scenach. O wiele łatwiej jest znaleźć jakieś „płaskie” zdjęcie z ujęciem pasującym na tło, niż panoramę o odpowiednio wysokiej rozdzielczości. Poza tym obrazy, wykorzystywane w takim „składanym” otoczeniu, zajmują o wiele mniej miejsca w pamięci komputera niż panorama o profesjonalnej rozdzielczości (rzędu 10000x4000px lub większej).

Czasami możesz nie być w stanie określić skąd na takim zdjęciu ziemi z chmurami dokładnie pada światło słońca. Gdyby nie efekt „widma Brockenu” na obrazie tła, który wybraliśmy (por. Rysunek 2.3.5), także mielibyśmy z tym kłopot! Zresztą przekonaj się sam: powiększ obraz tła (zmniejszając Scale:X i Scale:Y w odpowiednim węźle Mapping — Rysunek 2.3.14a). Powiększony obraz przesuń do dołu i w lewo (Location:X, Y), aby z ekranu zniknął cień samolotu na chmurze i jego otoczka (Rysunek 2.3.14b):

Rysunek 2.3.14 Przesunięcie i powiększenie obrazu tła

Rysunek 2.3.15 Nowe położenie słońca

Załóżmy, że tym razem będziemy widzieli model z prawej strony (Rysunek 2.3.15). Słońce nadal będzie oświetlać go z lewej, więc w tym ujęciu będzie świecić „z wnętrza” sceny. Aby podkreślić ten efekt, przesunąłem obiekt Sun tak, że znajduje się o jakieś 20º wyżej, a jego promienie padają pod kątem prostym do osi kadłuba samolotu.

Rysunek 2.3.16 przedstawia testowy render. Tym razem widzimy kadłub od zacienionej strony. Inna sprawa, że dla tak połyskliwej powierzchni ten cień nie jest specjalnie ciemny…

Rysunek 2.3.16 Rezultat dla zmienionych ustawień tła i oświetlenia

Uważam, że w tym ujęciu model wygląda równie dobrze, o ile nie lepiej, niż w poprzednim (Rysunek 2.3.13).

Dlaczego sądzę, że render pokazywany przez Rysunek 2.3.16 jest lepszy od tego pokazywanego przez Rysunek 2.3.13? Chodzi tu o dopasowanie renderowanego modelu do zdjęcia pokazywanego w tle. W idealnym przypadku powinien wyglądać tak, jak gdyby był naturalną częścią zdjęcia — do tego stopnia, by widz nie wiedział, co zostało dodane za pomocą komputera. Zazwyczaj musimy się zmagać z mniejszym lub większym wrażeniem sztuczności renderowanych komputerowo elementów sceny. Ta sztuczność przypomina wykonywane w XX-wiecznych studiach fotograficznych ujęcia modelu na tle planszy z fototapetą. W zasadzie w naszej scenie stosujemy podobną aranżację. Wydaje mi się, że samolot pokazywany przez Rysunek 2.3.13 wygląda na tle swojego zdjęcia bardziej „studyjnie” niż ten drugi (Rysunek 2.3.16). I tak będziemy ten efekt poprawiać na etapie tzw. postprocessingu (por. Tom IV). Jednak im więcej wykona teraz za nas silnik renderujący, tym mniej się później napracujemy. Zazwyczaj lepszy efekt można osiągnąć z lepszych materiałów „wejściowych”.

Ujęcie modelu „pod słońce” jest trudniejsze, gdy mamy do czynienia z materiałem o mniejszym współczynniku odbicia otoczenia (Gloss Paint:Reflectivity) niż lustrzana powierzchnia wypolerowanej blachy aluminiowej (Reflectivity = 0.98). Popatrz chociażby na ten testowy render modelu pokrytego czerwonym, połyskliwym lakierem (Reflectivity = 0.6) (Rysunek 2.3.17):

Rysunek 2.3.17 Rezultat dla tego samego otoczenia i mniej „lustrzanej” powierzchni modelu

Ten głęboki cień na powierzchni kadłuba można rozjaśnić, zwiększając intensywność panoramy otoczenia (jej shadera Background — por. Rysunek 2.3.12):

Rysunek 2.3.18 Rozjaśnienie powierzchni modelu poprzez zwiększenie intensywności panoramy otoczenia

Szczegóły ustawień materiału powierzchni samolotu, wykorzystywanych w tej sekcji, znajdziesz na str. 500 i następnych.

Zazwyczaj kamuflaż samolotu to jeszcze ciemniejsza, półmatowa (Roughness = 0.2) powierzchnia. Pokryjmy nasz model czymś, co w przybliżeniu odpowiada przepisowej barwie Olive Drab (Rysunek 2.3.19):

Rysunek 2.3.19 Ciemniejszy materiał (kamuflaż) w tym samym otoczeniu co poprzednio

Choć nie zmieniliśmy intensywności panoramy otoczenia (Background:Strength nadal jest równe 2.0), to cień na kadłubie samolotu znów stał się ciemniejszy. W zasadzie to efekt prawidłowy. Na wielu zdjęciach samolotów, wykonanych w słoneczny dzień, można dostrzec cienie o podobnym odcieniu.

Z drugiej strony — obiektyw kamery ma inną czułość niż oko ludzkie, i dlatego pogłębia intensywność cieni. Jeżeli chciałbyś uzyskać mniej „fotorealistyczny”, a bardziej intuicyjny obraz — możesz spróbować jeszcze bardziej zwiększyć jasność otoczenia (Background:Strength = 3.0 — Rysunek 2.3.20):

Rysunek 2.3.20 Kolejne zwiększenie intensywności panoramy otoczenia

Zwróć uwagę, że rozjaśniło to cienie, ale jednocześnie kolor kamuflażu stał się mniej nasycony — a dokładniej: bardziej błękitny (od koloru nieba). Wyraźniejsze stały się także odbicia otoczenia na owiewce kabiny.

Nie zawsze takie „wyblaknięcie” modelu jest efektem pożądanym. Zresztą czasami wcale nie trzeba aż tak bardzo „podkręcać” intensywności światła otoczenia. Na przykład Rysunek 2.3.21 przedstawia ujęcie, w którym umiarkowana intensywność (Background:Strength = 2.0) jest zupełnie wystarczająca:

Rysunek 2.3.21 Ujęcie, pozwalające zmniejszyć intensywność panoramy

W tym przypadku pomaga nam ustawienie zacienionych powierzchni pod dużym kątem do obserwatora. W wyniku efektu Fresnela odbija się w nich „więcej nieba”, niż w powierzchniach prostopadłych (porównaj barwę ogona i krawędzi natarcia prawego płata przy kadłubie).

Model nigdy nie ma jednolitej barwy. Jest to zawsze wypadkowa intensywności i barwy światła słońca, panoramy otoczenia, oraz kolorów samego materiału przypisanego do powierzchni.

Oznacza to, że modelarskie dywagacje na temat „prawdziwego” odcienia farb użytych do kamuflażu oryginalnych maszyn (por. str. 580) można traktować tylko jako pierwsze przybliżenie. Reszta, zupełnie tak, jak w malarstwie, zależy od Twojej intuicji i wyczucia sceny.

Na przykład — czasami opłaca się, oprócz rozjaśnienia otoczenia, przesunąć nieco kamerę „do tyłu”. Chodzi o to, by nasz samolot nie zajmował całej szerokości obrazu (Rysunek 2.3.22):

Rysunek 2.3.22 Rozjaśniony i zmniejszony model — próba lepszej integracji z tłem

W ten sposób model „tonie” w tle, przez co staje się trochę lepiej zintegrowany ze zdjęciem.

Na zakończenie chciałbym dodać, że materiały, które wykorzystywaliśmy w tej sekcji, były niezwykle proste. W rzeczywistości na powierzchni samolotu gromadzą się różne zabrudzenia, zmatowienia, i inne lokalne zmiany. Aby je odtworzyć, musimy podłączyć wejścia naszych shaderów do tekstur. I o tym piszę w następnym rozdziale tej książki.

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-5.03.blend (por. str. 20).

Podsumowanie

- Słońce i obraz panoramy otoczenia to dwa uzupełniające się źródła światła. Ich intensywność należy dobierać odpowiednio do jasności materiału modelu (str. 47-49);

- Najprostszym otoczeniem, które daje efekt zbliżony do naturalnego jest Sky Texture (str. 41);

- Obraz panoramiczny, wykorzystany jako Environment Texture, pozwala uzyskać realistyczne odbicia otoczenia na powierzchni modelu (str. 41). Niestety, takie panoramy zazwyczaj nie maja odpowiedniej rozdzielczości, aby można je było jednocześnie użyć w charakterze tła;

- Dla modeli pokrytych matowym kamuflażem można stosować technikę „podstawiania” zdjęcia za model (z wykorzystaniem wyjścia Window węzła Texture Coordiante — str. 42, 43). Takie otoczenie nie sprawdza się jednak dla powierzchni połyskliwych (str. 43);

- Uniwersalnym otoczeniem dla każdego modelu jest połączenie panoramy (str. 44), z płaskim obrazem (tzn. zwykłym zdjęciem) podstawionym jako tło (w mapowaniu Texture Coordinate:Window) za modelem. Panorama służy do uzyskania realistycznych odbić otoczenia na powierzchni modelu, a płaski obraz zapewnia tło, które widać za modelem i poprzez przejrzystą owiewkę kabiny. Do takiego połączenia należy wykorzystać flagi Is Camera Ray i Is Transmission Ray z węzła Light Path (str. 45);

- Oświetlenie modelu należy dostosować do kierunku i intensywności światła widocznego na zdjęciu (str. 42). Czasami jednak na zdjęciach „z powietrza” trudno ocenić, skąd świeci słońce (str. 46);

- W zasadzie, im ciemniejsza i bardziej matowa powierzchnia modelu, tym większą intensywność należy przypisać światłu (panoramie) otoczenia (str. 47, 48). Dla różnych kątów ujęcia tego samego modelu w tym samym otoczeniu ta intensywność może być różna (str. 49). Trzeba ją dobierać tak, aby cienie nie były zbyt jasne;

- Barwa powierzchni modelu zależy nie tylko od koloru przypisanego materiału, ale także od barwy i jasności panoramy otoczenia i światła słońca (str. 46, 47, 49). Zależy także od kąta nachylenia powierzchni do obserwatora!

- Jeżeli pozostawisz z brzegu obrazu trochę wolnej przestrzeni, wówczas model może lepiej „wtopić się w tło”. Poprawia to nieco realizm rezultatu;

[1] (str. 42) To, a także inne zdjęcia „z lotu ptaka”, możesz znaleźć w kolekcji Tomo Yuna. Jest udostępniona do pobrania za darmo, pod adresem http://www.yunphoto.net. Trochę czasu trzeba poświęcić na przejrzenie...

Rozdział 3.  Podstawy teksturowania

Formowanie modelu jest etapem prac oczywistym nawet dla laika. Efekty, jakie można uzyskać za pomocą tekstury są już sekretem grafików, z której istnienia ludzie „spoza branży” nie zdają sobie sprawy. Dobrze przygotowane i odpowiednio nałożone obrazy mogą zmienić najprostszy model w zachwycające „cacko”. A źle wykonane tekstury popsują wygląd nawet najstaranniej ukształtowanej siatki.

Ten rozdział to wprowadzenie do tekstur w Cycles. Wyjaśniam tu podstawowe pojęcia i pokazuję typowe metody przygotowania obrazów powierzchni. Robię to na przykładzie niewielkiego „kawałka” modelu — statecznika pionowego i jego owiewki. Jeżeli masz już doświadczenie w tym zakresie — możesz od razu przejść do następnego rozdziału (na str. 94).

W tym rozdziale będziemy wykorzystywać materiały z towarzyszącego tej książce pliku source.zip. Pliki *.blend odpowiadające rezultatom poszczególnych sekcji rozdziału znajdziesz w pliku p40.zip, a foldery z obrazami ich tekstur — w pliku textures1.zip. (Adres miejsca, z którego można pobrać te pliki, znajdziesz na. str. 20).

Numery rozdziałów w tym tomie są inne niż w kompletnej książce, dlatego pliki z rezultatami sekcji tego rozdziału noszą nazwy zaczynające się od P40B- 6. *, a foldery z teksturami — 0 6 .*.

3.1  Wprowadzenie

Na powierzchni metalowego samolotu widać zawsze wiele linii połączeń fragmentów blach, którymi został pokryty. Jest ich tak dużo, że nie ma sensu odwzorowywać ich jako oddzielnych fragmentów siatki.

Rysunek 3.1.1 Rysunek łączenia blach — na podstawie planów

Rysunek 3.1.2 Nałożenie rysunku na powierzchnię modelu

Na szczęście istnieje metoda alternatywna. Wystarczy, że przygotujesz obraz z liniami łączeń blach (Rysunek 3.1.1). Następnie nałożysz go na powierzchnię modelu (Rysunek 3.1.2). Obraz, który wykorzystujemy w ten sposób, nazywa się teksturą. Sama operacja nakładania na model — mapowaniem tekstury. Tekstury możesz w Cycles podłączyć wszędzie tam, gdzie węzeł ma pole wejściowe typu Color lub Value. Umożliwiają w ten sposób lokalną zmianę różnych właściwości materiału — barwy, szorstkość, połyskliwość, itp. Sam się o tym przekonasz w ciągu tego rozdziału.

Aby wprowadzać Cię stopniowo w niuanse teksturowania, zdecydowałem się w tej sekcji nałożyć przykładową teksturę na statecznik pionowy. Przy okazji przeprowadzimy trochę eksperymentów z przypisaniem tekstur do materiału. Proponuję, abyś nie wykonywał ich na „ogólnym” materiale B.Skin.Camouflage, który przygotowaliśmy w poprzednim rozdziale. Zróbmy z niego lokalną kopię, przypisaną do statecznika pionowego (B.250.Fin), o nazwie B.Skin.Test (Rysunek 3.1.3) :

Rysunek 3.1.3 Utworzenie kopii materiału B.Skin.Camouflage — o nazwie B.Skin.Test — do „eksperymentów” w tej sekcji.

(To typowe kopiowanie tzw. „bloku danych” w Blenderze. Jeżeli chcesz się dowiedzieć więcej, co to jest „blok danych”, „licznik użycia”, itp. — zajrzyj na str. 569).

Najpierw zrobimy rysunek łączenia blach. Najlepiej jest go przygotować jako obraz wektorowy, a nie rastrowy. Użyjemy więc do tego Inkscape, a nie, jak do tej pory, Gimpa. Otwórz w Inkscape nowy rysunek (jeżeli robisz to po raz pierwszy — zerknij do wprowadzenia, na str. 282). Ustal jego rozmiary (File→Document Properties, str. 284) na 2048 x 2048 px (pikseli). (W razie czego — nie traktuj tych jednostek jako ostatecznych. Gdy będzie to potrzebne, bez problemu uzyskasz z tego rysunku obraz o większej rozdzielczości, np. 4096 x 4096). Wstaw (File→Import... , str. 285) w ten rysunek obraz rzutu z boku naszego P-40:

Rysunek 3.1.4 Rysunek w Inkscape z wstawionym fragmentem planów samolotu

Od razu zmniejsz wstawiony obraz (jak — str. 312) i przesuń (jak — str. 310) w prawy górny narożnik. Aby zapobiec bałaganowi w rysunku, każdy rzut umieścimy na osobnej warstwie. Rzut z boku nie znajduje się na razie na żadnej, więc:

- zmień nazwę aktualnej warstwy (Layer→Rename Layer…, por. str. 289) na nazwę BP-Left (wszystkie nazwy warstw planów będą miały przedrostek BP od angielskiego blueprint);

- dodaj nową warstwę (Layer→Add Layer…, p. str. 290) o nazwie Drawing, ponad aktualną (Above current);

- uczyń warstwę Drawing warstwą aktualną (por. str. 289);

Narysuj na warstwie Drawing (por. str. 297) linie łączenia blach na stateczniku pionowym (Rysunek 3.1.5):

Rysunek 3.1.5 Narysowanie krawędzi blach poszycia na stateczniku pionowym

W razie czego pamiętaj, że na planach poprawny obrys narysowaliśmy linią czerwoną (por. Tom I). Nie dziw się więc, że nie trzymam się oryginalnych, „czarnych” planów. Są w tym miejscu błędne. Narysuj krawędzie blach ciągłą, czarną linią o grubości 0.5 px (por. str. 298). Jej końcówki mogą wystawać za obrys (Rysunek 3.1.5).

Dodaj jeszcze jedną warstwę, pomiędzy warstwą Drawing i warstwą BP-Left. Nadaj jej nazwę Bkg-White. Umieścimy na niej pomocniczy kwadrat, który będzie służył jako tło dla linii. Aby był widoczny, pozostaw mu cienką ramkę (0.25 px). Na razie kwadrat tła nie obejmuje całego rysunku, a tylko ten fragment, który przeniesiemy jako teksturę do Blendera (Rysunek 3.1.6):

Rysunek 3.1.6 Obszar obrazu do przeniesienia do Blendera

Obwódce kwadratu tła tekstury nadałem kolor niebieski (by łatwo odróżnić jego kontur od linii samej tekstury).

Zapisz (File→Save) rysunek Inkscape do pliku o nazwie, powiedzmy, p40\textures\6.01\texture.svg (robimy to po to, by nie stracić przypadkiem dotychczasowej pracy). Następnie zaznacz kwadrat z warstwy Bkg-White i wywołaj polecenie File→Export Bitmap (z ustawieniami: Export area: Selection, 180 dpi — por. str. 287). Zapisz plik jako p40\textures\6.01\blueprint.png. Powinieneś uzyskać taki sam rozmiar tego obrazu (w pikselach), jak zaznaczony na rysunku kwadrat — 512 x 512px.

Teraz wróćmy do Blendera. Zaznacz statecznik pionowy, przejdź do ustawień materiału (Node Editor), i dodaj do niego pierwszą teksturę (poleceniem Add→Texture→Image Texture — por. str. 466). Przypisz do tego węzła plik blueprint.png, a sam węzeł przyłącz do barwy Specular shadera Gloss Paint (Rysunek 3.1.7a):

Rysunek 3.1.7 Tekstura (barwy Specular), przypisana do materiału B.Skin.Test

Efekt jest na razie zaskakujący: cały statecznik wypełnił się kolorem niebieskim (Rysunek 3.1.7b)! Co się tutaj właściwie stało? No cóż, nie wskazaliśmy Blenderowi metody, jakiej ma użyć do nałożenia dwuwymiarowego obrazu na trójwymiarową siatkę. (Nie podłączyliśmy niczego do wejścia Vector węzła Image Texture). W tej sytuacji Blender użył tzw. współrzędnych UV siatki (więcej o nich opowiem później — na str. 70). A że domyślnie wszystkie te współrzędne są równe 0, stąd na całym stateczniku rozpostarty został pojedynczy piksel obrazu blueprint.png, znajdujący się w punkcie X=0, Y=0: fragment niebieskiej ramki (por. Rysunek 3.1.6)!

Dobrze, więc dodajmy do naszego schematu źródło różnych współrzędnych tekstur: węzeł Texture Coordinate. W poprzednim rozdziale używaliśmy do mapowania panoram współrzędnych jego wyjścia Generated (por. str. 46), ale tutaj proponuję wykorzystać wyjście Object (Rysunek 3.1.8a, patrz także str. 516):

Rysunek 3.1.8 Efekt bezpośredniego nałożenia obrazu we współrzędnych Texture Coordinate:Object

Coś się zmieniło: cały statecznik został pokryty miniaturowymi obrazkami tekstury! (Rysunek 3.1.8b,c). Na pewno nie jest to jeszcze to, o co nam chodziło. Jednak przynajmniej widać, że tekstura jest nakładana na boki siatki, tak jak pokazywał to jak pokazuje to na str. 52, Rysunek 3.1.2. Gdy podstawowy kierunek jest poprawny, wystarczy wstawić pomiędzy Texture Coordinate i Image Texture dodatkowy węzeł Mapping. Posłuży nam do proporcjonalnego rozciągnięcia pojedynczego obrazu na całą powierzchnię statecznika (Rysunek 3.1.9):

Rysunek 3.1.9 Dopasowanie obrazu tekstury do statecznika za pomocą węzła Mapping

Parametry Location:X,Y oraz Scale:X,Y tego mapowania można ustalić metodą kolejnych przybliżeń (Rysunek 3.1.9a). Każda tych iteracji polega na zmianie skali (pamiętaj: im mniejsza skala, tym większy obraz!), po której następuje zmiana położenia (Location), kompensująca zmianę rozmiaru obrazu.

Muszę przyznać, że dopasowanie tej tekstury do modelu zajęło mi chwilę czasu. Pomocne okazały się linie charakterystyczne, umieszczone na planach. Najpierw dopasowałem odległość pomiędzy górną krawędzią owiewki statecznika i krawędzią wycięcia na wyważenie steru. To pozwoliło dobrać skalę (Scale:X i Scale:Y — jest w obydwu kierunkach identyczna) i ustalić położenie w pionie (Location:Y). Położenie w poziomie (Location:X) dobrałem na podstawie położenia krawędzi natarcia statecznika. Rezultat — odpowiednie przesunięcie i skalę mapowania — pokazuje Rysunek 3.1.9a). Rysunek 3.1.9b) przedstawia teksturę po dopasowaniu.

To tylko eksperyment z mapowaniem współrzędnych tekstury w trybie Object. W tym wprowadzeniu do tekstur nie chciałem od razu wprowadzać do rozwinięć siatki w przestrzeni UV. Później w większości przypadków będziemy wykorzystywali właśnie współrzędne UV, które omówimy później (na str. 70).

Fragmenty planów (czerwone linie) na obrazie blueprint.png ułatwiły nam poprawne dopasowanie tekstury do obiektu. Teraz czas je zakryć. Wróć na chwilę do Inkscape i zwiększ nieprzejrzystość (Opacity) warstwy Bkg-White do 100 (Rysunek 3.1.10a):

Rysunek 3.1.10 Przygotowanie i użycie tekstury z zakrytymi liniami planów.

Zapisz (File→Export Bitmap...) zaznaczony w Inkscape obszar do pliku, tym razem o nazwie texture.png. W Blenderze przypisz go, w miejsce blueprint.png, do węzła Image Texture. W rezultacie na powierzchni statecznika powinny pozostać tylko narysowane linie połączenia blach poszycia (Rysunek 3.1.10b).

Na razie same linie połączeń blach nie prezentują się zbyt okazale. Dodajmy do nich coś więcej — nity. Nit na rysunku powierzchni to małe kółko. Proponuję uzyskać ten efekt za pomocą linii kropkowej (Rysunek 3.1.11a):

Rysunek 3.1.11 Naniesienie linii nitów za pomocą linii kropkowych

Linie nitów rysuję na oddzielnej warstwie, którą nazwałem Rivets. Dla takich rozmiarów rysunku jak w tym przykładzie nadaję im szerokość 1 px. Wśród standardowych wzorów kropkowania, dostępnych w Inkscape, nie ma takiego, który pozwala uzyskać odpowiedni wzór „samych kółek”. Dlatego trzeba w oknie XML Editor zmienić w jednym miejscu styl linii (Rysunek 3.1.11b). Należy tam ręcznie zmodyfikować wartości atrybutu stroke-dasharray na „0.05, 3.05”. Od tej chwili nie możesz zmieniać właściwości tej linii w standardowym oknie Fill and Stroke, bo Inkscape zmieni styl linii na ciągłą. W tej sytuacji najprościej jest dodawać kolejne rzędy nitów poprzez skopiowanie jednej z poprzednio stworzonych linii. Szczegółowy opis rysowania nitów, wraz z uwagami na temat ich krzyżowania, znajdziesz na str. 319.

Alternatywną metodą uzyskania nitów jest napisanie ich jako tekstu, złożonego z samych spacji i znaków „●” (unicode - hex. 25CF). (O tym, jak tworzyć napisy w Inkscape — str. 315). Wzorcowe znaki „●” możesz skopiować do schowka z pliku source\textures\dots.txt (por. str. 20), a potem wkleić do Inkscape. Nadaj czcionce jakiś niewielki rozmiar — np. 3px (Rysunek 3.1.11a). W takim tekście możesz przesuwać nity dodatkowymi spacjami, gdy któryś z nich wypada nie tam, gdzie trzeba. To przydaje się w np. miejscach, gdzie linie nitów się krzyżują. (Ten sam efekt w liniach kropkowych uzyskasz lokalnie przerywając linię). W odróżnieniu od nitów uzyskanych z linii kropkowych, linie pisane jako tekst mogą mieć ciemną obwódkę. Wynika to z faktu, że możesz oddzielnie w nich sterować wypełnieniem (Fill), a oddzielnie — barwą i szerokością konturu (Stroke) (Rysunek 3.1.12):

Rysunek 3.1.12 Alternatywna metoda rysowania nitów: jako tekstu

Pochyłe linie nitów uzyskasz obracając tekst. Długość rzędu nitów regulujesz wklejając nowe fragmenty napisu, lub je usuwając. Gdy nity biegną wzdłuż linii krzywej — tak jak na krawędzi natarcia końcówki (Rysunek 3.1.12b) — wykorzystaj funkcję Text→Put on Path (str. 317). Wzorcowe krzywe, wzdłuż których wyginany jest tekst najlepiej umieść na oddzielnej warstwie (nazwij ją np. Helpers).

Nity uzyskane za pomocą tekstu mogą być przydatne, gdy będziesz tworzył jakieś dokładne tekstury o bardzo dużej rozdzielczości. Ich rysowanie jest nieco bardziej pracochłonne od linii kropkowych — szczególnie szwów nitów biegnących po krzywej. O wiele większą wadą rozwiązania opartego o ciągi tekstu jest problem z wydajnością Inkscape. Początkowo w pracy nad modelem używałem właśnie tej metody. Gdy kończyłem kompletny rysunek powierzchni P-40, ze wszystkimi warstwami i filtrami, zauważyłem wyraźne spowolnienie działania Inkscape. Każda zmiana warstwy lub powiększenia zajmowała mu sporo czasu. Po dłuższym przełączaniu warstw Inkscape kończył się z błędem krytycznym (na komputerze z 1 GB RAM, gdy program zaalokował nieco ponad 700MB RAM). Dlaczego? Okazało się, że przyczyną są nity, odwzorowane jako tekst. Testowo usunąłem z pliku Inkscape wszystkie klony warstwy Rivets, a później także samą warstwę. Spowodowało to zmniejszenie rozmiaru pliku rysunku o 40%, a zapotrzebowanie programu na RAM spadło o 50%. Inkscape bez tej warstwy zaczął działać całkiem normalnie (można powiedzieć, że „odzyskał dawny wigor”).

Do odwzorowania nitów radzę używać zmodyfikowanych linii kropkowych (tzn. rozwiązania przedstawianego przez Rysunek 3.1.11, a szczegółowo na str. 319). Inkscape wtedy nie spowalnia, a efekt na teksturach o zwykłej rozdzielczości jest taki sam jak dla nitów „tekstowych”.

Wygląda na to, że Inkscape nie jest zoptymalizowany do wyświetlania dużej liczby liter. Na pełnej teksturze przeciętnego myśliwca, jakim jest P-40, naliczyłem ok. 60 tysięcy nitów. Jeżeli przymierzasz się do modelu większego samolotu — np. bombowca — tych nitów będzie trzy lub cztery razy więcej. Odwzorowanie ich jako tekstu zupełnie zablokuje Inkscape, tym bardziej że obecnie ten program potrafi wykorzystać tylko jeden wątek procesora. Z drugiej strony — na teksturach o rozdzielczości 2048x2048, a nawet 4096x4096 px każdy nit zajmuje dosłownie kilka pikseli. Przy tak niewielkim rozmiarze rastra giną wszystkie szczegóły, jak cienkie obwódki wokół każdego „tekstowego” nitu.

Aktualny schemat i rezultat mapowania tekstury (512x512 px) przedstawia Rysunek 3.1.13a:

Rysunek 3.1.13 Obraz nitów — naniesiony na statecznik jako tekstura barwy

Na razie linie połączeń blach i nity wyglądają jak namalowane flamastrem na powierzchni statecznika. To dlatego, że są nałożone jako tekstura barwy. O tym, jak poprawnie nanosi się takie szczegóły, opowiem w następnej sekcji.

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-6.01.blend, a pliki tekstur — w folderze model\p40\textures\6.01\* (por. str. 20).

Podsumowanie

- Tekstur używamy, by zwiększyć realizm renderowanych obiektów. Idea jest prosta: zamiast modelować drobne szczegóły (np. nit po nicie) lepiej jest je narysować i nałożyć taki rysunek na model;

- Obrazy tekstur podłącza się w materiałach Cycles za pomocą węzła Image Texture. Można je podłączyć do dowolnego wejścia typu Color lub Value. Oznacza to że służą nie tylko do nanoszenia barw na powierzchnię modelu. Mogą np. także lokalnie zmieniać („modulować”) rozproszenie światła (parametr Gloss Paint:Roughness) czy intensywność odbłysków (Gloss Paint:Reflectivity);

- Sposób nałożenia obrazu tekstury na model określa się poprzez wybór jednej z metod dostarczanych przez węzeł Texture Coordinate. Czasami może być konieczne zmodyfikowanie tego wejścia za pomocą transformacji (węzła Mapping — por. str. 55).

- Obrazy do tekstur można przygotować w Inkscape (w szczególności drobne detale techniczne — str. 53). Inne elementy, jak np. plamy i zabrudzenia, łatwiej będzie „malować” w Gimpie. Czasami będziemy po kolei wykorzystywać obydwa programy.

- Do szybkiego nałożenia linii nitów na rysunek w Inkscape najlepiej użyć specjalnych linii kropkowych (str. 56). Jeżeli chcesz je odtworzyć bardzo dokładnie, można użyć w tym celu odcinków tekstu, w których każdy nit to pojedynczy znak „●” (unicode — hex. 25CF) (str. 57). Odstępy pomiędzy nitami to spacje. Jednak użycie tekstu bardzo obciąża procesor — do tego stopnia, że zmieszczenie kompletnego obrazu powierzchni na jednym rysunku może okazać się niemożliwe.

3.2  Tekstury nierówności

Tekstury można użyć nie tylko do „rysowania” po powierzchni modelu! Spróbuj obraz przygotowany w poprzedniej sekcji podłączyć do wejścia Displacement węzła Material Output (Rysunek 3.2.1a):

Rysunek 3.2.1 Ten sam obraz, ale użyty jako „mapa nierówności” (Displacement) .

Coś się zmieniło, prawda? W miejscu każdej linii pojawiła się szczelina, a nitu — wgłębienie (Rysunek 3.2.1b). Aby sterować intensywnością tego efektu, wstaw za węzłem tekstury węzeł Math:Multiply (Rysunek 3.2.2):

Rysunek 3.2.2 Zmniejszenie intensywności tekstury nierówności

Jeżeli odwrócić barwy obrazu tekstury za pomocą pomocniczego węzła Invert (Rysunek 3.2.3a), wówczas ciemne obszary staną się wypukłe. W ten sposób możesz uzyskać efekt zwykłych nitów (Rysunek 3.2.3b):

Rysunek 3.2.3 Uzyskanie wypukłych nierówności

Węzeł Invert, użyty w schemacie który przedstawia Rysunek 3.2.3, używaj wszędzie tam gdzie potrzebujesz matematycznej operacji (1-x), a wartości x są z przedziału od 0.0 do 1.0.

Rysunek 3.2.4 Zasada działania tekstury nierówności

Poszycie, jakie pokazuje Rysunek 3.2.2b) Rysunek 3.2.3b), wygląda jak na plastikowym modelu samolotu. Prawdziwy P-40 miał nity z tzw. „wpuszczanym łbem” , nie wystające ani nie zagłębione w powierzchnię blachy[1]. Były przez to o wiele mniej widoczne, niż szczeliny łączenia fragmentów poszycia[2]. (Widoczność takich nitów wynika bardziej z gromadzenia się kurzu i innych zabrudzeń wokół ich krawędzi. Stają się także bardziej widoczne na różnych obtarciach lub na wypolerowanych, metalowych powierzchniach. Na tych ostatnich często z powodu innego odcienia materiału).

Musimy poprawić nasz rysunek, aby odwzorować te niuanse. Przy okazji przygotujemy go pod jednoczesne odwzorowanie i wypukłości, i wklęsłości. Będzie to możliwe, jeżeli użyjemy tła o naturalnym odcieniu 50% szarości, zamiast bieli. Barwę tła traktuj jako „poziom odniesienia”. Wszystko to, co jest jaśniejsze — pojawi się jako wypukłość, a co ciemniejsze — jako zagłębienie (Rysunek 3.2.4).

Rozbudujmy nasz plik Inkscape o kolejne warstwy:

- Rivets: umieść ją pod warstwą Drawing. Przenieś na nią (Shift-PgDn — p. str. 324) wszystkie narysowane nity. Zmniejsz nieprzejrzystość tej nowej warstwy na 45%;

- Bkg-Grey: umieść ją pod warstwą Drawing. Skopiuj (Ctrl-D — p. str. 318) na nią biały prostokąt tła (z warstwy Bkg-White) i zmień jego intensywność na 50% (w zakładce barw Fill:HSL ustaw L na 128 — por. str. 298);

Dodatkowo: zmień nazwę dotychczasowej warstwy Drawing na Lines, bo pozostały na niej same linie. Rysunek 3.2.5 pokazuje rezultat, jaki powinieneś osiągnąć:

Rysunek 3.2.5 Bardziej poprawna mapa nierówności .

Nity na rysunku są tylko o 7% ciemniejsze od tła. (Lepiej wyglądają jako odrobinę zagłębione, niż odrobinę wypukłe). Powróćmy więc do mapowania nierówności jako wklęsłych (czyli bez węzła Invert — Rysunek 3.2.6a):

Rysunek 3.2.6 Mapa nierówności ze zróżnicowaną głębokością szczelin i nitów

Szczeliny pomiędzy panelami poszycia są tak samo głębokie jak poprzednio (por. Rysunek 3.2.6b i Rysunek 3.2.2b ze str. 59). Jednocześnie zmniejszyła się głębokość nitów (bo teraz ich odcień nie różni się specjalnie od poziomu szarości tła). W efekcie widać je tylko na odpowiednio podświetlonych fragmentach statecznika (Rysunek 3.2.6c). Na innych zanikają.

Nie staraj się odtworzyć rzędów wpuszczanych nitów tak wyraźnie jak na plastikowych modelach samolotów. Lepiej przyjrzyj się, jak wyglądają (a czasami właśnie ich w ogóle nie widać!) na zdjęciach.

Do tej pory na naszej mapie nierówności krawędzie paneli były modelowane za pomocą wklęsłego „rowka”. Jest to całkiem dobre przybliżenie rzeczywistego poszycia. W dodatku łatwe do wykonania: wystarczy narysować ciemne linie wzdłuż każdego połączenia. Stosuj ją, jeżeli nie chcesz za głęboko wchodzić w detale.

Rysunek 3.2.7 Zbliżenie oryginalnego fragmentu kadłuba P-40

Jeżeli jednak chcesz dopracować ten szczegół, to powinieneś uwzględnić sposób łączenia paneli poszycia stosowany we wszystkich samolotach z tego okresu: „na zakładkę” .

Popatrz zresztą sam na zbliżenie fragmentu ogona muzealnego P-40B (Rysunek 3.2.7). Z bliska widać wyraźnie grubość każdego fragmentu poszycia. Jeżeli nawet w silnym świetle lampy błyskowej jakiś fragment połączenia rzeczywiście wygląda na „rowek”, to to wrażenie szybko znika po przyjrzeniu się dalszej części tego samego szwu.

Aby odwzorować łączenie blach „na zakładkę”, linie połączenia zastąpiłem złożeniem paneli wypełnionych odpowiednim gradientem. To właśnie kontrast pomiędzy lewym i prawym brzegiem tych obszarów tworzy na modelu efekt „zakładki”. Panele umieściłem na warstwach Panel H i Panel V. Dodatkowe elementy, które są nałożone „na wierzch wszystkiego” (jak blacha na końcówce statecznika) są na warstwie Overlay. Do ich wypełnienia użyłem odcienia 90% bieli (L=232) (Rysunek 3.2.8):

Rysunek 3.2.8 Odwzorowanie łączenia „na zakładkę” za pomocą gradientów

Szczegółowe wskazówki, jak odwzorować w ten sposób poszycie samolotu, znajdziesz na str. 330 - 335.

Warstwę Lines z dotychczas wykorzystywanymi czarnymi liniami podziału blach także zachowałem, ale wyłącznie na potrzeby innych tekstur.

Rysunek 3.2.9 przedstawia uzyskany rezultat: dla połyskliwej, „srebrnej” powierzchni (a) i dla matowej (b):

Rysunek 3.2.9 Rezultat na powierzchni modelu

Zwróć uwagę, że to łączenie blach „na zakładkę” wydaje się lepiej wyróżniać poszczególne fragmenty poszycia na matowej powierzchni (Rysunek 3.2.9b). To ważne, bo kamuflaż samolotu był nanoszony farbami matowymi. Na powierzchni połyskliwej, takiej jak ta pokazywana przez Rysunek 3.2.9a, krawędzie paneli czasami giną w odbiciach otoczenia.

Rysunek 3.2.10 Przykład wygięcia poszycia wzdłuż linii nitów

To jeszcze nie koniec „kosmetyki” naszej testowej powierzchni. Blacha poszycia jest zawsze trochę wygięta wzdłuż linii nitów, tworząc pomiędzy nimi charakterystyczne wybrzuszenia. Ten efekt pokazuje Rysunek 3.2.10.

Należy podkreślić, że egzemplarz pokazany na ilustracji to maszyna odrestaurowana. Seryjne P-40, gdy opuszczały zakłady Curtiss, miały o wiele gładsze poszycie. Takie nierówności pojawiały się później, w trakcie eksploatacji.

Aby je odtworzyć, przygotujemy teraz drugi obraz tekstury. W źródłowym rysunku Inkscape dodałem pod warstwą Rivets warstwę Shadows. To jasnoszare (18% — L = 208) linie o szerokości 3px (Rysunek 3.2.11):

Rysunek 3.2.11 Przygotowanie drugiej tekstury nierówności

Połączyłem linie z warstwy Shadows w jedną grupę i nadałem im rozmycie (Blur) = 2 (Rysunek 3.2.12):

Rysunek 3.2.12 Rozmycie wgłębień pod nitami

Warstwy Rivets i Shadows, wraz z białym tłem (Bkg-White) zapisałem do pliku rastrowego o nazwie blur.png.

Aby uzyskać efekt stopniowego rozmycia, wczytałem plik blur.png do Gimpa (Rysunek 3.2.13). GIMP umieści zawartość tego pliku na domyślnej warstwie o nazwie blur.png. Zmieńmy jej nazwę na Background. Następnie Skopiuj warstwę Background w nową (Layer→Duplicate Layer) (Rysunek 3.2.14):

Rysunek 3.2.13 Obraz blur.png w GIMP.

Rysunek 3.2.14 Obraz, powielony na nowej warstwie.

Zawartość nowej warstwy poddałem operacji Filters→Blur→Gaussian Blur. Zastosowałem rozmycie o promieniu (Gaussian Blur:Blur Radius) = 5. (Więcej na temat rozmycia metodą Gaussa w GIMP znajdziesz na str. 261). Zmieniłem nazwę rozmytej warstwy na Blur05.

W wyniku rozmycia uzyskałem taki rezultat, jaki pokazuje Rysunek 3.2.15a):

Rysunek 3.2.15 Złożenie obrazu oryginalnego (ostrego) i rozmytego za pomocą operatora Multiply.

Warstwa Blur05 była nieprzejrzysta. Wystarczyło jednak tylko zmienić sposób jej połączenia z warstwami leżącymi pod spodem (Layers:Mode) z Normal na Multiply (Rysunek 3.2.15b). Mode= Multiply sprawiło, że na obrazie pojawią się także nity i linie z leżącego pod spodem oryginalnego obrazu (Rysunek 3.2.15c).

Szczegóły z warstwy Background były jednak zbyt wyraźne na tle rozmytej warstwy Blur05 (Rysunek 3.2.15c). Aby temu zaradzić, wstawiłem do rysunku nową warstwę (Layer→New Layer, por. str. 232), wypełnioną białym kolorem tła (Fill Type:Background color). Nadałem jej nazwę Filter i umieściłem zaraz ponad Background (Rysunek 3.2.16):

Rysunek 3.2.16 Użycie jednolitej, białej warstwy Filter, o częściowej przejrzystości, do rozjaśnienia obrazu z Background.

Gdy zmniejszyłem nieprzejrzystość warstwy Filter (Opacity — p. Rysunek 3.2.16) do 80-85% — uzyskałem właściwy odcień elementów z warstwy Background.

Następnie wstawiłem do rysunku i poddałem rozmyciu kolejne kopie warstwy Background. Powstały w ten sposób warstwy Blur10 i Blur25 (Rysunek 3.2.17):

Rysunek 3.2.17 Kolejne rozmycia, dodane do obrazu Blur.

Do rozmycia każdej z nich używałem Gaussian Blur z coraz większy promieniem: 10px (Blur10) i 25px (Blur25). Wszystkie „rozmyte” warstwy łączyłem resztą obrazu tak samo jak warstwę Blur05 — trybem Multiply. Rezultat — obraz ze stopniowo rozmywającymi się liniami — przedstawia Rysunek 3.2.17.

Na wszelki wypadek (to, co robimy w tej sekcji to przecież tylko test!) zapisz (File→Save As) obraz Blur do pliku Gimpa: blur.xcf. Dzięki temu nie stracimy informacji o warstwach i innych szczegółów, które w nim umieściliśmy. Dodatkowo, zapisz kopię tego obrazu (File→Export As) jako blur.png. (Nadpisz oryginalny plik). Ten właśnie obraz rastrowy wykorzystamy teraz w Blenderze.

Podstawmy blur.png do naszego schematu jako drugą teksturę nierówności (Rysunek 3.2.18):

Rysunek 3.2.18 Podłączenie drugiej tekstury z „rozmytym” obrazem nierówności (blur.png)

Nowa tekstura to kolejny węzeł Image Texture. Jest podłączony do tych samych współrzędnych mapowania (wejścia Vector), co pierwszy. Barwy z obydwu tekstur traktuję jako współczynniki (bo są odcieniami szarości) i połączyłem za pomocą Math:Multiply. Za tym nowo dodanym węzłem pozostawiłem poprzednią operację mnożenia (Multiply) przez stałą. W ten sposób jej wartość (Multiply:Value) nadal służy do regulowania intensywności (głębokości) wszystkich nierówności (Rysunek 3.2.19):

Rysunek 3.2.19 Rezultaty pomocniczej tekstury nierówności (blur.png) w zależności od intensywności (Multiply:Value)

Rysunek 3.2.19a) przedstawia rezultat na próbnym renderze uzyskany dla typowych, umiarkowanych nierówności. Gdy jednak jest to potrzebne, możesz zwiększyć intensywność tekstury, wyginając niemiłosiernie całą powierzchnię Rysunek 3.2.19b). Jeżeli chciałbyś, mógłbyś dodać także w GIMP do tekstury blur.png parę nieregularnych wgnieceń. Może nie na stateczniku pionowym (bo to najmniej prawdopodobne miejsce), ale np. na pokrywach komór amunicyjnych lub okapotowaniu silnika.

Dlaczego takie zagłębienia wzdłuż nitów zamodelowałem oddzielną teksturą, a nie umieściłem ich jako elementu obrazu pierwszej? Przecież mógłbym obydwa obrazy — texture.png i blur.png — połączyć jako dwie oddzielne warstwy trybem Multiply w GIMP, i zapisać uzyskany rezultat.

Przyczyn jest kilka:

- użycie dwóch tekstury pozwala na oddzielne sterowanie intensywnością każdego z obrazów. (Co prawda — nie w takim schemacie jak ten przedstawiony przez Rysunek 3.2.18, ale o tym za chwilę);

- pomocnicza tekstura z rozmytym obrazem nierówności może mieć mniejszą rozdzielczość od podstawowej tekstury nierówności;

Na schemacie, który przedstawia Rysunek 3.2.18, zastosowaliśmy do sterowania intensywnością tekstur węzeł Math:Multiply. Mnożenie przez stałą z zakresu 0..1 przy okazji „spłaszczenia” obrazu zawsze go przyciemnia (por. str. 578). To nie ma specjalnego znaczenia, dopóki wykorzystujemy pojedynczą teksturę nierówności. Jednak efekt przyciemnienia uniemożliwia stosowanie takich węzłów do niezależnego sterowania intensywnością tekstur łączonych przez węzeł Multiply. Aby sterować niezależnie głębokością podstawowych nierówności (z pliku texture.png) i wygięć blachy (z pliku blur.png) trzeba zamiast mnożenia przez stałą zastosować inne rozwiązanie: np. węzeł Color:Mix (Rysunek 3.2.20):

Rysunek 3.2.20 Materiał z niezależnym sterowaniem intensywnością każdej z tekstur nierówności

Zwróć uwagę, że obraz tekstury jest w nich użyty w charakterze współczynnika Fac (Rysunek 3.2.20). Zasadę działania węzła w tej roli przedstawia Rysunek 3.2.21a), a rezultat — Rysunek 3.2.21b):

Rysunek 3.2.21 Oddzielne sterowanie intensywnością tekstury blur.png

Dla zwiększenia przejrzystości schematów proponuję stworzyć na bazie węzła Color:Mix grupę Moderate (Rysunek 3.2.22, por. także str. 508):

Rysunek 3.2.22 Wewnętrzna konstrukcja pomocniczej grupy Moderate

Rysunek 3.2.23 przedstawia zmodyfikowany schemat materiału, wykorzystujący do sterowania teksturami nierówności węzły Moderate:

Rysunek 3.2.23 Zmodyfikowany schemat, wykorzystujący grupy Moderate

Uważam, że sterowanie nierównościami za pomocą parametru Moderate:Range jest o wiele prostsze i bardziej intuicyjne niż modyfikacja intensywności barwy Color1 w węzłach Color:Mix (porównaj Rysunek 3.2.20 i Rysunek 3.2.23)[3]! Zmodyfikowany schemat pozwala wygodnie sterować stopniem „eksploatacyjnego pogięcia blachy” na naszym modelu (Rysunek 3.2.24):

Rysunek 3.2.24 Sterowanie wygięciami powierzchni

Nowe P-40 po opuszczeniu fabryki mogły mieć taką powierzchnię, jak ta którą przedstawia Rysunek 3.2.24a). Po wielu latach intensywnej eksploatacji blacha na bardziej obciążonych miejscach samolotu (np. skrzydłach) mogła wyglądać tak, jak przedstawia to Rysunek 3.2.24b). (Właściwie wtedy należy taką maszynę złomować).

Nasz test będziemy jeszcze kontynuować w następnej sekcji (3.3), gdzie zajmiemy się zagadnieniem rozwijania teksturowanych powierzchni. W istocie rzadko kiedy zdarza się, że teksturę można dobrze nałożyć takim płaskim mapowaniem, jakie stosowaliśmy do tej pory (por. str. 52, Rysunek 3.1.2). Dalszą poprawę odwzorowania drobnych szczegółów powierzchni uzyskamy wykorzystując teksturę rozpraszania światła (Ref). Taka tekstura pomaga odwzorować efekt zmiany połyskliwości wywołanych przez drobne zanieczyszczenia, gromadzących się w każdej nierówności poszycia samolotu. Omówimy ją w kolejnej sekcji tego rozdziału.

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-6.02.blend, a pliki tekstur — w folderze model\p40\textures\6.02\* (por. str. 20).

Podsumowanie

- Celem tej sekcji było wprowadzenie do zagadnień związanych z teksturami nierówności. Wykorzystujemy je do odtworzenia szczegółów powierzchni samolotu. Rozwiązanie, które uzyskaliśmy, składa się na razie z dwóch tekstur:

1. podstawowej tekstury nierówności, zawierającej ostry i dokładny rysunek „technicznych” nierówności na poszyciu: połączeń blach, nitów. W tym teście był to obraz texture.png (w modelu użyjemy obrazu o innej nazwie);

2. dodatkowej tekstury nierówności, bazującej na rozmytym obrazie tekstury 1. Ta tekstura odpowiada za „kosmetyczne” efekty dodatkowe, np. nieznaczne pofałdowania blachy W naszym teście to obraz blur.png;

- Bazową barwą dla tekstur nierówności powinien być neutralny szary (50%). Elementy wypukłe są rysowane jako jaśniejsze, a wklęsłe — ciemniejsze (trochę tak, jak poziomice na mapie — str. 60);

- Podstawową teksturę nierówności najprościej jest narysować w Inkscape. Do odwzorowania łączenia blach „na zakładkę” można użyć obszarów wypełnionych gradientem (str. 62);

- W konstrukcjach lotniczych z lat czterdziestych XX w. były szeroko stosowane nity z łbem wpuszczanym. Takie nity są mało widoczne na poszyciu kadłuba (por. str. 61);

- Aby stworzyć typowe wgłębienia na nitowanym poszyciu (str. 63), można użyć obrazu nitów i linii szwów „rozmytych” metodą Gaussa w Inkscape. W celu uzyskania bardziej płynnego przejścia można ten obraz poddać dodatkowym rozmyciem w Gimpie (str. 64 — 65);

- Do niezależnej regulacji wpływu dwóch tekstur nierówności zamiast węzła Math:Multiply lepiej jest użyć węzła Color:Mix (str. 66). Dla większej przejrzystości schematu warto „obudować” go pomocniczą grupą. Proponuję nazwać ją Moderate (str. 67 - 68). To wyspecjalizowany węzeł do zmiany intensywności tekstur monochromatycznych — takich jak tekstury nierówności czy rozpraszania światła (Ref);

- Każdą teksturę nierówności warto narysować z dużym kontrastem pomiędzy obszarami jasnymi (wypukłości) i ciemnymi (wgłębienia). Potem zawsze można ją dowolnie „spłaszczać” węzłem grupy Moderate. (Osłabienie zbyt silnego efektu zazwyczaj nie jest problemem. Kłopot zaczyna się wówczas, gdy włączyłeś już wszystko co mogłeś, a rezultat wciąż jeszcze jest zbyt słaby. Takich sytuacji można uniknąć, z góry zakładając w komponowanym w Inkscape lub GIMP obrazie odpowiednią nadmiarowość).

- Podczas rysowania należy za to zwracać uwagę na odpowiednie proporcje głębokości poszczególnych elementów obrazu (np. jasność nitów i krawędzi paneli poszycia samolotu);

[1] (str. 60) Takie nity były w powszechnym użyciu od początku lat czterdziestych XX w. Na linii montażowej Curtissa wprowadzono je po raz pierwszy wraz z uruchomieniem produkcji seryjnej P-40. P-36 miał jeszcze poszycie z nitami wypukłymi.

[2] (str. 60) Blachy P-36/P-40 były w istocie łączone „na zakładkę”, a nie „na styk”, jak przedstawia je nasza mapa nierówności. Odwzorowanie takiej powierzchni jest jednak bardziej skomplikowane od prostego rysowania linii (wymaga użycia gradientów — zob. str. 330).

[3] (str. 68) Takie i podobne „wyspecjalizowane” węzły zdecydowanie poprawiają czytelność schematu materiału. W chwili, gdy tworzysz go w Node Editor, pamiętasz o każdym parametrze: co zmienia i w jaki sposób. Przypuszczam jednak, że gdy do tego samego schematu materiału zajrzysz po dłuższej przerwie (powiedzmy: kilku miesięcy, albo roku), to może wydać Ci się zupełnie niezrozumiały! W efekcie będziesz musiał tarcić czas na dochodzenie do tego, co już wcześniej wymyśliłeś. Dlatego zachowanie przejrzystości w układzie węzłów jest tak ważne: pozwala później nie tracić godzin lub dni niepotrzebnej pracy. Dodatkowo zmusza do krytycznej analizy własnej pracy, a to często skutkuje poprawieniem i uproszczeniem całości!

3.3  Rozwinięcie w przestrzeni UV

Jak nałożyć teksturę nierówności na powierzchnię o tak skomplikowanym kształcie, jak ta, którą pokazuje Rysunek 3.3.1? Jak uzyskać rezultat, który pokazuje Rysunek 3.3.2?

Rysunek 3.3.1 Owiewka stateczników — powierzchnia do nałożenia tekstury.

Rysunek 3.3.2 Owiewka po nałożeniu tekstury.

Gdybyś próbował ten efekt osiągnąć prostym rzutowaniem, które stosowaliśmy w poprzedniej sekcji, obrazy śrub wokół statecznika pionowego lub poziomego zamieniłyby się w rozmyte linie. (Wystąpiłoby to na powierzchniach równoległych do kierunku nałożenia tekstury). Tak złożony kształt kwalifikuje siatkę do „mapowania” poprzez rozwinięcie powierzchni na płaszczyźnie UV. (Na str. 523 znajdziesz wyjaśnienie, co to jest przestrzeń UV i rozwinięcie siatki w tej przestrzeni).

Przełącz się w tryb edycji siatki, zaznacz wszystkie wierzchołki, i rozwiń siatkę (skrótem U lub poleceniem Mesh→UV Unwrap→Unwrap: szczegóły — patrz str. 417). Rysunek 3.3.3 pokazuje, w oknie UV/Image Editor, rezultat operacji:

Rysunek 3.3.3 Rozwinięcie siatki w przestrzeni tekstury (UV)

(Krótkie wprowadzenie do posługiwania się oknem UV/Image Editor znajdziesz na str. 525). Rozwinięcie, jakie uzyskaliśmy, mogłoby w zasadzie wystarczyć, aby poprawnie „zmapować” teksturę z tak drobnymi detalami, jak śruby. Ale tylko „w zasadzie”. Siatka UV, którą przedstawia Rysunek 3.3.3, ma kilka wad:

- zajmuje za dużą powierzchnię. Docelowo będziemy się starać „upchać” jak najwięcej obiektów na jak najmniejszej teksturze. Nie możemy sobie pozwolić na taką rozrzutność, jak stosunkowo niewielki detal, rozwinięty w coś, co przypomina gwiazdę.

- pod taki kształt trudno jest „podstawić” odpowiedni rysunek z planów samolotu. To utrudnia naniesienie na rozwiniecie linii śrub, bo trzeba coś na chwilę obrócić — albo plan, albo rozwinięcie siatki.

Spróbujmy jakoś zwinąć naszą siatkę z czegoś, co przypomina literę „K” , w kształt zbliżony do litery „E”. Wykorzystamy w tym celu typowe narzędzia do edycji siatki w Blenderze: „szpilki” (czyli przypinanie — Pin) oraz rozwijanie (E, Unwrap). Opis obydwu poleceń znajdziesz na str. 536.

Upewnij się, że w oknie 3D View masz zaznaczoną całą siatkę, i wyłącz w nagłówku okna UV/Image Editor tryb synchronizacji selekcji ( — por. str. 527). Włącz tryb Live Unwrap (UVs→Live Unwrap). Zaznacz i przypnij (P, Pin — p. str. 536) rząd wierzchołków biegnący wzdłuż statecznika pionowego (Rysunek 3.3.4a). Ustaw kursor 2D w okolicy krawędzi natarcia statecznika i przestaw oś transformacji (Pivot) edytora UV w tryb 2D Cursor (.). Teraz zaznacz tylko górną połowę przypiętych wierzchołków, i zacznij ją obracać (R, szczegóły — str. 533) (Rysunek 3.3.4b):

Rysunek 3.3.4 Poprawianie rozwinięcia za pomocą „przypiętych” wierzchołków i dynamicznego rozwijania

Widzisz? Reszta siatki podąża za „przyszpilonymi” wierzchołkami, jak gdyby była skrawkiem elastycznego materiału. To bardzo wygodne, prawda? W ten sam sposób obróć dolną część przypiętej krawędzi. Owiewka nie jest zupełnie symetryczna, więc na pewno zauważysz, że po ustawieniu obok siebie, dolna krawędź jest nieco krótsza. Dopasuj ją do górnej, zmieniając skalę (S, więcej — str. 534) względem kursora, wzdłuż osi X (Rysunek 3.3.4c).

W podobny sposób, najpierw przypinając kluczowe krawędzie, a potem je obracając, przesuwając (G — szczegóły str. 532) i skalując, zmień okolice statecznika poziomego (Rysunek 3.3.5):

Rysunek 3.3.5 Poprawianie rozwinięcia krawędzi statecznika poziomego (w kształt zbliżony do litery „E”).

Rysunek 3.3.5c pokazuje rezultat. Mówiąc szczerze, to rozwinięcie wymaga jeszcze dalszych poprawek: trzeba wyprostować pofalowane krawędzie, poprawić wzajemne proporcje wycięcia na statecznik poziomy i statecznik pionowy. Dodatkowym utrudnieniem brak symetrii tej siatki — musisz każdą poprawkę wykonać dwa razy — u góry i u dołu.

A może istnieje jakiś szybszy sposób uzyskania w miarę regularnego rozwinięcia o założonym kształcie litery „E”? Jak najbardziej! Tylko trzeba inaczej zacząć. Na trop tego rozwiązania skierowała mnie właśnie dywagacja, jak by tu uzyskać od razu ładne obramowanie krawędzi statecznika. (Tych krawędzi, które tak pofałdowane pokazuje Rysunek 3.3.5c).

Usuń dotychczasowe „przyszpilenia” wierzchołków (Alt-P — por. str. 537). Upewnij się, że tryb synchronizacji selekcji z oknem 3D View jest wyłączony. Ustaw owiewkę w oknie 3D View w rzucie z góry. Zaznacz rząd wąskich ścian wokół krawędzi statecznika pionowego (tych, które udają „grubość blachy” — Rysunek 3.3.6a):

Rysunek 3.3.6 Rzutowanie krawędzi statecznika pionowego na płaszczyznę UV.

Wykonaj proste rzutowanie (Mesh→UV Unwrap→Project From View — p. str. 418) zaznaczonych ścian na powierzchnię UV. Rezultat obróć o -90º, aby obraz krawędzi leżał poziomo, a nie pionowo (Rysunek 3.3.6b). Na koniec „przypnij” wierzchołki tej krawędzi. (Blender będzie pamiętał, że są przypięte, nawet wtedy, gdy nie będą wybrane).

Teraz przestaw okno 3D View na rzut z boku. Zaznacz na nim lewą i prawą krawędź statecznika poziomego (Rysunek 3.3.7a). Wykonaj rzutowanie tego paska ścian na płaszczyznę UV (Project From View). Rezultat przesuń do dołu (wzdłuż osi Y),aby znalazł się poniżejj kursora 2D (Rysunek 3.3.7b):

Rysunek 3.3.7 Rzutowanie krawędzi statecznika poziomego na płaszczyznę UV.

„Przypnij” (P) obydwie krawędzie do obrazu. Teraz musimy przerzucić symetrycznie tylko prawą krawędź statecznika na przeciwną stronę kursora (Rysunek 3.3.7b). Wyłącz więc z zaznaczenia w 3D View krawędź lewą, aby w oknie UV/Image Editor pozostała tylko prawa. Ściany lewej krawędzi przeskaluj wzdłuż osi Y (S,Y) o współczynnik -1.0 (najszybciej i najdokładniej — z wciśniętym Ctrl) względem kursora 2D, aby uzyskać rezultat jak na ilustracji. Pomiędzy krawędziami statecznika poziomego zostawiliśmy przestrzeń, w której wcześniej umieściłeś rzut statecznika pionowego (por. Rysunek 3.3.6b). Właściwie to można je jeszcze trochę rozsunąć (G, ściany prawej krawędzi do góry a lewej — do dołu).

Następnie zaznacz w 3D View całą siatkę. Rysunek 3.3.8a) pokazuje, co powinieneś zobaczyć w edytorze UV[1]. „Przyszpilone” wierzchołki siatki są tam, gdzie je zostawiłeś przed chwilą. Cała reszta ścian pozostała na swoich domyślnych miejscach (w rozwinięciu w literę „K”). Czy aby na pewno? Wystarczy tylko nacisnąć klawisz E (UVs→Unwrap), by ściany dopasowały się do przypiętych krawędzi (Rysunek 3.3.8b):

Rysunek 3.3.8 Dopasowanie reszty siatki do „przyszpilonych” krawędzi stateczników.

Osiągnęliśmy to stosunkowo niewielkim wysiłkiem — zamieniliśmy rozpostarte, zajmujące dużą powierzchnię rozwinięcie w „K” na małe, kompaktowe rozwinięcie w literę „E”. Jeżeli masz włączoną opcję UVs→Live Unwrap, to nawet nie musisz naciskać klawisza E. Siatka połączy się z „przyszpilonymi” krawędziami przy pierwszej próbie poruszenia jednej z nich.

Aby zmniejszyć deformację obrazu, który nałożymy na siatkę, warto ustalić długość krawędzi stateczników we właściwej proporcji (jak na planach). Nic nie stoi na przeszkodzie, by pod rozwinięcie UV podstawić rzut z boku (Rysunek 3.3.9a — szczegóły patrz str. 538):

Rysunek 3.3.9 Dopasowanie proporcji długości siatki do stateczników

Bazując na rysunku, załadowanym do UV/Image Editor, uzgodnij długości i wzajemne położenia krawędzi statecznika pionowego i poziomego. W związku z nieproporcjonalnym wydłużeniem rozwinięcia (spowodowanym nierównymi bokami rysunku rzutu z boku), do uzgodnienia stosuj tylko proporcjonalną zmianę skali i przesunięcie wzdłuż osi X (U). Rezultat uzgadniania przedstawia Rysunek 3.3.9b. Usunąłem już z niego podstawiony rzut z boku, więc siatka wróciła do właściwych proporcji (kwadratu).

Jeżeli chodzi o siatkę, to pozostały nam jeszcze tylko drobne operacje. Na przykład — zsunięcie i „przyszpilenie” zewnętrznych rzędów ścian, które odpowiadają grubości blachy owiewki — po lewej i prawej (Rysunek 3.3.10):

Rysunek 3.3.10 Wyrównanie i zmniejszenie dolnej krawędzi owiewki

Rysunek 3.3.11 Podstawienie obrazu do testowania deformacji rozwinięcia siatki

Najszybszą metodą takiego „wyprostowania” krawędzi do poziomu i pionu jest użycie poleceń z grupy Weld/Align (pod klawiszem W, więcej informacji — str. 541). Wyprostuj także — do linii pionowej — przednią krawędź (por. Rysunek 3.3.10, Rysunek 3.3.11).

Gdy wydaje Ci się, że rozwinięcie wygląda na ukończone — warto „rozłożyć” na siatce specjalny obraz testowej „szachownicy” (Image→New Image, New Image:UV Grid — patrz str. 539) . W oknie UV/Image obraz wygląda tak, jak to pokazuje Rysunek 3.3.11. Aby sprawdzić, czy rozwinięcie nie powoduje jakichś poważnych deformacji obrazu tekstury, zmień tryb wyświetlania w oknie 3D View z Solid na Textured. (Szczegóły znajdziesz na str. 539). Rezultat przedstawia Rysunek 3.3.12:

Rysunek 3.3.12 Obraz załadowany do okna UV/Image Editor, widoczny w widoku 3D (tryb wyświetlania Textured).

Po przełączeniu okna 3D View w tryb wyświetlania Textured, zobaczysz siatkę pokrytą obrazem aktualnie załadowanym w oknie UV/Image Editor. Musisz tylko na chwilę przełączyć renderer na Blendere Renderer.

Praca z siatką testową odbywa się na dwóch oknach (p. Rysunek 3.3.13). W 3D View oglądasz obiekt ze wszystkich stron i szukasz na nim jakichś poważnych zaburzeń obrazu „szachownicy”. Może to być np. większa dysproporcja rozmiaru poszczególnych kwadratów, albo wygięcie całego ich rzędu. Poprawiasz wtedy odpowiednio rozwinięcie siatki w UV/Image Editor, a potem znów patrzysz w okno 3D View, by się przekonać, czy wykonana poprawka była dostateczna. Pamiętaj, że na pewno nie uda Ci się uzyskać „idealnego” rozłożenia obrazu testowego, bez żadnych zakłóceń. To, co powinieneś osiągnąć, to rozsądny kompromis pomiędzy Twoim czasem a rezultatem rozwinięcia. Kompromis powinien zapewnić, że w istotnych miejscach (linii nitów, łączenia blach) obraz tekstury nie będzie w sposób widoczny zdeformowany (Rysunek 3.3.13):

Rysunek 3.3.13 Wykorzystanie obrazu UV Test Grid do poprawek rozwinięcia siatki w UV.

W czasie pracy z obrazem testowym możesz włączyć tryb synchronizacji selekcji (por. Rysunek 3.3.13). Pamiętaj jednak (abyś nie był zaskoczony): dopóki w oknie 3D View nie masz zaznaczonej choć jednej, pełnej ściany, żaden obraz nie pojawi się w oknie UV/Image Editor. (Dzieje się tak dlatego, że przypisania obrazu w Blenderze jest związane ze ścianami, a nie wierzchołkami czy krawędziami siatki).

Osobiście wolę poprawiać siatkę z wyłączonym trybem synchronizacji selekcji. Mam wtedy włączoną aktualizację siatki „na bieżąco” (Images→Live Unwrap Transform), i pewność, że nic mi jej potem przypadkowo nie przekształci.

Na szczęście nasze rozwinięcie okazało się wolne od większych błędów, i nie wymagało jakichś dużych poprawek. Rysunek 3.3.14 pokazuje ostateczny układ ścian w edytorze UV:

Rysunek 3.3.14 Rozwinięcie po kosmetycznych poprawkach, wprowadzonych w wyniku zastosowania obrazu UV Test Grid.

To rozwinięcie zapisz do pliku rastrowego (Image→Scripts→Save UV Layout, szczegóły — patrz str. 542). Nadaj mu nazwę uv.png. Umieść go w tym samym folderze, co plik texture.svg.

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-6.03.blend, a pliki z wyeksportowanymi rozwinięciami UV — w folderze model\p40\textures\6.03\* (por. str. 20).

Podsumowanie

- Poszczególnym ścianom siatki można przypisać dokładne położenie na powierzchni obrazu. Jest to tak zwane „rozwinięcie w wymiarach UV”, nazywane także krócej „rozwinięciem UV” (UV to względne wymiary obrazu — p. str. 523). Do edycji tego rozwinięcia służy okno UV/Image Editor (p. str. 525);

- Blender udostępnia wiele różnych metod rozwinięcia siatek. Znajdziesz je w trybie edycji, w menu Mesh→UV Unwrap (str. 70, 72). Spośród nich w tej książce będziemy najczęściej używać dwóch: Project From View i Unwrap;

- Siatki w UV powinny mieć możliwie małe wymiary i jak największe wypełnienie powierzchni. Dlatego należy starać się je rozwijać w coś, co układem przypomina okrąg, lub prostokąt. (W ten sposób będzie można lepiej wykorzystać powierzchnię wspólnych tekstur — zobacz przykład w następnej sekcji, na str. 79);

- Typową metodą dopasowywania siatki w edytorze UV jest przesuwanie (a także obracanie, skalowanie) kluczowych, „przypiętych” (Pin) wierzchołków. Reszta siatki dopasowuje się samoczynnie do ich nowego układu — „na żądanie” (UVs→Unwrap), lub na bieżąco (UVs→Live Unwrap) (str. 71);

- Unikaj poważnych przekształceń siatki w edytorze UV — zajmują dużo czasu. Najszybszą metodą uzyskania docelowego kształtu rozwinięcia jest stworzenie za pomocą „ogólnych” metod z menu Mesh→UV Unwrap (3D View, Edit Mode) jak najlepszego przybliżenia. Możesz nawet to zrobić, rozwijając siatkę fragmentami (por. str. 72). Potem, w edytorze UV dokonasz kilku kosmetycznych poprawek, i rozwinięcie gotowe!

- W oknie UV/Image Editor możesz „podstawiać” pod rozwinięcie obrazy, by dopasować jakieś istotne proporcje siatki do planów samolotu. Najlepiej, aby podstawiane obrazy były kwadratowe, bo inaczej siatka może zostać „rozciągnięta”, tak jak to jest pokazane na str. 73.

- Poprawność (brak deformacji) rozwinięcia siatki możesz sprawdzić za pomocą specjalnego obrazu „szachownicy” — UV Test Grid. Podglądając w oknie 3D View aktualne rozłożenie wzoru na siatce, możesz jednocześnie poprawiać kształt rozwinięcia w oknie edytora UV (str. 75);

- Rozwinięcie siatki możesz zapisać — zarówno w postaci rastrowej, jak i wektorowej (skryptem Save UV Layout). Takie rozwinięcie można wczytać do GIMP lub Inkscape, aby przygotować obraz tekstury dla tej siatki (str. 77);

[1] (str. 73) Zakładam, że przed wykonaniem rzutów z góry i z boku usunąłeś wstawione wcześniej szpilki i dokonałeś powtórnego rozwinięcia całości poleceniem Unwrap.

3.4  Tekstura nierówności — c.d.

Czas przygotować obraz nierówności dla rozwinięcia siatki wykonanego w poprzedniej sekcji. Otwórz plik texture.svg w Inkscape. Na razie wyłącz widoczność wszystkich warstw poza rzutem z boku (BP-Left). Dodaj jeszcze jedną warstwę, w której będziemy przechowywać referencje do rozwinięć UV. Nadaj jej nazwę — non omen — UV, i umieść poniżej warstwy Bkg-White (Rysunek 3.4.1):

Rysunek 3.4.1 Wstawienie obrazu rozwinięcia do pliku texture.svg

Wczytaj na warstwę UV wyeksportowany z Blendera obraz uv_B.360.TailFilet.png (File→Import, jako link). Dzięki temu Inkscape odnotowuje tylko, z jakiego pliku ma skorzystać, aby wyświetlić jego zawartość. Możesz się o tym przekonać, zaglądając do okna Image Properties (Rysunek 3.4.1). Dzięki takiemu podłączeniu wystarczy, że wyeksportujemy z Blendera zmienione rozwinięcie UV do pliku rastrowego — a jego obraz w rysunku Inkscape sam się uaktualni!

Obraz rozwinięcia zmniejsz (proporcjonalnie, z wciśniętym klawiszem Ctrl) i przesuń, aby ustawił się w odpowiednim miejscu planów (Rysunek 3.4.2). Potrzebujemy tak ustawić, by w odpowiednich miejscach narysować śruby, którymi była przymocowana owiewka do kadłuba i statecznika:

Rysunek 3.4.2 Obraz rozwinięcia siatki, po dopasowaniu do planów.

W rysunku Inkscape mamy już oddzielne warstwy na linie (Lines) i nity (Rivets). Teraz dodaj kolejną, na śruby: (Screws) . Sama owiewka zawierała ich kilkadziesiąt. (Demontaż statecznika na pewno nie był łatwą operacją!).

Gdzieś w ustronnym miejscu rysunku stwórz wzór śruby. Osobiście wybrałem na miejsce z takimi wzorcami prawy górny narożnik obrazu texture.svg (Rysunek 3.4.3a):

Rysunek 3.4.3 Rysunek śruby (a), sklonowany w odpowiednie miejsca mapy nierówności (b).

Na warstwie Screws narysowałem pierwowzór śruby (Rysunek 3.4.3a). Do rysunku wstawiłem także kolejną warstwę, o nazwie Bumps. Umieściłem na niej wzór wgłębienia blachy pod dokręconą śrubą (koło wypełnione gradientem). (Szczegółowy opis uzyskania takich detali mapy nierówności znajdziesz na str. 334 i 335). Po narysowaniu, złącz elementy wzorcowej śruby w grupę (Ctrl-G, Object→Group — patrz str. 325). Nadaj jej nazwę Screw01. (Potem dodamy tu kolejne wzory śrub, np. z łbem krzyżowym. Otrzymają nazwy Screw02, Screw03, …). Wzór śruby i wgłębienia zaznacz i sklonuj (Alt-D, Object→Clone→Create Clone — patrz. str. 318). Umieść klon w miejscu jednej ze śrub w rozwinięciu UV i dopasuj skalę (Rysunek 3.4.3b). Polecenie klonowania wywołaj tylko raz. Potem wstawiaj śruby, powielając rezultat klonowania zwykłym poleceniem Object→Duplicate (Ctrl-D) — aby nie klonować klonów. (To by stworzyło niepotrzebnie dodatkowe poziomy zagnieżdżenia w pliku SVG).

Na wszystkie siatki, do których jest przypisany materiał B.Skin.Test, Blender nakłada teksturę tą samą metodą. Dlatego, skoro już zamierzamy zacząć używać mapowania UV, musimy odpowiednio przygotować także siatkę statecznika pionowego. (Do tej pory używaliśmy w niej mapowania Object — por. str. 55). Na potrzeby naszego testu można ją rozwinąć najprostszą metodą: Project From View (Rysunek 3.4.4):

Rysunek 3.4.4 Mapowanie UV siatki statecznika pionowego.

(Szczegóły tej metody rozwinięcia znajdziesz na str. 418). W ostatecznym rozwinięciu całego modelu zrobimy to nieco inaczej, by prawidłowo „odwinąć” ścianki dźwigara i krawędzi natarcia.

Po rozwinięciu statecznika musimy uzgodnić rozwinięcia obydwu siatek, które będą używać tekstury. Chodzi tu o to, by się na siebie nie nakładały (Rysunek 3.4.5):

Rysunek 3.4.5 Uzgadnianie położenia siatek na wspólnej mapie UV

Do takiego uzgadniania bardzo przydatna jest w oknie UV/Image Editor opcja View→Draw Other Objects. Służy do wyświetlania w przestrzeni UV ścian innych obiektów, które są przypisane do tego samego obrazu (Rysunek 3.4.5, por także str. 539). Dlatego warto przypisać wszystkie ściany w edytorze UV do jednego obrazu — np. do obrazu Test [1]. Wówczas po zaznaczeniu kilku obiektów i przełączeniu jednego z nich w tryb edycji, zobaczysz w edytorze UV rozwinięcia wszystkich wskazanych w ten sposób siatek. Co prawda, zmieniać można tylko jedną z nich — tę należącą do obiektu aktywnego — ale to już mniejsza niedogodność.

Uzgodnione rozwinięcia siatek wyeksportuj z Blendera do postaci SVG. Aby ułatwić tę operację, przygotowałem wyspecjalizowany dodatek o nazwie Export to SVG (pełen opis znajdziesz na str. 542). Pozwala m.in. zapisać do pliku SVG wszystkie siatki aktualnie zaznaczonych obiektów (Rysunek 3.4.6):

Rysunek 3.4.6 Rezultat eksportu rozwinięcia UV do pliku SVG

Uzyskane z Blendera pliki SVG można bezpośrednio importować do warstwy UV pliku texture.svg. Jednak gdy zaczesz wczytywać tam kolejne rozwinięcia siatek o dużej liczbie ścian (takich jak skrzydła czy kadłub) spowoduje to coraz wolniejsze działanie Inkscape. Dlatego lepiej je gromadzić w pomocniczym pliku uv.svg.

Rysunek 3.4.7 przedstawia, o co chodzi w tym pomyśle z pomocniczym plikiem uv.svg:

Rysunek 3.4.7 Wykorzystanie pomocniczego pliku (uv.svg) do podstawienia obrazu rozwinięć UV

W Blenderze rozwijamy i uzgadniamy kolejne siatki modelu. Wiele z nich może mieć kilka alternatywnych mapowań UV (UV Maps — przekonasz się o tym w następnym rozdziale). Po uzgodnieniu położenia na obrazie rozwinięcia UV eksportujemy (za pomocą polecenia UVs→Export to SVG do tymczasowych plików *.svg. Zawartość tych plików wczytujemy (poleceniem File→Import lub po prostu „przeciągnij i upuść”) do zbiorczego rysunku uv.svg. Tam można poszczególne rozwinięcia podzielić na warstwy, odpowiadające istniejącym w naszym modelu nazwom map (rozwinięć) UV. Zalety zastosowania do eksportu rozwinięć wektorowego formatu SVG zamiast rastrowego PNG to:

- Łatwiejsze wprowadzanie późniejszy poprawek do rozwinięcia jednej lub kilku siatek: usuwasz ich stare rozwinięcia z uv.svg, po czym ponownie eksportujesz z Blendera i wczytujesz do uv.svg uaktualnione wersje;

- Pliki z rozwinięciami zapisane w formacie SVG zajmują o wiele mniej miejsca na dysku niż rastrowe obrazy PNG;

Zestawienie rozwinięć z pliku uv.svg wyeksportuj do obrazu rastrowego uv.png. Referencja (link) do tego obrazu powinien być umieszczony na warstwie UV pliku texture.svg. Zmiany w takim obrazie Inkscape odświeża automatycznie, gdy tylko na dysku pojawi się nowa wersja pliku. Pamiętaj tylko, aby eksportować do uv.png obraz rastrowy o wystarczającej rozdzielczości!

Po podstawieniu obrazu rozwinięć pod rysunek tekstury, można było nanieść w pliku texture.svg niezbędne poprawki (Rysunek 3.4.8):

Rysunek 3.4.8 Wprowadzenia poprawek w obrazie mapy nierówności (texture.svg)

Przesunąłem obraz śrub i ich wgłębień, aby trafiły na zmienione rozwinięcie siatki owiewki statecznika.

Przechowując wyeksportowane z Blendera obrazy rozwinięć UV w pomocniczym pliku uv.svg, i podstawiając do rysunku tekstury jego rastrowy obraz uv.png unikniesz spowolnienia pracy w Inkscape.

Wprowadźmy w tej sekcji parę zmian „organizacyjnych”, które przydadzą nam się przy dalszej pracy z teksturami. Nadajmy każdemu plikowi z obrazem tekstury przedrostek odpowiedni do jej typu. I tak teksturom nierówności nadajmy nazwy zaczynające się od nor_, a teksturom barwy — od col_. Obraz podstawowych nierówności, wykorzystywany przez materiał B.Skin.Test, nosił do tej pory nazwę texture.png. Od tej chwili ten plik będzie się nazywał nor_details.png. Uzyskujemy go bezpośrednio poprzez eksport z Inkscape (nie wymaga żadnej dodatkowej „obróbki” w Gimpie):

Rysunek 3.4.9 Podstawowa mapa nierówności (nor_details.png)

Rysunek 3.4.9a) pokazuje, które warstwy z pliku Inkscape biorą udział w tworzeniu obrazu. Rysunek 3.4.9b) pokazuje zawartość wyeksportowanego z Inkscape obrazu — nor_details.png. Rezultat jest bardzo szary, ze względu na barwę tła (kwadratu z warstwy Bkg-Grey). W takim pomniejszeniu, w jakim pokazuje go Rysunek 3.4.9b), giną drobne szczegóły, poza granicami łączenia blach. Rysunek 3.4.9c) pokazuje więc także powiększony fragment nor_details.png, na którym lepiej widać nity.

Obraz nor_details.png został złożony z następujących warstw źródłowego pliku Inkscape:

- Screws: zawiera śruby (występujące na owiewce usterzenia) — wzorzec i jego klony;

- Rivets: zawiera nity, odwzorowane jako czarne linie kropkowe; Ta warstwa ma bardzo małą nieprzejrzystość (Opacity — por. Rysunek 3.4.9a), ustaloną na 5%. W rezultacie nity są tylko o 5% ciemniejsze od tła, ponad którym się znajdują;

- Overlay: zawiera panele, które w prawdziwej konstrukcji były nałożone na pozostałe;

- Plane V: zawiera panele, które odpowiadają za pionowe (mniej więcej) krawędzie podziału;

- Plane H: będzie zawierał panele, które odpowiadają za poziome krawędzie podziału (na razie nie ma jeszcze ani jednej) ;

- Bkg-Grey: zawiera szary (50%) kwadrat tła. Rozmiary tego kwadratu określają jednocześnie obszar, który jest eksportowany do pliku. (Zaznaczasz go przed wywołaniem polecenia File→Export Bitmap, a potem w oknie Export Bitmap wybierasz Export area:Selection);

Dla testów w tej sekcji, ustal rozmiar nor_details.png i wszystkich następnych obrazów na 768x768 pikseli.

Kolejnym obrazem, którym wyeksportujemy z Inkscape (ze texture.svg) jest zarys wszelkich wgnieceń blachy (Rysunek 3.4.10):

Rysunek 3.4.10 Kompozycja w Inkscape źródłowego obrazu do rozmycia w GIMP (blur.png)

Rezultat zapisz do chwilowego pliku o nazwie, powiedzmy, blur.png (Rysunek 3.4.10b). Zapisany obraz (768x768 px) został złożony z następujących warstw pliku texture.svg:

- Screws: śruby;

- Rivets: nity. W tej kompozycji ma nieprzejrzystość 15%.

- Bumps: wgłębienia pod śrubami — nadaj jej nieprzejrzystość 40%;

- Shadows: wgłębienia pod liniami nitów. Nadaj jej nieprzejrzystość na 80%;

- Bkg-White: biały kwadrat tła;

Plik blur.png poddajemy w GIMP „kaskadowemu” rozmyciu, opisanemu na str. 64 - 65. Rezultat zapisz jako obraz drugorzędnej tekstury nierówności, do pliku o nazwie nor_blur.png (Rysunek 3.4.11):

Rysunek 3.4.11 Kaskadowe rozmycie obrazu blur.png w drugą teksturę nierówności (nor_blur.png)

Podczas eksportowania obrazu tekstur z pliku texture.svg do plików rastrowych zwróć uwagę, by kwadraty tła (z Bkg-Grey, Bkg-White) miały dokładnie taki sam rozmiar i położenie jak podstawiony na warstwie UV obraz uv.png. Tylko w ten sposób tekstura trafi we właściwe miejsce siatki modelu!

Najlepiej, aby obraz uv.png z Blendera i obraz tekstury w Inkscape miały takie same rozmiary, a prostokąty tła zasłaniały ich całą powierzchnię. Wtedy wszystko do siebie będzie od razu pasować. W ten sposób przygotujemy w następnym rozdziale plik dla rozwinięcia całego modelu. W teście, jaki teraz wykonujemy, nie chciałem od początku zawracać tym Czytelnikowi głowy. Dlatego w tej sekcji trzeba było przesunąć i dopasować tła do zmienionego położenia i rozmiaru eksportowanego fragmentu rysunku.

Gdy nowe obrazy są gotowe, czas zmienić schemat materiału B.Skin.Test w Blenderze. Przypisz każdej z tekstur plik z odpowiednim obrazem (nor_details.png dla podstawowej, nor_blur.png dla pomocniczej). Obydwa węzły Texture Image podłącz teraz bezpośrednio z wyjściem Texture Coordinate: UV (Rysunek 3.4.12):

Rysunek 3.4.12 Zmodyfikowany schemat materiału B.Skin.Test

Rysunek 3.4.13 przedstawia rezultat zastosowania tekstur nierówności dla powierzchni “aluminiowej” (a) i matowej (b):

Rysunek 3.4.13 Rezultat dla różnych rodzajów powierzchni

Zwróć uwagę na śruby (efekt nowej warstwy Screws) i wygięcia blachy wokół dokręconych śrub (efekt cieni z warstwy Bumps).

Na pewno poszycie, które przedstawia Rysunek 3.4.13, wyglądałoby lepiej, gdybyśmy zastosowali w teksturach obrazy o większej rozdzielczości. Chodzi tu głównie o dokładne odwzorowanie kształtu nitów, śrub, i połączeń blach. Spróbuj przyjrzeć się z bliska, jak „wyszły” te elementy po eksporcie z Inkscape do obrazu 768x768 px. Zobaczysz, że regularne koła śrub i nitów zostały zredukowane do kilkunastu pikseli, o niezbyt regularnym kształcie. Każdy obraz rastrowy przestaje pełnić dobrze swoją rolę, gdy jest oglądany w zbyt dużym powiększeniu. Sprawa jest „pod kontrolą”, gdy jesteś klasycznym grafikiem komputerowym i wykonujesz model samolotu do jednej — dwóch scen. Możesz wtedy dobrać do każdej z nich odpowiednią rozdzielczość tekstur. Ale w przypadku takiego „ogólnego” modelu, jak nasz, choćbyś chciał, nie możesz poświęcić zbyt dużo powierzchni na pojedynczą owiewkę. Aby ułatwić nanoszenie różnych kamuflaży, i zachować sensowny czas renderingu, musimy umieścić na jednej teksturze rozwinięcie całego modelu. Jej rozmiar zależy od mocy obliczeniowej i RAM twojego komputera. Obecnie (2012r.) może to oznaczać rozmiar obrazu rzędu 8000x8000 px (system 64-bitowy) lub 4000x4000px (starsze systemy 32-bitowe).

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-6.04.blend, a pliki tekstur — w folderze model\p40\textures\6.04\* (por. str. 20).

Podsumowanie

- Obrazy tekstur najłatwiej jest rysować na obrazie jej rozwinięcia w UV (str. 78). W przypadku tekstury nierówności dobrze jest jednocześnie podstawić „pod spód” plany samolotu, w takiej samej skali jak rozwinięcie (str. 77);

- Gdy wykorzystujesz do mapowania tekstur współrzędne UV, musisz rozmieścić rozwinięcia wszystkich siatek na jednym, wspólnym obszarze. Trzeba to zrobić tak, by nie nakładały się na siebie. Takie uzgodnienie można zrobić w Blenderze. Bardzo się przy tym przydaje opcja View→Draw Other Objects (str. 79);

- Postaraj się, aby wszystkie rozwinięcia siatek miały taką samą skalę. (Aby narysowane na nich nity lub śruby nie różniły się na modelu rozmiarem). Możesz to łatwo sprawdzić za pomocą obrazu testowego (por. str. 74): rozmiar kwadratów tej szachownicy powinien być jednakowy (lub prawie jednakowy);

- W przypadku modeli złożonych z wielu siatek (takich jak nasz samolot) wygodnie jest wyeksportować rozwinięcia do wektorowych plików SVG. Proponuję użyć do tego wyspecjalizowanego polecenia Export To SVG — dodatku, który towarzyszy tej książce (str. 79); Ze względu na ograniczoną wydajność Inkscape, stworzone w ten sposób obrazy warto złożyć w pomocniczym pliku uv.svg (str. 80). Plik uv.svg posłuży nam do generowania zbiorczego (rastrowego) obrazu rozwinięcia wszystkich siatek (uv.png), który wykorzystam przy rysowaniu tekstur;

- W tej sekcji dodaliśmy do źródłowego obrazu nierówności texture.svg warstwy z obrazami śrub (Screws) i wgłębień pod śrubami (Bumps) (str. 78)

- Śruby i towarzyszące im wgłębienia najlepiej jest wstawić jako „klony” (referencje) pojedynczego szablonu (str. 78). W przyszłości dzięki temu będzie Ci bardzo łatwo jest wprowadzić ewentualne poprawki — wystarczy zmienić wzorzec;

- Na str. 81 znajdziesz wyliczenie warstw pliku texture.svg, z których komponowany jest obraz podstawowej tekstury nierówności (plik nor_details.png);

- Na str. 82 znajdziesz wyliczenie warstw pliku texture.svg, z których komponowany jest obraz pomocniczej tekstury nierówności (plik nor_blur.png). Jest tam także opis jej „rozmycia” z wykorzystaniem GIMP;

- Wprowadzenie poprawki w pliku texture.svg do jakiejkolwiek warstwy z której powstaje pomocnicza mapa nierówności, wymaga powtórnego rozmycia jej obrazu w GIMP. To dość nużące. W następnym rozdziale postaram się zaproponować lepsze rozwiązanie, oparte o tzw. filtry SVG. Pozwoli ono automatycznie uzyskiwać efekt „kaskadowego” rozmycia obrazu bezpośrednio w Inkscape;

- Aby zastosować mapowanie UV dla tekstur w Cycles, wystarczy połączyć wyjście UV węzła Texture Coordinate z wejściem Vector odpowiednich węzłów Texture Image (str. 83). Takich węzłów z obrazami może być wiele;

[1] (str. 79) Takie przypisanie wcale nie ogranicza nas w tym, aby co chwila podstawić w UV/Image Editor inny obraz. Wystarczy wykorzystać polecenie Image→Replace Image, zmieniając zawartość obrazu Test. Dla Blendera ważne jest tylko to, aby ściany były przypisane do obrazu o nazwie Test. A jaki plik aktualnie obraz Test wyświetla — to dla programu bez znaczenia.

3.5  Tekstury odbicia (i rozpraszania) światła

W tym rozdziale używaliśmy do tej pory prostej tekstury barw (por. str. 54) i złożonej tekstury nierówności (str. 81-83). Do tekstur barwy jeszcze wrócimy w następnym rozdziale — pokażę, jak nanieść kamuflaż na powierzchnię samolotu (por. str. 160, 175 i 193). Tekstury nierówności omówiliśmy już dość dokładnie. Czas na trzecią (i ostatnią) z tekstur „obowiązkowych”: obraz sterujący intensywnością odbicia światła. Zastanawiałeś się, co odróżnia czarną plamę sadzy od czarnej plamy świeżej smoły albo atramentu? Na pewno nie kolor! Różnią sposobem odbijania światła. Obydwa materiały możesz uzyskać za pomocą shadera Gloss Paint. Każdy z nich będzie miał inną szorstkość (Roughness) i odblask (Reflectivity). Właśnie te parametry moduluje tekstura odbić, którą dalej będę także określał jako Ref (od Ref lectivity). Pozwala uzyskać efekt gromadzących się w nierównościach poszycia samolotu zanieczyszczeń, które zmieniają właściwości podstawowego materiału (np. pył, połyskliwe plamy po paliwie czy oleju, matowe ślady sadzy po spalinach czy gazach prochowych).

Kompozycja w Inkscape obrazu, z którego zrobimy w GIMP obraz odbicia światła (Ref) bardzo przypomina kompozycję obrazu pomocniczej mapy nierówności (pliku blur.png, por. str. 82). Nie można jednak po prostu wykorzystać tego pliku, gdyż różnią się kilkoma szczegółami (Rysunek 3.5.1):

Rysunek 3.5.1 Kompozycja w Inkscape źródłowego obrazu do rozmycia w GIMP (shadows.png)

Po pierwsze, wyłączona została warstwa Screws, a włączona — Lines. Zwiększyłem nieprzejrzystość warstwy Lines (do 50%) i dodałem nową warstwę Contours (Rysunek 3.5.1a). Uzyskany obraz (Rysunek 3.5.1b) wyeksportuj do pomocniczego pliku rastrowego shadows.png. Podobnie jak blur.png, shadows.png jest tymczasowym plikiem, który poddamy dalszej „obróbce” w Gimpie.

Obraz shadows.png został złożony z następujących warstw pliku texture.svg:

- Lines: linie podziału paneli poszycia (czarny, 0.5 px szerokości);

- Rivets: nity (czarne, nieprzejrzystość —50%). W rezultacie nity mają barwę na poziomie 45% szarości (znajdują się ponad liniami z warstwy Shadows —szary 90%);

- Contours: obrys konturów (tam, gdzie w konstrukcji występowała krawędź). Linie konturów są dwa razy szersze i od linii podziału blach. Są także od nich dwa razy jaśniejsze (szary 50%);

- Bumps: wgłębienia pod śrubami (nieprzejrzystość: 40%);

- Shadows: „cienie” pod liniami nitów. Barwa — szary 90% (L = 232). Nieprzejrzystość: 80%;

- Bkg-White: biały kwadrat tła. Rozmiary tego prostokąta określają jednocześnie obszar, który jest eksportowany do pliku;

Oprócz obrazu shadows.png (Rysunek 3.5.1b), do kompozycji mapy odbić w GIMP będziemy jeszcze potrzebować dwóch oddzielnych plików z zawartością warstw: Rivets (rivets.png — Rysunek 3.5.2a) i Screws (screws.png — Rysunek 3.5.2b):

Rysunek 3.5.2 Dodatkowe obrazy, potrzebne do kompozycji mapy odbić w GIMP

Podczas eksportu każdego z tych plików, wyłącz w texture.svg wszystkie pozostałe warstwy, w szczególności Bkg-White (obydwa obrazy muszą mieć przejrzyste tło).

Dla testów w tej sekcji, ustal rozmiar wszystkich obrazów eksportowanych z texture.svg na 768x768 pikseli (w parametrach okna Export Bitmap).

Zaraz po eksporcie z Inkscape otwórz shadows.png w Gimpie, i zapisz jako ref.xcf. Utwórz w GIMP złożenie rozmyć obrazu promieniami 5, 10 i 25, tak jak to zrobiliśmy przedtem w pliku nor_blur.xcf (Rysunek 3.5.3a).

Rysunek 3.5.3 Kompozycja w GIMP tekstury odbić (ref.png)

To rozmycie różni się jednak od poprzedniego obrazu przejrzystością poszczególnych warstw: Blur10 jest tu w 50% nieprzejrzysta, Blur05 — w 15%, a Filter — w 95% (Rysunek 3.5.3a). Oprócz tego wczytaj jako oddzielne warstwy przygotowane wcześniej dwa pliki — rivets.png i screws.png. Posłużą nam do wybielenia miejsc na nity i śruby. Obydwie warstwy mają przejrzyste tło, więc „wybielenie” śrub uzyskamy od razu. Gorzej z nitami z warstwy rivets.png — są czarne. A jednak, gdy zmienisz tryb mapowania tej warstwy z Normal na Grain extract, z czarnych staną się białe (Rysunek 3.5.3c).

Rezultat kompozycji w GIMP (Rysunek 3.5.3b) zapisz (File→Save a Copy) pod nazwą ref.png. To obraz naszej tekstury odbicia światła.

Obraz jest gotowy, teraz należy dodać go w Blenderze do schematu materiału B.Skin.Test (Rysunek 3.5.4):

Rysunek 3.5.4 Dołączenie tekstury ref.png do schematu materiału B.Skin.Test

W Node Editor dodaj nowy węzeł Image Texture i przypisz go do obrazu ref.png. Wejście Image Texture:Vector podłącz do współrzędnych Texture Coordinates:UV. Wyjście, poprzez pomocniczy węzeł Moderate, przyłącz do parametru Reflectivity shadera Gloss Paint. W sumie, to takie samo rozwiązanie, jak te zastosowane w teksturach nierówności (podłączonych do wejścia Displacement — por. Rysunek 3.5.4). Parametru Moderate:Range użyjemy do sterowania intensywnością tego efektu.

Rysunek 3.5.5 pokazuje na testowej powierzchni (statecznik pionowy wraz z owiewką) efekt uzyskany w wyniku zastosowania tekstury ref.png:

Rysunek 3.5.5 Sterowanie wartością Gloss Paint:Reflectivity za pomocą tekstury

Rysunek 3.5.5a) to obraz „porównawczy”. W materiale zastosowanym na tej powierzchni nie jest jeszcze użyta tekstura ref.png, a wartości wszystkich parametrów shadera Gloss Paint są stałe (i podane na ilustracji). Rysunek 3.5.5b) przedstawia ten sam obiekt, ale pokryty materiałem używającym tekstury ref.png (podłączonej tak, jak pokazuje to Rysunek 3.5.4, z tym że wartość Moderate:Range jest tu większa: 0.6). Widać że zastosowany obraz tekstury podkreśla wszystkie nierówności i zagłębienia. (Są to przebarwienia, przez które bardziej prześwituje kolor Gloss Paint:Diffuse).

Uzyskany efekt jest ciekawy, ale w wyniku zastosowania węzła Moderate białym pikselom tła ref.png odpowiada na powierzchni modelu wartość Reflectivity = 1.0 (por. str. 508). A my chcielibyśmy uzyskać w takich miejscach nieco mniej: 0.98. Dlatego zamiast węzła Moderate zastosujmy w tym miejscu węzeł podobny, ale pozwalający dodatkowo ustawić max. jasność obrazu (Rysunek 3.5.6):

Rysunek 3.5.6 Zastosowanie węzła Range To Max (zamiast Moderate)

Zdefiniowałem taką pomocniczą grupę i nadałem jej nazwę Range To Max (szczegóły — str. 509). Ustawiłem ją tak, by w tym przypadku obraz ref.png miał „spłaszczony” zakres intensywności: od 0.38 do 0.98 (Range = 0.6, Max = 0.98: por Rysunek 3.5.6).

Rysunek 3.5.7 dla porządku przedstawia rezultat zastosowania węzła Range To Max. Zmianę wartości Reflectivity z 1.0 na 0.98 właściwie trudno dostrzec, ale chodziło mi tu o wprowadzenie możliwości pełnego sterowania zakresem intensywności tekstury.

Rysunek 3.5.7 Efekt zastosowanie węzła Range To Max

Tekstury ref.png możemy także użyć do sterowania lokalną szorstkością (Gloss Paint:Roughness) materiału. Zabrudzona powierzchnia wzdłuż szwów i śrub powinna mieć nieco większą szorstkość, więc w tym przypadku potrzebujemy użyć negatywu obrazu ref.png. Możesz go uzyskać używając węzła Negate (Rysunek 3.5.8):

Rysunek 3.5.8 „Przymiarka” negatywu obrazu ref.png

Czasami dobrze jest przed użyciem tak przekształcanego obrazu sprawdzić, jak właściwie wygląda, podłączając go jako teksturę koloru (Rysunek 3.5.8a). Tak właśnie zrobiłem w tym przypadku (Rysunek 3.5.8b).

Po sprawdzeniu przekształconego obrazu (czy wygląda tak, jak się tego spodziewasz) podłącz go do wejścia Gloss Paint:Roughness (Rysunek 3.5.9):

Rysunek 3.5.9 Ustawienia tekstury do sterowania szorstkością powierzchni

Okazuje się, że nawet niewielkie lokalne zmiany Roughness silnie rozjaśniają nierówności (Rysunek 3.5.10):

Rysunek 3.5.10 Rezultat lokalnego zwiększenia szorstkości powierzchni

Taki efekt „przetarć” może się przydać, ale teraz potrzebujemy czegoś łagodniejszego (Rysunek 3.5.11):

Rysunek 3.5.11 Ten sam materiał dla mniejszych intensywności tekstury chropowatości

Materiały matowe nie są tak efektowne, jak metaliczne. Spróbujmy użyć tekstury ref.png do dyskretnego podkreślenia nierówności na typowej powierzchni matowego kamuflażu (Rysunek 3.5.12):

Rysunek 3.5.12 Wstępne ustawienia dla materiału matowego

Podobnie jak w poprzednim przypadku, podłączenie do Reflectivity zaciemnia wgłębienia (Rysunek 3.5.13):

Rysunek 3.5.13 Zmiany powierzchni matowej po zastosowaniu tekstury odbić (Reflectivity)

Powierzchnie matowe są mniej czułe na zmiany szorstkości od powierzchni połyskliwych (Rysunek 3.5.14):

Rysunek 3.5.14 Efekt zastosowania tekstury szorstkości (Roughness) o różnej intensywności

Jak chyba zauważyłeś, w tej sekcji używaliśmy tekstury odbić do dyskretnego podkreślenia „technicznych” nierówności na powierzchni modelu. Aby ją uzyskać, użyliśmy obrazu ref.png, utworzonego z rysunku konstrukcyjnych detali naszego samolotu — pliku texture.svg. Bardziej intensywne zabrudzenia — plamy, smugi sadzy — można otrzymać stosując bardziej intensywną, drugą teksturę. Najlepiej ją namalować w GIMP. Pokażę to rozwiązanie przy okazji tworzenia szczegółowych tekstur barwy, w następnym rozdziale.

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-6.05.blend, a pliki tekstur — w folderze model\p40\textures\6.05\* (por. str. 20).

Podsumowanie

- W tej sekcji dodaliśmy do źródłowego rysunku texture.svg warstwę Contours. Zawiera kontury niektórych siatek (str. 85), które chcemy nieco podkreślić;

- Obraz tekstury odbić (ref.png) tworzy się w sposób podobny do pomocniczej („rozmytej”) tekstury nierówności (str. 85, 86). Największą różnicą są białe nity i śruby, które nie podlegają rozmyciu (str. 86);

- Tekstura odbić zmienia lokalne wartości parametrów Reflectivity i Roughness shadera materiału (str. 87);

- Tam, gdzie obraz ref.png jest ciemniejszy, na powierzchni pojawiają się przebarwienia w kolorze Gloss Paint:Diffuse (str. 87). W zależności od tego, jak jasny jest to kolor, te przebarwienia mogą wyglądać jak rozjaśnienia lub zaciemnienia;

- Obraz, który należy wykorzystać do sterowania szorstkością powierzchni (Roughness) to negatyw obrazu tekstury odbić (Reflectivity);

- Do lepszej kontroli nad intensywnością tekstury Reflectivity lepiej jest użyć węzeł Range To Max (str. 88) zamiast węzła Moderate. (To przypadek „obrazu o białym tle”). Dla „obrazów o czarnym tle” (por. str. 88) — jak tekstury Roughness — lepiej się nadaje węzeł Range From Min (str. 89);

- Nawet niewielka zmiana szorstkości powierzchni w znaczący sposób rozjaśnia oświetloną powierzchnię materiału (str. 89 i 90);

3.6  Podsumowanie

Rysunek 3.6.1 Fragment pokryty testowym materiałem

W tym miejscu kończymy nasze eksperymenty z materiałem B.Skin.Test. Zastosowaliśmy go do małego, lecz reprezentatywnego fragmentu modelu (statecznika i owiewki — Rysunek 3.6.1). Statecznik zawiera panele i nity jak skrzydła i większa część kadłuba, a owiewka — śruby, takie same jak na okapotowaniu silnika[1]. To była nasza „próbka”, pozwalająca znaleźć najlepsze metody przygotowania tekstur.

Zawsze jest łatwiej poprawiać błędy jakiejś niewielkiej części odtwarzanego samolotu, niż od razu na jego całej powierzchni. Pamiętaj, że rozpoczęcie przygotowywania tekstur od takiej małej „próbki” pozwoli Ci najszybciej dobrać najlepsze rozwiązanie[2]. Potem tylko je powielisz na resztę modelu.

W materiale B.Skin.Test opracowaliśmy schemat użycia dwóch podstawowych rodzajów tekstur: nierówności i odbić (Rysunek 3.6.2):

Rysunek 3.6.2 Schemat testowego materiału B.Skin.Test

W tym schemacie nie używamy jeszcze tekstury koloru, choć już wiesz jak taki obraz podłączać (por. str. 54 i 88). Zajmiemy się nią szczegółowo w jednej z sekcji następnego rozdziału (str. 160). Do tego czasu będziemy eksperymentować z powierzchniami utrzymanymi w naturalnym kolorze duralu.

W tym rozdziale poznałeś podstawowy sposób opracowania tekstur dla modelu. Robi się to tak:

1. Przygotuj w Blenderze indywidualne rozwinięcia (UV) dla każdej siatki, która ma być pokryta teksturą (str. 70). Uzgodnij ich położenie na wspólnym obrazie tak, by każda zajmowała inny fragment (str. 79);

2. Przygotuj zbiorczy obraz rozwiniętych siatek. W tym celu można gromadzić ich obrazy, wyeksportowane z Blendera do formatu SVG, w pomocniczym pliku uv.svg. (str. 80);

3. Stwórz w Inkscape wektorowy rysunek texture.svg. Nanieś w nim obraz nierówności modelu (linie podziału blach, nity, śruby, krawędzi konturów) dopasowany do obrazu rozwinięcia siatek (str. 80). Rezultat wyeksportuj jako pliki rastrowe nor_details.png (str. 81), blur.png (str. 82), shadows.png, rivets.png, screws.png (str. 85);

4. Na podstawie obrazów z Inkscape, stwórz w Gimpie pliki nor_blur.xcf i ref.xcf. Skomponuj z ich warstw odpowiednie obrazy rastrowe: nor_blur.png (str. 82), ref.png (str. 86);

5. Użyj obrazów nor_details.png, nor_blur.png do stworzenia w Blenderze odpowiednich tekstur nierówności (str. 83), a ref.png — jako tekstury odbić i szorstkości (str. 88 i 89);

[1] (str. 92) Tę próbkę można byłoby jeszcze rozszerzyć na kryty płótnem ster kierunku — mówiąc szczerze, poszedłem tu trochę „na skróty”.

[2] (str. 92) M.in. dlatego, że podstawowy rysunek paneli, nitów i śrub składa się z niewielu szczegółów. W przypadku zmiany koncepcji (np. zmiany granic paneli z linii na wypełnianie gradientem) narysowanie tych kilku nowych elementów w celu wykonania testu jest szybkie i proste.

Rozdział 4.  Teksturowanie modelu

W poprzednim rozdziale poznałeś podstawowe techniki pracy z teksturami i ich możliwości. Eksperymentowaliśmy tam na siatkach dwóch wybranych obiektów. Teraz czas pokazać, jak zastosować tę wiedzę na całym modelu:

Trzy pierwsze sekcje (4.1 - 4.3) tego rozdziału poświęcimy na szczegółowe omówienie rozwijania powierzchni samolotu w płaszczyźnie UV. Pokażę tu typowe problemy, jakie występują przy tej pracy, omówię metody ich rozwiązania.

W sekcji 4.4 pokażę, jak przygotować w Inkscape rysunek szczegółów powierzchni całego samolotu. Efektem będzie przygotowanie pierwszej, kompletnej tekstury: podstawowych nierówności (czyli nitów, śrub, krawędzi paneli).

W sekcji 4.5 zajmiemy się komponowaniem obrazów tekstur. W poprzednim rozdziale robiłem to w sposób „tradycyjny”, oparty w dużej mierze na plikach rastrowych i Gimpie. Teraz przedstawię lepszą (jak sądzę) alternatywę, w postaci filtrów Inkscape. Rezultatem będą: pomocnicza tekstura nierówności, oraz tekstura odbić światła.

W sekcjach 4.7, 4.8 i 4.9 zakończymy nakładanie podstawowych tekstur. W sekcji 4.7 opiszę jak nałożyć na model kamuflaż i „wyczarować” z powierzchni przetarcia i zabrudzenia eksploatacyjne. W rezultacie stworzymy podstawową teksturę koloru. W sekcji 4.8 pokażę jak nanieść na model „naklejki” — znaki przynależności państwowej, numery taktyczne, napisy. To pomocnicza tekstura barwy. Na koniec, w sekcji 4.9 przedstawię, jak za pomocą obrazu „wycinać” dziury w powierzchni samolotu. (Chodzi o pomocniczą teksturę, odwzorowującą tzw. otwory ulżeniowe w wewnętrznej strukturze płatowca).

Na koniec tego rozdziału znajdziesz schemat (w sekcji 4.11), podsumowujący jakie pliki tekstur, skąd, i do czego są używane. Te informacje przydadzą Ci się, gdy będzie trzeba coś na tych teksturach poprawiać.

W tym rozdziale będziemy wykorzystywać materiały z towarzyszącego tej książce pliku source.zip. Pliki *.blend odpowiadające rezultatom poszczególnych sekcji rozdziału znajdziesz w pliku p40.zip, a foldery z obrazami ich tekstur — w pliku textures1.zip. (Adres miejsca, z którego można pobrać te pliki, znajdziesz na. str. 20).

Numery rozdziałów w tym tomie są inne niż w kompletnej książce, dlatego pliki z rezultatami sekcji tego rozdziału noszą nazwy zaczynające się od P40B- 7. *, a foldery z teksturami — 0 7 .*.

4.1  Rozwinięcie UV płata

Stwórz kopię opracowanego w poprzednim rozdziale rysunku texture.svg, i nazwij ją skin.svg [1]. Wypełnimy ją w tym rozdziale obrazem szczegółów powierzchni zewnętrznych całego modelu. Na początek, nauczeni wcześniejszymi doświadczeniami (por. str. 73, Rysunek 3.3.9), podstawmy „na spód” skin.svg wkomponowane w kwadrat plany istotnych fragmentów samolotu (Rysunek 4.1.1):

Rysunek 4.1.1 Złożenie planów samolotu, na potrzeby rozwinięcia UV (skin.svg).

Skin.svg zawiera już rzut z boku — na warstwie BP-Left. Nie ruszaj go, tylko dodaj poniżej, na dwóch kolejnych warstwach rzuty z góry i z dołu. Dopasuj je starannie do rzutu z boku, aby wszystkie trzy były w takiej samej skali. Potem ustaw te rzuty na rysunku mniej więcej w tym miejscu, gdzie będą rozwinięte odpowiednie siatki płata i kadłuba. Wstępnie możesz założyć, że rozwinięcie płata będzie miało kształt bardzo zbliżony do rzutu z góry, a kadłuba — zbliżony (ale nie tak bardzo) do rzutów z boku. Nie zapomnij pozostawić gdzieś miejsca na rozwinięcie prawej strony kadłuba (na razie zakładam, że umieszczę je poniżej rozwinięcia skrzydeł).

Rysunek 4.1.1b) zawiera lewe skrzydło i prawy statecznik stateczniku z rzutu z góry, a prawy płat i lewy statecznik — z dołu. Jak taki efekt szybko uzyskać w Inkscape? Na każdej z warstw BP-Top i BP-Bottom narysuj białe prostokąty. Użyj ich, aby zasłonić prawe skrzydło i lewy statecznik. Przestaw Blend mode warstwy BP-Top z Normal na Multiply (Rysunek 4.1.1a). Efektem będą wyraźne, czarne linie z każdej strony samolotu (wyjaśnienie, dlaczego — patrz str. 575). Stwórz kopię rastrową tego obrazu o wymiarach 2048x2048 i zapisz ją pod nazwą reference.png. Użyjemy jej później do dopasowania rozwinięć siatek modelu.

W Blenderze czas skończyć już z materiałem B.Skin.Test, który przewijał się przez cały Rozdział 3. Przypisz zewnętrzne powierzchnie statecznika pionowego i owiewki usterzenia z powrotem do materiału B.Skin.Camouflage. Materiał ten wzbogacimy w następnych sekcjach o odpowiednie tekstury..

Rysunek 4.1.2 Układ ekranu do pracy z rozwinięciami UV.

Do pracy z rozwinięciem siatki wygodniejszy jest nieco inny układ ekranu: dwa okna 3D View i jedno UV/Image Editor (Rysunek 4.1.2) . W Blenderze możesz stworzyć wiele alternatywnych zestawów okien, i szybko się pomiędzy nimi przełączać. Jeżeli chcesz teraz przygotować sobie taki odrębny układ ekranu do rozwinięć UV — zobacz na str. 381, jak go stworzyć. Ja tak zrobiłem. Nowemu układowi ekranu nadałem nazwę 6-UV Mapping.

Płat rozwiniemy na dwie powierzchnie — górną i dolną. Przed rozwinięciem każdą z nich trzeba zaznaczyć. To klikanie w grupy wierzchołków wymaga dłuższej chwili. Aby tę pracę wykonać tylko raz, proponuję zapamiętać zaznaczone wierzchołki jako grupy o nazwach: Top (górna powierzchnia płata) i Bottom (reszta). (Więcej na temat — patrz str. 419) . Od tej chwili możesz je szybko wybierać, odwołując się do odpowiedniej grupy. Rysunek 4.1.3 pokazuje, gdzie należy wyznaczyć granice podziału tych zbiorów wierzchołków:

Rysunek 4.1.3 Zaznaczenie górnej części płata (grupa wierzchołków o nazwie Top).

Przed rozwinięciem trzeba ustawić widok prostopadle do płaszczyzny XY płata. Tu nie można po prostu się przełączyć na widok z góry — płat jest przecież zaklinowany pod kątem 1º, i ma wznios 6º. Gdy przełączysz się na „zwykłą” projekcję XY, linie żeber będą przez to lekko wygięte, a cały płat jest nieco krótszy. Przełącz się więc na chwilę do Object Mode, i użyj polecenia View→Align View→Align View to Selected→Top (str. 405).

Teraz wróć z powrotem do Edit Mode i zaznacz wszystkie wierzchołki siatki skrzydła (A). Rozwinięcie UV warto rozpocząć od wywołania polecenia Mesh→UV Unwrap→Reset (za chwilę zobaczysz, dlaczego). Potem zaznacz tylko górną powierzchnię siatki (grupa Top) i wywołaj polecenie Mesh→UV Unwrap→Project From View (Rysunek 4.1.4):

Rysunek 4.1.4 Rozwinięcie UV grzbietu płata (metodą Project From View).

Tak jak powierzchnie górne, zaznacz teraz i rozwiń dolne powierzchnie skrzydła (grupa wierzchołków Bottom) . Ten fragment przesuń nieco w edytorze UV do dołu, i wykonaj na nim lustrzane odbicie (UVs→Mirror) wzdłuż osi Y. Na razie „przyszpil” (Pin) wszystkie rozwinięte wierzchołki.

Po takim rozwinięciu warto obejrzeć, jak „leży” cała siatka. Zaznacz w 3D View wszystkie wierzchołki i popatrz w edytor UV. Co u licha!? Skąd się na nim wzięły te trójkątne ściany, zajmujące cały obszar!? (Rysunek 4.1.5):

Rysunek 4.1.5 Weryfikacja poprawności rozwinięcia (sprawdzenie, czy jakieś ściany nie zostały pominięte).

Ten wielki kwadrat z przekątną, obejmujący cały rysunek, to efekt działania polecenia UV Unwrap→Reset, które wywołaliśmy na początku rozwijania. Przygotuj się na takie „odkrycia” wszędzie tam, gdzie rozwijasz siatkę „kawałek po kawałku” . Ściany, które Ci umknęły, pozostają przy swoich współrzędnych UV nadanych przez operator Reset — i są rozciągnięte na cały obszar tekstury. Mówiąc szczerze, zapomniałem o nich celowo, aby pokazać Ci, jak sobie radzić z takim problemem.

Przełącz edytor UV na synchronizację zaznaczenia z oknem 3D View (przycisk w nagłówku edytora UV). Wyłącz zaznaczenie wszystkich wierzchołków (A), a następnie zaznacz te cztery, widoczne w narożnikach obrazu UV (Rysunek 4.1.6a):

Rysunek 4.1.6 Wyszukiwanie ścian, pominiętych przy rozwinięciu.

Podczas zaznaczania w edytorze UV od razu załóż, że chodzi tu o wiele ścian. Aby je wszystkie od razu podświetlić w oknie 3D View, użyj jednej z masowych metod selekcji — np. Border Select (B). Po zaznaczeniu przyjrzyj się ścianom, które zostały wyróżnione w oknie widoku (Rysunek 4.1.6b,c). (Gdybyś nie mógł ich od razu znaleźć wzrokiem, kursor wskaże Ci ich położenie — wystarczy użyć polecenia Mesh→Snap→Cursor to Selection.). Rysunek 4.1.6b pokazuje, że w tym przykładzie ewidentnie pominąłem rząd ścian wzdłuż granicy obszaru Top (por. str. 96, Rysunek 4.1.3)[2]. Ten rząd nie należy do obszaru Bottom. Przypisz więc zaraz (Vertex Groups:Assign) zaznaczone wierzchołki do tej grupy. Następnie wyłącz tryb synchronizacji selekcji pomiędzy edytorem UV i 3D View. Usuń „przyszpilenia” (UVs→Unpin) z górnej powierzchni skrzydła, i powtórz powtórnie jego rozwinięcie (Project From View). Tym razem powinno się obyć bez niespodzianek (Rysunek 4.1.7):

Rysunek 4.1.7 Poprawione rozwinięcie dolnej powierzchni płata.

Ogólny układ płatów jest gotowy. Tak się składa, że była to najmniej pracochłonna część pracy nad rozwinięciem. Teraz czas zagłębić się w poprawki drobiazgów.

Zacznijmy od obramowania otworu na koła podwozia. W wyniku „rozwinięcia przez rzutowanie”, wierzchołki ścian tego „paska” dokładnie się zasłaniają w płaszczyźnie UV (Rysunek 4.1.8a,b):

Rysunek 4.1.8 „Odwinięcie” obramowania otworu podwozia.

Gdybyśmy nic z tym nie zrobili, nie można by było nanieść na ten fragment poszycia tekstury drobnych otworów, rozmieszczonych wzdłuż krawędzi[3].

Aby odwzorować ten szczegóły na teksturze, musimy „odwinąć” obramowanie — najlepiej do środka otworu. W widoku 3D View zaznacz górną krawędź tego rzędu ścian (Rysunek 4.1.8a). Następnie przełącz selekcję w edytorze UV na „synchroniczną” (Rysunek 4.1.8b). Ustaw także punkt odniesienia transformacji — Pivot — na Bounding Box Center (środek obszaru, zajmowanego przez zaznaczone wierzchołki). Teraz w edytorze UV wywołaj zmianę skali (S), i zmniejsz zaznaczony kontur o około 5% (Rysunek 4.1.8c). W efekcie uzyskamy ładne i równe obramowanie otworu.

Kolejnym elementem do „odwinięcia” są boczne ściany wnęki lotki. Należą do rozwinięcia spodu płata. „Zagniemy” je do środka wnęki, deformując nieznacznie łączące je ściany (Rysunek 4.1.10).

Zwróć uwagę, że wierzchołki górnej krawędzi ścian, które chcemy przesunąć w przestrzeni UV, występują także na rozwinięciu z góry (por. Rysunek 4.1.9a, krawędź 4). To bardzo utrudnia zaznaczanie, bo nie możemy wykorzystać, jak poprzednio, trybu synchronicznego. (Gdybyś go użył, przesuwałbyś w UV wierzchołki na obydwu powierzchniach równocześnie, i zepsuł rozwinięcie grzbietu płata.) Musimy więc zaznaczać inaczej. Upewnij się, że synchronizacja selekcji pomiędzy edytorem UV i oknem 3D View jest wyłączona (jeżeli nie jest — wyłącz ją). Zacznij od zaznaczenia w 3D View grupy wierzchołków Bottom. Wyklucz z niej dolne krawędzie żebra, których nie będziemy ruszać (Rysunek 4.1.9a — krawędzie A i B):

Rysunek 4.1.9 Rozwinięcie bocznej ściany wnęki lotki.

Zauważ, że w ten sposób dolne krawędzie wnęki (A, B) i ich wierzchołki znikły z edytora UV. Dokładnie o to nam chodziło — teraz można w edytorze zaznaczyć wierzchołki UV krawędzi 1,2, 3, które chcemy przesunąć do środka wnęki (Rysunek 4.1.9a).

Najpierw obróć je wszystkie wokół narożnika na krawędzi spływu, tak by znalazły się pośrodku obszaru, który ma zajmować ściana wnęki (Rysunek 4.1.9b). To jest ostateczne położenie środkowej krawędzi 1. Potem „rozwiń” pary wierzchołków z krawędzi 2, 3 jak wachlarz — obracając każdą z par o trochę inny kąt wokół tego samego środka obrotu (w narożniku). Gdy rozłożyłeś już w UV wszystkie punkty siatki tak, że nie zasłaniają się wzajemnie, włącz z powrotem widoczność krawędzi A i B(Rysunek 4.1.9b). Potem wystarczy wywołać polecenie UVs→Unwrap (E) by we wnęce lotki zaroiło się od ścian. Pozostaje jeszcze parę ostatnich poprawek kształtu, które ułożą wierzchołki 2 i 3 bardziej równomiernie, i narożnik jest gotowy (Rysunek 4.1.9c).

Rysunek 4.1.10 przedstawia układ wnęki lotki po „odwinięciu” obydwu ścian bocznych:

Rysunek 4.1.10 Wnęka lotki po poprawieniu rozwinięcia (spód płata).

Dlaczego tak podkreślałem, abyś przy formowaniu wnęki lotki zaznaczył w oknie 3D View tylko dolną powierzchnię płata (wierzchołki z grupy Bottom)? Sam się przekonaj: zaznacz w 3D View cały płat, a potem wywołaj w edytorze UV polecenie Unwrap (E) (Rysunek 4.1.11):

Rysunek 4.1.11 Problemy z modyfikacją UV, gdy w oknie 3D View jest zaznaczona cała siatka.

Widzisz, co się nam z rozwinięciem porobiło? Zaraz się z tego wycofaj (Ctrl-Z — Undo)!. Program połączył ze sobą ściany, które podczas rzutowania rozdzieliliśmy wzdłuż krawędzi natarcia i spływu. W tym zachowaniu nie ma nic nietypowego (no, może to, że przesunięciu uległy niektóre „przyszpilone” wierzchołki). Wystarczy przypomnieć, że Blender zadziałał tak samo, łącząc ścianami „przyszpilone” krawędzie z przykładu na str. 73 (Rysunek 3.3.8). Tyle, że tam był to efekt pożądany, a tu — nie. Potrzebujemy czegoś, co powie Blenderowi że płat ma pozostać przecięty wzdłuż krawędzi natarcia i spływu. Służą do tego tzw. oznaczenia szwów (Seam). Nanosi się je na krawędzie siatki poleceniem Mark Seam, z menu Edges (Ctrl-E). (Więcej na ten temat — str. 421). Zaznacz na płacie szwy tam, gdzie to pokazuje Rysunek 4.1.12:

Rysunek 4.1.12 Naniesienie na siatkę płata szwów rozwinięcia UV.

Szwy na razie umieść dokładnie wzdłuż granicy obszaru Top (porównaj Rysunek 4.1.12a, b i Rysunek 4.1.3 ze str. 96). Zwróć szczególną uwagę na drobne ściany — na przykład w narożnikach wnęki lotki (Rysunek 4.1.12b). Często można zapomnieć o takich szczegółach.

Gdy wydaje Ci się, że wszystko jest jak należy, ponownie zaznacz cały płat i wywołaj w edytorze UV polecenie Unwrap. Niewykluczone, że ujawni się wówczas jakaś zapomniana grupka wierzchołków, np. przypisanych nie do tej części płata, co trzeba. Popraw je i próbuj jeszcze raz, dopóki nic nie będzie się „samo rozwijało”.

Po zapanowaniu nad samoczynnym rozwijaniem się siatki, możesz zająć się ostatnim detalem płata, wymagającym poprawki. Chodzi o kołnierz u nasady. W tej chwili jego boczne ściany są w rozwinięciu UV zredukowane do kreski, a przecież znajdowały się na nich śruby, łączące obydwa skrzydła. Nie byłoby się czym specjalnie przejmować, gdyby nie to, że górna część poszycia płata jest podłogą kabiny. W jej środku widać dłuższy odcinek tego kołnierza. Co więcej, przymocowywano do niego elementy wyposażenia, np. drążek sterowy. Na pewno prędzej czy później pojawi się potrzeba umieszczenia na bocznych ścianach kołnierza śrub, i towarzyszących im zabrudzeń. Rysunek 4.1.13 przedstawia szczegóły rozwinięcia tego fragmentu:

Rysunek 4.1.13 Szczegóły rozwinięcia UV kołnierza u nasady płata.

Rozwinięcie tego detalu jest bardzo proste — polega na rozsunięciu krawędzi 1, 2, 3, 4 (Rysunek 4.1.13d) wzdłuż osi U (X). Przy czym należy to zrobić tak, by zwiększyć szerokość ścian ograniczonych krawędziami 1 i 2 oraz 3 i 4 (Rysunek 4.1.13b,c). Szerokość ścian pomiędzy krawędziami 2 i 3, odpowiadających grubości kołnierza, pozostaw bez zmian (Rysunek 4.1.13b). Tak się szczęśliwie złożyło, że na obydwu rozwinięciach należy odsunąć wierzchołki UV dokładnie w ten sam sposób. Możesz więc użyć w tym przypadku synchronizacji selekcji z widokiem 3D View. To bardzo ułatwia zaznaczanie.

Na tym zakończyliśmy rozwijanie siatki płata. Czas teraz podstawić pod UV/Image Editor obraz testowy, np. o wymiarach 2048x2048 px (szczegóły — str. 539). Nadajmy mu nazwę Test. (W przyszłości będziemy podstawiać pod ten obraz inne pliki. Dlatego warto tę testowy wzór zapisać na dysku, pod nazwą uv_test.png. Ułatwi to jego powtórne załadowanie). Przełącz tryb wyświetlania okna 3D View na Textured i uważnie obejrzyj „szachownicę”, która pojawi się na powierzchni skrzydła (Rysunek 4.1.14):

Rysunek 4.1.14 Szukanie deformacji rozwinięcia UV za pomocą obrazu testowego.

Szukaj jakichś zaburzeń wzoru testowego — wygiętych krawędzi, lub kwadratów nierównej wielkości. W zasadzie wygląda na to, że rozwinięcie nie wymaga specjalnych poprawek.

Rysunek 4.1.15 Opcja Subdivide UVs

Aby uzyskać równomierny rozkład obrazu tekstury na powierzchni, koniecznie włącz w modyfikatorze Subsurf (okno Properties, zestaw Modifiers) opcję Subdivide UVs (Rysunek 4.1.15).

W Blenderze 2.49, gdy żebra skrzydła były rozłożone w nierównych odstępach, po włączeniu tej opcji występował pewne efekt uboczne wzdłuż szwów siatki[4]. Dlatego obejrzyj te fragmenty siatki szczególnie starannie. W każdym razie wydaje mi się, że gdzieś w kolejnej wersji (2.5?) Blendera ten błąd usunięto, w bo w obecnym wydaniu (2.62) siatka nie ma w tych miejscach żadnych zaburzeń.

Warto jeszcze chwilę pomyśleć, czy w ogóle podział siatki wzdłuż krawędzi natarcia jest najlepszym pomysłem. Nie mam wątpliwości co do krawędzi spływu — takie ostre „kanty” doskonale maskują drobne nieciągłości barwy łączonych tekstur. Ale krawędź natarcia ma stosunkowo duży promień zaokrąglenia, i wszystko będzie na niej widać „jak na dłoni”. Różne egzemplarze P-40 były eksploatowane często „w trudzie i brudzie” lotnisk polowych. Liczne fotografie pokazują charakterystyczne zabrudzenie przedniej krawędzi skrzydeł, ciągnące się od gondoli podwozia do połowy płata (za lufy karabinów maszynowych). Spójne namalowanie czegoś takiego na dwóch oddzielnych kawałkach tekstury jest bardzo trudne. Lepiej dociągnąć linię podziału do najbliższego łączenia paneli poszycia. W przypadku P-40 będzie to dolna krawędź przedniego dźwigara (Rysunek 4.1.16a):

Rysunek 4.1.16 Przesunięcie linii podziału siatki do najbliższego połączenia blach.

Usuń starą linie podziału na krawędzi natarcia (Clear Seam) i zaznacz nową. Następnie w edytorze UV zaznacz odpowiedni zespół ścian (najłatwiej to zrobić w trybie synchronizacji selekcji, ale z włączonym zaznaczaniem ścian, nie wierzchołków). Pozostaw „przyszpilenia” tylko wzdłuż tylnej, górnej i dolnej krawędzi tego segmentu. Pozostałe usuń (UVs→Unpin). Potem naciśnij E (Unwrap), by dać się siatkom połączyć (Rysunek 4.1.16b).

Przed rozwinięciem krawędzi natarcia ustaw tryb UV Calculation na Conformal (w tym przypadku lepiej się sprawdza od Angle Based — por. str. 417).

Krawędź panelu poszycia jest najlepszym miejscem na granicę rozwinięcia siatki[5]. Pewne nieciągłości barwy, które mogą na niej mogą wystąpić, nie będą razić na gotowym modelu — coś takiego może się zdarzyć i „w naturze”. Zadbaj tylko o to, by linie żeber na rozwinięciu pozostały pionowe (Rysunek 4.1.17):

Rysunek 4.1.17 Prostowanie drobnych odchyleń od pionu linii żeber.

Przy rozwijaniu uwolnione (tzn. nie „przypięte”) wierzchołki krawędzi żeber wygięły się nieco. Zaznaczaj je po kolei, prostuj (W, Align X — str. 541), a potem ponownie „przypinaj” (Pin) — tak, jak to pokazuje Rysunek 4.1.17 . To tylko niezauważanie deformuje rozwinięcie, a proste linie żeber pozwolą Ci potem szybko nanieść na obraz łączenia paneli i nity.

Kształt rozwinięcia skrzydła można uznać za zakończony. Pozostaje „przymierzyć” je do planów, by upewnić się, co do proporcji, a także dobrać odpowiedni rozmiar rozwinięcia na obrazie tekstury.

Umówmy się, że wszystkie siatki będziemy przypisywać do pojedynczego obrazu o nazwie Test. (Wykorzystywaliśmy go w tej sekcji do wyszukiwania deformacji w rozwinięciu płata). Początkowa zawartość Test nie jest tak istotna, bo będziemy ją co chwila zmieniać poleceniem Image→Replace. Wywołując to polecenie dla jednej siatki, podstawisz nowy obraz także dla wszystkich pozostałych. Rysunek 4.1.18 przestawia obraz Test, w którym testowa „szachownica” UV została zastąpiona przez rysunek reference.png:

Rysunek 4.1.18 Dopasowanie rozwinięcia do planów (i rozwinięć innych siatek).

Użycie wspólnego obrazu Test pozwala wyświetlać w UV/Image Editor rozwinięcia siatek wielu zaznaczonych obiektów naraz (po włączeniu opcji View→Draw Other Objects — por. str. 79).

Rysunek 4.1.19 Dopasowanie skrzydła do poprawionego reference.png

W czasie przymiarek do rysunku referencyjnego wyszło mi, że siatka płata za dużo „zachodzi” na umieszczony powyżej obrys kadłuba. Od razu po dopasowaniu do planów widać, że przy tej skali nie upakujemy całego samolotu w założony obszar. Trzeba będzie coś zmniejszyć.

Do prawidłowego ustalenia rozmiaru sylwetek na rysunku referencyjnym, wykorzystałem wyeksportowane z Blendera (str. 542) rozwinięcie UV naszego płata. Wczytałem ten plik do Inkscape (na warstwę UV). Posługując się nim, proporcjonalnie zmniejszyłem wszystkie sylwetki na rysunku skin.svg (por. str. 95, Rysunek 4.1.1). Założyłem, że rozwinięcie kadłuba będzie o 50% wyższe od rzutu z boku. Okazuje się, że wystarczyło zmniejszyć całość o 15%, i nieco inaczej rozłożyć na powierzchni rysunku. Poprawiony rezultat zapisałem ponownie do pliku reference.png (Rysunek 4.1.19).

Potem w Blenderze dopasowałem rozwinięcie skrzydła do zmienionych rysunków referencyjnych.

Na tym zakończymy pracę nad przygotowaniem siatki płata w przestrzeniu UV. Była to jedna z trudniejszych do rozwinięcia powierzchni. Doświadczenia, które zdobyliśmy przy jej przygotowaniu, są wyliczone w podsumowaniu tej sekcji.

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.01.blend, a pliki z obrazami — w folderze model\p40\textures\7.01\* (por. str. 20).

Podsumowanie

- Do pracy z teksturą potrzebne są rysunki referencyjne wpisane w kwadrat. Rzut z boku umieść na nich z grubsza tam, gdzie ma być rozwinięcie kadłuba, a rzut z góry — tam, gdzie rozwinięcie powierzchni skrzydeł (str. 95);

- Zdefiniuj nowy, oddzielny układ ekranu, przeznaczony do pracy z rozwinięciami UV. Do tej pracy potrzebne są dwa podstawowe okna: widoku 3D i edytora UV (str. 96);

- Podstawowe rozwinięcie płata uzyskasz poprzez złożenie płaskich rzutów (Project From View) z góry i z dołu (str. 96);

- Rozwijanie siatki zaczynaj od wywołania polecenia UV Unwrap→Reset (str. 96). Po rozwinięciu zawsze zaznaczaj całą siatkę, aby znaleźć w edytorze UV ewentualne „zapomniane ściany”. Eliminuj je na bieżąco (str. 97);

- Krawędzie, wzdłuż których dzielimy siatkę, warto oznaczyć jako „szwy” (Mark Seam — str. 100). Oszczędzi Ci to późniejszych zaskoczeń przy pracy z fragmentami siatki;

- Większą część czasu, potrzebnego na rozwinięcie siatki, zajmuje praca nad detalami. W przypadku skrzydła są to „odwinięcia” takich szczegółów jak obramowanie otworu podwozia, wnęka lotki, kołnierz u nasady płata (str. 98);

- Wszystkie rozwijane siatki przypisuj do tego samego obrazu — nazwijmy go Test (str. 101, 103). Pod tą nazwę możesz podstawić (poleceniem Image→Replace) każdy rysunek referencyjny, który jest w danym momencie potrzebny. Może to być testowa „szachownica” UV (UV Test Grid), może być plik reference.png z fragmentami planów samolotu. To rozwiązanie pozwala na natychmiastowa wymianę obrazu we wszystkich siatkach, a także ustawianie w UV/Image Editor rozwinięć różnych siatek obok siebie;

- Aby uzyskać właściwe proporcje obrazu na ścianach powierzchni wygładzonej modyfikatorem Subdivison Surface, włącz jego opcję Subdivide UVs (str. 102);

- Szwy na łagodnie zaokrąglonych obszarach, jak krawędź natarcia płata, najlepiej jest poprowadzić wzdłuż linii jakiegoś łączenia poszycia, występującego na rzeczywistym samolocie (str. 102). To zamaskuje drobne różnice barwy, zabrudzeń itp., którymi będą się różnić podzielone szwem obrazy;

- Linie żeber skrzydła ustawiaj zawsze na rozwinięciu tak, by były liniami prostymi, najlepiej — pionowymi lub poziomymi (str. 103). Deformacja obrazu, spowodowana taką formą rozwinięcia UV jest minimalna. Za to proste linie znacznie ułatwiają późniejsze rysowanie mapy nierówności;

[1] (str. 95) Proponuję tak zmienić nazwę, gdyż w trakcie prac nad wnętrzem kabiny stworzymy w Inkscape drugi rysunek: cockpit.svg. Będzie to obraz szczegółów wnętrza tej części samolotu. Zachowanie dotychczasowej nazwy texture.svg mogłoby wprowadzić Czytelnika w błąd, sugerując że w tym pliku są wszystkie tekstury modelu.

[2] (str. 97) Aby szybko zaznaczyć wierzchołki grupy Bottom użyłem polecenia Selection→Inverse (zob. str. 420). Przed jego wywołaniem powinienem jednak przełączyć się na tryb selekcji ścian. Nie zrobiłem tego — i program wykluczył z zaznaczenia krawędzie obszaru.

[3] (str. 98) Była to prawdopodobnie pozostałość po tekstylnym „worku”, którym konstruktor chciał osłaniać wnętrze komory przed kurzem i wywołującymi korozję zanieczyszczeniami. W warunkach produkcji wojennej nie było co się „bawić” w takie fanaberie. Większość wyprodukowanych samolotów była niszczona w ciągu paru miesięcy od opuszczenia fabryki — korozja nie miała czasu się na nich rozwinąć.

[4] (str. 102) Gdy sąsiadujące ze sobą krawędzie szwu różniły się zdecydowanie długością, obraz tekstury na ścianach łączonych przez te krawędzie ulegał w Blenderze 2.49 dziwnemu wygięciu. Ta deformacja była tym większa, im większa była dysproporcja długości sąsiednich szwów. W pierwszym wydaniu „Wirtualnego modelarstwa” musiałem poświęcić trochę miejsca metodom radzenia sobie z tym problemem. Wygląda na to, że to był błąd w programie. Gdybyś jednak coś podobnego napotkał — najprościej taką deformację opanować, zwiększając ostrość (Crease) krawędzi poprzecznych do szwu do 1.0. Tam gdzie nie nie można tego robić, bo powierzchnia musi być gładka — pozostaje odpowiednio zagęścić siatkę, by poszczególne odcinki szwu nie różniły się tak bardzo długością

[5] (str. 103) Jest to jeden z powodów, dla których tak podkreślałem podczas modelowania, że podłużnice siatki powinny mieć układ jak najbardziej zbliżony do podłużnic prawdziwego skrzydła — por. Część II.

4.2  Rozwinięcie UV kadłuba

Rozwinięcie kadłuba zaczynamy od rzutu z boku, przeniesionego do przestrzeni UV. (Project From View —Rysunek 4.2.1):

Rysunek 4.2.1 „Płaski” rzut kadłuba na płaszczyznę UV (Project From View).

W edytorze UV „przypnij” (Pin) wierzchołki środka kadłuba. Następnie naciśnij E (Unwrap). Jeżeli Blender rozwinął Twoją siatkę inaczej niż pokazuje to Rysunek 4.2.2a), naciśnij F6 aby wyświetlić parametry ostatniego polecenia. Przełącz tam Unwrap:Method z Angle Based na Conformal (Rysunek 4.2.2b):

Rysunek 4.2.2 Wstępne rozwinięcie połowy kadłuba (Unwrap).

Unwrap rozwinął się całkiem poprawnie ściany grzbietu i spodu kadłuba, których wierzchołki nie były „przypięte” do obrazu. Zgodnie z prawami geometrii, linie wręg uległy nieznacznemu zakrzywieniu. Pozostaje teraz kolejno je wyprostować (W — Straighten X), przy okazji „przypinając” (Pin) na stałe do obrazu (Rysunek 4.2.3):

Rysunek 4.2.3 Rozwinięcie połowy kadłuba — po poprawkach.

Przy okazji wyprostuj krawędź przed kabiną do linii poziomej, oraz skoryguj nieco kształt zakładek w obramowaniu otworu kółka ogonowego. (Nic wielkiego, trzeba przesunąć parę ścian w narożnikach)

Nie zaszkodzi w tym momencie „przypiąć” do obrazu wszystkich wierzchołków. Nadszedł teraz także czas na wygenerowanie na stałe prawej strony kadłuba. Do tej pory jej obecność „załatwiał” modyfikator Mirror. Starałem się ten moment jak najbardziej odwlec, gdyż wszystkie modyfikacje kształtu są łatwiejsze do wykonania na jednej połówce. Rozwinięcie UV także nie poszłoby tak łatwo, gdybyśmy wykonywali je na pełnej siatce kadłuba. Dalej jednak nie można tego w ten sposób ciągnąć. Musimy mieć wyróżnioną strony prawą i lewą.

Utworzenie symetrycznej połówki jest błyskawiczne — wystarczy „utrwalić” modyfikator Mirror(przyciskiem Apply — por. str. 411) (Rysunek 4.2.4a):

Rysunek 4.2.4 Nowa, symetryczna połowa kadłuba.

Zaraz po tej operacji warto jest stworzyć w tej siatce po grupie wierzchołków dla każdej ze stron: Left i Right. Przydadzą się za chwilę. Dodanie drugiej połowy zamknęło obwód kadłuba, więc czas zaznaczyć na nim krawędzie szwów. Na początek poprowadź je wzdłuż osi symetrii (Rysunek 4.2.4b).

Upewnij się, że synchronizacja selekcji pomiędzy oknami 3D View i UV/Image Editor jest wyłączona i zaznacz w oknie 3D View lewą połowę kadłuba. (Najłatwiej to zrobić zaznaczając w panelu Vertex Groups grupę Left i naciskając przycisk Select, umieszczony poniżej). Spowoduje to pojawienie się w UV/Image Editor ścian tej części siatki. Przesuń je do dołu, aby zrobić miejsce na prawą połowę kadłuba. Następnie zaznacz grupę Right. Przekonasz się, że początkowo ma takie samo rozwinięcie jak strona prawa. Stwórz jej symetryczne odbicie — np. poleceniem UVs→Mirror (Rysunek 4.2.5):

Rysunek 4.2.5 Wstępne rozwinięcie całego kadłuba

Teraz warto się zastanowić, jak zmienić układ szwów, aby ukryć na modelu zarys podziału tekstur. Grzbiet kadłuba przed kabiną proponuję wydzielić w osobny fragment siatki. Krawędzie podziału poprowadź wzdłuż linii połączeń blach po bokach kadłuba (Rysunek 4.2.6):

Rysunek 4.2.6 Wydzielenie przedniego panelu.

Potem w oknie UV/Image Editor wystarczy zbliżyć do siebie wydzielone w ten sposób kawałki powłoki, i pozwolić się im połączyć (Rysunek 4.2.7):

Rysunek 4.2.7 Scalenie rozwinięcia UV przedniego panelu

Linię podziału grzbietu kadłuba za kabiną poprowadź niesymetrycznie, wzdłuż prawej krawędzi jednego z paneli grzbietu kadłuba (Rysunek 4.2.8a):

Rysunek 4.2.8 Niesymetryczny szew grzbietu kadłuba — cały przebieg (a), oraz część widoczna (b).

Zwróć uwagę, że część tego szwu udało się ukryć pod elementami ramek oszklenia kabiny (Rysunek 4.2.8b).

Oddziel odcięty szwem grzbiet za kabiną pilota od prawej strony kadłuba, i „doklej” go do strony lewej. (Tak samo, jak to zrobiliśmy w poprzedniej sekcji z krawędzią natarcia płata — por. str. 102).

W dolnej części ogona zapomnieliśmy o poprowadzeniu linii siatki wzdłuż krawędzi podłużnic — nasz błąd! Teraz za dużo roboty byłoby z jego korektą. Na szczęście to fragment dość rzadko pojawiający się na scenie — zazwyczaj ani w ujęciu samolotu na lotnisku, ani w locie, nie widać tej części kadłuba. Dlatego proponuję pozostawić tu szew, biegnący środkiem kadłuba.

Rysunek 4.2.9 przedstawia rozwinięcie kadłuba po wprowadzeniu opisanych powyżej poprawek:

Rysunek 4.2.9 Niesymetryczne rozwinięcie obydwu stron kadłuba.

Teraz można podstawić pod to rozwiniecie testową „szachownicę”. (Nie zmieniaj obrazu Test, tylko zmień poleceniem Image→Replace jego zawartość na plik uv_test.grid.png. To obraz, który zapisaliśmy w poprzedniej sekcji — por. str. 101). Rysunek 4.2.10 przedstawia uzyskany rezultat:

Rysunek 4.2.10 Sprawdzanie poprawności rozwinięcia (obraz UV Test).

W zasadzie całość wygląda poprawnie. Wszystkie kwadraty szachownicy mają takie same rozmiary, a ich krawędzie nie są zakrzywione.

Przyjrzyjmy się teraz dokładniej miejscom, w których zazwyczaj coś się nie zgadza: ścianom wzdłuż linii szwów. Zacznijmy od ogona (Rysunek 4.2.11):

Rysunek 4.2.11 Poprawianie deformacji wzdłuż szwu na grzbiecie kadłuba.

Przyjrzyj się szczególnie fragmentowi kadłuba za oszkleniem kabiny. Obraz na ścianach przylegających do linii szwu ma na pewnym odcinku nieznacznie wygięte krawędzie testowej „szachownicy” (Rysunek 4.2.11a). Wydaje mi się, że przyczyną tej deformacji jest leżąca wzdłuż szwu czworokątna ściana o nieregularnym kształcie. (Może nią także być pochyła krawędź, łącząca tę i następną ścianę). W każdym razie ta deformacja nie wystąpiłaby, gdybyś poprowadził szew o jedną krawędź dalej (Rysunek 4.2.11b). Niestety, wzdłuż tej krawędzi nie biegnie żadna wręga ani podłużnica! Nie chcę prowadzić linii podziału siatki jeszcze niżej, wzdłuż następnego panelu poszycia kadłuba. (Szew biegłby wtedy przez znaki rozpoznawcze). Proponuję na razie tak zostawić go w stanie który pokazuje Rysunek 4.2.11a). Zobaczymy, jak wyjdą krawędzie blach i nity — być może deformacja będzie na tyle niewielka, że już nie trzeba będzie niczego zmieniać. W razie czego wprowadzimy powyżej tego szwu dodatkową krawędź — na przykład poleceniem Loop Cut.

Kolejne zniekształcenie można dostrzec na odcinku przed kabiną pilota (Rysunek 4.2.12) :

Rysunek 4.2.12 Poprawianie deformacji wzdłuż szwu na boku kadłuba.

Ta deformacja to odsunięcie linii podziału paneli, widocznej na obrazie, od tego, co widać na siatce (Rysunek 4.2.12a). To inny rodzaj zniekształcenia. Tak się szczęśliwie składa, że akurat ten fragment zewnętrznej powłoki jest niemal płaski, więc możesz przeciwdziałać poprzez wyostrzenie wybranych krawędzi. Zwiększenie ostrości (Crearse) linii szwu i dwóch sąsiednich krawędzi do 1.0 skutecznie wyeliminowało to zniekształcenie (Rysunek 4.2.12b). (Zwróć uwagę szczególnie na wyostrzone krawędzie, nie należące do linii szwu — z tyłu większa, z przodu bardzo mała).

Główna część kadłuba już jest rozwinięta. Choć jeszcze w zeszłej sekcji planowałem to inaczej, proponuję pozostawić rozwinięcia tych dwóch połówek kadłuba obok siebie. Z przodu dodamy za chwilę rozwinięcie maski silnika. Takie położenie ułatwi np. malowanie plam kamuflażu. W związku z tym trzeba rozmieścić trochę inaczej pozostałe siatki na naszym rozwinięciu[1].

Podstaw pod obraz Test plik z rysunkami referencyjnymi (reference.png). Upewnij się także, że w edytorze UV masz włączone View→Draw Other Objects (por. str. 103, Rysunek 4.1.18). Zaznacz w oknie 3D View obiekty, których siatki mamy już rozwinięte. Na razie to lewe skrzydło, kadłub, statecznik pionowy i owiewka usterzenia. Następnie przejdź do edycji ostatniego spośród wskazanych obiektów (jest to obiekt aktywny). Gdy to zrobisz, w oknie UV/Image Editor zobaczysz obok siebie wszystkie siatki (Rysunek 4.2.13):

Rysunek 4.2.13 Nowe rozłożenie siatek na wspólnej powierzchni UV.

Wybierz do edycji w UV siatkę płata i przesuń ją do dołu — nie musimy tam już rezerwować miejsca na drugą część kadłuba. Rozwinięcie drugiego płata wstawimy później, po lewej stronie. Pomiędzy połówkami kadłuba wstaw owiewkę usterzenia. (Nie wiem, czy to ma jakieś praktyczne uzasadnienie, ale staram się umieścić na rozwinięciu UV blisko siebie siatki elementów, które w 3D są połączone). Na rysunku pozostał „cień” po innym, naniesionym w Inkscape położeniu tego elementu. To nic nie szkodzi, wszystkie takie fragmenty przeniesiemy potem w nowe miejsce. W pobliżu umieść także rozwinięcie statecznika pionowego (drugą połówkę dodamy później).

Przestrzeni jest jeszcze dużo, starczy miejsca i na drugie skrzydło, i na rozwinięcia stateczników i sterów („upchnięte” gdzieś po bokach). Gdy do końca zapełnimy ten obszar siatkami, przeniesiemy obrazy ich rozwinięć do Inkscape (uv.svg). Użyjemy ich do dopasowania położenia planów i naniesiemy na nie elementy mapy nierówności.

Czas zająć się maską silnika. Rozwinięcie dwóch bocznych paneli jest proste — Project From View z rzutu z boku (Rysunek 4.2.14a). Rezultat zmniejsz do odpowiedniej skali i wpasuj w sylwetkę samolotu (Rysunek 4.2.14b):

Rysunek 4.2.14 Rozwinięcie bocznych segmentów okapotowania silnika.

Rozwinięcie osłony chłodnic jest trudniejsze. Proponuję podzielić ją na trzy obszary, wzdłuż połączenia blach w dolnej części powłoki (Rysunek 4.2.15a). Obszar 1 rozwiń (Project From View) w oparciu o projekcję z boku, a obszary 2, 3 — w oparciu o projekcję z dołu. Wyprostuj centralną krawędź (dokleimy do niej potem rozwinięcie drugiej, symetrycznej połówki). Na koniec przesuń do przodu obszar 3, aby bardziej wyróżnić słupki podziału wlotu chłodnicy (Rysunek 4.2.15b):

Rysunek 4.2.15 Rozwinięcie osłony chłodnic cieczy.

Rozwinięcie panelu z chwytem powietrza rozpocznij od kanału i jego krawędzi (Rysunek 4.2.16):

Rysunek 4.2.16 Rozwinięcie wewnętrznej powierzchni chwytu powietrza.

Zaznacz w rzucie z przodu kanał chwytu powietrza do gaźnika, i wywołaj polecenie Project From View (Rysunek 4.2.16a). „Przypnij” do rysunku wierzchołki okrągłej krawędzi chwytu powietrza (Rysunek 4.2.16b). Potem kolejno przypinaj i zmniejszaj kolejne wręgi kanału, by wypełniły przestrzeń wewnątrz krawędzi chwytu (Rysunek 4.2.16c). Wystąpi tam ogromna deformacja obrazu tekstury, ale nie ma się co przejmować — to miejsce bardzo mało widoczne.

Nanieś na siatkę szwy. Poprowadź je wzdłuż krawędzi chwytu powietrza, możliwie najkrótszą droga do krawędzi (Rysunek 4.2.17a, Rysunek 4.2.17a,c). Następnie zaznacz i rozwiń powłokę zewnętrzną (UV Unwrap→Unwrap) (Rysunek 4.2.17) :

Rysunek 4.2.17 Rozwinięcie zewnętrznej powierzchni chwytu powietrza.

Rozwinięcie zewnętrznej powłoki chwytu uległo podziałowi wzdłuż szwu, na dwie części: przednią i tylną. Zmień rozmiar tych fragmentów, dopasowując je do planów i do siebie nawzajem (Rysunek 4.2.17b,d). Następnie wyprostuj i przypnij do obrazu ważniejsze linie rozwinięcia.

Na koniec pozostaje złożyć razem rozwinięcia obydwu powłok: wewnętrznej i zewnętrznej (Rysunek 4.2.18):

Rysunek 4.2.18 Złożenie obydwu powierzchni chwytu powietrza.

W podobny sposób należy rozwinąć panele z wytłoczeniami na lufy karabinów maszynowych (Rysunek 4.2.19) :

Rysunek 4.2.19 Rozwinięcie panelu z wytłoczeniem na lufy km.

Wszystkie siatki osłon silnika są już rozwinięte. Zaznacz je wszystkie i ustaw obok siebie (Rysunek 4.2.20a) :

Rysunek 4.2.20 Złożenie siatek pokrywy silnika

Rysunek 4.2.21 Wyszukiwanie deformacji obrazu tekstury

Do okapotowania silnika można zaliczyć także wylot z tuneli chłodnic cieczy. Dodaj do rozwinięcia i tę powierzchnię (Rysunek 4.2.20b), choć trudno właściwie ją jednoznacznie zakwalifikować jako powłokę zewnętrzną. Potem przypisz wszystkim siatkom obraz Test i sprawdź, czy gdzieś nie ma jakichś poważnych deformacji (Rysunek 4.2.21). Najlepiej, aby wzór „szachownicy” nie był zaburzony na całej powierzchni nosa samolotu, nawet na krawędziach paneli. Wystarczy poświęcić na to chwilę, aby potem łatwiej nakładać na model rysunek ze wszystkimi szczegółami. Oczywiście, nie przejmuj się zbytnio wnętrzem tunelu chwytu powietrza do sprężarki — tam deformacja być musi.

Po uważnym przejrzeniu rozkładu obraz testowego i naniesieniu na rozwinięcie UV drobnych poprawek, można skopiować je w drugą, symetryczną część osłony (Rysunek 4.2.22):

Rysunek 4.2.22 Pełne rozwinięcie osłon silnika

Rysunek 4.2.23 Wszystkie rozwinięte dotychczas siatki

Generalnie oznacza to usunięcie ze wszystkich siatek B.350.* modyfikatora Mirror. W przypadku panelu z chwytem powietrza do sprężarki (B.350.Cowling.001), osłon chłodnic cieczy (B.350.Cowling.005) i ich wylotu (B.352.CoolerDuct.004) modyfikator zniknie w wyniku utrwalenia (Apply). Pozostałe fragmenty skopiuj i przenieś (transformacją Mirror — Ctrl-M) na prawą stronę samolotu. W nazwach kopii zastąp litery L literami R — np. lustrzanym odbiciem B.350.L.Cowling.002 po prawej stronie będzie B.350.R.Cowling.002.

Po rozwinięciu kadłuba warto jest także po raz kolejny skorygować układ rysunków referencyjnych, aby plany znalazły się pod rozwiniętymi obszarami. (To ułatwi dalsze prace). Aby dopasować je do położenia rozwinięć UV, wczytaj do skin.svg przynajmniej wyeksportowane z Blendera rozwinięcia głównej części kadłuba i skrzydła (Rysunek 4.2.24):

Rysunek 4.2.24 Zmieniony układ rysunków referencyjnych.

Sylwetkę rzutu z prawej strony (pierwsza od góry) powinienem właściwie wczytać jako oddzielny plik. W sumie różniła się od rzutu z lewej tylko brakiem luku bagażnika. Poszedłem trochę „na skróty” i zdecydowałem się użyć w tym charakterze lustrzanego odbicia rzutu z lewej. Będziemy tylko musieli pamiętać, że z prawej strony luku nie było.

W tej i poprzedniej sekcji udało się nam rozwinąć znaczną część powierzchni samolotu (Rysunek 4.2.25):

Rysunek 4.2.25 Złożenie dotychczas rozwiniętych siatek.

Pozostało jednak jeszcze wiele większych i mniejszych drobiazgów (na ilustracji mają jednolity kolor biały lub czarny). Ich rozwinięcia nie są specjalnie skomplikowane. Omówimy je pobieżnie w następnej sekcji.

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.02.blend, a pliki z obrazami — w folderze model\p40\textures\7.02\* (por. str. 20).

Podsumowanie

- Prawie całe rozwinięcie kadłuba powstaje w oparciu o projekcję z boku (str. 106);

- Rozwijanie powierzchni zmusza do tworzenia kopii symetrycznych części — np. prawej i lewej strony kadłuba. Zazwyczaj odbywa się to poprzez „utrwalanie” (Apply) modyfikatorów Mirror. (str. 107, 109). Czasami wiąże się z kopiowaniem siatek i obiektów (str. 114);

- Szwy rozwinięcia kadłuba staraj się umieścić wzdłuż krawędzi oryginalnych paneli poszycia (str. 108);

- Siatki głębokich tuneli, jak np. chwytu powietrza, można „ścisnąć” wewnątrz obramowania wlotu (str. 112). Wystąpi tam ogromna deformacja obrazu na siatce, ale zazwyczaj w takich miejscach to nie przeszkadza.

- Panele z wystającymi chwytami powietrza dziel jak najkrótszym szwem na dwie części: tunel otworu wraz z obramowaniem i całą resztę (str. 112, 113). Obramowanie wraz z tunelem zazwyczaj najlepiej jest rozwinąć projekcją z przodu, a resztę — projekcją ogólną (Unwrap);

- Podczas po rozwijania kadłuba i płatów następują kolejne „iteracje”, dopasowującą plany samolotu na rysunku referencyjnym do rozwinięcia głównych siatek (str. 115);

[1] (str. 111) Zdecydowałem się nie udawać, że w jakimś akcie jasnowidzenia od razu rozmieściłem wszystkie rozwinięcia siatek we właściwych miejscach powierzchni UV. Zamiast tego uczciwie przedstawię, jak powoli, krok po kroku, ustala się ich wzajemne położenie w ograniczonym obszarze. Staraj się to zrobić na jak najwcześniejszym etapie prac, wykorzystując rozwinięcie skrzydła i kadłuba. Im więcej siatek będziesz miał za każdym razem do przesunięcia, tym więcej czasu stracisz na ich wzajemne dopasowywanie. (Ten czas rośnie proporcjonalnie do kwadratu liczby dopasowywanych siatek).

4.3  Rozwinięcie UV pozostałych powierzchni

W tej sekcji pobieżnie omówię różne szczegóły związane z rozwijaniem powierzchni w UV. Zaczniemy od kołpaka śmigła. Szwy w tym miejscu mogą czasami popsuć realizm modelu. Lepiej rozwiń jego wierzchołki w UV jako koncentryczne okręgi (projekcją z przodu — Rysunek 4.3.1a,b) .

Rysunek 4.3.1 Rozwinięcie kołpaka śmigła.

Aby nie stracić na dokładności rysunku nitów i śrub — powiększ znacznie jego rozwinięcie o jakąś równą skalę, np. 3 lub 4 razy (Rysunek 4.3.1c). Zapamiętaj ten współczynnik, abyś potem wiedział, o ile przeskalować odpowiednie obiekty w Inkscape. (Później okazało się, że to rozwinięcie wymaga małej poprawki — p. str. 132)

Podczas rozwijania łopaty śmigła pozostaw połączenie siatek wzdłuż krawędzi natarcia (por. Rysunek 4.3.2a,d) — bo była często obtarta z farby. Dopilnuj, aby dolna część łopaty nie miała specjalnej deformacji — w tym miejscu było na śmigle umieszczone logo producenta (Rysunek 4.3.2d) :

Rysunek 4.3.2 Rozwinięcie łopaty śmigła.

Owiewkę podwozia zacznij rozwijać od projekcji obramowania na płaszczyznę (Rysunek 4.3.3a) :

Rysunek 4.3.3 Rozwijanie owiewki podwozia.

Pozwól się potem rozwinąć (E) przedniej części obramowania — po czym je przypnij (Rysunek 4.3.3b). Potem zaznacz resztę zewnętrznej siatki i pozwól jej wypełnić wnętrze obramowania (kolejne E). Rysunek 4.3.3c pokazuje, jakie rozwinięcie powinieneś uzyskać (po kilku drobnych poprawkach).

Rozwinięcie gondoli goleni podwozia starałem się wykonać tak, by żaden szew nie pojawił się na powierzchni. Doprowadziło to do powiększenia obrazu w części czołowej („jak na wygiętym kolanie” — Rysunek 4.3.4b). Taka jest cena kompromisów — w tym miejscu trzeba będzie zmniejszyć rozmiar nitów (poprzez zmianę skali). Na szczęście nie było ich tam za dużo. Możesz tylko dopilnować, aby powiększony fragment obrazu był równy (by linie podziału siatki się nie wyginały) i możliwe jednorodny (Rysunek 4.3.4a). (W następnej sekcji okaże się, że na tym rozwinięciu są kłopoty z odwzorowaniem połączenia trzech paneli — p. str. 133):

Rysunek 4.3.4 Szczegóły rozwinięcia owiewki podwozia.

Rozwiń także ruchome części owiewki, ich osie, oraz powierzchnie wewnętrzne (Rysunek 4.3.4c). Powierzchnie wewnętrzne można by było przygotować nieco później, ale zawsze lepiej jest rozwinąć od razu całą siatkę. (Inaczej może Cię zaskoczyć jakąś zapomnianą krawędzią bez szwu, psującą całe rozwinięcie).

Rozwinięcie oprofilowania pomiędzy skrzydłem i kadłubem rozpocznij od projekcji (Project From View) i przypięcia do rzutu z boku jego górnej krawędzi (Rysunek 4.3.5a) :

Rysunek 4.3.5 Szczegóły rozwinięcia owiewki płata.

Potem wywołaj polecenie Unwrap (E), aby cała reszta siatki wypełniła przygotowane w ten sposób obramowanie (Rysunek 4.3.5b).

P-40 miał, podobnie jak Spitfire, bardzo dużą owiewkę pomiędzy skrzydłem i kadłubem. Gdyby umieścić ją na rozwinięciu gdzieś z boku — czekałaby Cię podwójna robota uzgadniania różnych ciągłych elementów obrazu tekstury, np. granic plam kamuflażu. Taką owiewkę lepiej ustawić przy jednym z elementów, które łączy, aby do uzgadniania pozostała tylko jedna, „wolna”, krawędź. Do czego ją „przyłożyć”: skrzydła czy kadłuba? Proponuję dopasować to oprofilowanie do rozwinięcia kadłuba (Rysunek 4.3.6b), by mogły o nie swobodnie „zahaczyć” brzegi znaków rozpoznawczych lub numerów taktycznych. (W większości scen lepiej jest widoczny kadłub). Obraz na górnej powierzchni płata, wypadnie nam uzgadniać z obrazem na krawędzi owiewki.

Rysunek 4.3.6 Owiewka płata — część górna i przednia.

Przód owiewki pozostaw przyłączony do reszty powłoki (Rysunek 4.3.6a). W imię zachowania ciągłości tego elementu odsuniemy od kadłuba całe okapotowanie silnika, aby zrobić dla tego fragmentu miejsce. (Barwy na krawędziach okapotowania mogą być nieciągłe — każdy panel jest zamodelowany oddzielnie. Co innego na połączeniu oprofilowania płata i kadłuba!).

Jedynym elementem owiewki, który możemy oddzielić, jest spód jej tylnej części. Oznacz na niej szwem przedłużenie krawędzi spływu płata (Rysunek 4.3.7b):

Rysunek 4.3.7 Owiewka płata — część dolna.

Oddzielony w ten sposób fragment rozwiń przez proste rzutowanie (Project From View, z dołu) i ustaw przy krawędzi spływu dolnej powierzchni skrzydła.

Lotkę podziel szwem na powierzchnię górną i dolną. Po rozwinięciu umieść, nieco odsuniętą, w pobliżu miejsca gdzie jest zamocowana (Rysunek 4.3.8) :

Rysunek 4.3.8 Lotka — rozwinięcie górnej powierzchni.

Dolną powierzchnię lotki (wraz z krańcowymi żebrami) umieść w pobliżu wnęki na dolnej powierzchni płata (Rysunek 4.3.9) :

Rysunek 4.3.9 Lotka i klapa — ułożenie wzdłuż dolnej powierzchni płata.

Klapę także rozwiń poprzez projekcję z dołu, i po prostu umieść w otworze, jaki istniał w rozwinięciu (Rysunek 4.3.9). Nie ma sensu nawet „odwijać” jej brzegów — te same nity tekstury będą widoczne z obydwu stron, tak jak w oryginale.

Choć elementy kabiny pilota w P-40 nie są specjalnie skomplikowane, ich rozwinięcie w przestrzeni UV zajmie trochę czasu. Zacznij od rozwinięcia samych powierzchni szkła organicznego (Rysunek 4.3.10) :

Rysunek 4.3.10 Rozwinięcie przejrzystych powierzchni kabiny — przygotowanie do rozwinięcia ramek.

Co prawda do tych powierzchni jest przypisany inny materiał — B.Glass.Canopy (por. str. 492). Jeżeli w tym materiale będziemy wykorzystywać tekstury, to będą to inne obrazy niż te z podstawowego materiału poszycia (B.Skin.Camouflage). Szklane powłoki kabiny mają zazwyczaj nieskomplikowane siatki. Stosunkowo łatwo je rozwinąć w UV. Ich kontury posłużą jako wzorzec podczas rozwijania bardziej złożonych siatek ramek. Umieść je na płaszczyźnie UV tam, gdzie chcesz później ulokować rozwinięcie ramki.

Od razu podczas rozwijania „szkła” napotkasz na problem: ich powłoki składają się w istocie z dwóch powierzchni: wewnętrznej i zewnętrznej — bo nadaliśmy mu grubość (por. Tom II). Oznacz krawędzie powierzchni zewnętrznej jako szew. W związku z tym, że potrzebujemy tych rozwinięć tylko do celów „referencyjnych”, możesz „rozpłaszczyć” wyłącznie powierzchnie zewnętrzne. (Choć oczywiście, dobrze jest poprawnie rozwinąć także powierzchnie wewnętrzne — będą już gotowe na przyszłość).

Siatki ramek kabiny nie wydają się specjalnie trudne do rozwinięcia. Nic jednak bardziej mylnego! Duża liczba ścian schodzących się często po kątem ostrym, oraz grubość, nadana powłoce, bardzo utrudniają zastosowanie wszelkich „automatów” Blendera. Dlatego właśnie tak przydatny jest wzorzec, w postaci rozwiniętej powierzchni „szkła”. Pozwala podczas rozwijania ramek zorientować się w proporcjach poszczególnych ścian siatki.

Rysunek 4.3.11 przedstawia rozwinięcia ramek kabiny, po dopasowaniu do wzorcowych rozwinięć oszklenia:

Rysunek 4.3.11 Rozwinięcie ramek kabiny pilota.

Rozwinięcia należy zacząć od zaznaczenia szwu wzdłuż krawędzi powierzchni zewnętrznych i wewnętrznych. Potem rozwijasz kolejne fragment siatki, „przypinając” stopniowo kluczowe punkty do powierzchni obrazu i pozwalając dopasować się reszcie. Do rozwiniętych wycinków dołączasz następne — poleceniami Unwrap. W ten sposób stopniowo uzyskujesz właściwy kształt. Z czasem nabierzesz wprawy w tworzeniu założonego rozwinięcia za pomocą jak najmniejszej liczby „przypiętych” wierzchołków. W przypadku ramek wiatrochronu i owiewki zdecydowałem się pozostawić włączone modyfikatory symetrii (Mirror). Na takie „skróty” można pójść, gdy wiesz, że nawet na samolotach pomalowanych w plamy kamuflażu ta część miała jednolity kolor[1]. Rozwijanie połowy siatki jest prostsze niż uzgadnianie rozwinięcia całości — gdyż kierunek rozwinięcia ścian poleceniem Unwrap zależy od położenia w przestrzeni.

Na przykład — bardzo skomplikowany kształt przedniej ramy wiatrochronu zdecydowanie łatwiej było rozwijać po tej samej stronie samolotu, po której jest umieszczony „oryginał” (Rysunek 4.3.11, dolna połowa). Gdyby umieścić lustrzane odbicie tego rozwinięcia po stronie prawej (czyli w górnej połowie rozwinięcia, które pokazuje ilustracja), wszystkie ściany, które nie są „przypięte”, zawinęłyby się do wnętrza siatki. Fragment zamieniłby się w coś przypominającego spiralę DNA!

Gdy uzyskasz w wyniku polecenia Unwrap jakieś bezładne „kłębowisko” ścian, nie przejmuj się: to się zdarza. Należy wtedy nanieść na siatkę — tam, gdzie można — dodatkowe szwy. Potem zacznij rozwijać ją etapami, zaczynając od fragmentu, którego rozwinięcie nie przysparza Blenderowi problemów. Następnie starannie „przypnij” do obrazu wszystkie wierzchołki tego fragmentu, i pozwól się dopasować do nich następnym ścianom.

Ramkę oszklenia za nagłówkiem pilota umieściłem ponad powierzchnią, którą zasłania (Rysunek 4.3.11). Jest to projekcja (Project From View) z rzutu z boku, trochę „rozciągnięta”, by była dopasowana do rozwinięcia kadłuba. W odróżnieniu od wiatrochronu i owiewki, powierzchnie wewnętrzne i zewnętrzne są tu nałożone na siebie. (I tak wewnętrzne są praktycznie niewidoczne). Choć ilustracja tego (dla uproszczenia) nie pokazuje, to prawa ramka ma oddzielną siatkę, o identycznym kształcie rozwinięcia UV, po prawej strony kadłuba. Tu nie można było pozostawić symetrii — podział barw kamuflażu biegł poprzez ten element (a także poprzez powierzchnię kadłuba pod oszkleniem).

Czas zająć się kolejną częścią: sterem kierunku. To łatwe rozwinięcie. Najpierw nanieś szew na krawędź, leżącą na płaszczyźnie symetrii steru, oraz na granice materiałów (Rysunek 4.3.12a) :

Rysunek 4.3.12 Rozwinięcie steru kierunku.

Na razie zaznacz wyłącznie ściany należące do powierzchni zewnętrznych (materiału B.Skin.Camouflage). Pierwsze przybliżenie rozwinięcia uzyskasz poprzez projekcję (Project From View) steru z rzutu z boku (Rysunek 4.3.12b). Przypnij do obrazu jej kluczowe wierzchołki, by na pewno nie uległy deformacji podczas dalszej edycji. Potem pozwól się rozwinąć (Unwrap) ścianom na krawędzi natarcia i spodzie steru (Rysunek 4.3.12c).

Statecznik pionowy rozwinęliśmy (poprzez projekcję) już w poprzednim rozdziale. Teraz pozostaje nanieść na niego szwy (Rysunek 4.3.13a), oraz „odpiąć” od obrazu krawędź natarcia i pozwolić się jej rozwinąć (Rysunek 4.3.13b,c) :

Rysunek 4.3.13 Drobne poprawki rozwinięcia statecznika pionowego.

Na koniec utrwal modyfikator Mirror (Apply) dla statecznika i steru. Potem wykonaj w przestrzeni UV lustrzane odbicie ich rozwinięć (Rysunek 4.3.14a)

Rysunek 4.3.14 Pełne rozwinięcie statecznika pionowego (i steru kierunku).

Powierzchnie wewnętrzne, jak tylna ściana statecznika czy wycięcia w sterze warto jest rozwinąć już po „utrwaleniu” prawych stron. Rozwiną się wówczas od razu prosto i symetrycznie (Rysunek 4.3.14b).

Identyczną metodą rozwiń siatki statecznika poziomego i steru wysokości (Rysunek 4.3.15) :

Rysunek 4.3.15 Pełne rozwinięcie statecznika poziomego (i steru wysokości).

Powierzchnie wewnętrzne są na modelu o wiele mniej widoczne, i można je potraktować w sposób uproszczony. Dlatego rozwijamy tylko symetryczną połowę wnętrza kadłuba (Rysunek 4.3.16) :

Rysunek 4.3.16 Rozwinięcie wewnętrznych powierzchni kadłuba.

Wręg i podłużnic nie rozsuwaj — pozostaw je „w wiązkach”, tak jak wyszły z rzutowania z przodu i z góry.

Rozwiń także tylko jedną wnękę klapy skrzydłowej (druga pozostanie jej lustrzanym odbiciem) (Rysunek 4.3.17):

Rysunek 4.3.17 Rozwinięcie wnętrza komory klapy.

Zwróć uwagę na rozwinięcie żeber — mimo różnic rozmiarów ułożyłem dokładnie jedno na drugim (Rysunek 4.3.17b). To ułatwi zamalowywanie (choć wszystkie żebra będą miały jednakowe plamy) oraz nanoszenie tekstury otworu. W bardzo podobny sposób rozwiń górną powierzchnię klapy (Rysunek 4.3.18) :

Rysunek 4.3.18 Rozwinięcie wewnętrznej strony klapy skrzydłowej.

Wnękę komory podwozia także pozostaw symetryczną — rozwiń jedną siatkę, wspólną dla obydwu instancji (Rysunek 4.3.19) :

Rysunek 4.3.19 Rozwinięcie komory podwozia.

Zwróć uwagę, że wszystkie podłużnice powierzchni płata także używają tej samej, pojedynczej siatki.

Ostatnim zespołem, który pozostał do rozwinięcia, jest wnętrze chłodnicy cieczy (Rysunek 4.3.20) :

Rysunek 4.3.20 Rozwinięcie wnętrza zespołu chłodnic.

Wszystkie trzy chłodnice są zamodelowane przez tę samą siatkę (różnią się tylko skalami). W istocie, nie jest to nawet cały walec, a tylko jego „ćwiartka” (Rysunek 4.3.20b). Reszta elementów zespołu jest także reprezentowana symetrycznie. Na rozwinięciu jest tylko jeden boczny (lewy) tunel chłodnicy glikolu. Jego lustrzane odbicie jest po prawej stronie samolotu. Z centralnego tunelu — do chłodnicy oleju — na rozwinięciu umieściłem tylko połowę.

Rysunek 4.3.21 przedstawia rozwinięcie wszystkich powierzchni:

Rysunek 4.3.21 Zestawienie wszystkich siatek, zgromadzonych na wspólnej powierzchni UV.

Jak widać, na jednym obszarze „upchaliśmy” zarówno powierzchnie zewnętrzne (przypisane do materiału B.Skin.Camouflage), jak i wewnętrzne (B.Skin.Inner). Ten sam obraz będzie wykorzystywany przez obydwa materiały. To ułatwi jego rysowanie — mamy wszystko w jednym miejscu. Prawe skrzydło ma od tej pory swoją oddzielną siatkę (to kopia siatki lewego skrzydła). Jej rozwinięcie w UV to „lustrzane odbicie” rozwinięcia oryginalnej siatki. Przy okazji w 3D View zmieniłem skalę prawego płata (wzdłuż lokalnej osi X) na dodatnią, bo inaczej sprawiłoby nam kłopoty w następnym rozdziale.

Unikaj ujemnej skali obiektów, przynajmniej takich głównych zespołów jak skrzydła czy statecznik. W przypadku prawego skrzydła po zmianie skali obiektu na dodatnią musisz ją skompensować przeskalowując jego siatkę (B.100.R.Wing) o współczynnik -1 wzdłuż lokalnej osi X i środka obiektu skrzydła.

Zwróć uwagę, że na obrazie UV pozostało jest jeszcze trochę wolnej przestrzeni. Zawsze warto pozostawić jej zapas na wszelkie nieprzewidziane potrzeby. Na pewno, przy okazji formowania podwozia, dodamy tu kołpaki kół. Jednak w zasadzie, na wszystkich drobnych elementach (golenie podwozia, popychacze, pomalowane rurki i kable) wykorzystamy inne, uproszczone materiały. Jeżeli pojawią się na nich tekstury, to co najwyżej jakieś proceduralne „chmury” zabrudzeń — byle tylko nie rozwijać tych drobiazgów w UV i uniknąć ręcznego malowania.

Wreszcie mamy już rozwinięte w UV wszystkie zewnętrzne powierzchnie samolotu (Rysunek 4.3.22):

Rysunek 4.3.22 Wszystkie powierzchnie zewnętrzne modelu zmapowane w UV.

Przez ten obraz testowy model na tym etapie prac zawsze kojarzy mi się z arlekinem, nieprawdaż?

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.03.blend (por. str. 20).

Podsumowanie

- Stożek kołpaka śmigła jest powierzchnią trudną do rozwinięcia. Aby nie pozostawić na nim szwu, zdecydowałem się „spłaszczyć” go w koło. Obraz na tej siatce jest co prawda zdeformowany, ale przynajmniej zdeformowany jednolicie. Umożliwia to narysowanie odpowiednio przeskalowanych nitów (str. 117);

- W rozwinięciu owiewki gondoli podwozia wystąpiła deformacja na nosie powłoki. Chciałem to skompensować podobnie jak w przypadku kołpaka śmigła, przez odpowiednią zmianą skali nitów (str. 118). W następnej sekcji okaże się jednak, że w takich miejscach nie można ich umieszczać (str. 133);

- Rozwinięcie oprofilowania krawędzi skrzydła i kadłuba najlepiej jest zacząć od projekcji z boku, na kadłub samolotu. Potem należy „przypiąć” do obrazu wierzchołki zewnętrznego obramowania, i pozwolić się rozwinąć (Unwrap) reszcie siatki (str. 119);

- Rozwinięcie ramek owiewki kabiny pilota jest dość pracochłonne. Aby ułatwić sobie tę pracę, możesz rozwinąć wcześniej powierzchnie „szklane” (str. 120). Innym uproszczeniem jest możliwość rozwinięcia tylko jednej, symetryczną części (str. 121);

- Stery i stateczniki formujemy na bazie projekcji z góry (usterzenie poziome) lub z boku (pionowe);

- W rozwinięciu wewnętrznych powierzchni samolotu można dokonać wielu uproszczeń, np. rozwinięcia tylko połowy siatki. Te fragmenty modelu są tak nieznacznie wyeksponowane, że nikt nie zauważy symetrii (str. 123... 125;

[1] (str. 121) Taka sytuacja jest, mimo pozorów, regułą, a nie wyjątkiem. Układ plam kamuflażu dobiera się tak często tak, by jak największa liczba części, malowanych podczas produkcji oddzielnie, miała jednolita barwę.

4.4  Rysowanie obrazu powierzchni samolotu

Po rozwinięciu w UV wszystkich siatek czas przygotować obraz, który będzie podstawą dla wszystkich tekstur: rysunek powierzchni samolotu. Zrobimy to na odpowiednich warstwach pliku skin.svg (por. str. 81 i następne). Początek zresztą już mamy — to linie statecznika pionowego i owiewki usterzenia, przygotowane przy okazji „prac doświadczalnych” w poprzednich sekcjach (por. str. 53, 56, 78). Zaczniemy od powierzchni kadłuba. Wyeksportuj z Blendera do plików *.svg: rozwinięcia siatek kadłuba, statecznika pionowego, owiewek skrzydła i usterzenia, oraz tylnych ramek kabiny. Wczytaj te pliki do pomocniczego pliku uv.svg, z którego stwórz pomocniczy obraz rozwinięć uv.png (por. str. 80 i str. 544). Korzystając z tego „podkładu”, oraz z sylwetki samolotu, narysuj na rozwinięciu lewej strony podstawowe linie paneli kadłuba (na warstwie Lines — Rysunek 4.4.1):

Rysunek 4.4.1 Początek obrazu — naniesienie podstawowych linii paneli kadłuba.

Przy okazji rysowania okazało się, że przydałaby się nowa warstwa na wszelkiego rodzaju pokrywy — klap i otwory inspekcyjne. Najszybciej je narysować na poziomie powyżej nitów (por. str. 81), bo wtedy nie trzeba dzielić ich linii. Warstwa, którą wykorzystywaliśmy do tej pory na takie rzeczy — Overlay — leży poniżej. Dodałem więc pomiędzy poziomem nitów (Rivets) i śrub (Screws) nową warstwę Cover, na której umieściłem pierwszą z pokryw — luk bagażnika (Rysunek 4.4.1) .

Narysowany fragment warto zaraz wyeksportować do pliku nor_details.png, i podstawić w Blenderze pod obraz Test (Image→Replace), by w trybie Textured „przymierzyć” go do modelu (Rysunek 4.4.2):

Rysunek 4.4.2 Sprawdzanie poprawności narysowanych linii (Blender, 3DView, tryb textured).

Nadaj plikowi nor_details.png rozdzielczość 4096x4096 pikseli, by odwzorował nawet drobne szczegóły.

Podczas „przymiarki” należy sprawdzić, czy wszystkie linie, które powinny być poziome i pionowe, są takimi na modelu. Potem warto się przyjrzeć konturom, narysowanym wzdłuż krawędzi powłok „nałożonych” na kadłub: ramki kabiny, oprofilowania skrzydła, oprofilowania usterzenia (por. Rysunek 4.4.1). Czasami niesforna linia może „zanurkować” pod siatkę (np. tak, jak to pokazuje Rysunek 4.4.2b). Trzeba wtedy poprawić jej kształt w Inkscape i powtórnie sprawdzić w Blenderze. Zazwyczaj wymaga to kilku takich „iteracji”. Aby jak najszybciej „trafić” z obrysem we właściwe miejsce, warto możliwie dokładnie zidentyfikować na rysunku Inkscape obszar, który należy zmienić. Pomocą w tym może być przestudiowanie położenia granic błędnej krawędzi względem poszczególnych „oczek” siatki. (Zobaczysz je, gdy przełączysz się w Blenderze w tryb edycji — Rysunek 4.4.2c).

Jeżeli spieszy Ci się, możesz poprzestać na narysowaniu prostej tekstury nierówności, złożonej z samych linii podziału blach. Reszta tej sekcji jest poświęcona nanoszeniu nitów, śrub, i innych szczegółów, które służą tylko pogłębieniu realizmu modelu.

Teraz zacznij nanosić na obraz w Inkscape pozostałe „konstrukcyjne” nierówności: śruby, nity. Nie zapomnij także o „podłożeniu” jasnych obszarów pod oprofilowanie połączenia skrzydła z kadłubem (na warstwie Overlay). W trakcie tej pracy stwierdzisz, że pomysł z nałożeniem ramek oszklenia na kadłub nie jest najlepszy (Rysunek 4.4.3) :

Rysunek 4.4.3 Nanoszenie śrub i nitów na rozwinięcie kadłuba.

Problemem stało się tu dokładnie to, co w przypadku tekstury kolorów ma być zaletą: gdy coś rysujesz na ramce, rysujesz jednocześnie po kadłubie. Właśnie o taki efekt chodziło w przypadku nanoszenia kamuflażu — aby nie trzeba było uzgadniać pomiędzy siatkami granic plam, namalowanych na powierzchni samolotu. Tyle, że teraz linie nitów, które biegły pod oszkleniem kadłuba, wychodzą także na ramce kabiny, a nierówności ramki — np. pionowy pasek — „odciśnie” się również na kadłubie!

Ramka oszklenia nie jest zresztą jedynym kłopotliwym obszarem. Jeszcze tego nie widać, ale będzie problem także z oprofilowaniem płata. Jest to na tyle duży element, że został złożony z kilku fragmentów blachy. Panele te łączą się na nim tak jak na innych powierzchniach samolotu — „na zakładkę”. Tyle, że są inaczej podzielone niż krawędzie paneli kadłuba, do którego przylegają. Czy trzeba będzie w tym miejscu męczyć się z dokładnym dopasowywaniem granic wypełnionych gradientem obszarów?

Najlepiej byłoby, gdyby można było użyć do nałożenia obrazu barwy układu UV z nałożonymi na siebie rozwinięciami, a na dla obrazu nierówności i odbić — innego, z rozwinięciami odseparowanymi. Czy jest to w Blenderze możliwe?

Na szczęście w Blenderze siatka może mieć kilka alternatywnych rozwinięć UV. Każde z nich jest nazywane „mapą UV” (UV Map). Do zarządzania nimi służą kontrolki w panelu UV Maps, zestawu Object Data. Zajrzyj na str. 423, aby dowiedzieć się, jak stworzyć alternatywne rozwinięcie UV, oraz poznać kluczowe pojęcia („mapa domyślna”, „mapa aktywna”). Do powiązania tekstury materiału z wybranym mapowaniem UV służy w Cycles węzeł Attribute (więcej na ten temat — str. 512). Jest tam identyfikowane po nazwie. Stąd bardzo ważne, by odpowiadające sobie alternatywne rozwinięcia UV były w każdej siatce tak samo nazwane.

Proponuję, aby w naszym modelu domyślna (podstawowa) mapa UV miała w każdej siatce nazwę UVTex. (Cycles będzie jej używał wtedy, gdy materiał nie odwołuje się do żadnej konkretnej nazwy mapy UV, lub gdy siatka nie posiada żądanego przez materiał rozwinięcia). W siatkach ramki oszklenia i oprofilowania skrzydła utwórz kopię (str. str. 423) obecnego rozwinięcia UV, i nazwij je Color. To będzie rozwinięcie dla obrazów barwnych, zawierające nałożone na siebie rozwinięcia kadłuba i owiewki płata (takie, jakie pokazuje Rysunek 4.4.3). Potem zmień mapę UVTex, umieszczając rozwinięcia oprofilowania skrzydła i ramek oszklenia gdzieś poza kadłubem (Rysunek 4.4.4):

Rysunek 4.4.4 Alternatywne rozwinięcie UV oprofilowania skrzydła i ramek oszklenia na warstwie UVTex.

Oczywiście, trzeba było trochę poprzesuwać kilka innych siatek, by „zrobić” miejsce dla rozwinięć zdjętych z kadłuba (porównaj Rysunek 4.4.4 i Rysunek 4.3.21 ze str. 125). Przygotuj się także na to, że za jakiś czas dodamy do niektórych obiektów trzecie mapowanie UV: Decals. Będzie przeznaczona dla nałożenia oddzielnej tekstury ze znakami rozpoznawczymi, numerami seryjnymi i — rzecz jasna — szczęką rekina, namalowaną na masce silnika. Przy obecnym „rozparcelowaniu” okapotowania, malowanie obrazu tego szczegółu wymagałoby wielu uzgodnień wzdłuż krawędzi paneli. Aby oszczędzać nerwy i czas, lepiej jest skopiować rozwinięcie Color w Decals, a potem podzielić na niej rozwinięcie osłony chłodnicy wzdłuż osi symetrii kadłuba. Pozostałe fragmenty okapotowania poprzysuwać do siebie, i namalować na nich szczęki tak, jak były malowane w naturze — „w jednym kawałku” (por. str. 176).

Nanieś w Inkscape na rozwinięcie kadłuba (Rysunek 4.4.4) linie podziału (warstwa Lines), śruby (Screws), ich zagłębienia (Bumps), pierwszoplanowe „pokrywy” (Cover), nity (Rivets), drugoplanowe „pokrywy” (Overlay). Narysuj najpierw te szczegóły na lewej połówce kadłuba, sprawdź „jak leżą” w Blenderze (tryb textured), i w razie czego popraw, by leżały lepiej (Rysunek 4.4.5) :

Rysunek 4.4.5 Sprawdzanie poprawności nałożenia rysunku na kadłub — strona lewa.

Przy okazji prac nad lewą stroną, okazało się że kolejność warstw zaproponowana w poprzednich sekcjach (str. 81) wymaga poprawki. Trzeba było przenieść warstwę Bumps, oryginalnie umieszczoną dość „głęboko”, tuż po warstwę Screws. Inaczej nie widać by było zagłębienia pod śrubami na różnych zasłonach wzierników.

Potem skopiuj obraz tych wszystkich szczegółów na drugą połowę kadłuba i także ją sprawdź (Rysunek 4.4.6):

Rysunek 4.4.6 Sprawdzanie poprawności nałożenia rysunku — strona prawa.

Szczególnie uważnie przyjrzyj się tym wszystkim miejscom, gdzie biegną szwy podziału rozwinięcia UV. Tam najczęściej gromadzą się problemy! Niektóre z występujących tam deformacji obrazu na można skorygować poprzez wyostrzenie krawędzi poprzecznej (Rysunek 4.4.7) :

Rysunek 4.4.7 Korekta deformacji obrazu w okolicach szwu (spód kadłuba, przy kółku ogonowym).

(W podobny sposób radziliśmy sobie z nim wcześniej — por str. 110, Rysunek 4.2.12).

Tak jak tył kadłuba, przygotuj obraz maski silnika: z lewej (Rysunek 4.4.8a) i z prawej (Rysunek 4.4.8b) :

Rysunek 4.4.8 Nałożenie rysunku na okapotowanie silnika.

Czasami dopiero na tym etapie można się przekonać o niedoskonałości siatki. Rysunek 4.4.9a) pokazuje przykład deformacji obrazu, jaka wystąpiła na ścianach sąsiadujących z krawędzią szwu:

Rysunek 4.4.9 Skaza rozwinięcia w pobliżu szwu.

Ten błąd poprawiłem tak jak poprzednio — zwiększając ostrość (Crearse) dwóch krawędzi poprzecznych (Rysunek 4.4.9b). W tym miejscu trzeba było wstawić w siatkę dodatkową krawędź, by zachować zaokrąglony nosek chwytu powietrza.

Rozwinięcie kołpaka, mimo 2.5-krotnego powiększenia, nie wyglądało jednak najlepiej na modelu (por. str. 117, Rysunek 4.3.1). Pomogło dopiero zmniejszenie („zsunięcie”) ścian czubka tego elementu (Rysunek 4.4.10) :

Rysunek 4.4.10 Szczegóły rozwinięcia kołpaka śmigła.

Wszystkie wręgi kołpaka, poza ostatnią, „ścisnąłem” o 40-50%. Zwiększyłem w ten sposób niemal dwukrotnie obszar, na którym znajdują się ważne fragmenty obrazu — nity, otwory na łopaty śmigieł, i krawędzie blach za nimi (Rysunek 4.4.10b). Zminimalizowało to także poprzeczną deformację kształtów — okrąg na modelu to w tym obszarze w Inkscape nieznacznie spłaszczona elipsa (Rysunek 4.4.10c). W efekcie jakość obrazu na kołpaku bardzo się poprawiła, i stała się porównywalna z resztą rozwinięcia (Rysunek 4.4.10a). Obsłużenie „efektów ubocznych” takiej poprawki wymagało jednak pewnej pracy. Najpierw — trudno było trafić rysunkiem otworu (Rysunek 4.4.10c) w podstawę łopaty śmigła. Potem trzeba było w Inkscape trochę rozchylić linie krawędzi blachy za łopatą, aby na modelu stały się równoległe. Wreszcie — trzeba było zróżnicować średnice nitów w zależności od odległości od środka kołpaka (Rysunek 4.4.10b). Rezultat — ładne rozwinięcie, bez żadnego szwu — był jednak wart tego wysiłku.

Szczegóły powierzchni płata rysuje się tak samo, jak szczegóły kadłuba, a nawet prościej — skrzydło ma powierzchnię rozwijalną (Rysunek 4.4.11) :

Rysunek 4.4.11 Rysunek szczegółów górnej powierzchni płata.

Przy okazji pracy nad płatem zdecydowałem się narysować także szczegóły osłony podwozia. Tu czekało mnie niemiłe zaskoczenie: linie podziału blach na „nosie” tego elementu wyszły bardzo źle (Rysunek 4.4.12) :

Rysunek 4.4.12 Problem z deformacją obrazu podziału poszycia (osłona podwozia).

Na gondoli podwozia P-40 widać, w rzucie z przodu, dwie linie podziału: wygiętą od strony zewnętrznej i pionową od strony kadłuba. Najgorzej wyszła linia zewnętrzna (Rysunek 4.4.12a). Linia wewnętrzna wyglądała nieco lepiej, ale była za szeroka (Rysunek 4.4.12b). W dodatku gdyby przesunąć ją nieco bardziej w bok, na właściwe miejsce, dostałaby się w obszar silnych deformacji obrazu (Rysunek 4.4.12c).

Wygląda na to, że oryginalny pomysł (por. str. 118, Rysunek 4.3.4) na rozwinięcie tej powierzchni nie zdał egzaminu. (Wszystko byłoby w porządku, gdyby nie istnienie tych dwóch linii podziału, biegnących przez bardzo zdeformowane obszary tekstury).

Aby poprawnie nanieść obraz na nos owiewki podwozia, najlepiej byłoby ją inaczej rozwinąć w UV. Linia szwu powinna przebiegać wzdłuż linii podziałów. Na razie na siatce nie ma żadnej krawędzi, która by biegła choć w zbliżony w sposób. Trzeba powrócić do modelowania: ponacinać niektóre ściany, pousuwać niektóre krawędzie, aby ostatecznie dwie z nich biegły prawie tak, jak oryginalne linie paneli poszycia (Rysunek 4.4.13) :

Rysunek 4.4.13 Krawędzie podziału, nacięte na siatce owiewki

Rysunek 4.4.14 Powiększona pokrywa wspornika goleni

Nieuniknionym efektem takiego nacinania jest pojawienie się ścian trójkątnych i wielokątnych (w każdym razie o liczbie boków innej niż 4). Wewnątrz takich ścian wygładzenie modyfikatorem Subsurf tworzy drobne, ale denerwujące wypukłości. Staraj się je eliminować, dopóki jest to możliwe. Na koniec pozostaniesz z kilkoma „niedobitkami” — te postaraj się zmniejszyć i ulokować w jakimś „gęstszym” fragmencie siatki, lub tam, gdzie powierzchnia jest wklęsła — przy skrzydle. Nie będę udawał, że jest to proste — zeszło mi na tym parę ładnych godzin. Ostatecznie jednak udało się uzyskać powłokę z odpowiednimi krawędziami i minimalnymi defektami kształtu (Rysunek 4.4.14). Swoją drogą - to nauczka na przyszłość:

Zawsze warto modelować siatkę tak, by niektóre z jej krawędzi odpowiadały liniom podziału poszycia na prawdziwym samolocie.

Pewną pociechą w tej pracy było odkrycie, że ostatnio jakaś dobra dusza umieściła na http://p40warhawk.com kolejne rysunki konstrukcyjne, w tym — dwa arkusze dotyczące owiewki podwozia. Gdy je przymierzyłem do planów, okazało się, że boczna pokrywa (pokazuje ją Rysunek 4.4.14) była niemal o 50% większa niż ta rysowana przez Jacka Jackiewicza i Mariusza Łukasika! Mówiąc szczerze, ja już zrobiłem ją nieco większą — bo inaczej podwozie nie mogłoby się złożyć. Starałem się jednak nie odbiegać zanadto od planów, więc ta pokrywa nadal była mniejsza od oryginału. Teraz trzeba powiększyć otwór w owiewce o jakieś 30%. To też była poważna przeróbka.

Po tym wszystkim, mogłem ostatecznie rozwinąć owiewkę w UV, dzieląc ją na trzy części, wzdłuż krawędzi podziału blach (Rysunek 4.4.15):

Rysunek 4.4.15 Rozwinięcie siatki owiewki podwozia

Rysunek 4.4.16 pokazuje uzyskany rezultat:

Rysunek 4.4.16 Poprawiony obraz linii podziału blach na owiewce podwozia

Zewnętrzna linia podziału uzyskała znośną grubość i już nie straszy kształtem (Rysunek 4.4.14a). Linia wewnętrzna także stała się cieńsza (Rysunek 4.4.14b). Można ją było umieścić we właściwym miejscu — na przedłużeniu krawędzi pokrywy goleni podwozia.

Po tych poprawkach można było już swobodniej zająć ostatnim fragmentem samolotu: usterzeniem. Tak, jak to opisałem poprzednio, odwzorowałem poszycie metalowych stateczników (Rysunek 4.4.17). W nieco inny sposób narysowałem szczegóły sterów, które były pokryte płótnem (Rysunek 4.4.18) :

Rysunek 4.4.17 Obraz szczegółów usterzenia

Rysunek 4.4.18 Odwzorowanie pokrycia płótnem

Aby w ogóle widać było wypukłości na płóciennym poszyciu, zmieniłem kolor tła obrazu na 50% szarości. Wypukłości na żebrach steru i lotki uzyskałem za pomocą specjalnego gradientu, naniesionego na nową warstwę Fabric. (Szczegółowy opis, jak uzyskać obraz nierówności dla powierzchni krytych płótnem — zob. str. 341).

Rysunek 4.4.19 Dynamiczne wgłębienia płóciennego poszycia

Zaszewki na żebrach, które pokazuje Rysunek 4.4.18, dobrze imitują napięte płótno na samolocie stojącym na ziemi. Ten rodzaj poszycia podczas lotu ulega różnym deformacjom. Różnica ciśnień strumienia powietrza potrafi „wtłoczyć” płótno do środka szkieletu, albo (rzadziej) — uwypuklić. Załóżmy typową sytuację, gdy poszycie pomiędzy żebrami będzie podczas lotu zagłębione. Aby to odwzorować, przygotowałem w skin.svg jeszcze jedną warstwę: Fabric Bumps. Narysowałem na niej odpowiednie czarne „cienie” pomiędzy żebrami sterów i lotek (Rysunek 4.4.19).

Zbliżamy się już do końca tworzenia obrazu podstawowych nierówności. Pozostało jeszcze tylko nanieść gradienty wzdłuż krawędzi paneli (por. str. 332). Najlepiej przy okazji zacząć sprawdzać, jak wychodzą te nierówności na renderze. Wyeksportuj więc do pliku nor_details.png odpowiednią kompozycję (por. str. 81). W stosunku do tej, opisanej wcześniej, metody, przybyło nam kilka dodatkowych warstw. Wyliczę więc wszystkie jeszcze raz (Rysunek 4.4.20):

Rysunek 4.4.20 Warstwy, użyte do skomponowania podstawowej mapy nierówności (nor_details.png)

W stosunku do schematu ze na str. 85, w skin.svg pojawiły się cztery nowe warstwy:

- Cover: pokrywy otworów, które mają zasłonić nity;

- Fabric: „statyczne” szczegóły powierzchni krytych płótnem (stery, lotki) ;

- Fabric Bumps: „dynamiczne” wgłębienia na powierzchniach krytych płótnem;

- Holes: otwory (będą także wykorzystane w oddzielnej teksturze przejrzystości);

Z innych zmian — warstwa Bumps została przesunięta do góry (aby wgniecenia pod śrubami były także widoczne na pokrywach z warstwy Cover).

Dodaj teksturę nor_details.png do schematu materiału B.Skin.Camouflage (por. str. 83 — z tym że radzę stosować wyższe wartości Moderate:Range: rzędu 0.8 lub nawet 1.0). Potem włącz w Blenderze podgląd renderu, i obejrzyj ze wszystkich stron rezultaty dotychczasowej pracy (Rysunek 4.4.21) :

Rysunek 4.4.21 Weryfikacja gradientów, naniesionych wzdłuż krawędzi paneli (na podglądzie renderingu)

Rysunek 4.4.21a) przedstawia obraz nierówności, nałożony (w trybie Textured) na powierzchnię samolotu. Tak go sprawdzaliśmy do tej pory. Rysunek 4.4.21b) przedstawia ten sam fragment w trybie Rendered. Używając tych dwóch trybów szybko dostrzeżesz wszystkie błędy!

Prace nad obrazem nierówności zbliżają się szczęśliwie do końca. Pozostało jeszcze dorysować elementy przeznaczone dla pozostałych tekstur: zawartość warstw Contours i Shadows (Rysunek 4.4.22) :

Rysunek 4.4.22 Dodatkowe akcenty, używane w pozostałych teksturach: cienie pod nitami i wzdłuż konturów

W odróżnieniu od przepisuj ze str. 82, na warstwie Shadows narysowałem linie nie w kolorze szarym, ale czarnym. Tyle, że mają nieprzejrzystość na poziomie 10%. W ten sposób efektywny kolor na białym tle wyjdzie taki sam. Krawędzie każdej siatki, które na modelu są zakończone „na grubość blachy” (np. panele okapotowania silnika) są obrysowane na warstwie Contours grubą, ciemną linią. Zawartość obydwu warstw będzie wykorzystana podczas tworzenia drugorzędnej tekstury nierówności (nor_blur.png) i tekstury odbić (ref.png).

Rysunek 4.4.23 pokazuje zawartość pliku skin.svg, która została wykonana w tej sekcji:

Rysunek 4.4.23 Zawartość pliku skin.svg

Trzeba przyznać, że wysiłek, włożony w te wszystkie cienie i nity jest porównywalny z wykonaniem kilku arkuszy planów modelarskich! Gdybyś chciał coś z tego pominąć , by przyspieszyć pracę — zrezygnuj z nitów (warstwa Rivets) i ich cieni (Shadows). To najbardziej pracochłonne fragmenty rysunku, a ich efekty są widoczne na renderingu tylko z niewielkich odległości. Zobacz chociażby taki dość surowy przykład (Rysunek 4.4.24):

Rysunek 4.4.24 Rezultat zastosowania podstawowej tekstury nierówności (nor_details.png)

O ile linie podziałów paneli i punkty śrub w znaczący sposób dodają realizmu modelowi przedstawionemu na tej ilustracji, o tyle wszelkie nity są na nim niemal niewidoczne!

Rysunek 4.4.25 przedstawia schemat podłączenia podstawowej tekstury nierówności (taki sam, jak na str. 83):

Rysunek 4.4.25 B.Skin.Camouflage: podłączenie podstawowej tekstury nierówności (nor_details.png)

Warto sprawdzić, jak szczegóły rysunku „leżą” na powierzchni matowej. Może coś trzeba podkreślić lub osłabić? Przetestowałem to na typowej, półmatowej farbie w kolorze oliwkowozielonym (Rysunek 4.4.26):

Rysunek 4.4.26 Sprawdzanie tekstury nierówności na półmatowej powierzchni kamuflażu

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.04.blend, a pliki z teksturami — w folderze model\p40\textures\7.04\* (por. str. 20).

Podsumowanie

- Rysowanie szczegółów powierzchni samolotu zaczyna się od przeniesienia z Blendera do Inkscape rozwinięć w UV siatek wszystkich elementów (str. 128);

- Typowa taktyka pracy nad obrazem powierzchni polega na wykonywaniu kolejnych „przymiarek” do modelu. Masz jednocześnie otwarte: Blender i Inkscape. Po narysowaniu kolejnego fragmentu rysunku w Inkscape, eksportujesz całość do pliku rastrowego. W Blenderze obraz, związany z tym plikiem, jest nałożony (w trybie Textured) na model. Wystarczy go odświeżyć (Image→Reload) i sprawdzić, czy nowy fragment jest dobrze dopasowany. Potem pozostaje nanieść w Inkscape poprawki (str. 128);

- Jeżeli chcesz uprościć obraz szczegółów technicznych powierzchni modelu — zrezygnuj w pierwszej kolejności z nitów (warstwa Rivets) i ich cieni (warstwa Shadows) (por. str. 138);

- W Blenderze ta sama siatka może mieć kilka alternatywnych rozwinięć w przestrzeni UV (UV Maps). Ta właściwość przydaje się czasami, gdy inne wymagania rozwinięciu UV stawia tekstura barwy, a inne — tekstura nierówności czy odbić (str. 130);

- Deformacje rozwinięcia w UV siatek wzdłuż szwów można poprawiać poprzez wyostrzenie krawędzi poprzecznej (str. 131, 132);

- „Bezszwowe” rozwinięcie stożka kołpaka śmigła w koło okazało się całkiem dobrym rozwiązaniem, wymagającym drobnej korekty. Rozwinięcia UV ścian czubka stożka musiały być pomniejszone, by poprawić poprzeczne proporcje obrazu w okolicach łopat śmigła (por. str. 117 i str. 133);

- „Bezszwowe” rozwinięcie gondoli podwozia (por. str. 118) okazało się niewypałem — linie podziału blach w najbardziej zdeformowanej części — nosie gondoli — nie wyglądały dobrze. Należało przemodelować całą siatkę, by nanieść na nią krawędzie, biegnące wzdłuż linii podziału blach. Następnie trzeba było poprowadzić szwy wzdłuż tych krawędzi, i poprawić rozwinięcia UV (str. 133 — 135);

- Do sprawdzania poprawności układu podziału blach warto jest utworzyć odpowiednią teksturę nierówności, i przeglądać ją szczegółowo w trakcie rysowania (podglądem renderu — str. 136);

4.5  Kompozycja obrazów tekstur nierówności (Nor)

Rezultatem poprzedniej sekcji jest plik skin.svg, wypełniony do końca detalami powierzchni samolotu. Niejako przy okazji testowania wygenerowaliśmy podstawową teksturę nierówności — plik nor_details.png(str. 81, 137). W tej sekcji:

- wprowadzimy usprawnienia, ułatwiające późniejsze modyfikacje źródłowych rysunków (skin.svg);

- stworzymy obraz pomocniczej tekstury nierówności (nor_blur.png);

Zajrzyj do sekcji 3.4 (str. 81 - 86), aby przypomnieć sobie, jak składaliśmy te obrazy z poszczególnych warstw rysunku Inkscape. Nadal można byłoby to robić w ten sposób — włączając widoczność odpowiednich warstw i zmieniając dodatkowo w niektórych ustawienia przejrzystości. Ale ile wtedy trzeba pamiętać, co i jak ustawić! Na przykład — w każdym eksportowanym z Inkscape obrazów nity z warstwy Rivets muszą mieć inną przejrzystość. Warto zdać sobie sprawę, że jest to uciążliwe, szczególnie gdy będziesz często nanosił w pliku skin.svg jakieś poprawki. Na szczęście w Inkscape można tak przygotować ten rysunek, aby nie trzeba było wykonywać co chwila takich pracochłonnych kroków. W tej sekcji pokażę, jak to się robi.

Zacznijmy od uporządkowania zawartości pliku z obrazem tekstur. Zaznacz i połącz (Ctrl-G) wszystkie obiekty, należące do tej samej warstwy, w jedną grupę (Rysunek 4.5.1):

Rysunek 4.5.1 Łączenie zawartości warstwy w jedną grupę (na przykładzie warstwy Shadows)

Tę operację wykonaj dla wszystkich „górnych” grup, które zawierają jakieś elementy rysunku (od Lines do Shadows). Od razu zmień także nic nie mówiącą, domyślną nazwę tych grup na taką samą, jak nazwa warstwy (Rysunek 4.5.2). O ile to możliwe (np. nie uda się dla niektórych elementów warstwy Cover), zmień ustawienia wypełniania i rysowania obiektów na „dziedziczenie” z ustawień grupy (Rysunek 4.5.3):

Rysunek 4.5.2 Ustalenie identyfikatora (Id) i nazwy (Label) grupy

Rysunek 4.5.3 Włączenie dziedziczenia ustawień wypełnienia i linii (we wszystkich elementach grupy)

Teraz dodaj do skin.svg kilka nowych warstw, z których każda będzie zawierać gotowy obraz tekstury. Takie zbiorcze warstwy będę nazywał Result:<Nazwa obrazu>. Dodaj pierwszą z nich: Result:Nor-Details. Stwórz klon (Ctrl-D) grupy zajmującej każdą z warstw wyliczonych w poprzedniej sekcji (Panel H, Panel V, Fabric, Overlay, Rivets, Cover, Bumps, Screws, Holes — por. str. 136). Przenieś każdy z tych klonów na warstwę Result:Nor-Details (np. naciskając kilka razy Shift-PgDn — por. str. 324). Przypisz poszczególnym klonom taką nieprzejrzystość, jaką podaje Rysunek 4.5.5. (Użyj do tego kontrolki O pacity obiektu, nie warstwy — zob. str. 299):

Rysunek 4.5.4 Obraz podstawowej mapy nierówności, gotowy do eksportu do pliku nor_details.png

Result:Nor-Details zawiera kompletny, gotowy do eksportu do pliku rastrowego obraz szczegółowej mapy nierówności (nor_details.png — 4096x4096px). Zwróć uwagę, że nie użyłem w nim zawartości warstwy Fabric Bump. Wykorzystamy ją za to w pomocniczej mapie nierówności. Dzięki temu, że do kompozycji obrazu używaliśmy wyłącznie klonów poszczególnych warstw — zachowujemy nadal możliwość łatwej modyfikacji szczegółów rysunku. Scalenie zawartości warstw w grupy nie jest w tym żadną przeszkodą. W Inkscape możesz „wejść” do wnętrza każdej grupy (wystarczy dwukrotnie w nią kliknąć) i poddać edycji jej zawartość. (W istocie grupy są tu traktowane jak „podwarstwy” — por. str. 325). A gdy zmieni się grupa wzorcowa (na warstwie, powiedzmy, Rivets) zmienią się także wszystkie jej klony, także te wchodzące w skład innych warstw rezultatu. (Stworzymy ich za chwilę jeszcze kilka, np. Result:Nor-Blur). Ta zasada przechowywania i modyfikacji jednego wzorca bardzo ułatwia wszelkie modyfikacje. Przy większych zmianach — np. gdy chcesz włączyć do grupy (np. #Rivets) nowy element — wystarczy go tam narysować lub przenieść operacjami Cut/Paste.

Obrazu nor_details.png jest przygotowany, zajmijmy się teraz kolejnym: nor_blur.png. To rozmyty obraz nierówności. Przypomnij sobie, jak na stronie 82-83 eksportowaliśmy pomocniczy plik blur.png z Inkscape do GIMP. Dalsze przygotowanie polegało na złożeniu w warstwach Gimpa kilku kopii tego obrazu. Każda z tych warstw była poddawana rozmyciu Gaussa o innym promieniu.

Tę metodę możesz zastosować także teraz. Jeżeli jednak chcesz to zrobić szybciej i dokładniej — skorzystaj filtrów Inkscape. Nie chciałem ich wprowadzać wcześniej, bo nie chciałem komplikować wprowadzenia do teksturowania. Teraz jednak czas już o nich opowiedzieć.

Dodaj do rysunku nową warstwę Result:Nor-Blur. Będziemy z niej eksportować rozmyty obraz nor_blur.png, gotowy do wykorzystania w Blenderze (Rysunek 4.5.5):

Rysunek 4.5.5 Przygotowanie pomocniczej mapy nierówności (nor_blur.png)

„Sklonuj” (Alt-D, por. str. 318) zawartość warstw: Contours, Bumps, Rivets, Shadows. Każdy z tych klonów przenieś na warstwę Result:Nor-Blur (np. naciskając kilka razy Shift-PgDn — por. str. 324). Przypisz poszczególnym klonom taką nieprzejrzystość, jaką podaje Rysunek 4.5.5. (Użyj do tego kontrolki O pacity — zob. str. 299). Połącz potem wszystkie klony w jedną grupę i nadaj jej nazwę #Nor-Blur.

W Inkscape różnorodne „efekty specjalne” można osiągnąć za pomocą tzw. filtrów (menu Filters). Przejdź do ich edytora (Filters→FIlter Editor... ) , i przypisz grupie #NorBlur filtr, złożony z trzech gaussowskich rozmyć. (Szczegółowy opis, jak zbudować filtr znajdziesz na str. 336). Rysunek 4.5.6 przedstawia rezultat:

Rysunek 4.5.6 Filtr, tworzący efekt kaskadowego rozmycia obrazu

Do poprawienia pozostał jeszcze tylko jeden szczegół: elementy z grupy #Nor-Blur nie powinny być widoczne na obszarach zasłoniętych różnego rodzaju pokrywami. Przykładem takich obszarów może być pokrywa luku bagażowego (z lewej strony kadłuba), czy osłony zbiorników paliwa na dolnej powierzchni centropłata[1]. Sklonuj zawartość warstwy Cover, zawierającej te wszystkie elementy. Przenieś ten klon na warstwę Result:Nor-Blur (Rysunek 4.5.7):

Rysunek 4.5.7 Klon obrazu pokryw (#Cover), przeniesiony na warstwę z rozmytym obrazem nierówności

Klon obrazu pokryw (#Cover) zasłania teraz linie, których nie powinno być na obrazie mapy nierówności. Jest jednak drugi problem: wszystkie pokrywy powinny być w kolorze tła (białym), a nie szarym (Rysunek 4.5.7)! Elementy grupy #Cover muszą mieć na tyle zróżnicowany styl linii i wypełnienia, że nie można było ustawić im wszystkim „dziedziczenia” ustawień po obiekcie nadrzędnym (Rysunek 4.5.3). W tej sytuacji można wykorzystać prosty filtr, by skutecznie nadać klonowi #Cover barwę tła (Rysunek 4.5.8):

Rysunek 4.5.8 Prosty filtr, nadający obiektowi barwę białą (zarówno liniom, jak i wypełnieniom)

Nazwałem taki filtr White. Wykorzystałem w nim element Color Matrix, wpisując w pierwsze trzy pola prawej kolumny wartości 1.0. (Przez tę macierz jest mnożony wektor wartości R,G,B,A każdego piksela grupy #Cover).

Jeżeli nie wiesz, co to są „macierze” i na czym polega ich mnożenie — poszukaj w Internecie wyjaśnienia. (Na pewno znajdziesz, jeżeli wpiszesz w wyszukiwarkę te słowa po polsku). Możesz także stosować przedstawione tu filtry na zasadzie „przepisów kuchennych”, nie wnikając w ich szczegóły.

Poza klonem #Cover dodałem do warstwy Result:Nor-Blur klony grup odwzorowujące powierzchnie kryte płótnem — #Fabric Bumps i #Fabric. Tę drugą wstawiłem tylko „na wszelki wypadek” bo praktycznie nie będzie widoczna na białym tle tego obrazu (Bkg-White). Nieprzejrzystość #Fabric Bumps odpowiada „dynamicznym” zagłębieniom płótna pomiędzy żebrami sterów i lotek. Dla scen statycznych (np. samolot stojący na ziemi) może być zupełnie przejrzysta — bo wtedy wystarczą wypukłości wzdłuż żeber uzyskane za pomocą obrazu nor_details.png (por. Rysunek 4.5.5). W scenach w locie wykorzystuję zazwyczaj obraz w którym #Fabric Bumps ma nieprzejrzystość na poziomie 50% — 80%. Rysunek 4.5.9 przedstawia ostateczną kompozycję, gotową do wyeksportowania wprost do pliku nor_blur.png i użycia w Blenderze:

Rysunek 4.5.9 Obraz drugorzędnej mapy nierówności gotowy do eksportu do pliku nor_blur.png

Obraz nor_blur.png, który wykorzystuję w tej książce, ma rozmiar 2048x2048 px[2]. Zwróć uwagę, że elementy z warstwy Cover są jasnoszare, ale nie białe. To dlatego, że zastosowałem na tym klonie filtr Gray zamiast White. Dlaczego? Tak mi wyszło z „przymiarki” obydwu tekstur nierówności do modelu. Na podstawowym obrazie (nor_details.png — Rysunek 4.5.5) te elementy są jaśniejsze od tła, przez co Cycles renderuje je jako wypukłości. Nie podobało mi się to, szczególnie na pokrywach karabinów w skrzydle (por. str. 136, Rysunek 4.4.21). Wygląda to jak na jakimś pojeździe opancerzonym, a nie samolocie. Dlatego „spłaszczam” je teraz za pomocą drugiej tekstury, na której te same jasnoszare obszary są „poniżej” białego tła.

Obydwa obrazy nierówności dodałem do materiału B.Skin.Camouflage w taki sam sposób, jak w poprzedniej sekcji (por. str. 83, Rysunek 3.4.12). Po pierwszych próbach okazało się, że muszę nieco zwiększyć ich intensywność (Rysunek 4.5.10):

Rysunek 4.5.10 Zastosowanie map nierówności w materiale B.Skin.Camouflage

Rysunek 4.5.11 przedstawia podgląd renderu dla tak zmodyfikowanego materiału:

Rysunek 4.5.11 Rezultat użycia map nierówności

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.05.blend, a pliki z teksturami — w folderze model\p40\textures\7.05\* (por. str. 20).

Podsumowanie

- Ta sekcja przedstawia metody, umożliwiające szybkie uzyskanie z rysunku wektorowego obrazów tekstur nierówności i odbić. Jest to uszczegółowienie metod, opisanych w sekcji 3.4 (str. 82);

- Obrazy w Inkscape komponujemy na wydzielonych „warstwach rezultatu” (warstwach o nazwach wyróżnionych np. przedrostkiem Result:). Kompozycja powstaje z tzw. klonów (czyli referencji) zawartości oryginalnych warstw roboczych. Takie klony które modyfikujemy za pomocą filtrów. W niektórych kompozycjach można użyć, z różnymi filtrami, nawet kilku klonów tej samej warstwy (np. #Rivets na str. 148 i 150);

- Aby używać klonów warstw, należy najpierw połączyć ich zawartość w grupy (str. 140). W Inkscape po takim połączeniu możesz nadal zmieniać ich „wnętrze”. Taka zmiana, wprowadzona w we wnętrzu oryginalnej grupy, jest natychmiast widoczna na wszystkich jej kopiach (także tych na warstwach Result:). To bardzo ułatwia nanoszenie w obrazie tekstury ewentualnych poprawek (prędzej czy później — na pewno będzie taka potrzeba);

- Stosując w Inkscape do kompozycji filtry, można uzyskać nie tylko szczegółowy obraz nierówności (nor_details.png — str. 141), ale także gotowy do użycia w Blenderze, rozmyty obraz nierówności (nor_blur.png — str. 144).

[1] (str. 143) Nie byłoby tego problemu, gdybym linie nitów i ich cieni konsekwentnie przerywał wszędzie tam, gdzie nie powinny być widoczne. Nie robiłem tego z czystego lenistwa, więc teraz muszę zrobić coś w zamian

[2] (str. 144) Jeżeli chcesz, aby szczegóły obydwu map nierówności idealnie do siebie pasowały, możesz użyć większej tekstury (4096x4096px). Tekstury 2048x2048px stosuję po to, by pomocniczy plik z materiałami towarzyszącymi tej książce nie był zbyt duży.

4.6  Kompozycja obrazów tekstur odbicia (Ref)

Korzystając z podglądu renderu obejrzyj ze wszystkich stron efekt uzyskany w poprzedniej sekcji: model pokryty teksturami nierówności. Zauważ, że szczegóły powierzchni są widoczne wyłącznie na odpowiednio podświetlonych powierzchniach. W dodatku cały samolot wydaje się nienaturalnie czysty (Rysunek 4.6.1):

Rysunek 4.6.1 Efekt zastosowania samych tekstur nierówności

Wokół śrub, paneli i innych nierówności powinien się zbierać kurz i przetarcia (drobne zmatowania). Można je podkreślić za pomocą tekstury modulującej współczynnik rozpraszania światła odbitego przez materiał (Ref lectivity — omawialiśmy już to w sekcji 3.5). W ramach uproszczenia ten sam obraz można także użyć do modulacji szorstkości (Roughness). W tej sekcji użyjemy złożenia dwóch takich obrazów:

- drobnych zabrudzeń i przetarć związanych z „technicznymi” nierównościami powierzchni. Ten plik nazwiemy: ref_details.png;

- innych zabrudzeń eksploatacyjnych (np. śladów spalin). Ten plik nazwiemy ref_dirt.png. Tę teksturę wykorzystamy także w obrazie barwy — aby sterować połyskliwością brązowych zacieków od oleju, czy czarnych śladów sadzy.

Przejrzałem setki historycznych zdjęć P-40 z wielu obszarów II wojny światowej. Jakoś tak się składało, że samoloty te operowały zazwyczaj z lotnisk polowych. Warto sobie uświadomić, że warunki eksploatacji na takich lądowiskach są zbliżone do warunków pracy współczesnych samolotów rolniczych — wszędzie pył, a czasami także błoto. Z tego powodu maszyny należało okresowo czyścić. Stan pokrycia samolotów zależał w dużym stopniu od liczebności i zaangażowania ludzi z obsługi naziemnej. Jeżeli było ich wystarczająco wielu — można było sobie pozwolić na mycie myśliwców po każdym locie. Niezależnie jednak od „ogólnego zabrudzenia” maszyn, wygląda na to, że farby nanoszone w zakładach Curtiss dobrze się trzymały powierzchni. Jedyne przetarcia „do gołej blachy” można zaobserwować u nasady skrzydeł (tam, gdzie pilot i obsługa naziemna najczęściej wchodzili w butach). Takie przetarcia odtworzymy w następnej sekcji, teksturą barwy. Reszta powierzchni — to zabrudzenia uzyskane za pomocą tekstur odbić.

Obraz szczegółowej mapy odbicia jest skomplikowany, więc zdecydowałem się go podzielić na trzy warstwy:

- nitów i ich cieni (umieść je na warstwie Result:Ref-Blur), których obraz ulegnie rozmyciu;

- linii połączeń poszycia (umieść je na Result:Ref-Grunge), które zostaną poddane „porysowaniu”;

- elementów dodatkowych (nitów, śrub) (umieść je na warstwie Result:Ref-Other);

Na pierwszej z warstw (Result:Ref-Blur) umieściłem klony zawartości warstw Rivets i Shadows (Rysunek 4.6.2):

Rysunek 4.6.2 Początek kompozycji mapy odbić — złożenie nitów i ich „cieni” na warstwie Result:Ref-Blur.

Połączyłem te klony w jedną grupę #Ref-Blur, i „rozmyłem” jej obraz za pomocą jednokrotnego rozmycia Gaussa (Rysunek 4.6.3):

Rysunek 4.6.3 Proste, jednokrotne rozmycie zawartości warstwy Result:Ref-Blur (filtrem Simple Blur)

Współczynnik Std Deviation tego filtru ustawiłem na umiarkowaną wartość — 3.0. Dla porządku nadałem zastosowanemu filtrowi nazwę Simple Blur (może do czegoś jeszcze się w przyszłości przyda).

Warstwa Result:Ref-Blur to zaledwie podkład. Pod czym? Pod następną warstwą, która będzie zawierać właściwy efekt „zużycia”. Nazwiemy ją Result:Ref-Grunge.

Result:Ref-Grunge ma zawierać obraz drobnych zabrudzeń, rozrzuconych wzdłuż linii połączeń poszycia samolotu. Umieść na niej klony następujących warstw: Lines, Bumps, Cover, Contours (Rysunek 4.6.4):

Rysunek 4.6.4 Elementy, które zostaną przekształcone w „zabrudzenia” (warstwa Result:Ref-Grunge)

Klony, umieszczone na warstwie Result:Ref-Grunge, połącz w jedną grupę: #Ref-Grunge. Przypisz do niej specjalnie przygotowany w tym celu filtr Rough and Erode (Rysunek 4.6.5):

Rysunek 4.6.5 „Zabrudzenia” — rezultat zastosowania filtru Rough and Erode (warstwa Result:Ref-Grunge)

Trzeba przyznać, że filtr Rough and Erode tworzy naprawdę ciekawy efekt. Dawniej, gdy Inkscape nie miał takich możliwość, trzeba było w Gimpie ręcznie „pacykować” podobny wzór wzdłuż każdej linii. To była masa roboty! Teraz wyręczył nas w tym Inkscape. Być może wzór, który wytworzył, jest nieco jednostajny, i można go wzbogacić później w GIMP kilkoma dodatkowymi zabrudzeniami. To jednak pestka w porównaniu z mozolnym „brudzeniem” każdego szwu!

Filtr Rough and Erode powstał na podstawie standardowego filtra Inkscape o nazwie Rough and Dilate. Szczegółowy opis jego budowy i parametrów znajdziesz na str. 345.

Pozostało jeszcze dodać do mapy odbić takie szczegóły, jak rozjaśnienia w miejscu śrub i nitów, oraz przetarć na płótnie sterów. Dodatkowo, podobnie jak w przypadku warstwy Result:Nor-Blur, trzeba także zasłonić obszary luków (por. str. 143) — za pomocą kolejnego klonu warstwy Cover. Klony wszystkich tych dodatków (#Screws, #Rivets, #Fabric, #Cover) zgromadziłem na warstwie Result:Ref-Other (Rysunek 4.6.6):

Rysunek 4.6.6 Dodatkowe elementy obrazu ref_details.png (warstwa Result:Ref-Other)

Śruby (klon #Screws) mają białe wypełnienie i dzięki temu nie wymagają żadnej korekty. Wybielenia płótna na krawędziach żeber (klon #Fabric) zrób prawie przejrzyste (O pacity = 20%), aby się za bardzo nie wyróżniały. Nity (klon #Rivets) są czarne, a w tym przypadku powinny być białe. Aby to osiągnąć, wystarczy zastosować dla ich klonu filtr White (Rysunek 4.6.7):

Rysunek 4.6.7 „Wybielenie” nitów za pomocą filtra White (warstwa Result:Ref-Other)

Nieprzejrzystość (O pacity) #Rivets ustaw na poziomie jakichś 80%, aby na rysunku nie były zupełnie białe.

Grupę #Cover dodałem do tej warstwy przede wszystkim po to, by odrobinę odróżnić wszelkie klapy i zaślepki na od reszty poszycia za pomocą różnicy w odcieniu barwy. W „surowej postaci” występuje na nich duży kontrast pomiędzy czarnym konturem i stosunkowo jasnym wypełnieniem (czarny i szary z 70% bieli — por. Rysunek 4.6.6). Ten kontrast można „spłaszczyć” za pomocą kolejnego filtra, któremu nadałem nazwę Gray (Rysunek 4.6.8):

Rysunek 4.6.8 „Wyszarzenie” rysunku osłon za pomocą filtra Grey (warstwa Result:Ref-Other)

Jaki właściwie efekt osiągniemy za pomocą trzech tak przygotowanych warstw? Rysunek 4.6.9 przedstawia odpowiednio powiększony fragment, na którym widać wszystkie szczegóły:

Rysunek 4.6.9 Fragment mapy odbić/odbłysków (złożenie warstw Result:Ref-Other, *-Grunge, *-Blur)

Uważam, że jest to całkiem przyzwoite „ogólne zabrudzenie” powierzchni. Wymaga od komputera trochę obliczeń, więc możesz zauważyć spowolnienie pracy Inkscape. Dlatego włączaj widoczność tych trzech warstw tylko na czas eksportu do pliku rastrowego. Gdy będą niewidoczne, Inkscape będzie działał szybciej.

Rysunek 4.6.10 przedstawia obraz ref_details.png (2048x2048px), złożony z trzech warstw Result:Ref-*:

Rysunek 4.6.10 Obraz mapy odbić/odbłysków, gotowy do eksportu do pliku ref_details.png

Dla bardzo połyskliwych („srebrnych”) powierzchni, jak te ze str. 147 czy 153, obraz mapy odbić musi mieć białe tło. (Dla materiałów mniej połyskliwych – matowych i półmatowych — może być szare). Zwróć uwagę, że warstwa Result:Ref-Grunge nieco przyciemnia tło (o ok. 5%). Aby dostosować do tego odcienia pokrywy wszystkich otworów, stworzyłem pomocniczy filtr Light Gray. Działa na tej samej zasadzie co filtr Gray, zastosowany na warstwy Result:Nor-Blur — por. str. 144.

Teksturę odbić podłączamy do materiału B.Skin.Camouflage tak, jak to robiliśmy podczas testu (por. str. 89). Zwróć uwagę, że ze względu na jasnoszare tło tekstury, ustawiłem max. intensywność Reflectivity na 1.0, a nie na 0.98, jak to robiliśmy dla białego obrazu podczas testów. Gdy Range To Max:Range jest ograniczony do zakresu 0.3, nadaje to powierzchni modelu podstawową odbijalność światła na poziomie 0.98 (Rysunek 4.6.17):

Rysunek 4.6.11 Użycie tekstury ref_details.png w materiale B.Skin.Camouflage (wersji „srebrnej”)

Co właściwie uzyskujemy w wyniku zastosowania tak podłączonej tekstury ref_details.png ? Oceń sam (Rysunek 4.6.12):

Rysunek 4.6.12 Rezultat zastosowanie tekstury odbić (modulacja Gloss Paint:Reflectivity)

Jeżeli sądzisz, że taki efekt ciemnych zabrudzeń mógłbyś uzyskać stosując teksturę barwy, to popatrz teraz na górne powierzchnie tego modelu (Rysunek 4.6.13):

Rysunek 4.6.13 Lokalne rozjaśnienia w wyniku modulacji Gloss Paint:Roughness

Porównaj ten efekt z ilustracją na str. 147. Wszędzie, gdzie padające światło odbija się w kierunku kamery, na powierzchni samolotu pojawiają się lokalne rozjaśnienia. Są to ciemniejsze obszary obrazu ref_details.png: krawędzie paneli, szwów nitów. Ta tekstura szczególnie dobrze imituje lokalne przetarcia wokół pokryw wszelkich otworów (elementów pochodzących z warstwy Cover).

Plik ref_details.png na razie nie zawiera jeszcze różnych zabrudzeń eksploatacyjnych: śladów po spalinach i prochu strzelniczym, oraz wszelkich innych pomniejszych zaciemnień. Proponuję dla tego rodzaju elementów stworzyć oddzielny obraz, o nazwie ref_dirt.png. Pozwoli nam to oddzielnie sterować intensywnością wszystkich bardziej ulotnych i zmiennych zanieczyszczeń.

Plik ref_drit.png stworzyłem w UV/Image Editor Blendera jako nowy, biały obraz (Image→New Image, por. str. 546). Dodaj do schematu materiału B.Skin.Camouflage kolejny węzeł Image Texture, i przypisz mu obraz ref_dirt.png (Rysunek 4.6.14):

Rysunek 4.6.14 Włączenie do schematu materiału pomocniczej tekstury odbić

Na ilustracji kolorem żółtym obrysowałem wszystkie nowe elementy, dodane do schematu. Na razie do wejścia Vector węzła nowej tekstury podłączam takie same współrzędne UV, co do pozostałych tekstur. Dzięki temu, że tło obrazu ref_dirt.png jest białe, można go połączyć z podstawową teksturą odbić (ref_details.png) za pomocą węzła Multiply. (W ten sam sposób są scalane pomocnicza i podstawowa tekstura nierówności). Z tego samego powodu do sterowania intensywnością efektu wykorzystuję prostszy węzeł Moderate, którego używamy w teksturach nierówności. Na razie włączam ten obraz na „pełną moc”, i zobaczymy co z tego wyniknie.

Ślady dymu ciągną się zazwyczaj poprzez kilka różnych siatek, stąd najłatwiej nanosić je w Blenderze, w trybie Texture Paint (Rysunek 4.6.15, por. także str. 548):

Rysunek 4.6.15 Malowanie śladów dymu na pomocniczej mapie odbić (ref_dirt.png)

Nim zaczniesz malować spaliny, przyjrzyj się uważnie historycznym zdjęciom odtwarzanej maszyny. Każdy typ samolotu z silnikiem spalinowym ma swój specyficzny układ zabrudzeń pochodzących od rur wydechowych. Zazwyczaj zauważysz, że spaliny wcale nie opływają kadłuba wzdłuż linii prostych. Smugi, które pozostawiają na jego powierzchni, na dolnopłatach często są unoszone do góry przez opływ powietrza wokół skrzydła. Strumień zaśmigłowy także sprawia, że ślady spalin z lewej strony kadłuba mogą mieć inny kształt niż z prawej.

Do precyzyjnego namalowania smug wokół luf karabinów maszynowych bardzo przydają się linie pomocnicze (Grease Pencil — por. str. 563). Użyj ich, aby odrysować z obrazu nierówności (nor_details.png) kluczowe osie i położenia źródeł zabrudzeń. Potem podmień wyświetlany na powierzchni modelu obraz na ref_dirt.png, i namaluj odpowiednie ślady dymu (Rysunek 4.6.16):

Rysunek 4.6.16 Wykorzystanie linii pomocniczych do malowania zabrudzeń wokół luf karabinów

Obraz ref_dirt.png wzbogacimy jeszcze o drobne zacieki i plamy. Łatwiej jest je nanieść w Gimpie, na podstawie obrazu ref_details.png. Wczytaj do GIMP pliki ref_details.png jako odrębną warstwę. Następnie załaduj do tego pliku obraz ref_dirt.png, jako nową warstwę (Rysunek 4.6.17a). Namaluj na niej obraz kolejnych zabrudzeń (Rysunek 4.6.17b):

Rysunek 4.6.17 Wzbogacanie pomocniczego obrazu odbić o kolejne zabrudzenia w GIMP (skin.xcf)

Szczegółowy opis, jak rysować zabrudzenia w GIMP znajdziesz na str. 262. Zachowaj ten rysunek pod nazwą skin.xcf, bo wykorzystamy go jeszcze w następnym rozdziale do stworzenia obrazu barwy. Zawartość warstwy ref_dirt.png zapisz (File→Save a Copy) z powrotem do osobnego pliku. Wykorzystamy go teraz w Blenderze.

Nie mogę powiedzieć, aby tak pracowicie namalowane na poprzednich stronach, czarne ślady spalin były na testowym renderze specjalnie widoczne (Rysunek 4.6.18):

Rysunek 4.6.18 Wstępny efekt zastosowania pomocniczej tekstury odbić.

Przyczyną jest ogólne „spłaszczenie” zakresu połączonego obrazu tekstur odbicia w węźle Range To Max do 30% (por. Rysunek 4.6.14). Jak w takim razie uzyskać na modelu czarną warstwę sadzy? Używając jej obrazu w charakterze tekstury barwy (Rysunek 4.6.19):

Rysunek 4.6.19 Użycie ref_dirt.png w roli tekstury barwy.

Połącz wyjście z węzła Moderate drugą linią z wejściem dla barwy Specular shadera Gloss Paint [1]. Warto zdawać sobie sprawę, że tak prosta zmiana schematu jest możliwa, gdyż dotychczas Gloss Paint:Specular był biały — dokładnie tak, jak tło ref_dirt.png. Teraz także na większości powierzchni modelu jest biały, i w tych obszarach nic nie ulegnie zmianie. Jedynie w miejscach, gdzie tekstura zawiera czarne plamy uzyskamy bardziej zdecydowaną zmianę barwy.

Teraz nasze ślady spalin stały się zdecydowanie bardziej wyraźne (Rysunek 4.6.20):

Rysunek 4.6.20 Rezultat modulacji barwy Gloss Paint:Specular za pomocą obrazu ref_dirt.png.

Tak silny efekt można teraz tonować (w końcu obsługa naziemna często myła samoloty!). Zmniejsz wartość Range w węźle Moderate, podłączonym do obrazu tekstury (Rysunek 4.6.21 — por. także Rysunek 4.6.19):

Rysunek 4.6.21 Bardziej stonowany efekt zabrudzeń

Zanieczyszczenia w pliku ref_dirt.png umieściłem w miejscach, w których występowały na większości zdjęć. Wygląda na to, że w P-40 najbardziej brudziła się centralna część kadłuba. Mam teraz wątpliwości, czy nie powinienem dodatkowo pobrudzić krawędzi natarcia skrzydła. Na ilustracji wygląda zbyt czysto w stosunku do reszty maszyny (Rysunek 4.6.21). Proponuję jednak wstrzymać się z tym do zakończenia następnej sekcji. Być może po nałożeniu kamuflażu te plamy będą wyglądać inaczej.

W materiale matowym zastosowanie tekstury ref_dirt.png w roli pomocniczej tekstury barwy wygląda nieco inaczej (Rysunek 4.6.22):

Rysunek 4.6.22 Zastosowanie tekstury ref_dirt.png na powierzchni matowej

Po pierwsze — na ostateczną barwę takiego materiału największy wpływ ma kolor Diffuse, dlatego użyjemy tekstury do sterowania tym wejściem shadera Gloss Paint. Po drugie — teksturę ref_dirt.png trzeba połączyć z oryginalnym kolorem materiału za pomocą operacji Multiply. „Wyciągnąłem” więc używaną do tego testu barwę Olive Drab jako oddzielny węzeł RGB (Rysunek 4.6.22). Jeżeli wyjście z tego węzła podłączysz do używanego dotychczas węzła Math:Multiply, zamienisz kolor w odcienie szarości. Dlatego do łączenia barw użyłem węzła Color→Mix, z włączonym trybem Multiply.

Rysunek 4.6.23 przedstawia uzyskany rezultat (dodatkowo wzmocniłem tutaj światło słoneczne Sun):

Rysunek 4.6.23 Podgląd renderu — matowa wersja B.Skin.Camouflage z teksturą ref_dirt.png

Zwróć uwagę, że ślady spalin są lepiej widoczne z daleka, niż z bliska (Rysunek 4.6.23).

Na koniec chciałbym wspomnieć o możliwości szybszego wyeliminowania z renderu Cycles „białego szumu”, który występuje szczególnie intensywnie na połyskliwych powierzchniach (por. Rysunek 4.6.20, Rysunek 4.6.21). Gdy ustawisz w zestawie render, panelu Sampling wartości Clamp (Clamp Direct, Clamp Indirect) na gdzieś pomiędzy 2.0 i 3.0, skutecznie wyeliminujesz z renderu wszystkie niepożądane białe punkty! Więcej na temat — patrz str. 497.

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.06.blend, a pliki ze zmienionymi teksturami — w folderze model\p40\textures\7.06\* (por. str. 20).

Podsumowanie

- Podstawowa tekstura odbić (ref_details.png) pozwala odtwarzać zabrudzenia i przetarcia wokół „technicznych” nierówności na powierzchni samolotu (por. str. 147 i str. 153);

- Obraz podstawowej tekstury odbić (ref_details.png) można uzyskać wprost w Inkscape, używając odpowiednich filtrów (str. 148 — 152);

- Tekstura odbicia podkreśla szczegóły powierzchni, szczególnie te widziane pod dużym kątem (str. 153);

- Ślady spalin, prochu i inne zabrudzenia nanosimy używając pomocniczej tekstury odbić (ref_dirt.png — str. 154);

- Obraz pomocniczej tekstury odbić można rozpocząć w Blenderze, malując ślady spalin bezpośrednio na powierzchni modelu (str. 154); W tej pracy przydają się także czasami linie pomocnicze (Grease Pencil — por. str. 155);

- Obrazy tekstur odbić łączymy ze sobą tak samo, jak tekstury nierówności — za pomocą węzła Multiply (str. 154). Dlatego konieczne jest, by obraz z ref_dirt.png miał białe tło;

- Aby ślady zabrudzeń „eksploatacyjnych” były bardziej widoczne, należy użyć pomocniczej tekstury odbić jako tekstury barwy (str. 156 - 157);

- Powierzchnie matowe wymagają przypisania obrazu ref_dirt.png do barwy Diffuse (str. 158), a połyskliwe (metaliczne, „srebrne”) — do barwy Specular (str. 156);

[1] (str. 156) Należy zawsze wybrać kolor dominujący — w przypadku powierzchni połyskliwej to Specular. Gdyby to była powierzchnia matowa, powinienem użyć ref_dirt.png do modulacji barwy Diffuse.

4.7  Tekstura barwy

Czas nałożyć na nasz samolot kamuflaż. W tej sekcji wykonamy najprostszy, dwukolorowy schemat — taki jak ten, stosowany w USAAC w 1941r (Rysunek 4.7.1):

Rysunek 4.7.1 Kamuflaż stosowany w USAAC w 1941r (pominąłem znaki rozpoznawcze i wszelkie inne dodatki).

Górne i boczne powierzchnie samolotu były pokryte barwą Olive Drab, a dolne — Neutral Gray. Wewnętrzne powierzchnie (kabina, wnęki podwozia, wnętrza klap, itp.) — farbą podkładową Zinc Chromate. (Najprawdopodobniej była to odmiana tego podkładu z dodatkiem czerni, określana często jako Curtiss Green). Na rysunku pominąłem wszelkie oznaczenia, napisy i inne „ornamenty”, bo w tej sekcji nie będziemy się nimi jeszcze zajmować.

Pracę nad kamuflażem zaczniemy od przygotowania obrazu referencyjnego siatek rozwiniętych w UV. Pamiętasz, że dla obrazów kamuflażu przygotowaliśmy w Blenderze alternatywne mapowanie UV (UV Map) o nazwie Color? (Aby sobie przypomnieć sprawę, zerknij na str. 130) . Obrazy referencyjne wyeksportowane z Blendera zgromadziliśmy w pliku uv.svg. Wczytaj teraz do tego rysunku alternatywne rozwinięcia siatek oprofilowania płata i ramek tylnych szyb — takie, jakie są Blenderze przypisane do rozwinięcia UV o nazwie Color.

Aby się w tych rozwinięciach nie pogubić, stwórzmy w pliku uv.svg warstwy odpowiadające poszczególnym mapowaniom UV zdefiniowanym w Blenderze (Rysunek 4.7.2):

Rysunek 4.7.2 System warstw w pliku uv.svg

Na ilustracji sztucznie zabarwiłem zawartość warstwy UV-Color na czerwono, a UV-UVTex — na niebiesko, abyś mógł je łatwo odróżnić. Rysunek 4.7.2a) pokazuje układ, który proponuję. Warstwa UV-Base zawiera wszystkie siatki z Blendera, które mają tylko jedno rozwinięcie (w Blenderze są przypisane do domyślnego mapowania UVTex). Warstwa UV-UVTex z uv.svg zawiera pozostałe rozwinięcia mapowania UVTex Blendera. (Są to te elementy, które występują jeszcze na innych mapowaniach UV). Warstwa UV-Color zawiera rozwinięcia siatek z mapowania UV Color.

Teraz, aby z uv.svg uzyskać kompletny układ UV dla tekstury używającej w Blenderze warstwy Color, należy wyeksportować z Inkscape kompozycję warstw UVColor + UV-Base (Rysunek 4.7.2b). Takiego właśnie obrazu potrzebujemy w tej sekcji. Podobnie, by uzyskać podstawowy układ UV (dla tych tekstur, które używają współrzędnych UV z węzła Texture Coordinate) — należy wyeksportować złożenie UV-UVTex + UV-Base (Rysunek 4.7.2c). Taki obraz wykorzystywaliśmy dla wszystkich dotychczas omawianych tekstur.

Zwróć uwagę (Rysunek 4.7.2b,c), że rozwinięcia płatów są umieszczone warstwach UV-Color i UV-UVTex, choć niczym się nie różnią. To już przygotowanie do wstawienia trzeciej warstwy — UV-Decals. Mapowanie o tej nazwie stworzymy w Blenderze w sekcji 4.8, przy okazji nanoszenia znaków rozpoznawczych. Będzie zawierać inne rozwinięcie skrzydła, ze szwem biegnącym wzdłuż krawędzi natarcia.

Kamuflaż stworzymy w Gimpie, w pliku skin.xcf (to ten, stworzony w poprzedniej sekcji). Na początek zmień nazwy istniejących w nim warstw: ref-details.png na Ref-Shadows, a ref-dirt.png na Ref-Smoke. Potem wyeksportuj z Inkscape rysunek rozwinięć siatek w UV (UV-Base + UV-Color) do pliku uv-color.png. Wstaw ten plik jako nową warstwę referencyjną o nazwie UV-Color.png (Rysunek 4.7.3):

Rysunek 4.7.3 Wykorzystanie obrazu rozwinięć UV do zaznaczenia obszaru (GIMP, plik skin.xcf).

Zaznacz cały obszar rozwinięcia UV poleceniem Select→By Color (Shift-O, szczegóły — str. 239), wskazując seledynowe wypełnienie którejś z siatek. Aby „rozlać” selekcję także na krawędzie — powiększ ją o 2 piksele (Select→Grow... , szczegóły — str. 240). Następnie ogranicz zaznaczenie tylko do granic barwy Neutral Gray. Najłatwiej to zrobić, zamalowując odpowiednie obszary w trybie Quick Mask (szczegóły — str. 243) (Rysunek 4.7.4):

Rysunek 4.7.4 Ograniczenie zaznaczonego obszaru za pomocą Quick Mask.

Dodaj teraz do rysunku kolejną warstwę, o nazwie Color-UCamouflage. (Proponuję użyć przedrostka „Color-” do wszystkich warstw, składających się na obraz kamuflażu). Na nowej warstwie „zalejemy” () zaznaczony obszar barwą Olive Drab (Rysunek 4.7.5) :

Rysunek 4.7.5 „Zalewanie” barwą zaznaczonych powierzchni górnych.

Zmień najpierw barwę pierwszoplanową na kolor, którym wypełnimy obszar selekcji (Rysunek 4.7.5a). Skąd wiem, jaki jest symbol tej barwy w katalogu Federal Standard (FS) i znam konkretne wartości R,G,B? Poszperałem po opisach malowań dla modelarzy, umieszczonych w Internecie. Ówczesne farby zmieniały swój odcień wraz z upływem czasu, więc nie traktuj podanej tu wartości jako wyroczni, tylko jako przybliżenie. Więcej na temat identyfikacji kolorów kamuflaży znajdziesz na str. 580.

Teraz wywołaj polecenie Tools→Paint Tools→Bucket Fill (, albo Shift-B). Spowoduje to zalanie obszaru selekcji kolorem pierwszoplanowym. Na koniec zapamiętaj obszar zaznaczenia górnych powierzchni poleceniem Select→Save to Channels (szczegóły — str. 245). Za chwilę się przyda do „wykrojenia” innego obszaru.

Aby uzyskać maskę dla powierzchni dolnych, zaznacz powtórnie całą powierzchnię rozwinięcia UV (Select→ByColor, Select→Grow...). Następnie odejmij od niej (Channels→Substract from Selection — zob. str. 245, Rysunek 5.21.2) zapamiętany przed chwilą w zakładce Channels obszar górnych powierzchni. Potem pozostaje już tylko wymazać powierzchnie wewnętrzne (w trybie Quick Mask — Rysunek 4.7.6a):

Rysunek 4.7.6 Przygotowanie maski i zalewanie barwą powierzchni dolnych.

Utwórz nową warstwę na powierzchnie dolne: Color-LCamouflage (Rysunek 4.7.6b). Zmień kolor pierwszoplanowy na ekwiwalent Neutral Gray (FS 36173 — podane na ilustracji wartości R,G,B to tylko przybliżenie). Powiększ obszar zaznaczenia o 2px (Select→Grow...) przed zalaniem barwą, aby na pewno na granicy kolorów nie pozostały żadne szczeliny.

Rysunek 4.7.6c) przedstawia złożenie warstw Color-UCamouflage i Color-LCamouflage. W miejscach, gdzie są rozwinięte powierzchnie wewnętrzne, prześwituje jeszcze pomocnicza UV-Color, bo na razie nie będziemy do materiału B.Skin.Inner dodawać tekstury.

Wyeksportuj (File→Save Copy) kopię złożenia obydwu warstw Color-* do pliku color.png. Włącz go, jako kolejny węzeł Image Texture do materiału B.Skin.Camouflage. Rysunek 4.7.7 przedstawia zmodyfikowany schemat (porównaj go ze schematem ze str. 158 — na miejsce węzła RGB wstawiliśmy nowe elementy):

Rysunek 4.7.7 Wstawienie tekstury color.png do materiału B.Skin.Camouflage (w wersji matowej)

Zwróć uwagę na przypisanie tekstury do alternatywnego rozwinięcia UV (Color — por. str. 130) za pomocą węzła Attribute i grupy UV Fallback (więcej na temat tych węzłów — patrz str. 512)

Rysunek 4.7.8 przedstawia testowe rendery modelu z teksturą koloru (dla Background:Strength = 2.0):

Rysunek 4.7.8 Zależność barwy tekstury od intensywności światła słonecznego.

Uważam, że w scenie pokazywanej przez Rysunek 4.7.8b) (z silnym światłem słońca: Sun:Strength = 18) model wygląda lepiej niż w „oświetleniu studyjnym” (Sun:Strength = 3), które prezentuje Rysunek 4.7.8a) . Trzeba tylko przyciemnić kolory tekstury. Zrobimy to za pomocą węzła Hue Saturation Value (Rysunek 4.7.9):

Rysunek 4.7.9 Korekta intensywności barwy tekstury.

Nowy węzeł podłączyłem do wyjścia tekstury color.png, a następnie zmniejszyłem w nim intensywność (Value) barwy z 1.0 do 0.2. Rysunek 4.7.10 przedstawia rezultat, uzyskany na podglądzie renderu:

Rysunek 4.7.10 Ocena rezultat na podglądzie renderu.

Przyjrzyjmy się teraz temu modelowi bliżej. Namalowane w poprzedniej sekcji ślady spalin wyglądają na naszym kamuflażu zupełnie naturalnie. Wydaje mi się że barwa powierzchni wewnętrznych w tym ostrym świetle, także wymaga przyciemnienia. Skoro na razie nie zamierzamy „zamalować” ich teksturą, pozostaje tylko zmniejszyć intensywność barwy Gloss Paint:Diffuse (do V = 0.05) i Specular (do V = 0.30) materiału B.Skin.Inner (Rysunek 4.7.11):

Rysunek 4.7.11 Przyciemnienie barwy powierzchni wewnętrznych (B.Skin.Inner)

W rzeczywistym świecie, farba naniesiona na poszycia samolotów nie miała zupełnie jednorodnej barwy. Trudno mi nawet teraz rozstrzygać, czy to były jakieś ogólne zabrudzenia od kurzu i pyłu, czy też różne obszary farby wietrzały w różnym tempie. Dość, że nałożenie na jednolitą barwę kamuflażu delikatnego „szumu” zaciemnień i rozjaśnień czyni powierzchnię modelu bardziej wiarygodną. Taki „szum” można uzyskać używając jednego z filtrów Gimpa — Plasma [1]. Ja jednak wolę oprzeć mój szum na mocnych fundamentach — i użyję w tym charakterze zdjęcia fragmentu powierzchni z betonu (Rysunek 4.7.12) :

Rysunek 4.7.12 Naniesienie na podstawową barwę obrazu „szumu”.

Oczywiście, wcześniej spośród kilku zdjęć wybrałem takie, które przedstawiało odpowiednio nieregularny wzór. W związku z tym, że miało rozmiary mniejsze od obrazu tekstury, poddałem je w Gimpie „wstępnej obróbce”, aby uzyskać obraz 2048x2048. Wyciąłem (Image→Canvas Size) ze zdjęcia betonu kwadratowy obszar 1024x1024 (to dokładnie ćwiartka docelowego obrazu). Następnie przekształciłem jego krawędzie tak, by można było je łączyć ze sobą (Filters→Map→Make Seamless). Wreszcie złożyłem 4 kopie tego obrazu w jedną całość, o docelowym rozmiarze 2048x2048 (Filters→Map→Tile..). Rezultat tych operacji masz udostępniony w materiałach związanych z tą sekcją (por. str. 20) jako plik concrete.jpg (Rysunek 4.7.12a)

Rysunek 4.7.13 Efekt barwnego „szumu” na powierzchni modelu

Wczytaj zawartość tego pliku do skin.xcf jako nową warstwę (Color-concrete.jpg). Umieść ją na samej górze, ponad wszystkimi innymi warstwami Color-*. Zmień jej tryb mapowania z Normal na Multiple, a nieprzejrzystość (Opacity) zmniejsz do 10% (Rysunek 4.7.12b). (Za pomocą nieprzejrzystości tej warstwy sterujesz intensywnością „szumu”). Rysunek 4.7.12c) pokazuje efekt, uzyskany na obrazie. Jest bardziej widoczny na jaśniejszych powierzchniach dolnych, niż górnych.

Rezultat zastosowania tak zmienionej tekstury na modelu przedstawia Rysunek 4.7.13.

Do kolejnego etapu pracy potrzebujemy wzorca, w postaci linii połączeń na powierzchni samolotu. Powinny być na przeźroczystym tle, aby można je było łatwo „nałożyć” na pozostałe obrazy w Gimpie. Wyeksportuj taki obraz z Inkscape (skin.svg) do chwilowego pliku, o nazwie lines.png (Rysunek 4.7.14):

Rysunek 4.7.14 Warstwy ze skin.svg, których zawartość należy wyeksportować do pliku lines.png.

Przed zapisaniem rastrowej kopii do pliku lines.png, przyciemnij na chwilę w Inkscape linie na warstwie Shadows — do poziomu 50-80% czerni (Rysunek 4.7.14).

Lines.png wczytaj jako nową, pomocniczą warstwę do GIMP (do pliku skin.xcf). Nadaj jej nazwę UV-Lines.png i umieść ponad pozostałymi warstwami koloru (Rysunek 4.7.15a):

Rysunek 4.7.15 Malowanie rys na powierzchni kadłuba — w GIMP.

Wstaw także nową, pustą i przejrzystą warstwę o nazwie Color-Chips (Rysunek 4.7.15a). Namaluj na niej rysy i przetarcia (szczegółowy opis, jak to zrobić, znajdziesz na str. 266). Podczas tworzenia tych elementów trzeba uwzględniać „techniczne” nierówności poszycia, stąd tak potrzebna jest pomocnicza warstwa z ich obrazem. Aby przetarcia na modelu nie były zbyt ostre, przed wygenerowaniem pliku color.png zmniejszaj nieprzejrzystość warstwy Color-Chips — np. do 50% - 70% (por. str. 270, Rysunek 5.31.10 i Rysunek 5.31.11).

Pokrycie farbą, nanoszone w zakładach Curtiss, było dobrej jakości, stąd na P-40 prawie w ogóle nie występują odpryski farby. Na zdjęciach widać tylko przetarcia. Największe z nich to pas wzdłuż krawędzi skrzydła i kadłuba. Zostało wydeptane butami pilotów i obsługi (używanie ochronnych „dywaników” tylko zmniejszało jego rozmiar). Przetarcie na prawym skrzydle było mniejsze, bo uchwyt, ułatwiający wchodzenie, znajdował się z lewej strony kadłuba.

Rysunek 4.7.16 Podgląd renderu z teksturą barwy wzbogaconą o rysy i zadrapania.

Inne, drobniejsze zadrapania, umieściłem wokół zdejmowanych elementów poszycia, które mogły być często w użyciu: panelach okapotowania silnika, pokrywach sekcji uzbrojenia (Rysunek 4.7.16). Dodałem jeszcze „losowo” kilka małych rys na krawędziach natarcia płatów. Poza tymi obszarami przetarcia nie występowały.

Przetarcia możesz „chować”, zmniejszając intensywność tekstury (Rysunek 4.7.17):

Rysunek 4.7.17 Podgląd renderu z teksturą barwy wzbogaconą o rysy i zadrapania.

Cała powierzchnia samolotu staje się wówczas ciemniejsza, co jest całkiem dobrym przybliżeniem efektu „młodszej” (mniej zwietrzałej) farby. W razie czego możesz ją nieco rozjaśnić zwiększając nasycenie (Saturation). W węźle Hue Satruration Value ten parametr można ustawić na wartości > 1.0 (Rysunek 4.7.17).

Przetarciom towarzyszy otoczka zdartej farby podkładowej. Widać ją dobrze na amerykańskich maszynach, w których podkładem był czysty, nie „złamany” czernią Zinc Chromate. Zakładam jednak, że Curtiss stosował podkład z Curtiss Green. Ta farba jest tylko niewiele jaśniejsza od zużytego Olive Drab, więc efekt kontrastowej „otoczki” na P-40 nie występuje. Byłby widoczna na powierzchniach dolnych, ale tam z kolei nie ma przetarć (poza pokrywami komór uzbrojenia).

O ile na górnych powierzchniach gromadzą się rysy i zadrapania, o tyle na dolnych znajdziesz zawsze sporo kurzu i brudu — szczególnie, gdy samolot operuje z lotniska gruntowego. Moglibyśmy to odwzorować, rozbudowując teksturę odbić (ref_dirt.png). Jednak w tym przypadku różnice w połyskliwości zabrudzonej i czystej powierzchni nie są specjalnie duże. Zdecydowałem się nanieść je wyłącznie jako barwę. W pliku skin.xcf przeznaczyłem na te kolorowe plamy kolejną warstwę: Color-Dirt (Rysunek 4.7.18):

Rysunek 4.7.18 Warstwa Color-Dirt: ślady brunatnego kurzu, tłustych smug oleju, itp.

Nanieś plamy zabrudzeń na warstwę Color-Dirt podobną techniką, jaką wykonywaliśmy przetarcia (narzędziami Paint, Airbrush, Smudge, Blur, Erase). Warstwę, (o przejrzystości 60%), przedstawia Rysunek 4.7.19:

Rysunek 4.7.19 Naniesione zabrudzenia na dolnej powierzchni modelu (warstwa Color-Dirt).

Aby rozświetlić spód modelu, pokazywanego przez Rysunek 4.7.19, na chwilę przeniosłem obiekt Sun z góry na spód modelu. Kamerę ustawiłem tak, by pokazywała oświetlone dolne powierzchnie naszego samolotu.

Na jednym z forów modelarskich, w wątku o barwach, doczytałem się następującej uwagi: Klimat Hawajów wykańcza barwę każdej powłoki. Zostaw na parkingu na Oahu jaskrawoczerwonego Porsche, i wróć tam za pół roku. Przez ten czas samochód z czerwonego stanie się różowy.

Nasz model P-40 z Pearl Harbor powinien więc także mieć odpowiednio wyblakłe poszycie. Może nie aż tak bardzo jak ten Porsche, bo przypuszczam, że obsługa miała do dyspozycji hangary, a także jakieś pokrowce.

Poszycie samolotu zazwyczaj nie blaknie równomiernie — obszary wzdłuż linii łączeń różnią się o ton od reszty. Zacznijmy od przygotowania tych linii: wczytaj na nową warstwę (Color-Weathering) obraz lines.png (Rysunek 4.7.20a):

Rysunek 4.7.20 Warstwa Color-Weathering: rozmyte linie poszycia.

To ten sam plik, który wstawiliśmy na warstwę UV-Lines.png (Rysunek 4.7.20b, por. także str. 166, Rysunek 4.7.14). Tyle, że przed eksportem z Inkscape włączyłem pod liniami białe tło. W Gimpie poddaj warstwę Color-Weathering rozmyciu filtrem Gaussian Blur, o promieniu 30 px (Rysunek 4.7.20c, por. także str. 261).

Zamaluj fragmenty warstwy na biało, by były bardziej „losowe” (Rysunek 4.7.21a):

Rysunek 4.7.21 Wykończenie warstwy Color-Weathering.

Gdy nałożysz taki obraz na resztę rysunku w trybie Multiple, uzyskasz zaciemnienia (Rysunek 4.7.21b).

Barwa tych „zaciemnień” powinna w przybliżeniu odpowiadać Olive Drab (FS 34088), a na pozostałych obszarach powinna być jaśniejsza (bardziej „zwietrzała”). Aby taki efekt osiągnąć, wstaw do skin.xcf nowe warstwy: Color-Whiter i Color-Saturate, obydwie w trybie Screen (Rysunek 4.7.22a):

Rysunek 4.7.22 Warstwa Color-Saturate: rozjaśnienie poszycia.

Warstwę Color-Whiter wypełnij kolorem białym (np. podczas tworzenia). Zmieniając jej nieprzejrzystość będziesz mógł sterować stopniem „wyblaknięcia” poszycia.

Warstwę Color-Saturate dodałem, aby sterować nasyceniem koloru (wybielony wygląda nieciekawie). Zaznacz na niej obszar górnych powierzchni. (Najszybciej — poleceniem Layer→Transparency→Alpha to Selection na warstwie Color-UCamouflage. Potem przełącz się na warstwę Color-Saturate). Zalej ten obszar kolorem pomarańczowym (Rysunek 4.7.22b) — by Olive Drab, „przefiltrowany” przez tę warstwę, zachował trochę ciepłego odcienia. Potem analogicznie zaznacz dolne powierzchnie (wykorzystując zawartość warstwy Color-LCamouflage). Neutral Gray nie ma prawie wcale „ciepłych” tonów, więc ten obszar na Color-Saturate może być wypełniony barwą białą (Rysunek 4.7.22b).

Gdy zmniejszysz nieprzejrzystość Color-Whiter do 5% a Color-Saturate do 12% (Color Weathering jest na 60%), uzyskasz efekt delikatnych zaciemnień wzdłuż linii szwów (Rysunek 4.7.23a):

Rysunek 4.7.23 Kompozycja zaciemnień, wywołanych wietrzeniem farby.

Aby pogłębić wrażenie „zużycia”, zwiększyłem nieprzejrzystość Color-Concrete.jpg z 10 do 15%. Jednocześnie zmniejszyłem nieprzejrzystość warstwy Color-Chips do 50%. Po włączeniu warstw z brudem i przetarciami zaciemnienia stały się ledwo widoczne, (Rysunek 4.7.23b).

Zobacz jednak na próbny rendering (Rysunek 4.7.24a). Samolot wyblakł trochę, a wzdłuż połączeń paneli poszycia widać wpływ rozmytych cieni z warstwy Color-Weathering:

Rysunek 4.7.24 Model w wersji „wyblakłej”.

Tak zużyty samolot powinien być mniej połyskliwy. Ten efekt można łatwo osiągnąć, zwiększają w węźle Range From Min (por. str. 152, 158) bazową „szorstkość” powierzchni (Rysunek 4.7.24b). Przy okazji zmniejszyłem nieco jasność tekstury color.png (HSV:Value) do 0.15 i zwiększyłem jej nasycenie (HSV:Saturation) do 1.2.

Z innych ulepszeń — możesz jeszcze wkomponować w całość przeniesione z Inkscape śruby. Biały (a właściwie srebrnoszary) kolor ich łbów powinien wyglądać jak efekt częstych „spotkań ze śrubokrętem”!

Rysunek 4.7.25 Dodanie oddzielnej tekstury śrub (screws.png)

Wyeksportuj z pliku skin.svg zawartość warstwy Screws do pliku o nazwie screws.png. Ten obraz ma mieć przejrzyste tło, aby można było go nałożyć na podstawową teksturę color.png (Rysunek 4.7.25). Zwróć uwagę, że na schemacie w Blenderze tekstura screws.png jest mapowana tak jak mapa nierówności — w domyślnych współrzędnych UV (UVTex, z Texture Coordinate:UV) a nie w mapowaniu Color. Węzeł Multiply pozwala sterować przejrzystością śrub.

Rysunek 4.7.26 przedstawia podgląd renderu z dodatkową teksturą screws.png:

Rysunek 4.7.26 Łby śrub, podkreślone za pomocą tekstury screws.png

W wyniku nałożenia tego obrazu wg domyślnych współrzędnych UV (z mapy UVTex), rozjaśnione zostały m.in. śruby na oprofilowaniu połączenia skrzydła i kadłuba. (Rozwinięcie oprofilowania znajduje się w innym miejscu na mapie UVTex, a w innym miejscu na mapie Color — por. str. 125 i 130).

Alternatywnie, zamiast komplikować schemat materiału za pomocą kolejnej tekstury, obraz śrub można wstawić do pliku skin.xcf jako kolejny składnik podstawowej tekstury barwy (Rysunek 4.7.27):

Rysunek 4.7.27 Wkomponowanie screws.png w podstawowy obraz tekstury (color.png)

Plik screws.png dodałem do skin.xcf jako nową warstwę o nazwie Color-screws.png, powyżej warstwy z przetarciami (Rysunek 4.7.27a). W odróżnieniu od przetarć, ta warstwa ma ustawioną pełną nieprzejrzystość. Mimo to dobrze się z nimi komponuje, bo śruby są wypełnione kolorem szarym, a nie białym (Rysunek 4.7.27b). Rysunek 4.7.28 przedstawia rezultat uzyskany za wyłącznie za pomocą zmodyfikowanej tekstury color.png:

Rysunek 4.7.28 Efekt wkomponowania śrub w podstawową teksturę barwy (color.png)

Wadą włączenia obrazu screws.png do podstawowego pliku tekstury barwy (skin.xcf i jego rezultat — obraz color.png) jest brak rozjaśnienia łbów śrub na oprofilowaniu kadłuba i skrzydła (por. Rysunek 4.7.28 i Rysunek 4.7.26 na poprzedniej stronie). Zaletą jest prostszy schemat materiału B.Skin.Camouflage, bez węzłów opisanych na str. 171 (Rysunek 4.7.25).

Aby nie komplikować nadmiernie materiału prezentowanego w tej książce, zdecydowałem się na włączenie obrazu śrub do tekstury color.png (tak, jaki pokazuje Rysunek 4.7.28). To zachowuje schemat materiału B.Skin.Camouflage pokazany na str. 163. Ostatecznie te śruby na oprofilowaniu płata mogły ani razu nie odkręcane być przez cały czas używania samolotu (w odróżnieniu od śrub na okapotowaniu silnika). Z tego samego powodu — zachowania prostoty — włączyłem w źródłowy plik skin.xcf efekt tworzony przez warstwy Color-Weathering, Color-Saturate i Color-Whiter (por. str. 170). Zawartość Color-Weathering i Color-Saturate można by przecież zapisać do oddzielnych plików i użyć w Blenderze jako oddzielnych tekstur. Zamiast Color-Whiter można by było wtedy zastosować zwykły węzeł RGB z kolorem białym. Wtedy tym efektem mógłbyś sterować interaktywnie. Możesz tak zrobić w swoim modelu. Ja jednak w tym przykładzie wolę ograniczać liczbę użytych tekstur, aby schemat materiału był jak najbardziej czytelny.

Rysunek 4.7.29 przedstawia ostateczny efekt, uzyskany za pomocą skomponowanego w tej sekcji obrazu color.png:

Rysunek 4.7.29 Ogólny efekt zastosowania podstawowej tekstury barwy (color.png)

Samolot wygląda teraz na dość zużyty, nieprawdaż? Aby nie wydawał się zbyt ciemny, zwiększyłem ostatecznie intensywność tekstury barwy do wartości 0.2 (w węźle Hue Saturation Value, parametr Value — por. str. 164, 167, 171).

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.07.blend, a pliki ze zmienionymi teksturami — w folderze model\p40\textures\7.07\* (por. str. 20).

Zwróć uwagę że w pliku skin.xcf znajdują się teraz warstwy dwóch tekstur: odbić (opracowanej w poprzedniej sekcji) i barwy. Umieściłem je razem, gdyż powinny być dobrze „zsynchronizowane” (np. plamy brudu powinny być bardziej matowe). Aby ułatwić eksportowanie obrazu każdej z tych tekstur, połączyłem odpowiednie warstwy GIMP w grupy o nazwach Reflectivity i Color (szczegóły — patrz str. 228)

Podsumowanie

- Plik z wyeksportowanymi z Blendera rozwinięciami UV (uv.svg) warto podzielić na warstwy, odpowiadające alternatywnym mapom UV w Blenderze (str. 160). Nadaj im takie same nazwy, jakie nadałeś UV Maps. Oprócz nich utwórz warstwę „wspólną” — dla wszystkich siatek, które nie mają alternatywnych rozwinięć;

- Wyeksportowany obraz rozwinięć siatek (uv.png) można w Gimpie wykorzystać do szybkiego „zalania” (Bucket Fill) powierzchni samolotu podstawowymi barwami (str. 161 - 162);

- Aby tekstura wykorzystała jakąś konkretną mapę UV w Blenderze, jako źródła współrzędnych UV należy użyć węzła Attribute (str. 163). Aby Blender użył domyślnych współrzędnych UV dla siatek, które nie maja rozwinięcia o nazwie wpisanej w tej węzeł, użyj węzła UV Fallback;

- Silne światło słońca potrafi bardzo rozjaśnić teksturę (str. 163). Możesz ten efekt skompensować, zmniejszając intensywność jej barw (na przykład za pomocą węzła Hue Saturation Value — str. 164);

- Ciekawy wzór drobnych, losowych zabrudzeń powierzchni modelu można uzyskać podstawiając fotografię betonowej powierzchni (str. 165);

- Do malowania przetarć i złuszczeń farby przyda się pomocniczy obraz ze wzorem linii połączeń poszycia — lines.png (str. 166). Potem wystarczy do tego pliku dodać w Inkscape białe tło, i użyć powtórnie do efektu „wyblakłej powierzchni” (str. 169);

- Kolorowe plamy od oleju i kurzu lądowiska umieściłem na odrębnej warstwie Color-Dirt (str. 168);

- Dodatkowy efekt „zużycia” powierzchni modelu możesz uzyskać za pomocą dwóch warstw „rozjaśniających” (Color-Saturate, Color-Whiter). Dodatkowe zaciemnienia (czy właściwie — resztki oryginalnej barwy) wzdłuż szwów poszycia uzyskasz stosując bardzo rozmytą wersję lines.png (Color-Weathering), nałożoną w trybie Multiply (str. 170). Sterujesz efektem, zmieniając nieprzejrzystości tych trzech warstw w GIMP, oraz szorstkość powierzchni (Roughness) w Blenderze (str. 171);

- Na koniec warto podkreślić (rozjaśnić) na teksturze barwy częściej używane śruby (np. na okapotowaniu silnika). Użyj w tym celu kopii warstwy Screws z pliku skin.svg (str. 171 - 172);

- Odcieniem kamuflażu możesz sterować za pomocą parametrów Value i Saturation węzła Hue Saturation Value (str. 171, 173). Ma to duże znaczenie, bo np. kolor Olive Drab ulegał znacznym zmianom w trakcie eksploatacji samolotu (wietrzenie);

- Ustaw w zestawie Render parametry Integrator:Clamp na wartość 2.0, by Cycles szybko i skutecznie eliminowało z renderu niepożądane „świetliki” (por. str. 497). (Tak nazywam białe punkty, pojawiające się podczas próbkowania na połyskliwych powierzchniach, takich jak szklana osłona kabiny, oraz jej odbiciach na innych elementach modelu);

[1] (str. 165) Należałoby stworzyć nową warstwę i wypełnić ją barwnym szumem: Filters→Render→Clouds→Plasma, o odpowiednio wysokiej turbulencji (Turbulence = 6.0..7.0). Następnie przekształcić ten obraz na odcienie szarości, poleceniem Tools→Colors→Desaturate. Potem zmniejszyć przejrzystość warstwy nałożyć, w trybie Multiple, na pozostałe warstwy obrazu tekstury.

4.8  Znaki rozpoznawcze i napisy

Pozostało jeszcze nałożyć na model „naklejki”: znaki rozpoznawcze, napisy eksploatacyjne. Te elementy mogły by być kolejnym komponentem obrazu color.png, używanego przez teksturę barwy (B.Skin.Camouflage). Niestety, tekstura barwy jest namalowana na domyślnym rozwinięciu płata — z linią podziału biegnącą poniżej krawędzi natarcia. Gdy nałożysz na tę siatkę zarys amerykańskiej (lub brytyjskiej) kokardy, okaże się że jej przednia część wystaje poza krawędź podziału (Rysunek 4.8.1a):

Rysunek 4.8.1 Przyczyna stworzenia mapowania UV Decals: wygodne naniesienie znaków rozpoznawczych

Jak pamiętasz, specjalnie tak podzieliliśmy płat, by linia szwu rozwinięcia UV nie wyróżniała się na renderze (por. str. 130). Tyle, że takie rozwinięcie nie jest najwygodniejsze do nanoszenia oznaczeń. Dlatego, zamiast umieszczać znaki rozpoznawcze i napisy w charakterze dodatku do kamuflażu, umieścimy je na oddzielnej teksturze. Przygotujemy dla niej odpowiednie rozwinięcie, podzielone wzdłuż krawędzi natarcia. (Rysunek 4.8.1b). Nadamy tej mapie UV nazwę Decals.

Właściwie to mapę Decals powinniśmy już stworzyć o wiele wcześniej — przed skopiowaniem siatki lewego skrzydła w skrzydło prawe (por. str. 130). Mielibyśmy wtedy jeden płat do rozwinięcia, a tak — tę samą pracę trzeba wykonać dla każdego skrzydła oddzielnie. Nie chciałem jednak wprowadzać tej mapy na wcześniejszym etapie prac, aby tekst książki był bardziej zrozumiały.

Zacznij standardowo — utwórz w siatce płata nowe rozwinięcie o nazwie Decals poprzez skopiowanie (por. str. 423) domyślnej mapy UVTex. Aby pozwolić krawędzi natarcia rozwinąć się w nowy kształt (Rysunek 4.8.1b), musisz na chwilę usunąć z niej dotychczasowe szwy (Rysunek 4.8.2a), i nanieść nowe (Rysunek 4.8.2b):

Rysunek 4.8.2 Zmiany szwów przy tworzeniu mapy Decals.

Gdy skończysz formować rozwinięcie z warstwy Decals, „przypnij” (Pin) jej wszystkie wierzchołki UV. Potem zaznacz powtórnie na siatce szwy, wykorzystywane przez UVTex. Gdyby ich nie było, przypadkowe naciśnięcie E (Unwrap) na rozwinięciu UVTex połączyłoby ze sobą to, co powinno pozostać rozdzielone. Tak więc brak szwów może szkodzić, a ich nadmiar — nie, o ile już masz wszystko uformowane i przypięte. Rysunek 4.8.2c) pokazuje ostateczny układ szwów wokół krawędzi natarcia płata. Jest to złożenie tego, czego potrzebują wszystkie mapy UV tej siatki.

Cała różnica pomiędzy rozwinięciem UVTex i Decals polega na „odklejeniu” części ścian krawędzi natarcia od górnej powierzchni płata, i „przyklejeniu” ich do dolnej (Rysunek 4.8.3a):

Rysunek 4.8.3 Problemy z rozwinięciem krawędzi prawego płata

Jeżeli siatka prawego płata ma tendencje do samoistnego „rozwijania” w złym kierunku (Rysunek 4.8.3b) , to prawdopodobnie jest umieszczona w obiekcie poddanemu transformacji o ujemną skalę. (Tak się realizuje w Blenderze symetryczne odbicie). Popraw zaraz skalę tego płata z ujemnej na dodatnią, wykonaj lustrzane odbicie jej siatki względem środka obiektu i przerzuć kierunki normalnych (Flip Normals). Dopóki można, nie stosuj nigdy ujemnej skali obiektów, bo to rodzi później różne kłopoty!

Drugą siatką, która powinna mieć także rozwinięcie o nazwie Decals, jest osłona chłodnicy cieczy. To po to, by w innych schematach malowania łatwo na nią nanieść słynne szczęki rekina (Rysunek 4.8.4):

Rysunek 4.8.4 Alternatywne rozwinięcia osłony chłodnicy (UVTex i Decals)

Chłodnica na mapie UV Decals jest „rozcięta” wzdłuż płaszczyzny symetrii, i ściśle dopasowana do sąsiednich elementów osłony silnika (Rysunek 4.8.4c).

Na koniec w prawym i lewym oprofilowaniu płata (siatki B.180.*.Wing Fillet) skopiuj rozwinięcie Color w nowe rozwinięcie Decals [1]. Zawartość mapy UV Decals wyeksportuj z Blendera do pomocniczego pliku *.svg, i wczytaj do uv.svg jako nową warstwę o nazwie UV-Decals (Rysunek 4.8.5a):

Rysunek 4.8.5 Nowa warstwa w pliku uv.png, z rozwinięciami z mapy Decals

Następnie zapisz złożenie warstw UV-Decals i UV-Base (Rysunek 4.8.5b) do pomocniczego pliku uv-decals.png, który wykorzystamy jako referencję do rysowania nowej tekstury barwy.

Znaki rozpoznawcze i napisy przygotujemy w Inkscape, w nowym pliku o nazwie decals.svg. Dotychczasowy plik skin.svg był przeznaczony na elementy wspólne dla wszystkich tekstur, a oznaczenia do takich nie należą.

Rozpocznijmy od umieszczenia na odrębnej warstwie pliku decals.svg stworzonego przed chwilą obrazu z rozwinięciem warstwy Decals. Potem możesz zacząć rysować znaki rozpoznawcze. Jak pamiętasz, odwzorowujemy samolot z Pearl Harbor, więc rozpocznij od narysowania kokardy USAAC, używanej do wiosny 1942r (Rysunek 4.8.6a):

Rysunek 4.8.6 Przygotowanie w Inkscape znaków rozpoznawczych (decals.svg)

Narysuj białą pięcioramienną gwiazdę (na szczęście w Inkscape ma oddzielny tryb rysowania wieloboków i gwiazd — ). Ten element był w kolorze Insignia White (FS 37875), czyli miał niewielką domieszkę błękitu. Następnie umieść pod gwiazdą błękitne koło w kolorze Insignia Blue (FS 15044), a ponad gwiazdą — czerwony okrąg (Insignia Red — FS 11136). Całość złącz w grupę. Klony tej grupy rozmieść, dopasowując rozmiar, we właściwych miejscach siatek (Rysunek 4.8.6b). Rezultat, bez żadnego tła, wyeksportuj do pliku decals.png. Ten plik wykorzystamy w Blenderze do stworzenia nowej tekstury barwy.

Rysunek 4.8.7 przedstawia fragment schematu materiału B.Skin.Camouflage, w którym należy wprowadzić odpowiednie modyfikacje:

Rysunek 4.8.7 Włączenie tekstury decals.png do schematu materiału B.Skin.Camouflage

Nową teksturę należy nałożyć wykorzystując alternatywną mapę UV Decals. Stąd wstawiłem kolejne trzy węzły tego samego typu, które wykorzystaliśmy do mapowania podstawowej tekstury barwy. Są to:

- Attribute: w tym przypadku węzeł odwołuje się do mapy UV o nazwie Decals;

- UV Fallback: taki sam węzeł jak ten użyty w mapowaniu tekstury color.png (por. str. 163). Dla siatek, które nie zawierają rozwinięcia Decals podstawia ich domyślne współrzędne UV;

- Image Texture: właściwy węzeł z pomocniczą teksturą barwy decals.png;

Obraz decals.png ma przejrzyste tło, dzięki czemu można go „nałożyć” na podstawową teksturę barwy wykorzystując wyjście Image Texture:Alpha [2]. W poprzedniej sekcji nakładaliśmy tak obraz śrub (por. str. 171, Rysunek 4.7.25), używając węzłów Multiply i Color→Mix. Tutaj „obudowałem” te dwa węzły pomocniczą grupą, którą nazwałem Stack Image (bo służy do „nakładania” obrazów). (Więcej o Stack Image — por. str. 511).

Rysunek 4.8.8 przedstawia pierwszy rendering z użyciem tekstury decals.png:

Rysunek 4.8.8 Kokardy USAAC, naniesione za pomocą tekstury decals.png

Na dolnej powierzchni płata, oprócz gwiazdy na prawym skrzydle, malowano także napis U.S. ARMY (Rysunek 4.8.9b):

Rysunek 4.8.9 Nanoszenie napisów — za pomocą odpowiedniej czcionki.

Z narysowaniem takich litery byłoby trochę roboty. Na szczęście znalazłem w Internecie (simmerpaintshop.com) czcionki o kroju szablonów używanych w USAAF (Rysunek 4.8.9a) . O tym, jak ich użyć — patrz str. 352.

Kolejny napis to duży, biały numer taktyczny (takie oznaczenia były stosowane wyłącznie na Hawajach w 1941r). Aby go widzieć podczas rysowania podstawiłem pod spodem rysunku szary prostokąt (Rysunek 4.8.10):

Rysunek 4.8.10 Napisy na kadłubie.

Takie numery taktyczne były malowane za pomocą szablonów, i miały charakterystyczne przerwy. W dodatku były w innych miejscach niż na USAAF_Stencil. Zdecydowałem się przekształcić numer „160” na ścieżkę (Path→Object to Path) i narysować na niej prostokąty, rozłożone tak, jak paski szablonu (Rysunek 4.8.11a):

Rysunek 4.8.11 Wykonanie mniejszych „prześwitów” na numerze taktycznym

Potem wystarczyło „odjąć” (Path→Difference) od obrysu „160” te prostokąty, by uzyskać podział cyfr o odpowiednim położeniu i rozmiarze (Rysunek 4.8.11b).

Rysunek 4.8.12a) pokazuje, jak się prezentują tak przygotowane napisy na renderingu:

Rysunek 4.8.12 Napisy z pomocniczej tekstury barwy decals.png

Gdy napisy i kokardy na obrazie decals.png były zupełnie nieprzejrzyste, raziła mnie na renderze zbyt czysta biel gwiazd i numerów taktycznych. Dlatego zwiększyłem o 10% przejrzystość tej tekstury (zmniejszając w węźle Stack Image parametr Opacity do wartości 0.9 — por. Rysunek 4.8.12b).

Z drugiej strony — na oświetlonych pod dużym kątem powierzchniach zanikają ciemne elementy oznaczeń, takie jak czarne napisu czy granatowe kokardy (Rysunek 4.8.13):

Rysunek 4.8.13 Wpływ położenia słońca na postać oznaczeń

Tekstura barwy zanikają na podświetlonej powierzchni (Rysunek 4.8.13b), gdyż w takich miejscach decydujący wpływ ma kolor Specular shadera Gloss Paint. Do tej pory w matowym materiale była to kolor szary. Teraz, aby podkreślić barwy tekstury na podświetlonych powierzchniach, nałóżmy ją na to szare tło (Rysunek 4.8.14):

Rysunek 4.8.14 Modulacja barwy Gloss Paint:Specular

Oryginalny kolor Specular umieściłem w nowym węźle RGB. Z węzła Multiply wyciągnąłem drugi “przewód” z teksturą barwy (przed zaciemnieniem). Połączyłem te dwie barwy węzłem Stack Image (Rysunek 4.8.14).

Rysunek 4.8.15 przedstawia uzyskany rezultat tej “modulacji” barwy połysku:

Rysunek 4.8.15 Wpływ modulacji barwy Gloss Paint:Specular

Łącząc dotychczasowy kolor Specular z teksturą barwy udało się poprawić kontrast barw na podświetlonych powierzchniach (Rysunek 4.8.15a). Jednak wydaje mi się, że w zwykłych warunkach oświetlenia nasz model stał się przez to bardziej „płaski” (Rysunek 4.8.15b). Dlatego zamiast nakładać całą teksturę barwy, proponuję ograniczyć zasięg tego efektu tylko do namalowanych na samolocie oznaczeń (Rysunek 4.8.16):

Rysunek 4.8.16 Selektywna modulacja barwy Gloss Paint:Specular

Podłączyłem nieprzejrzystość tekstury decals.png (Image Texture:Alpha) jako nieprzejrzystość obrazu nakładanego w węźle Stack Image (wejście Alpha). Rysunek 4.8.17 przedstawia uzyskany rezultat:

Rysunek 4.8.17 Efekt selektywnej modulacja barwy Gloss Paint:Specular

Wygląda na to, że ograniczenie obszaru modulacji barwy Gloss Paint:Specular do samych oznaczeń jest całkiem dobrym kompromisem. Kokardy i napisy na podświetlonych powierzchniach skrzydeł pozostają kontrastowe (Rysunek 4.8.17a), a jednocześnie nie psujemy wyglądu modelu w innych oświetleniach (Rysunek 4.8.17b). Intensywnością kontrastu tekstury decals.png możesz sterować za pomocą parametru Opacity węzła Stack Image, który łączy barwy Specular (por. str. 181, Rysunek 4.8.14).

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.08.blend, a pliki ze zmienionymi teksturami — w folderze model\p40\textures\7.08\* (por. str. 20).

Podsumowanie

- Teksturę z oznaczeniami i napisami należy wydzielić z tekstury barwy, gdy wykorzystuje inne rozwinięcie UV siatek modelu (o nazwie Decals — str. 175);

- Wszystkie alternatywne rozwinięcia UV najlepiej jest przygotować jak najwcześniej — jeszcze przed skopiowaniem siatek Blendera, „utrwalającym” drugą, symetryczną połowę samolotu. Unikniesz w ten sposób połowy pracy — bo np. wystarczy wykonać wszystkie alternatywne rozwinięcia dla jednego płata, a nie dla dwóch! (str. 175);

- Znaki rozpoznawcze i napisy, składające się na obraz tekstury, najlepiej jest narysować w Inkscape (str. 177). Do odwzorowania napisów bardzo wygodne jest wykorzystanie odpowiedniej czcionki True Type — o ile uda Ci się ją gdzieś znaleźć (str. 179);

- Przerwy na dużych literach i cyfrach, nanoszonych na samolot za pomocą szablonu, można uzyskać w Inkscape poprzez różnicę dwóch kształtów (str. 179);

- Obraz oznaczeń — plik decals.png — włączamy w schemat materiału jako pomocniczą teksturę barwy (str. 178). Decals.png powinien mieć przejrzyste tło, aby można go było „nałożyć” na podstawowy obraz tekstury za pomocą węzła Stack Image.

- Jeżeli rysunek oznaczeń zawiera jakieś drobne napisy, eksportuj go z Inkscape (File→Export Bitmap) z odpowiednio dużą rozdzielczością (np. 4096x4096px);

- Na podświetlonych matowych powierzchniach shader Gloss Paint używa więcej koloru Specular, dlatego tekstura barwy gwałtownie zanika (por. str. 180). Dzieje się tak, gdy jest podłączona (moduluje) tylko kolorem Gloss Paint:Diffuse;

- Kontrast oznaczeń, szczególnie na podświetlonych powierzchniach, można poprawić modulując selektywnie za pomocą tekstury barwy kolor Gloss Paint:Specular (str. 182);

[1] (str. 177) Aby znaki rozpoznawcze w naturalny sposób układały się na tym fragmencie powierzchni. W mapowaniu domyślnym (UVTex) rozwinięcia siatki oprofilowania są odsunięte od kadłuba. Dlatego nie możemy go wykorzystać w teksturze Decals. Odpowiednie rozwinięcie jest na teksturze Color. Jednak podczas nakładania obrazu na model możemy wykorzystać tylko jedną nazwaną mapę UV i mapę domyślną, stąd na warstwie Decals musi się pojawić takie samo rozwinięcie, jak na warstwie Color.

[2] (str. 178) Spośród składników RGBA opisujących kolor obrazu, wartość komponentu A lpha pikseli tła ma wartość = 0, podczas gdy w pikselach nieprzejrzystych kokard z gwiazdami komponent A lpha = 1.0 (por. str. 575).

4.9  Inne tekstury

Ostatnią „obowiązkową” teksturą jest tekstura otworów. W każdym samolocie jest ich mnóstwo. Obraz „dziur” w powłoce był już wcześniej narysowany w Inkscape (w pliku skin.svg — por. 136). Specjalnie stworzyliśmy dla nich oddzielną warstwę Holes (Rysunek 4.9.1):

Rysunek 4.9.1 Rysunek otworów (plik skin.svg, warstwa Holes) - eksportowany do pliku holes.png.

Dla przypomnienia, Rysunek 4.9.1a) pokazuje, gdzie w skin.svg znajduje się warstwa Holes, a Rysunek 4.9.1b) — co zawiera. Dla większej czytelności ilustracji dodałem do obrazu, jaki pokazuje Rysunek 4.9.1b), zarys rozwinięcia UV. Bez tego podkładu trudno byłoby się zorientować, jaki otwór odwzorowuje każdy z czarnych konturów. Do eksportu do pliku holes.png wykorzystaj jednak wyłącznie warstwę Holes i Bkg-White: mają to być ostre, czarne plamy na białym tle (Rysunek 4.9.1c). Nadaj temu obrazowi rozmiar 4096x4096px.

Dodaj obraz holes.png do schematu materiału B.Skin.Camouflage jako kolejny węzeł typu Image Texture. Ustaw go w tryb Non-Color Data i podłącz do współczynnika Fac węzła Mix Shader. W tym węźle łączymy dwa shadery (Rysunek 4.9.2):

Rysunek 4.9.2 Fragment schematu materiału B.Skin.Camouflage z dodaną teksturą holes.png

Jako pierwszy (górny) shader węzła Mix podłączam Transparent BSDF, w kolorze białym. To powierzchnia idealnie przejrzysta — bardziej niż szkło, bo nie ma ani odblasków, ani cienia. Ten shader jest wykorzystywany gdy współczynnik Mix Shader:Fac jest = 0, czyli tam, gdzie na teksturze holes.png znajdują się czarne (V = 0.0) obszary otworów. Jako drugi (dolny) shader węzła Mix podłączam dotychczas używany shader Gloss Paint. Jest używany w tych obszarach, dla których tekstura holes.png jest biała (V = 1.0).

Wejścia nowego węzła Image Texture nie podłączyłem do wyjścia żadnego z istniejących węzłów (Rysunek 4.9.2). Blender podstawia wtedy na wejściu Vector:Image Teksture domyślne współrzędne UV.

Zobacz sam, jaki efekty pozwala uzyskać taka prosta tekstura. Czy wiesz, jak trudno jest zamodelować bez dodatkowych deformacji[1] taki okrągły otwór w kołpaku śmigła, jak ten, który pokazuje Rysunek 4.9.3a)? A używając tekstury uzyskujesz go niemal bez wysiłku[2]!

Rysunek 4.9.3 Efekty zastosowania tekstury otworów na powierzchniach zewnętrznych (w materiale B.Skin.Camouflage)

Musisz się bardzo zbliżyć do tego otworu, by na renderze zauważyć że nie jest zamodelowany w siatce! Zwróć także uwagę na jego krawędzie: pojawia się na nich odbłysk, jakby otwór był wycięty w powierzchni o jakiejś niewielkiej, ale widocznej grubości (Rysunek 4.9.3a). To rezultat zastosowania warstwy Holes w podstawowej teksturze nierówności (por. str. 141). Za pomocą tekstury holes.png można także wyciąć z powierzchni sterowych klapki trymerów (Rysunek 4.9.3b). Szczeliny pomiędzy taką klapką a resztą steru miały na P-40 szerokość rzędu centymetra, przez co były wyraźnie widoczna nawet z dużej odległości.

Otwór wycięty teksturą można dodatkowo „urealnić”, dodając do siatki wewnętrzne ściany (o ile takie istniały). W ten sposób stworzyłem wewnętrzne powierzchnie trymera i jego wnęki (Rysunek 4.9.4):

Rysunek 4.9.4 Dodanie wewnętrznych ścian szczelin wokół klapek trymera

Może to się wydać dziwne, ale w P-40 krawędzie natarcia trymerów nie były nawet zaokrąglone! Sprawdzałem to na zdjęciach — w rzeczywistości, tak jak w naszym modelu (por. Rysunek 4.9.4b), była to płaska ściana. Oczywiście, klapki trymera wycięte za pomocą tekstury mają jedną wadę: nie mogą się obracać. Ale wyglądają zupełnie tak samo, jak zamodelowane elementy. Trzeba się bardzo zbliżyć (por. Rysunek 4.9.4a i c) by dostrzec różnicę!

Zwróć uwagę, że nasza tekstura otworów jest nałożona na model według domyślnego mapowania UV. To bardzo rozrzutna metoda, bo przez nią otwory zajmują tylko ułamek procenta tekstury!

O wiele większą dokładność można uzyskać, przygotowując dla otworów alternatywną mapę UV, która pozwoliłaby im efektywnie wypełnić obraz. Możesz w ten sposób uzyskać o wiele większą dokładność odwzorowania krawędzi!

Aby uprościć schemat materiału B.Skin.Camouflage, proponuję stworzyć z węzłów Transparent BSDF, Mix Shader i Material Output nową grupę (Rysunek 4.9.5):

Rysunek 4.9.5 Stworzenie węzła wyjściowego Surface Output

Nazwijmy ją Surface Output, bo będzie mogła występować w miejsce dotychczas używanego węzła Material Output. To węzeł końcowy materiału, więc nie ma żadnego wyjścia. Proponuję, aby udostępniał trzy wejścia, których używamy w tym modelu:

- Surface: to dotychczasowe Material Output:Surface. Do tego wejścia podłączamy shader;

- Displacement: to także “wyciągnięte” wejście z Material Output. Do tego wejścia podłączamy teksturę nierówności;

- Opacity: to nowy rodzaj wejścia, typu Value. Możesz pozostawić je na domyślnej wartości (1.0) lub podłączyć teksturę otworów;

Zwróć uwagę, że węzeł Surface Output nie udostępnia wejścia na shader typu Volume. Przyczyna jest prosta: w tym modelu nigdy z niego nie skorzystamy.

Rysunek 4.9.6 Dodanie tekstury otworów do materiału B.Skin.Inner

Zmodyfikujmy także materiał powierzchni wewnętrznych (B.Skin.Inner — Rysunek 4.9.6):

W porównaniu z materiałem B.Skin.Camouflage, ten materiał ma na razie bardzo prosty schemat. Zastąpiłem używany w nim do tej pory węzeł Material Output węzłem Surface Output. Podłączyłem do niego dotychczas używany shader Gloss Paint oraz nowo dodaną teksturę holes.png.

W materiale B.Skin.Inner nie wykorzystujemy żadnych tekstur nierówności — dlatego do wejścia Surface Output:Displacement nie jest podłączona żadna tekstura.

Rysunek 4.9.7 przedstawia rezultat zastosowania tekstury otworów w materiale powierzchni wewnętrznych:

Rysunek 4.9.7 Rezultat zastosowania tekstury otworów w materiale B.Skin.Inner

Zazwyczaj te fragmenty samolotu kryją się w cieniu. Abyś mógł je lepiej ocenić, przesunąłem słońce (obiekt Sun) na spód samolotu, oraz odchyliłem klapę o 90º (konstrukcja P-40 pozwalała je wychylić tylko pod kątem 45º). Uważam, że tekstura holes.png przekonująco odwzorowała wszystkie konstrukcyjne otwory ulżeniowe, umieszczone w dźwigarach, żebrach, i innych elementach struktury płatowca. Te miejsca nie są nigdy wyeksponowane, więc nie stosuję tu tekstury nierówności.

Wydaje mi się natomiast, że faktura B.Skin.Inner jest trochę zbyt jednolita. Zwróć uwagę chociażby na odblask na dźwigarze klapy (Rysunek 4.9.7). Proponuję dodać do schematu materiału proceduralną teksturę „szumu” (Noise Texture — por. str. 475). Podłączmy ją tak, jak teksturę odbić (Rysunek 4.9.8):

Rysunek 4.9.8 Dodanie losowych zabrudzeń i innych nieregularności do materiału B.Skin.Inner.

Zaroiło się na schemacie od węzłów, prawda? Ale to po prostu kopia schematu połączenia tekstury odbić dla materiału matowego, jaką wypracowaliśmy w sekcji 4.6 (por. str. 158). Tyle, że zamiast dwóch różnych węzłów Image Texture używamy tu jednej tekstury proceduralnej (Noise Texture). Z innych uproszczeń — obraz odbić jest tu jednocześnie podłączony do wejścia Gloss Paint:Specular. Odpowiednie wartości barwy w węźle RGB oraz Min lub Max w węzłach sterujących zostały skopiowane z ustawień shadera Gloss Paint (por. Rysunek 4.9.8 i Rysunek 4.9.6) Zwróć także uwagę, że tekstura „szumu” jest nałożona na model według współrzędnych Texture Coordinate:Generated, a nie UV. (Taka tekstura nie wymaga precyzyjnego mapowania).

Rysunek 4.9.9 przedstawia próbny render materiału B.Skin.Inner z „proceduralnymi zabrudzeniami”:

Rysunek 4.9.9 Materiał B.Skin.Inner w wersji „pobrudzonej”

Teraz barwa powierzchni wewnętrznych nie jest już zupełnie jednolita. Wydaje mi się, że tak jak odblask światła słońca na dźwigarze klapy (por. z Rysunek 4.9.7), wygląda przez to trochę realniej.

Przyglądając się na podglądzie renderu innym szczegółom modelu, z zaskoczeniem zauważyłem zniknięcie osi sterów (Rysunek 4.9.10b):

Rysunek 4.9.10 Tajemnicze zniknięcie(?) osi sterów

Rysunek 4.9.11 Przyczyna: brak rozwinięcia UV

Nim dołączyliśmy do materiału B.Skin.Inner teksturę otworów, fragmenty osi były widoczne w otworze wziernikowym (Rysunek 4.9.10a). Teraz ich tam nie ma, choć w modelu są. Czary, czy co?

Nie to tylko efekt uboczny zastosowania tekstury otworów. Te osie nie mają żadnej mapy UV (Rysunek 4.9.11). Po prostu nie rozwijaliśmy ich powierzchni, bo nie było to potrzebne. Dla takich powierzchni węzeł Image Texture podstawia kolor czarny — niezależnie od przypisanego obrazu. A kolor czarny w przypadku tekstury otworów oznacza zupełną przejrzystość — więc te osie tam są, ale ich nie widać!

Jak rozwiązać ten problem? Materiał B.Skin.Inner będziemy przypisywać do wielu drobnych detali samolotu. Nie zamierzam wszystkich tych części rozwijać w UV, bo nie będą miały żadnych otworów nanoszonych teksturą. Pozostaje stworzyć dwie wersje materiału B.Skin.Inner. Wersja podstawowa nie będzie miała tekstury otworów. Będziemy ją przypisywać wszystkim drobnym częściom. Wersja dodatkowa — nazwijmy ją B.Skin.Inner+Holes — będzie miała dołączoną teksturę otworów. Przypiszemy ją tylko tym siatkom, na których takie otwory namalowaliśmy. Na szczęście tekstura zabrudzeń — Noise Image — nie wykorzystuje współrzędnych UV, tylko Texture Coordinate:Generated (por. str. 187). Oznacza to, że ten efekt można wykorzystać w obydwu materiałach.

Obydwa materiały powinny różnić się wyłącznie teksturą otworów. Jeżeli obydwa materiały będą miały własne kopie tego samego zestawu węzłów — możesz czasami coś przestawić w jednym, i zapomnieć zrobić to samo w drugim. Lepszym rozwiązaniem jest stworzyć specyficzną grupę, którą wykorzystamy w obydwu materiałach. Nazwijmy ją od barwy, którą zwraca X.Curtiss Green (Rysunek 4.9.12):

Rysunek 4.9.12 Stworzenie pomocniczej grupy X.Curtiss Green

(Przedrostek „X” dodałem po to, by odróżnić ją od pozostałych, „ogólnych” grup węzłów). Od tej pory barwą powierzchni zewnętrznych będziemy sterować zmieniając ustawienia we wnętrzu grupy X.Curtiss Green. Rysunek 4.9.13 przedstawia zmienione schematy obydwu materiałów powierzchni wewnętrznych:

Rysunek 4.9.13 Dwie wersje materiału powierzchni wewnętrznych, oparte o grupę X.Curtiss Green

Jak już się chyba zorientowałeś, w Cycles możesz podłączyć teksturę do każdego wejścia (parametru) dowolnego węzła. Wykorzystamy ją teraz do skorygowania pewnego szczegółu, który drażni mnie w naszym renderze: zbyt głębokich cieni we wlotach powietrza na masce silnika (Rysunek 4.9.14a):

Rysunek 4.9.14 Wpływ jasności tekstury barwy na cienie

Uważam, że cienie, jakie uzyskujemy na renderze w tych miejscach są zbyt intensywne. Przyczyną jest poważne zmniejszenie jasności całej tekstury w węźle HSV — do 20% (por. str. 164) . Gdyby nie ta korekta, wloty wyglądałyby poprawnie (Rysunek 4.9.14b), czego jednak nie można powiedzieć o reszcie samolotu. Używając pomocniczej tekstury podłączonej do HSV:Value, możemy rozjaśnić wnętrza wlotów i jednocześnie zachować intensywność 20% na pozostałych powierzchniach. Narysowałem odpowiedni rysunek w Inkscape, wyeksportowałem go do pliku col_intensity.png, który potem trochę poprawiłem w Gimpie (Rysunek 4.9.15):

Rysunek 4.9.15 Obraz, modulujący przyciemnienie tekstury barwy (col_intensity.png)

Tę niewielką teksturę (1024x1024) podłączyłem w schemacie materiału do HSV:Value (Rysunek 4.9.16):

Rysunek 4.9.16 Sterowanie intensywnością barw B.Skin.Camouflage za pomocą tekstury

Po modyfikacji schematu materiału B.Skin.Camouflage, którą przedstawia Rysunek 4.9.16, intensywnością całej powierzchni samolotu steruje powiązany z col_intensity.png węzeł Range From Min. Jego parametr Min determinuje ogólną jasność barw (nadal 20% oryginalnej), a Range pozwala sterować jasnością wlotów powietrza (Rysunek 4.9.17):

Rysunek 4.9.17 Sterowanie cieniem we wlotach powietrza

Zwróć uwagę, że rozjaśnienia na teksturze col_intensity.png mają rozmyte krawędzie a krawędź chłodnicy cieczy jest ciemniejsza od jej wnętrza (Rysunek 4.9.15b). Wszystko to ma na celu płynne przejście pomiędzy obszarami o większej i mniejszej intensywności, by nie raziły na renderze. Z tego samego powodu naniosłem w jednym miejscu tego obrazu dodatkowe rozmycia w GIMP (Rysunek 4.9.15c).

Ostatecznie rozjaśnienie cieni uzyskane dla Range = 1.0 (Rysunek 4.9.17c) wydaje mi się zbyt mocne, a dla Range = 0.2 — zbyt słabe. Właściwy kompromis leży chyba gdzieś w okolicach Range = 0.7 (Rysunek 4.9.17b). Taką wartość pozostawię w schemacie B.Skin.Camouflage (Rysunek 4.9.18):

Rysunek 4.9.18 Model po poprawkach

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.09.blend, a pliki ze zmienionymi teksturami — w folderze model\p40\textures\7.09\* (por. str. 20).

Podsumowanie

- W tej sekcji poznałeś dodatkowe narzędzie modelarskie: teksturę przejrzystości (str. 185). Pozwala tworzyć w powierzchni modelu różne otwory w prosty sposób, bez deformacji i komplikacji siatki. Dla tej tekstury można nawet przygotować dedykowane rozwinięcie UV (nie zrobiliśmy tego w tym modelu). Uzyskasz wówczas szybko i łatwo tak samo dokładne rezultaty jak w wyniku pracochłonnego modelowania;

- Aby uzyskać efekt „grubości blachy” na krawędzi otworów wyciętych za pomocą tekstury przejrzystości, umieść ich obraz także na teksturze nierówności (str. 185);

- Kiedy modelować otwory w siatce a kiedy tworzyć je za pomocą tekstury otworów? To w dużej mierze zależy od przeznaczenia modelu, który wykonujesz. Jeżeli zamierzasz użyć go tylko do stworzenia serii ilustracji (np. dla jakiejś monografii samolotu) — wykonaj jak najwięcej otworów za pomocą tekstur. Oszczędzisz w ten sposób czas, a siatki Twojego modelu będą łatwiejsze do modyfikacji i rozwinięcia UV. Jeżeli jednak tworzysz model dla różnych zastosowań, to przyjmij inne założenie. Na przykład silniki gier nie będą miały specjalnego problemu z większą liczbą ścian, ale mogą nie obsługiwać tekstur przejrzystości. Dlatego wszystkie ważniejsze szczegóły, jak wycięcia na rury wydechowe, należy wtedy zamodelować „w siatce”. W tym przypadku tekstura służy do odwzorowania tych niewielkich otworów, które w grze mogą się stać czarnymi plamami. Nasz model P-40 jest takim modelem „ogólnego zastosowania”;

- Aby uprościć schematy, stworzyliśmy i wykorzystaliśmy w materiałach nowy węzeł wyjściowy: Surface Output (str. 186). Ta grupa węzłów posiada, oprócz wejść dla shadera i tekstury nierówności, nowe wejście o nazwie Opacity. Można do niego podłączać teksturę otworów;

- Jeżeli siatka obiektu nie ma rozwinięcia UV, to po zastosowaniu tekstury przejrzystości staje się zupełnie niewidoczna (str. 188). Aby uniknąć takich zaskoczeń, stworzyliśmy drugą wersję materiału powierzchni wewnętrznych (B.Skin.Inner), z teksturą przejrzystości. Nadaliśmy mu nazwę B.Skin.Inner+Holes (str. 189);

- Aby łatwo zachować spójność pomiędzy obydwoma wersjami materiału B.Skin.Inner, połączyliśmy prawie wszystkie jego węzły w jedną grupę (X.Curtiss Green — str. 189). Potem ta grupa jest wykorzystana w każdym z materiałów. Od tej chwili, aby zmienić barwę powierzchni wewnętrznych, wystarczy wejść na jednym ze schematów do wnętrza grupy X.Curtiss Green i dokonać odpowiednich modyfikacji. Dokonane zmiany będą dotyczyć także drugiego materiału, bo używa tej samej grupy;

- W Cycles możesz podłączyć teksturę niemal do każdego parametru węzła (a dokładniej: do każdego wejścia typu Value, Color, a nawet — jeżeli wiesz, co robisz — typu Vector). Wykorzystaliśmy tę właściwość rozjaśniając za pomocą niewielkiej tekstury zbyt głębokie cienie w pewnych miejscach modelu (str. 190 - 191);

[1] (str. 185) A właściwie: bez zbyt dużych deformacji, gdyż wykonanie takiego otworu w stożku zawsze spowoduje deformacje powierzchni podziałowej — później można tylko się starać je minimalizować! Jeżeli nie chcesz żadnych deformacji kształtu stożka, masz do wyboru dwie metody:

- wyciąć takie otwory kolejnym modyfikatorem Boolean (por. Część IV). To jednak wymaga pomocniczego obiektu, a potem bardzo spowalnia każdą transformację kołpaka;

- wykonać takie otwory za pomocą odpowiedniej tekstury. Jak widzisz, efekt praktycznie nie różni się od modelowania, a jest o wiele mniej pracochłonny;

[2] (str. 185) Przygotowanie rozwinięcia UV tej konkretnej części wymagało nieco wysiłku (por. str. 117 i 132). Ale to była bardzo trudna do rozwinięcia „bez szwu” siatka. Potem narysowanie tekstury jest bardzo proste.

4.10  Alternatywny kamuflaż — plamy

W tej sekcji pokażę, jak przekształcić proste malowanie samolotów USAAC z Hawajów (por. sekcje 4.7, 4.8 — str. 160 i następne) w zupełnie inny, bardziej złożony kamuflaż. Przygotujemy tu tekstury dla samolotu, na którym latał w AVG flight leader William Reed, z dywizjonu „Hell’s Angels” . Posłużę się tu doskonałym opracowaniem barw tej maszyny, autorstwa Janusza Światłonia (z publikacji [6] ).

Pracę rozpoczynam od zeskanowania schematu malowania. Następnie „tnę go na kawałki”, które dopasowuję do rozwinięcia UV modelu (Rysunek 4.10.1):

Rysunek 4.10.1 Przeniesienie schematu malowania na rozwinięcie siatek samolotu

Dopasowanie wyciętych fragmentów wykonuję w Inkscape, gdyż najłatwiej w nim obracać i skalować obrazy. Rezultat posłuży nam jako pomoc przy malowaniu plam kamuflażu i nanoszeniu oznaczeń. Nie trzeba przenosić tu wszystkich szczegółów schematu. Pominąłem np. ster kierunku, bo byłoby z nim dużo roboty, podobnie jak z prawą stroną statecznika pionowego. Ten obraz ma z grubsza sygnalizować układ plam maskowania. Przeniosłem więc tylko górne powierzchni skrzydeł. Nie „naciągam” też na siłę rzutów z boku kadłuba na jego rozwinięcie. Wystarczy, by pasowały do środkowej części siatek (Rysunek 4.10.1b). Rezultat wczytuję do Gimpa (pliku skin.xcf) jako osobną warstwę o nazwie reference.png (Rysunek 4.10.2a). Przyda się za chwilę.

Teraz zmienimy w GIMP barwy ogólne. Zaznacz (Select→By Color) obszary zamalowane na warstwie Color-LCamouflage barwą Neutral Grey. Zamaluj to zaznaczenie kolorem Sky RAF-u (Rysunek 4.10.2b,c):

Rysunek 4.10.2 Zmiana barwy dolnych powierzchni z Neutral Grey na Sky (warstwa Color-LCamouflage)

W istocie to był substytut brytyjskiej farby Sky, używany w latach czterdziestych przez producentów z USA: lakier DuPont 71-021. Symbol ten jest „ogólnie znany” i powtarzany przez wiele źródeł, ale mimo to trudno jest zdeterminować, jaką miał właściwie barwę. W doborze skorzystałem z sugestii Rato Marczaka, opublikowanych w artykule na ten temat (na www.ratomodeling.com ).

Rysunek 4.10.3 Zmiana barwy górnych powierzchni z Olive Drab na Dark Earth (warstwa Color-UCamouflage)

W analogiczny sposób zamieniłem na górnych powierzchniach samolotu (warstwie Color-UCamouflage) barwę Olive Drab USAAC na Dark Earth RAF (DuPont 71-009 — Rysunek 4.10.3).

Rysunek 4.10.4 Malowanie płatów P-40 w zakładzie (Curtiss)

Następnie zmieniłem nazwę tej warstwy na Color-BrownCamouflage. Dodałem ponad nią przejrzystą warstwę Color-GreenCamouflage (Rysunek 4.10.5a). Namalujemy na niej, w oparciu o schemat, plamy kamuflażu w kolorze Dark Green (DuPont 71-013) .

Popatrz na Rysunek 4.10.4. To zdjęcie z hali produkcyjnej P-40. Robotnicy nanosili kamuflaż, posługując się gumowymi wzorcami. W rezultacie na pomalowanych przez zakłady Curtiss samolotach granice kolorów były ostre i wyraźne. Aby uzyskać zbliżony efekt w GIMP, nie maluj ich aerografem, tylko pędzlem (Brush) — o kształcie koła (Rysunek 4.10.5b):

Rysunek 4.10.5 Nanoszenie plam kamuflażu (Dark Green) na warstwę Color-GreenCamouflage

Plamy kamuflażu namalowane w GIMP będą zawsze zawierały jakieś błędy. Są najczęściej niedopasowane wzdłuż któregoś ze szwów siatek, lub na granicy obiektów. Koniecznie musisz nałożyć ich obraz na model, aby to sprawdzić. Zapisz zawartość warstwy z plamami do pomocniczego pliku (np. camouflage.png). Potem wskaż ten plik Blenderowi (w UV/Image Editor) jako nową zawartość obrazu Test. Włącz jeszcze w oknie 3D View tryb wyświetlania tekstur (Textured Solid), i już możesz korygować kamuflaż bezpośrednio na powierzchni modelu (Rysunek 4.10.6):

Rysunek 4.10.6 Poprawianie plam kamuflażu — poprzez bezpośrednie malowanie na modelu

W Gimpie warstwa z plamami kamuflażu (Color-GreenCamouflage) miała przejrzyste tło. Gdy za pierwszym razem wyświetlisz ten obraz w Blenderze, przejrzyste obszary będą czarne. Musisz choć raz zaznaczyć każdą część modelu, by tło obrazu stało się białe. Więcej o malowaniu w 3D oraz imporcie zmian wprowadzonych w Blenderze do GIMP znajdziesz na str. 548 i następnych (opis tego przypadku zaczyna się od strony 554).

Samoloty AVG wyglądają na bardziej „chropowate” i zużyte od swoich odpowiedników z Pearl Harbor. Rysunek 4.10.7 przedstawia inną maszynę z tego samego dywizjonu („Hell’s Angels”):

Rysunek 4.10.7 Inny egzemplarz P-40 z tego samego dywizjonu — maszyna Charlesa Oldera ( www.ratomodeling.com )

Zwróć uwagę chociażby na zacieki za kabiną pilota. Podobne występowały także na naszej „białej 75”. (To chyba ślady po tankowaniach). Z kolei maszyna na schemacie Janusza Światłonia nie ma naklejonego żółtego, disneyowskiego tygrysa. Być może tak ten samolot wyglądał przed wizytą dziennikarzy, którzy je przywieźli.

Aby odwzorować zabrudzenia i wytarcia widoczne na zdjęciu, musimy zintensyfikować efekty na warstwach *Chips i *Dirt w pliku skin.xcf (Rysunek 4.10.8):

Rysunek 4.10.8 Odpowiednio „zabrudzone” tekstury barwy (warstwy Color*) i odbicia (warstwy Ref*)

Te warstwy wchodzą w skład obrazów tekstury barwy (color.png) i odbicia (ref_dirt.png). Dodaj przetarcia i odpryski farby wzdłuż krawędzi natarcia skrzydeł i stateczników, oraz „wydeptaj” wyraźniejszą ścieżkę u nasady skrzydła. W bezpośrednim sąsiedztwie rur wydechowych nanieś białe „przepalenia”. Dalej powinny przechodzić w czarny nalot (sadzy?), noszący ślady wielokrotnych prób zmywania i czyszczenia.

Ciekawym elementem tego obrazu zanieczyszczeń są zacieki, widoczne na wszystkich maszynach „Hells Angels” za kabiną pilota[1]. Wydzieliłem dla tego efektu odrębne warstwy *Leaks (po jednej dla tekstury koloru i odbić). Rysunek 4.10.9) przedstawia szczegóły warstwy Ref-Leaks, jednego z komponentów pliku ref.png:

Rysunek 4.10.9 Szczegóły zacieków za kabiną pilota (ref.png)

Do namalowania zacieków nie używałem żadnego specjalnego narzędzia. Wystarczyło poprowadzić kilka linii różnymi średnicami standardowego pędzla GIMP („kółka”). Malowałem je „z natury”, na podstawie jedynego zdjęcia fragmentu „białej 75”, jakie posiadam. Zaobserwowałem, że zacieki mają tendencję do rozlewania się i łączenia na krawędziach paneli poszycia. To nadaje im realistyczny wygląd (Rysunek 4.10.9b).

Pora na próbny rendering, aby sprawdzić skuteczność naszych wysiłków nad kamuflażem (Rysunek 4.10.10a):

Rysunek 4.10.10 Próbny render modelu

Zastosowałem tu ten sam schemat materiału B.Skin.Camouflage, co w poprzedniej sekcji, odłączając tylko teksturę decals.png, którą przygotujemy za chwilę. Zmniejszyłem intensywność tekstury col_intensity.png do 0.3, bo ten samolot miał jaśniejszy spód. Jednocześnie zwiększyłem za to intensywność słońca (Sun) do 25.

Na górnej powierzchni płatów „białej 75” znajdował się zaskakujący element — zapomniane kokardy RAF, których chyba nikomu nie chciało się zamalować (Rysunek 4.10.11):

Rysunek 4.10.11 „Zapomniane” znaki rozpoznawcze

Narysowałem je w Inkscape, ale dodałem jako oddzielną warstwę do skin.xcf, by były porządnie pokryte brudem i zadrapaniami. (W odróżnieniu od pozostałych oznaczeń, na pewno nikt ich nie konserwował). Inne znaki rozpoznawcze i godła przygotowałem w pliku decals.svg (Rysunek 4.10.12), z którego eksportuję plik decals.png:

Rysunek 4.10.12 Oznaczenia w pliku decals.svg (na tej ilustracji dodałem szare tło, by widać było białe elementy)

Zwróć uwagę, że użyłem teraz innego rozwinięcie UV powierzchni kadłuba przed kabiną (por. str. 197, Rysunek 4.10.12 i str. 125, Rysunek 4.3.21). To alternatywna mapa UV Decals, którą dodałem do siatki kadłuba aby sylwetki „aniołków” poprawnie ułożyły się na modelu.

Rysunek 4.10.13 przedstawia próbny render ze zmienioną teksturą color.png i uzupełnioną teksturą decals.png:

Rysunek 4.10.13 Model po dodaniu tekstury z oznaczeniami

Wydaje mi się, że barwy oznaczeń — „aniołków”, numerów taktycznych czy paszczy rekina — są zbyt żywe i przez to nie pasują do reszty powierzchni samolotu. Oznacza to, że musimy nieco stonować teksturę decals.png. Zrobimy to za pomocą dodatkowego węzła HSV (Hue Saturation Value), wstawionego bezpośrednio za jej węzłem Texture Image (Rysunek 4.10.14):

Rysunek 4.10.14 Zmniejszenie intensywności tekstury decals.png

Rysunek 4.10.15 przedstawia próbny render po zmniejszeniu kontrastu tekstury z oznaczeniami (decals.png):

Rysunek 4.10.15 Model po zmniejszeniu kontrastu tekstury z oznaczeniami

Jeżeli przyjrzysz się fragmentowi schematu materiału, pokazywanego przez Rysunek 4.10.14, zapewne zauważysz że nie ma na nim tekstury sterującej jasnością powierzchni (col_intensity.png — por. str. 190). Chciałem w ten sposób sprawdzić, czy dla jaśniejszego odcienia dolnych powierzchni, użytego w tym „brytyjskim” kamuflażu, ten element w ogóle jest potrzebny. Konkluzja? Tekstura col_intenisty.png jest nadal potrzebna, choć należy ją stosować z mniejszą intensywnością: Range = 0.3 (Rysunek 4.10.16):

Rysunek 4.10.16 Efekt sterowania jasnością powierzchni za pomocą tekstury col_intensity.png

(W poprzedniej sekcji, dla ciemniejszego kamuflażu USAAC, stosowaliśmy w tym miejscu Range = 0.7 — por. str. 191, Rysunek 4.9.17)

Rysunek 4.10.17 Sterowanie barwą odblasków światła słońca (Specular)

Na zakończenie myślę że warto wspomnieć o wpływie intensywności barwy Gloss Paint:Specular na wygląd modelu. Jak pamiętasz, “wyciągnęliśmy” ten stały kolor do oddzielnego węzła RGB, aby “zmieszać” go z insygniami z tekstury decals.png (por. str. 181, 182). Ta lokalna modulacja jest niemal bez znaczenia dla wpływu wartości ustalanej w węźle RGB na barwę odblasku słońca na powierzchni samolotu (Rysunek 4.10.17).

Rysunek 4.10.18a) przedstawia testowy render modelu w którym zmniejszono intensywność podstawowej barwy Specular do 0.15:

Rysunek 4.10.18 Wpływ intensywności barwy Gloss Paint:Specular na wygląd modelu

Rysunek 4.10.18b) przedstawia ten sam model z bardziej intensywną barwą odblasków (Specular = 0.25).

Uważam że powierzchnia modelu przedstawianego przez Rysunek 4.10.18a) wydaje się zbyt “płaska”. Co prawda grzbiet skrzydeł i usterzenia jest chyba bardziej przekonujący w tym przypadku niż w przedstawionym przez Rysunek 4.10.18b). Sądzę, że ogólne wrażenie wypada jednak na korzyść przypadku b): jaśniejsze odblaski słońca podkreślają bryłę samolotu. Sprawiają także, że model lepiej komponuje się z tłem. Oczywiście, nie należy z tym efektem przesadzać: dla powierzchni matowych intensywność odbitego światła może się wahać od 0.15 do 0.35[2].

Ostatecznie zdecydowałem się zastosować w tej scenie kolor odblasków o intensywności = 0.25, gdyż przy tym ustawieniu powierzchnia samolotu wygląda podobnie jak na historycznych zdjęciach. Rysunek 4.10.19 przedstawia model w gotowym malowaniu, podstawiony na jedno ze znanych zdjęć R. T. Smitha z maja 1942r:

Rysunek 4.10.19 Rezultat: P-40 w kamuflażu AVG (zdjęcie: en.wikipedia.org)

Cienie i intensywności barw są właściwie zgodne. Doszedłem do wniosku, że zielone plamy kamuflażu miały inny odcień (czysta ciemna zieleń). Zmodyfikowałem je we wzorcu skin.xcf (por. str. 193, Rysunek 4.10.2) i powtórnie wygenerowałem teksturę color.png. Nie udało mi się jednak dopasować barw modelu do tego historycznego zdjęcia. Kadłuby tych samolotów są ciemniejsze, bo na kliszy utrwaliły się głębokie cienie. Może to jakaś niedoskonałość aparatu lub kliszy? Amatorska fotografia kolorowa wtedy dopiero raczkowała…

Rysunek 4.10.20 przedstawia ten sam model, ale widziany z prawej strony. Na tej scenie umieściłem słońce z tyłu ponad samolotem — w ten sposób podświetla nierówności na skrzydłach i stateczniku poziomym:

Rysunek 4.10.20 Ten sam model, widziany z prawej strony (inne tło i położenie słońca)

Model z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.10.blend, a pliki ze zmienionymi teksturami — w folderze model\p40\textures\7.10\* (por. str. 20).

Podsumowanie

- Zmiana kamuflażu samolotu sprowadza się do modyfikacji tylko trzech obrazów jego tekstur. Są to, przede wszystkim: color.png i decals.png. Jeżeli nowy kamuflaż wymaga poważnych zmian w „zabrudzeniu” modelu, trzeba także nieco zmienić obraz ref_dirt.png;

- Zmiany dotyczące pliku color.png wprowadzasz w GIMP, w pliku skin.xcf, na warstwach Color-UCamouflage i Color-LCamouflage. Zmiana polega na zaznaczeniu dotychczasowego koloru (By Color) i zamalowaniu zaznaczenia nowym (str. 193);

- Plamy kamuflażu nanosisz w skin.xcf na oddzielnej warstwie (str. 194). Gdy je namalujesz, koniecznie sprawdź czy dobrze się „układają” wzdłuż szwów modelu!

- Aby sprawdzić poprawność plam kamuflażu, należy wkopiować na chwilę ich warstwę z GIMP i podstawić jako obraz tekstury w Blenderze. Tryb Texture Paint Blendera umożliwia wygodne malowanie poprawek bezpośrednio na powierzchni modelu (str. 195). Poprawiony obraz przenosimy z powrotem do Gimpa.

- Barwy tekstury decals.png mogą wymagać indywidualnej korekty (za pomocą dodatkowego węzła HSV — por. str. 198);

- Intensywność pomocniczej tekstury col_intensity.png należy dobrać indywidualnie do każdego ustawienia modelu i oświetlenia (por. 199);

- Barwa Specular ma duży wpływ na intensywność odblasków słońca na powierzchni modelu. Warto zawsze sprawdzić, czy drobna zmiana tego koloru nie poprawi integracji modelu z tłem (str. 200). W razie czego możesz także spróbować „zmieszać” podstawową barwę Specular (z węzła RGB) z teksturą barwy. (W tej chwili steruje tym „mieszaniem” oryginalny kanał Alpha tekstury decals.png. Można tę „nitkę” przeprowadzić przez dodatkowy węzeł Moderate, o wartości Range < 1.0);

[1] (str. 196) Przypuszczam, że to ślad po „polowych” metodach tankowania tych maszyn. Gdzieś czytałem, że AVG nie miało cysterny z paliwem. Zbiorniki samolotów napełniano podobno ręcznie — benzynę przelewano wprost z dziesiątek kanistrów. Można sobie wyobrazić, jak ile pracy wymagało przygotowanie każdego startu tych myśliwców!

[2] (str. 200) Są to wartości odczytane bezpośrednio z rozwijalnej kontrolki barwy (w trybie HSV), poddane korekcie gamma (por. str. 387).

4.11  Podsumowanie

Uff! W tym rozdziale żonglowaliśmy plikami obrazów, wstawiając je na różne warstwy w Inkscape lub Gimpie. Abyś się w tym nie pogubił, na koniec przedstawiam ogólny obraz tego procesu. Możesz na nim sprawdzić, skąd pochodzi konkretna tekstura i jak ją otrzymać (Rysunek 4.11.1):

Rysunek 4.11.1 Schemat generowania obrazów podstawowych tekstur dla zewnętrznych powierzchni modelu P- 40

Materiał, który stworzyliśmy (B.Skin.Camouflage) wymaga przygotowania co najmniej siedmiu plików: holes.png, color.png, ref_details.png, ref_dirt.png, nor_details.png, nor_blur.png, decals.png. Umieściłem je na schemacie po prawej. Po lewej podałem warstwy w plikach Inkscape i GIMP, z których pochodzą.

Większa część obrazów używanych przez Blender pochodzi bezpośrednio z dwóch plików Inkscape:

- holes.png: to wyeksportowane z pliku skin.svg warstwy Holes + BkgWhite;

- nor_details.png: to wyeksportowane z pliku skin.svg warstwy Result:Nor-Details + BkgGrey;

- nor_blur.png: to wyeksportowane z pliku skin.svg warstwy Result:Nor-Blur + BkgWhite;

- ref_details.png: to wyeksportowane z pliku skin.svg warstwy Result:Ref* + BkgWhite;

- decals.png: to wyeksportowane z pliku decals.svg warstwy Color-Insingnia + Color-Technical (bez żadnego tła);

Dotyczy to także wszelkich tekstur pomocniczych (nie narysowałem ich na poprzedniej stronie, by nie komplikować schematu). W tym rozdziale używaliśmy jednej takiej tekstury:

- col_intensity.png: to wyeksportowane z pliku decals.svg warstwy Intensity + Bkg-Black (służy do lokalnego rozjaśnienia powierzchni — por. str. 190);

Jej użycie zależy od oświetlenia konkretnej sceny i zastosowanego zmniejszenia intensywności tekstur barw. Czasami nie jest w ogóle potrzebna.

Oprócz tego z pliku Inkscape skin.svg eksportowane są dwa obrazy „do dalszej obróbki” w GIMP:

- screws.png: to wyeksportowana z pliku skin.svg warstwa Screws, bez żadnego tła. Ten obraz można opcjonalnie wstawić do skin.xcf jako warstwę Color-screws.png. Służy do rozjaśnienia łbów śrub na teksturze barwy;

- lines.png: to wyeksportowane z pliku skin.svg warstwy Lines, Contours, Holes, Bumps, Cover, Shadows, BkgWhite. Wstawiony do skin.xcf jako referencyjna warstwa UV-Lines.png, oraz, po “rozmyciu”, jako warstwa Color-Weathering służąca do uzyskania teksturze barwy efektu “zużycia” (str. 166, 169)

Ostatecznie, z pliku Gimpa uzyskujemy obrazy dwóch istotnych tekstur:

- ref_dirt.png: to wyeksportowane ze skin.xcf złożenie wszystkich warstw o przedrostku Ref*;

- color.png: to wyeksportowane ze skin.xcf złożenie wszystkich warstw o przedrostku Color*;

Podczas prac nad detalami samolotu na pewno będzie trzeba uzupełnić teksturę poszycia o jakieś śruby, nity, czy łączenia blach. Oznacza to, że jeszcze co najmniej kilka razy będziesz musiał wygenerować nowe wersje obrazów, które wylicza Rysunek 4.11.1.

Ewentualne zmiany obrazów tekstur należy najpierw wykonać w Inkscape. Wprowadź je w odpowiednich warstwach „szczegółowych” pliku skin.svg (Screws, Rivets, PanelV, PanelH, ...), wewnątrz umieszczonych na nich grup (#Screws, #Rivets, #PanelV, #PanelH, ....). Warstwy przygotowane w skin.svg do eksportu (Result:*) zawierają referencje do tych grup, więc natychmiast wyświetlą to, co zmienisz w warstwach szczegółowych.

Po wprowadzeniu zmian w Inkscape należy ponownie wykonać czynności przedstawione przez Rysunek 4.11.1:

1. wygenerować pięć plików z Inkscape (holes.png, screws.png, ref_details.png, nor_details.png, nor_blur.png);

2. włączyć do GIMP plik screws.png (na odpowiednią warstwę). To tymczasowy plik, który po wczytaniu można usunąć;

3. wygenerować ze skin.xcf nowe wersje color.png i ref_dirt.png;

Oczywiście, jeżeli niczego nie zmieniałeś w układzie „dziur” na warstwie Holes, możesz nie generować pliku holes.png. To samo dotyczy screws.png. Pozostałe trzy pliki, wyliczone w pkt. 1, są złożeniem wielu grup, i na wszelki wypadek generuj je po każdej zmianie!

Zwróć uwagę, że nie wymieniam tu pliku lines.png. To dość specyficzny plik pomocniczy: jego „rozmyta” wersja, ze względu na swoją „niedokładność” jest odporna na większość zmian. Wersja oryginalna (nie rozmyta) pełni rolę pomocniczą — jest potrzebna tylko do malownia warstw przetarć i odprysków farby. Właśnie dlatego, że można go często pominąc, nie stworzyłem dla tego obrazu odpowiedniej warstwy Result:* w pliku skin.svg.

Jeżeli chodzi o schemat materiału B.Skin.Camouflage — to rósł stopniowo w wyniku zmian, które wprowadzaliśmy w kolejnych sekcjach tego rozdziału. Obecnie stał się już bardzo duży (Rysunek 4.11.2):

Rysunek 4.11.2 Schemat materiału B.Skin.Camouflage

Dla uproszczenia usunąłem z pokazywanego na ilustracji schematu węzeł Texture Coordinate. Używaliśmy go jako źródło współrzędnych tekstur, pobieranych z domyślnego rozwinięcia UV każdej siatki. Ten rodzaj współrzędnych jest domyślnym dla stosowanych w tym schemacie węzłów Texture Image, więc gdy go odłączysz, wszystko dalej będzie działać[1].

Schemat, przedstawiony przez Rysunek 4.11.2, można podzielić na strefy. Na ilustracji ten podział zaznaczyłem za pomocą białych, przerywanych linii. Poziomo można wyróżnić (wyliczając od lewej do prawej):

- węzły dostarczające współrzędne teksturom;

- obrazy tekstur[2] (ich oryginalne pola z nazwami są przy takiej skali ilustracji bardzo małe, więc naniosłem na schemat ich nazwy w dodatkowych białych prostokątach);

- węzły sterujące różnymi parametrami tekstur;

Pionowo rozbudowywaliśmy schemat „z dołu do góry”, stąd zaczynając od spodu można w nim wyróżnić obszary związane z:

- odwzorowaniem nierówności na powierzchni samolotu (tekstury nor_details.png, nor_blur.png);

- modulacją odbić światła (tekstury ref_details.png, ref_dirt.png);

- teksturami barwy (color.png, decals.png);

- innymi efektami (tekstura otworów — holes.png, intensywności barw — col_intensity.png);

Obszarem, który wygląda jakoś chaotycznie są węzły sterujące barwy i odbicia światła (Rysunek 4.11.2) — być może dlatego, że łączą się ze sobą. Zwróć także uwagę, ile różnych parametrów materiału B.Skin.Camouflage jest ukrytych w tej plątaninie! Nie miej złudzeń — jeżeli wrócisz do tego schematu za rok, nie będziesz pamiętał o istnieniu ani znaczeniu co najmniej połowy z nich. A co dopiero ktoś, kto będzie chciał wykorzystać ten model — dla niego to będzie zupełne „spaghetti”. Dlatego proponuję „obudować” obszar sterowania teksturami barwy i odbić za pomocą pomocniczej grupy (Rysunek 4.11.3):

Rysunek 4.11.3 Stworzenie grupy X.Textured Skin

Nadałem tej grupie nazwę X.Textured Skin. Poniżej wejścia dla każdej tekstury umieściłem się na niej podstawowe parametry, związane z tym obrazem. (Posługując się umieszczonymi na ilustracji numerami możesz szybko zidentyfikować, z jakiego węzła pochodzi każdy z nich). Dzięki grupowaniu mogłem nadać licznym parametrom odbić i barwy jakieś nazwy, co także poprawiło czytelność całego schematu (Rysunek 4.11.4):

Rysunek 4.11.4 Zastosowanie grupy X.Textured Skin w materiale B.Skin.Camouflage

Grupę X.Textured Skin wykorzystamy jeszcze w materiale wnętrza kabiny. Być może użyjesz jej potem w kolejnych modelach. Dlatego nie włączyłem do niej pewnych bardzo specyficznych szczegółów, takich jak sterowanie teksturą intensywności (col_intensity.png) czy przyciemnienie tekstury decals.png (Rysunek 4.11.4). Nawet bez tych dodatków, i bez miejsc na podłączenie dla obrazów, grupa X.Textured Skin eksponuje aż osiem różnych parametrów. (Nie liczę Decals Alpha, bo to po prostu miejsce do podłączenia wyjścia Alpha tekstury decals.png — por. Rysunek 4.11.4). Mogło by być ich jeszcze więcej, ale specjalnie pomijałem te parametry węzłów, które rzadko zmieniałem (por. Tabela 4.11.1). W razie potrzeby można przestawić ich wartości w definicji grupy.

Na pokazanych na poprzednich stronach schematach nadałem każdemu węzłowi sterującemu indywidualny numer (por. Rysunek 4.11.2, Rysunek 4.11.3). Zrobiłem to, aby zestawić w poniższej tabeli wszystkie parametry, którymi można sterować w materiale B.Skin.Camouflage:

Nr węzła

Typ

węzła

Przeznaczenie

Parametr węzła

Nazwa parametru w X.Textured Skin

1

Moderate

Głębokość podstawowej tekstury nierówności (por. str. 138)

Range

N/D

2

Moderate

Głębokość pomocniczej tekstury nierówności (por. str. 145)

Range

N/D

3

Range To Max

Poziom i zmienność odbijalności materiału (por. str. 152)

Max

Reflectivity

Range

pominięty

4

Range From Min

Poziom i zmienność szorstkości materiału (por. str. 152)

Min

Roughness

Range

pominięty

5

Moderate

Intensywność zabrudzeń (odwzorowanych przez pomocniczą teksturę Ref — por. str. 154)

Range

Dirt Intensity

6

RGB

Barwa odblasków światła (por. str. 200)

Value

Specular Image

7

Stack Image

Połyskliwość znaków rozpoznawczych i innych oznaczeń (por. str. 182)

Opacity

Decals Specularity

8

Moderate

Nieprzejrzystość barwy odblasków (łączenie barwy Specular z teksturą Diffuse — por. Podsumowanie na str. 202)

Range

Specular Intensity

9

Stack Image

Nieprzejrzystość znaków rozpoznawczych i innych oznaczeń (por. str. 178)

Opacity

Decals Intensity

10

Hue Saturation Value

Intensywność i nasycenie podstawowej barwy powierzchni (Diffuse — por. str. 164)

Value

Diffuse Intensity

Saturation

Diffuse Saturation

11

Hue Saturation Value

Przyciemnienie i nasycenie znaków rozpoznawczych i innych oznaczeń (por. str. 198)

Value

N/D

Saturation

N/D

12

Range From Min

Rozjaśnienie wybranych fragmentów powierzchni (za pomocą tekstury col_intensity.png — por. str. 190)

Min

N/D

Range

N/D

Tabela 4.11.1 Wyliczenie węzłów sterujących materiałem B.Skin.Camouflage

Model z grupami z tej sekcji znajdziesz w pliku model\p40\history\P40B-7.11.blend (por. str. 20).

[1] (str. 205) Gdy niczego nie podłączysz do wejścia Vector węzła Texture Image, Cycles podstawia tam niejawnie współrzędne Texture Coordinate:UV (por. str. 466)

[2] (str. 205) Wyjątkiem od tej reguły jest tekstura otworów (holes.png). Znajduje się po prawej stronie schematu tylko dlatego, że w innym miejscu jej długie połączenie z wejściem Surface Output:Vector byłoby mniej czytelne.

Szczegóły obsługi programów

Zawartość tej części bardzo przypomina zawartość plików podpowiedzi do trzech programów: GIMP, Inkscape i Blendera. Są tu zestawione opisy tych poleceń, które zostały wykorzystane w poprzednich częściach książki. Z założenia będziesz z nich korzystał wyrywkowo (por. „Jak czytać tę książkę?”, str. 14). Nie doszukuj się więc w kolejności rozdziałów i sekcji tej części jakiejś przemyślanej metody wprowadzania w obsługę programu. Do tego służy część pierwsza — „Budowa modelu”. To tam specjalnie dobrałem kolejność prezentowanego materiału w ten sposób, byś mógł stopniowo poznawać wszystkie potrzebne zagadnienia.

Gdy zdecydujesz się wydrukować tę książkę dla własnych potrzeb, proponuję pozostawić tą część w postaci elektronicznej. W przeglądarce PDF szybciej znajdziesz podaną w części pierwszej stronę, niż kartkując gruby wydruk. (No i zużyjesz mniej drzew z lasów...).

Rozdział 5.  GIMP — szczegóły obsługi

Nazwa GIMP pochodzi, jak sądzę, od pierwszych liter angielskiego G raphic Im age P rocessor. Jest to jeden z pierwszych, dużych i ukończonych projektów Open Source.

5.1  Instalacja

Pobierz ze strony http://www.gimp.org/downloads/ plik instalacyjny i uruchom go (do przeprowadzenia tej operacji musisz mieć uprawnienia Administratora). Program instalacyjny wyświetla najpierw się okno dialogowe pozwalające ustalić język w jakim będą wyświetlane poszczególne ekrany (Rysunek 5.1.1a), a następnie ekran startowy (Rysunek 5.1.1b):

Rysunek 5.1.1 Instalacja GIMP — pierwsze dwa ekrany

Jeżeli chcesz np. zmienić folder programu — przejdź do Customize. Na jednym z ekranów, które się wówczas pojawią, możesz na przykład zmienić folder w którym zostaną umieszczone pliki programu. Potem wrócisz na ekran startowy.

Ja jednak proponuję zainstalować GIMP bez jakiejkolwiek zmiany domyślnych parametrów: naciśnij od razu przycisk Install. Spowoduje to rozpoczęcie całej operacji (Rysunek 5.1.2a):

Rysunek 5.1.2 Dalsze ekrany programu instalacyjnego

Po zakończeniu kopiowania plików i rejestracji komponentów program instalacyjny wyświetli ekran końcowy (Rysunek 5.1.2b).

Potem możesz uruchomić GIMP. Na początku pojawi się okno startowe (Rysunek 5.1.3):

Rysunek 5.1.3 GIMP — okno startowe

Pierwsze uruchomienie GIMP trwa zazwyczaj najdłużej — przez minutę lub dwie program rozpoznaje swoje komponenty. Gdy otworzą się główne okna, proponuję od razu zmienić język interfejsu z polskiego na angielski.

Dlaczego? Większość „samouczków” do GIMP, które możesz znaleźć w Internecie, opisuje ten program w języku angielskim. W tym języku jest prowadzona jest także większość forów dyskusyjnych. Będziesz mógł o wiele łatwiej i szybciej przyswajać sobie wszelkie wskazówki na temat tego programu gdy będziesz oswojony z jego „międzynarodową” nomenklaturą.

Język przełącza się bardzo łatwo (Rysunek 5.1.4):

Rysunek 5.1.4 Ustalanie języka programu

1. otwórz okno Edycja→Preferencje (Rysunek 5.1.4a);

2. w oknie Preferencji przejdź do sekcji Interfejs (Rysunek 5.1.4b);

3. zmień Język z Język systemowy na angielski (w wersji amerykańskiej: Rysunek 5.1.4c);

4. naciśnij OK aby zamknąć okno Preferencje, po czym zamknij GIMP i otwórz go ponownie.

Domyślnie GIMP otwiera trzy okna: jedno na obraz i dwa „narzędziowe” (Rysunek 5.1.5):

Rysunek 5.1.5 Trzy domyślne okna GIMP

Myślę, że do środowiska Windows bardziej pasuje program zawarty w pojedynczym oknie. Przełączmy GIMP w taki tryb opcją Windows→Single-Window Mode (Rysunek 5.1.6):

Rysunek 5.1.6 Przełączenie GIMP w tryb pojedynczego okna

Gdy ta opcja jest włączona, GIMP wyświetla wszystkie swoje panele w pojedynczym oknie (Rysunek 5.1.7):

Rysunek 5.1.7 GIMP w trybie pojedynczego okna

Po zainstalowaniu GIMP, możesz także pobrać z tej samej stron ( http://www.gimp.org/downloads/ ) pakiet instalacyjny rozbudowanego systemu podpowiedzi (Help). Rysunek 5.1.8a) pokazuje pierwszy ekran, jaki pojawia się po uruchomieniu tego instalatora:

Rysunek 5.1.8 Pierwsze dwa ekrany instalacji podpowiedzi

Na kolejnym ekranie (Rysunek 5.1.8b) można ustalić folder w którym zostaną umieszczone pliki systemu pomocy.

Na kolejnym ekranie (Ready to Install — Rysunek 5.1.9a) naciśnij przycisk Install aby rozpocząć kopiowanie plików:

Rysunek 5.1.9 Instalacja GIMP — ekrany: rozpoczęcia operacji i finalny

Instalacja systemu podpowiedzi kończy się ekranem finalnym (Rysunek 5.1.9b).

5.2  Wprowadzenie

Ładowanie wszystkich komponentów zajmuje Gimpowi parę sekund podczas uruchamiania. W tym czasie pokazywane jest “okno startowe” (Rysunek 5.2.1):

Rysunek 5.2.1 Okno startowe GIMP — pokazuje postęp ładowania komponentów

Po zakończeniu ładowania, ujrzysz główne okno programu (Rysunek 5.2.2):

Rysunek 5.2.2 Domyślny ekran GIMP (2.8, tryb pojedynczego okna)

Obszar pośrodku okna to miejsce na obrazy. Po jego obu stronach są umieszczone panele dialogowe z przyborami rysunkowymi lub innymi pomocami. Paneli dialogowych jest w programie dużo, i mogą być łączone w zakładki (jak te z prawej strony przykładowego okna).

Obszar paneli możesz zawęzić (nawet do zera), jeżeli będzie Ci brakować miejsca na ekranie.

Rysunek 5.2.3a) przedstawia ważniejsze elementy okna przybornika (Toolbox) i panelu z opcjami narzędzi (domyślnie umieszczonego z lewej strony okna):

Rysunek 5.2.3 Przybornik i panel dialogowa

Przyjrzyj się nagłówkowi obszaru zakładek w oknie Toolbox. Jest tam, po prawej stronie, taki niepozorny przycisk „strzałki”. Gdy w niego klikniesz — otworzysz menu rozwijalne sterowania panelami (Rysunek 5.2.3b). Pierwszą jego pozycją jest submenu, odpowiadające aktywnej zakładce tego zestawu. (Na tej ilustracji zestaw zawiera pozycję o nazwie Tool Options).

Jeżeli w obszarze masz więcej niż jedną panel, możesz każdą z nich „wyciągnąć” w oddzielne okno „pływające” ponad ekranem. Służy do tego polecenie Detach Tab z menu panelu.

Polecenie Close Tab zamyka aktualną zakładkę (jeżeli była to ostatnia zakładka — zniknie cały obszar).

Zajmijmy się jednak innym poleceniem z tego menu: Add Tab. Jest to zagnieżdżone menu, prezentujące do wyboru wszystkie dostępne zakładki (Rysunek 5.2.4a). Gdy wybierzesz z tego menu jedną z zakładek (np. Layers — kształty narzędzi), GIMP doda ją do przybornika (Rysunek 5.2.4b):

Rysunek 5.2.4 Dodawanie do przybornika dodatkowej zakładki

Na ekranie możesz mieć otwartych kilka obszarów z panelami. Panele można przenosić pomiędzy obszarami metodą „przeciągnij i upuść”, „łapiąc” myszką (LPM) za zakładkę (Rysunek 5.2.5):

Rysunek 5.2.5 Przenoszenie pojedynczego panelu pomiędzy obszarami dialogowymi

Jeżeli nie chcesz przez nieuwagę przeciągnąć myszką jakiegoś panelu — możesz wyłączyć możliwość takiego przeciągania, włączając w jego menu (por. Rysunek 5.2.3b) opcję Lock Tab to Dock.

Posługując się tymi poleceniami możesz w skompletować zakładki, które są Ci potrzebne do pracy. Wydaje mi się, że do naszych celów na razie wystarczą trzy: Tool Options, Brushes i Layers (por. Rysunek 5.2.6):

Rysunek 5.2.6 Sugerowany układ ekranu

Jeżeli brakuje Ci miejsca na ekranie, można przenieść wszystkie potrzebne panele na jedną stronę ekranu, a potem szerokość przeciwległego obszaru zmniejszyć do zera.

W centrum okna programu wyświetlany jest edytowany obraz. Rysunek 5.2.7 przedstawia kilka istotnych elementów tego obszaru, które pojawiają się gdy wczytałeś istniejący plik lub stworzyłeś nowy:

Rysunek 5.2.7 Elementy obszaru obrazu

W GIMP możesz naraz otworzyć wiele obrazów. Każdy z nich zostanie umieszczony w odrębnej zakładce (Rysunek 5.2.8). Można także ten sam obraz otworzyć w kilku zakładkach (View→New View).

Rysunek 5.2.8 Praca z wieloma obrazami naraz

Jeżeli chcesz widzieć różne obrazy lub fragmenty obrazu w oknach ustawionych obok siebie — wyłącz opcję Windows→Single-Window Mode.

Jednym z typowych elementów interfejsu użytkownika są kontrolki umożliwiające określenie jakiejś ograniczonej wartości (np. intensywność jakiegoś efektu). Podstawowym problemem w przypadku takich elementów jest pogodzenie możliwości szybkiej i łatwej zmiany za pomocą myszki z możliwością wpisania dokładnej wartości. We wcześniejszych wersjach programu starano się to umożliwić za pomocą zespołu dwóch kontrolek: suwaka i pola tekstowego (Rysunek 5.2.9a). W wersji 2.8 GIMPa połączono te dwa elementy w całość (Rysunek 5.2.9b):

Rysunek 5.2.9 Nowy rodzaj kontrolki — połączenie suwaka i pola tekstowego

W taką kontrolkę można wpisać za pomocą klawiatury dokładną wartość — podczas pisania zachowuje się tak, jak klasyczne pole liczbowe (Rysunek 5.2.10a). Alternatywnie możesz także przesunąć pasek wartości klikając myszką w górną krawędź kontrolki (Rysunek 5.2.10b). Przeciągnięcie granicy paska wzdłuż dolnej krawędzi pozwala uzyskać drobniejsze zmiany (Rysunek 5.2.10c):

Rysunek 5.2.10 Szczegóły obsługi nowej kontrolki zakresu

Rysunek 5.2.11 Menu Tools (okno obrazu)

W GIMP polecenia z palety narzędzi (przybornika) są dostępne także poprzez menu Tools (Rysunek 5.2.11). Twórcy programu pogrupowali je tam w kilka submenu: Selection Tools, Paint Tools, Transform Tools. W tekście książki łatwiej i bardziej jednoznacznie jest mi podawać polecenia z menu, niż umieszczać obrazki ikon do naciśnięcia. Będę więc powoływał się na nazwy poleceń. Jeżeli wolisz korzystać z przybornika — otwórz tylko raz podane przez mnie menu, aby upewnić się o którą ikonę chodzi. (Są zawsze widoczne obok napisów) Gdy już rozpoznasz ten symbol — używaj przybornika.

Wszystkie programy w tej książce pokazuję w wersji anglojęzycznej. GIMP ma także dobre tłumaczenie na język polski. Program instalacyjny domyślnie wgrywa odp. wersję narodową (patrz str. 210 i dalsze).

5.3  Otwieranie pliku (obrazu)

Rysunek 5.3.1 Otwarcie istniejącego obrazu

Aby otworzyć obraz, wybierz z menu polecenie File→Open (Rysunek 5.3.1).

Spowoduje to pojawienie się okna dialogowego wyboru pliku (Rysunek 5.3.2). Okno to nie przypomina standardowego okna Windows. Dzieje się tak dlatego, że GIMP używa do obsługi okienek zestawu komponentów o nazwie GTK+[1]. Tak właśnie wygląda w GTK+ komponent do wyboru plików.

Rysunek 5.3.2 GIMP — okno wyboru plików

GIMP rozpoznaje wiele różnych formatów zapisu obrazu. Po naciśnięciu Open załaduje wskazany w oknie dialogowym plik.

Istnieje także prostsza metoda na załadowanie obrazu. Gdy GIMP nie zawiera żadnego obrazu, możesz „przeciągnąć” myszką jakiś plik z obrazem do okna GIMP, i tam go „upuścić”.

Pliki *.tif, *.jpg lub *.png nie przechowują informacji o warstwach. Dlatego gdy GIMP importuje ich zawartość używając polecenia File→Open, tworzy pojedynczą warstwę nazwaną tak samo jak importowany plik.

[1] (str. 219) GTK+ jest biblioteką procedur Open Source pozwalającą na pisanie programów, które będą działały w wielu różnych systemach operacyjnych, m. in. Linux, Windows, Mac OS. Posiada nawet polską wersję językową!

5.4  Zapisanie pliku (obrazu)

W obecnej wersji GIMP polecenie File→Save As pozwala zapisać obraz tylko we własnym formacie programu (*.xcf). Używaj go wtedy, gdy chcesz zapisać obraz w tej postaci, i/albo jako plik o zmienionej nazwie. Jeżeli chcesz zachować obraz w innym formacie (np. *.jpg, *.png, *.tif,…) należy użyć polecenia File→Export As (Rysunek 5.4.1):

Rysunek 5.4.1 Różne metody zapisywania pliku

Każde z nich spowoduje to pojawienie się okna (Rysunek 5.4.2), podobnego do tego, w którym wybieraliśmy plik do załadowania (por. Rysunek 5.3.2, str. 219):

Rysunek 5.4.2 Okno zapisywania do pliku

W oknie Export Image (Rysunek 5.4.2) wybieramy folder, do którego zapiszemy rysunek. Wpisujemy także nazwę pliku. Bardzo ważne jest także wpisanie właściwego rozszerzenia pliku — np. .png, .tif, albo .jpg. (GIMP określa sposób zapisu obrazu na podstawie rozszerzenia pliku, które podasz). Na koniec naciśnij na w oknie Export Image przycisk Export.

Rysunek 5.4.3 Okno dodatkowe — zapis w formacie TIFF

W zależności od formatu zapisu, który wybrałeś, GIMP może jeszcze pokazać pomocnicze okno, z dodatkowymi opcjami. Rysunek 5.4.3 pokazuje takie okno dla formatu TIFF. Można tu ustalić sposób kompresji obrazu. Wybieraj zawsze opcję LZW. (Nie sprawdzałem innych, ale LZW jest bardzo popularną metodą, i poprawnie wczytuje się do Blendera).

Po naciśnięciu kolejnego przycisku Export, nasz rysunek zostanie ostatecznie zapisany na dysku.

Gdyby GIMP wyświetlił komunikat o braku możliwości zapisania informacji o przejrzystości w pliku TIFF, wywołaj polecenie Image→Flatten Image i spróbuj jeszcze raz.

Rysunek 5.4.4 Okno dodatkowe — zapis w formacie JPEG

Inne okno dialogowe wyświetla się dla zapisu w postaci pliku *.jpg (Rysunek 5.4.4). Format JPEG pozwala uzyskać pliki o najmniejszym rozmiarze, ale za pewną cenę: pogorszenia jakości obrazu. W modelowaniu stosuj go tylko wtedy, gdy pliki których używasz — tekstury, rysunki referencyjne — nie mogą być zbyt duże. Podczas zapisu do JPEG powinieneś znaleźć kompromis pomiędzy rozmiarem pliku a jakością obrazu. Służą do tego kontrolki w oknie Export Image as JPEG. Gdy je stosujesz, włączaj opcję Show preview in image window. Spróbuj zmniejszyć wartość Quality poniżej 90. W oknie dialogowym będziesz widział jak zmniejsza to rozmiar pliku, a w oknie głównym GIMP — jaki ma to wpływ na obraz. W ten sposób szybko dobierzesz odpowiednią wartość.

Rysunek 5.4.5 Okno dodatkowe — zapis w formacie PNG

W przypadku zapisu do pliku PNG (Rysunek 5.4.5) pozostawiaj poziom Compression level na najwyższej wartości (9). W odróżnieniu od JPEG, PNG (podobnie jak TIFF) jest tzw. „formatem bezstratnym”: przechowuje oryginalne wartości każdego piksela obrazu. W takim przypadku najwyższy poziom kompresji nie wpływa na jakość, a pozwala uzyskać najmniejsze pliki.

W przypadku formatów PNG i JPEG możesz użyć przycisku Save Defaults by zapamiętać typowe parametry zapisywania, jakie stosujesz. Od tej pory GIMP będzie je proponował od razu.

5.5  Kadrowanie obrazu

Wybierz z menu polecenie Tools→Selection Tools→Rectangle Select, (lub naciśnij na klawiaturze R). Przesuwając myszkę z wciśniętym LPM, zaznacz obszar dookoła rzutu z boku (Rysunek 5.5.1).

Rysunek 5.5.1 Zaznaczenie rzutu z boku

Następnie poleceniem Image→Crop to Selection ogranicz cały obraz do zaznaczonego obszaru (Rysunek 5.5.2):

Rysunek 5.5.2 Odcięcie reszty obrazu

5.6  Linie pomocnicze (guides)

Linie pomocnicze (guides) służą do oznaczenia jakiegoś istotnego miejsca, a także porównań.

Aby dodać do rysunku linię pomocniczą, “złap” myszką (LPM) za linijkę, umieszczoną ponad obrazem. Trzymając przez cały czas wciśnięty LPM przesuń ją do dołu. Zobaczysz wówczas, że przesuwasz poziomą linię pomocniczą (Rysunek 5.6.1):

Rysunek 5.6.1 “Pobranie” linii pomocniczej

Gdzie zwolnisz LPM (“upuścisz” linię pomocniczą), tam zostanie. Nie jest częścią obrazu. Możesz ją powtórnie złapać myszką i przesunąć w inne miejsce. (Jeżeli nie reaguje na myszkę — naciśnij na klawiaturze M, aby przejść w tryb przesuwania).

W podobny sposób pobierz także kolejne linie pomocnicze, tym razem pionowe, z linijki po lewej stronie obrazu. Umieść je na kluczowych liniach konstrukcyjnych, o których wiesz, że powinny być pionowe lub poziome (Rysunek 5.6.2):

Rysunek 5.6.2 Przykładowe rozmieszczenie linii pomocniczych

Aby usunąć linię pomocniczą, przesuń ją z powrotem tam, skąd ją „wyciągnąłeś”: do linijki ponad obrazem (linie poziome) lub z lewej strony (linie pionowe)

5.7  Widok: powiększanie, przesuwanie

W GIMP powiększenie można zmienić na dwa sposoby (Rysunek 5.7.1):

- szybko i mniej dokładnie: trzymając wciśnięty Ctrl i obracając kółkiem myszki (KM);

- dokładnie, ale nie tak szybko: wybierając z listy u dołu ekranu jedno z predefiniowanych powiększeń, lub wpisując bezpośrednio nową wartość w jej pole tekstowe;

Rysunek 5.7.1 Trzy metody zmiany powiększenia (Zoom)

Przesunięcie widoku to ruch myszki z wciśniętym SPM (Rysunek 5.7.2):

Rysunek 5.7.2 Przesuwanie widoku (Pan)

Oczywiście, można się także posługiwać paskami przewijania, ale w większości przypadków to najmniej wygodna metoda.

Alternatywną metodą przesunięcia obrazu jest wykorzystanie kontrolki w prawym dolnym rogu obszaru obrazu (Rysunek 5.7.2). Gdy naciśniesz ją myszką (LPM), otworzy się miniaturka obrazu z zaznaczonym widocznym obszarem (Rysunek 5.7.3):

Rysunek 5.7.3 Alternatywna metoda przesuwania widoku (Pan)

Wystarczy ruch myszki, by przesunąć obraz. Ta metoda jest szczególnie przydatna w przypadku pracy w dużym powiększeniu.

5.8  Zmiana rozmiaru obrazu

Aby zmienić rozmiar obrazu (np. powiększyć), użyj polecenia Image→Canvas size... W oknie dialogowym, które się pojawi (Rysunek 5.8.1), rozłącz powiązanie pomiędzy wysokością i szerokością (przycisk z “ogniwami”). Potem np. zwiększ wysokość (Height).

Rysunek 5.8.1 Okno zmiany rozmiaru obrazu

Następnie przesuń (LPM) miniaturę aktualnego obrazu, aby przestrzeń, którą dodajemy, znalazła się w odpowiednim miejscu. Gdy skończysz, naciśnij przycisk Resize.

Na koniec nie zaszkodzi wywołać polecenie Layer→Layer to Image Size.

5.9  Warstwy — zarządzanie

Warstwy w GIMP możesz sobie wyobrazić, jako oddzielne powierzchnie przejrzystej folii. Każda z nich może zawierać oddzielny obraz. Obrazy te nakładają się na siebie (Rysunek 5.9.1). Do zarządzania warstwami służy zakładka Layers, dostępna w przyborniku.

Rysunek 5.9.1 Warstwy — na obrazie i w zakładce Layers

Zakładka Layers zawiera listę warstw, oraz kilka pomocniczych kontrolek. Rysunek 5.9.2 wyjaśnia, jak się nią posługiwać:

Rysunek 5.9.2 Funkcje zakładki Layers

Warstwy mogą zasłaniać się wzajemnie. Jak w świecie rzeczywistym, obowiązuje zasada, że warstwa leżąca wyżej zasłania warstwę leżącą niżej. Stąd, w przykładzie na ilustracji (Rysunek 5.9.1), warstwa P40B-JJ-Left.tif zasłoniła obraz na warstwie P40B-JJ-Right.tif. Tę nieprzejrzystość można jednak zmniejszyć. Służy do tego suwak Opacity, umieszczony powyżej listy warstw (Rysunek 5.9.2).

Kolejność warstw także można zmienić — wystarczy “złapać” pojedynczy wiersz LPM i przesunąć w nowe położenie na liście (Rysunek 5.9.2).

Na liście Layers zawsze jedna warstwa jest podświetlona na niebiesko. To warstwa aktywna.

Prawie wszystkie polecenia, które wywołujesz w GIMP (rysowanie, usuwanie, transformacje, filtry, itp.) dotyczą wyłącznie zawartości warstwy aktywnej! Pozostałe warstwy nie ulegają zmianie.

Warstwa może być powiązana (z warstwą aktywną). Takie powiązanie powoduje, że można przesuwać (poleceniem Move — M, por. str. 247) zawartość kilku warstw naraz. Do włączenia/wyłączenia blokady służy ikona “łańcucha”, po lewej stronie nazwy warstwy (Rysunek 5.9.2). To powiązanie nie działa jednak podczas innych transformacji — np. obrotu, ani malowania. Osobiście nigdy go nie używałem[1].

Warstwę można ukryć. Służy do tego ikona “oka”, umieszczona z lewej strony nazwy każdej warstwy. Piksele warstwy można także zablokować przed zmianami. Służą do tego opcje Lock (w nagłówku listy warstw — por. Rysunek 5.9.2).

Aby zmienić nazwę warstwy — kliknij w nią dwukrotnie. W wierszu pojawi się chwilowe pole edycji, w którym będziesz mógł ją poprawić.

Na koniec może wyjaśnię, pochodzenie nazw warstw w przykładzie pokazywanym przez Rysunek 5.9.2:

P40B-JJ-Right.tif — gdy wczytujesz plik obrazu w typowym formacie rastrowym: JPEG, PNG, TIFF, GIMP umieszcza jego zawartość na pojedynczej warstwie. Nadaje jej taką nazwę, jak nazwa wczytanego pliku.

P40B-JJ-Left.tif — warstwa powstała poprzez wczytanie dodatkowego obrazu (File→Open As Layer, por. str. 230). GIMP nadaje w takim przypadku nazwę wczytanego pliku.

Inną ciekawą funkcją jest możliwość grupowania warstw, którą wprowadzono w wersji 2.8 GIMP. Aby dodać nową grupę wywołaj polecenie Layer→New Layer Group., lub kliknij ikonkę foldera u dołu okna warstw (Rysunek 5.9.3a):

Rysunek 5.9.3 Grupowanie warstw

Spowoduje to wstawienie nowej grupy ponad warstwą aktywną. Taka pusta grupa jest reprezentowana przez ikonę folderu. Podobnie jak warstwy, możesz ją przesuwaćw górę i w dół, a także zmieniać nazwę. W przykładzie pokazywanym przez Rysunek 5.9.3b) przesunąłem ją do dołu i zmieniłem nazwę na Reflectivity. Następnie przesunąłem (metodą „przeciągnij i upuść”) do jej wnętrza odpowiednie warstwy (Rysunek 5.9.3c).

Grupy warstw można np. wykorzystać do uporządkowania pliku skin.xcf, w którym przechowuję trzy zestawy warstw: jeden dla tekstury odbić, drugi dla tekstury barwy, i trzecią — z plikami referencyjnymi (schemat barw, rozwinięcia UV). Trzymam te warstwy razem, gdyż tekstury barwy i odbicia światła zależą od siebie nawzajem (np. namalowane zabrudzenia muszą być bardziej matowe). Plik powstał we wcześniejszych wersjach GIMP, w którym grupowania jeszcze nie było. Do tej pory musiałem pamiętać, jakie warstwy ukryć, aby wygenerować teksturę barwy, a jakie — aby uzyskać teksturę odbić. Pomagałem w tym sobie nadając nazwom poszczególnych warstw przedrostki — Ref-* dla składników tekstury odbić, i Color-* dla składników tekstury barwy. Teraz mogłem stworzyć dla wszystkich składników tekstury odbić grupę Reflectivity, do której poprzenosiłem odpowiednie tekstury Ref-* (Rysunek 5.9.4a):

Rysunek 5.9.4 Przykład połączenia warstw w grupy

Zawartość pliku GIMP podzieliłem na trzy grupy (Rysunek 5.9.4b):

Reference

Grupa zawiera warstwy z rysunkami referencyjnymi. Takie obraz powinny być zawsze widoczne, stąd jest umieszczona u góry, i ma włączony tryb (Mode) na Multiply. Jednocześnie, aby żaden z rysunków referencyjnych nie był za bardzo kontrastowy, zmniejszyłem przejrzystość (Opacity) tej grupy. Grupa jest zawsze widoczna, bo włączam w jej środku widoczność tej warstwy, która jest mi w danym momencie potrzebna;

Reflectivity

Grupa zawiera warstwy z obrazem tekstury odbić.

Color

Grupa zawiera warstwy z obrazem tekstury barwy;

Od tej chwili, gdy chcę wyeksportować z pliku teksturę odbić, wystarczy że wyłączę widoczność grupy Color i Reference. Podobnie w przypadku eksportu tekstury barwy. Nazwy grup pozwolą mi szybko zorientować się w strukturze, choćbym do tego pliku zajrzał po wielu latach.

Zwróć uwagę, że nazwy grup składowych nadal mają przedrostki — Ref-* i Color-*. Przyczyna jest prosta:

Grupy warstw to nie foldery plików: nadal każda warstwa GIMP musi mieć unikalną nazwę w obrębie całego pliku, niezależnie od tego do jakiej grupy należy.

[1] (str. 228) Mówiąc szczerze, przez długi czas myślałem, że włączenie tej ikonki „łańcucha” blokuje warstwę przed zmianami! Jeżeli nawet na jakichś ilustracjach w tym rozdziale będziesz widział włączoną opcję powiązania, to nic to nie znaczy.

5.10  Dodanie warstwy (z innego pliku)

Wczytamy zawartość drugiego pliku jako dodatkowy obraz, do nowej warstwy. Zazwyczaj chodzi o to, aby nałożyć na siebie dwa rysunki, i je porównać. Dlatego pokażę od razu, jak ustawić częściowa przejrzystość warstwy z wczytanym obrazem.

Aby efekt przejrzystości był możliwy, aktualny rysunek nie może zapisywać barw jako tzw. indeksowanych kolorów. Jeżeli w menu Image→Mode zobaczysz, że twój rysunek ma włączony tryb Indexed, musisz to zmienić. Najlepiej będzie, jeżeli wywołasz polecenie Image→Mode→Grayscale, To zmieni odwzorowanie barw na 256 odcieni szarości. Możesz także przełączyć się w tryb barwny — Image→Mode→RGB,.

Załaduj drugi plik jako nową warstwę: File→Open as Layers. W oknie dialogowym wyboru pliku znajdź i wskaż obraz — powiedzmy, że nazywa się P40B-JJ-Left.tif.

W efekcie zobaczysz w oknie obrazu obydwa rysunki. Wczytany obraz przykrył dotychczasowy (Rysunek 5.10.1):

Rysunek 5.10.1 Dodana do rysunku warstwa z nowym obrazem

Otwórz w przyborniku zakładkę sterującą warstwami (Layers — Rysunek 5.10.1). Widać tu listę z dwoma wierszami. Każdy z nich to jedna z warstw. Dotychczasowa zawartość rysunku znajduje się na warstwie P40B-JJ-Right.tif. Druga warstwa nosi nazwę obecnie wczytanego pliku. Efekt „nałożenia” obydwu rysunków na siebie wziął się stąd, że warstwa P40B-JJ-Left.tif znajduje się powyżej warstwy P-40B-JJ-Right.tif, i po prostu ją zasłania.

Domyślna nazwa warstwy to nazwa oryginalnego pliku *.tif, *.jpg lub *.png, który otworzyliśmy w GIMP — nie tylko poleceniem File→Open as Layers, ale także zwykłym poleceniem File→Open. GIMP traktuje obraz z takiego pliku jak obraz importowany z obcego formatu, który zawiera jedną, domyślną warstwę. Aby ta warstwa nie była „bezimienna”, nadaje jej taką samą nazwę jak nazwa importowanego pliku

Teraz zmienimy przejrzystość warstwy P40B-JJ-Left.tif. Upewnij się, że jest podświetlona na liście Layers (oznacza to, że jest aktywna). Następnie zmień wartość, ustawioną na suwaku Opacity, np. z 100 na 40 (Rysunek 5.10.1).

Zobaczysz, że spod spodu zaczną “prześwitywać” linie warstwy P40B-JJ_Right.tif(Rysunek 5.10.2).

Rysunek 5.10.2 Efekt zwiększenia przejrzystości górnej warstwy obrazu

5.11  Dodanie warstwy (pustej)

Rysunek 5.11.1 Tworzenie nowej warstwy

W wyniku polecenia Layer→New Layer pojawi się okno dialogowe New Layer (Rysunek 5.11.1).

W polu Layer name wpisz nową nazwę warstwy. Spośród grupy opcji Layer Fill Type wybierz sposób wypełnienia tła warstwy. Zazwyczaj wybieram tło w pełni przejrzyste (Transparency).

Po naciśnięciu OK nowa warstwa zostanie stworzona.

5.12  Usunięcie warstwy

Warstwę możesz usunąć na dwa sposoby:

Rysunek 5.12.1 Usuwanie warstwy (zakładka Layers)

1. Poleceniem Layer→Delete Layer. Usuwa aktualną warstwę (zawsze się upewnij, która jest aktualna...)

2. W zakładce Layers: Podświetl wiersz, odpowiadający warstwie, którą chcesz usunąć. Następnie naciśnij przycisk z ikoną kosza (Rysunek 5.12.1).

5.13  Rysowanie

Rysowanie pokażę na przykładzie “z życia wziętym”: na półprzeźroczystej warstwie narysujemy kształt kadłuba. Linie rysunku wzorcowego, do którego mamy się dopasować, są widoczne na warstwie leżącej pod spodem (Rysunek 5.13.5 pokazuje, co ma być narysowane).

Nim zaczniesz rysować, upewnij się, że tryb koloru twojego rysunku jest ustawiony na RGB. W razie czego — przestaw go w ten tryb (Image→Mode→RGB). Inaczej zamiast czerwonego będzie szary!

Zacznijmy od momentu, gdy warstwy są odpowiednio ustawione. Przed rozpoczęciem rysowania często zmienia się aktualny kolor. W tym przypadku wybierz czerwony (Rysunek 5.13.1):

Rysunek 5.13.1 Ustalenie aktualnego koloru

Z palety narzędzi wybierz “pędzelek” (Tools→Paint Tools→Paintbrush z menu, albo P na klawiaturze). Następnie ustal formę narzędzia (Rysunek 5.13.2), oraz jego rozmiar (Rysunek 5.13.3):

Rysunek 5.13.2 Wybór kształtu “pędzelka”

Rysunek 5.13.3 Ustalenie rozmiaru rysowania

W trybie rysowania, gdzie tylko naciśniesz LPM, na rysunku pojawi się okrągła “plama”. Obrysowanie kadłuba najwygodniej jest wykonać za pomocą krótkich odcinków linii prostych. Aby zacząć taką sekwencję, kliknij LPM w narożnik obszaru, który chcesz zaznaczyć. Następnie przesuń myszkę trzymając wciśnięty Shift (Rysunek 5.13.4). Widzisz, że ciągniesz koniec prostej linii? Gdy trzymasz wciśnięty Shift, GIMP zawsze łączy aktualne położenie kursora z końcem ostatnio narysowanej linii. W ten sposób możesz szybko i dokładnie narysować kształt przyszłej selekcji.

Rysunek 5.13.4 Rysowanie prostymi odcinkami

“Ciągnięta” w ten sposób linia zakończy się tam, gdzie klikniesz LPM. Po obrysowaniu kształtu należy zamalować wnętrze obszaru (Rysunek 5.13.5):

Rysunek 5.13.5 Do wypełniania wnętrza wygodniej jest zmienić rozmiar narzędzia na większy

Jeżeli pomylisz się i narysujesz coś, czego nie powinieneś — użyj polecenia Edit→Undo (Ctrl-Z).

Jeżeli na rysunku masz już zaznaczony obszar selekcji — GIMP pozwoli Ci rysować tylko wewnątrz tego obszaru. Możesz go więc wykorzystywać do celowego nakładania ograniczeń (np. aby na pewno żadna linia nie wystawała poza założony obrys).

5.14  Usuwanie fragmentów obrazu

Do usunięcia czegoś z obrazu służy “gumka”: Tools→Paint Tools→Eraser . Znajdziesz ją także w oknie przybornika, pod odpowiednią ikoną (Rysunek 5.14.1). Możesz także skorzystać ze skrótu na klawiaturze: Shift-E. Po wybraniu narzędzia, wybierz jego kształt z zakładki Brushes. (Rysunek 5.14.1). W zakładce opcji narzędzia ustal rozmiar (Size — Rysunek 5.14.2):

Rysunek 5.14.1 Wybór narzędzia (“gumki”) i jej kształtu

Rysunek 5.14.2 Wybór rozmiaru gumki

Teraz już możesz wymazać z rysunku to, czego nie ma na nim być (Rysunek 5.14.3):

Rysunek 5.14.3 Wymazywanie z rysunku niepotrzebnych elementów

Gumka ściera, gdy trzymasz wciśnięty LPM. (Ta zasada obowiązuje w Gimpie dla każdego narzędzia: pędzla, aerografu, itd.). Jeżeli pomylisz się i zetrzesz coś, czego nie powinieneś - użyj polecenia Edit→Undo (Ctrl-Z).

Jeżeli na rysunku masz już zaznaczony obszar selekcji — GIMP pozwoli Ci usuwać obraz tylko wewnątrz tego obszaru. Możesz go więc wykorzystywać do celowego nakładania ograniczeń (np. aby na pewno nie usunąć niczego więcej).

5.15  Zaznaczenie obszarem prostokątnym

Zaznaczanie obszaru wyboru za pomocą prostokąta jest w GIMP najprostszą formą selekcji. Naciśnij na klawiaturze klawisz R, lub wybierz z menu polecenie Tools→Selection Tools→Rectangle Select:

Rysunek 5.15.1 Zaznaczenie obszaru selekcji

Rysunek 5.15.2 pokazuje wybrany obszar. Nadal można go jeszcze zmienić (powiększyć, pomniejszyć). Służą do tego uchwyty w narożnikach obszaru. (Są tak duże, że trudno ich nie zauważyć):

Rysunek 5.15.2 Prostokątny obszar wyboru

Aby wyłączyć obszar selekcji — wystarczy wywołać polecenie Select→None.

5.16  Zaznaczenie obszarem nieregularnym

Narzędzie dla ludzi o pewnej ręce! Wybierz polecenie Tools→Selection Tools→Free Select (lub F z klawiatury). Zacznij rysować zamknięty obszar (Rysunek 5.16.1):

Rysunek 5.16.1 Rysowanie granic obszaru selekcji

Obszar po zamknięciu jest obrysowany linią przerywaną (Rysunek 5.16.2):

Rysunek 5.16.2 Przykład nieregularnego obszaru selekcji

Aby wyłączyć obszar selekcji — wystarczy wywołać polecenie Select→None.

5.17  Zaznaczanie — wg wskazanego koloru

Wywołaj polecenie z menu: Select→By Color (Shift-O), albo naciśnij przycisk z przybornika (Rysunek 5.17.1a):

Rysunek 5.17.1 Zaznaczenie poprzez wskazanie koloru

Następnie kliknij (LPM) w obszar o odpowiednim kolorze (Rysunek 5.17.1b). W efekcie na rysunku zostanie zaznaczony każdy piksel o wskazanej barwie. W przykładzie na ilustracji wskazałem kolor biały, więc czarne krawędzie siatek nie zostały zaznaczone (Rysunek 5.17.1c).

5.18  Zmniejszanie/zwiększanie obszaru zaznaczenia

Aby poszerzyć obszar selekcji, wywołaj polecenie Select→Grow... (Rysunek 5.18.1):

Rysunek 5.18.1 Poszerzanie zaznaczonego obszaru (polecenie Select→Grow...)

W oknie dialogowym Grow Selection (Rysunek 5.18.1a) ustal rozmiar powiększenia (w pikselach) i naciśnij OK. W ten sposób możesz usuwać mniejsze przerwy w obszarze selekcji. Większe wcięcia — takie, jakie pokazuje Rysunek 5.18.1b) — tylko się zmniejszą. Takie miejsca pozostaje zaznaczać ręcznie (np. maską — por. str. 243).

Odwrotną operacją do Select→Grow jest Select→Shrink: zmniejsza obszar zaznaczenia

5.19  Zaznaczanie — narysowanym obszarem

W GIMP obszar selekcji może być dowolną plamą/plamami. Może także mieć rozmyte krawędzie. Takie efekty możesz uzyskać tylko w jeden sposób: malując obszar selekcji, tak jak maluje się jakiś kształt.

Narysowanie obszaru selekcji nie zadziała, jeżeli rysunek jest zapisany w trybie tzw. indeksowanych barw. Aby mieć pewność, że wszystko będzie poprawnie, przełącz go w tryb RGB (Image→Mode→RGB).

Pokażę, jak to zrobić na przykładzie opisanym w pierwszej części tej książki. Chodzi o objęcie ściśle “przylegającą” selekcją rysunku tylnej części kadłuba samolotu. Linie rysunku znajdują się w tym przykładzie na warstwie o nazwie P40B-JJ-Top.tif.

Obszary selekcji będziemy malować na oddzielnej warstwie, którą stworzymy wyłącznie dla tego celu. Wywołaj polecenie Layer→New Layer. Dodaj do rysunku na nową warstwę, o nazwie Mask (szczegóły — str. 232). Warstwa musi być zupełnie przejrzysta. (Podczas tworzenia, w oknie dialogowym New Layer, określ kolor tła jako Transparency).

Rysunek 5.19.1 Zmienione uporządkowanie warstw

Rysunek 5.19.1 pokazuje, jak należy przygotować układ warstw (szczegóły - str. 227):

- Ukryj wszystkie inne warstwy poza Mask i P40B-JJ-Top.tif;

- Przesuń warstwę ze wzorcem kształtu do narysowania — P40B-JJ-Top.tif — ponad Mask;

- Ustaw nieprzejrzystość P40B-JJ-Top.tif na 50%, by wygodniej dopasować rysowany kształt do linii kadłuba;

- Podświetl Mask, aby stała się warstwą aktywną.

Po ustaleniu stanu warstw należy na warstwie Mask obrysować i wypełnić (szczegóły — str. 234) kształt kadłuba (Rysunek 5.19.2):

Rysunek 5.19.2 Rysowanie kształtu selekcji

Na koniec zmień narzędzie na “gumkę” (Tools→Paint Tools→Eraser, z klawiatury Shift-E). Kształt narzędzia pozostaw bez zmian, za to rozmiar przestaw na 1.0. Użyjemy go do drobnych wygładzeń i korekt narysowanego kształtu, np. wymazania naddatku linii (Rysunek 5.19.3).

Rysunek 5.19.3 Końcowe przygotowania - wymazanie “naddatków”

Pozostaje zmienić narysowany kształt w selekcję. Wywołaj polecenie: Layer→Transparency→Alpha to Selection.

Rysunek 5.19.4 Przygotowanie warstw

I to wszystko. Na koniec porządkujemy warstwy (Rysunek 5.19.4):

- ukryj Mask (można by ją było usunąć, ale może się przydać przy następnym takim przypadku);

- odkryj inne warstwy (te, które są potrzebne do dalszej pracy);

- podświetl warstwę, na której chcesz coś zmienić, za pomocą aktualnie wybranego obszaru (np. P40B-JJ-Top.tif). (Stanie się w ten sposób warstwą aktywną)

W GIMP kształt selekcji “przenika” przez wszystkie warstwy. Nie jest związany w szczególny sposób z żadną z nich. Dzięki temu warstwa, na której go rysowałeś, może być zaraz usunięta

5.20  Zaznaczenie — poprawianie za pomocą Quick Mask

W sekcji 5.19 (str. 241) przedstawiłem tworzenie zaznaczenia z kanału Alfa (nieprzejrzystości) aktualnej warstwy. Podobny efekt można także osiągnąć w inny sposób — wykorzystując tzw. „chwilową maskę” (Quick Mask). Jest to metoda bardzo przydatna do obsługi obszarów selekcji o bardzo złożonych kształtach.

Rysunek 5.20.1a) przedstawia przykład skomplikowanego obszaru selekcji. Przełączymy się w tryb Quick Mask, aby go zmienić. Możesz to zrobić na kilka sposobów: wywołując polecenie z menu (Select→Toggle Quick Mask), skrótem Shift-Q, lub klikając LPM w lewy dolny narożnik rysunku (Rysunek 5.20.1a):

Rysunek 5.20.1 Przełączenie w tryb rysowania zaznaczenia (Quick Mask)

Możesz traktować Quick Mask jak specjalną, chwilową warstwę, nałożoną na rysunek. Zaznaczony obszar jest na niej zupełnie przeźroczysty. Reszta jest pokryta półprzejrzystym kolorem czerwonym (Rysunek 5.20.1b).

Do przełączenia się z powrotem w tryb normalny służą te same polecenia (Select→Toggle Quick Mask, skrót Shift-Q).

Po powierzchni chwilowej maski możesz rysować, używając dowolnego narzędzia z przybornika. Rysunek 5.20.2a przedstawia przykład użycia pędzelka (Paintbrush). Rysując, zmniejszasz obszar zaznaczenia:

Rysunek 5.20.2 Zmiana obszaru zaznaczenia — poprzez malowanie

Aby zwiększyć obszar zaznaczenia, użyj w trybie Quick Mask „gumki” (Eraser). Wystarczy usunąć z maski kolor czerwony.

Podczas pracy z maską należy uważać na wybieranie narzędzi. Jeżeli wybrałeś w trybie normalnym wybrane narzędzie Paintbrush, i przełączyłeś się na Quick Mask, to dalej będziesz malować po powierzchni normalnej warstwy, a nie po masce.

Wszystkie narzędzia, których chcesz użyć do zmiany Quick Mask, wybierz po przełączeniu się w ten tryb. Nawet jeżeli jest to ten sam Paintbrush, aktualnie używany w trybie normalnym — wybierz go raz jeszcze.

Może to efekt jakiegoś błędu w programie i zniknie w kolejnych wersjach — ale przezorność nie zawadzi.

5.21  Zaznaczenie — zachowywanie obszaru w zakładce Channels

Czasami najbardziej pracochłonną częścią malowania w Gimpie jest przygotowanie odpowiedniego obszaru selekcji (na przykład w trybie Quick Mask). Czy można taki obszar zaznaczenia zachować do późniejszego użycia ? Na szczęście — tak. Służy do tego polecenie Select→Save to Channel (Rysunek 5.21.1):

Rysunek 5.21.1 Zapamiętanie obszaru zaznaczenia — do powtórnego użycia

Obszary zaznaczenia, zapamiętane w zakładce Channels, są przechowywane w pliku rysunku i mogą być użyte także po ponownym uruchomieniu programu. Użyj przycisku, umieszczonego u dołu zakładki Channels (Rysunek 5.21.1), aby przekształcić je z powrotem w aktualną selekcję.

Rysunek 5.21.2 Channels — menu kontekstowe

Gdy w zakładce Channels klikniesz PPM na jednym z zapamiętanych zaznaczeń, otworzysz menu kontekstowe (Rysunek 5.21.2). Znajdziesz tam kilka przydatnych poleceń, służących do łączenia zapamiętanego obszaru zaznaczenia z aktualnym obszarem selekcji:

- Channel to Selection oznacza zwykłe zastąpienie aktualnego obszaru przez obszar zaznaczenia;

- Add to Selection pozwala dodać do aktualnie zaznaczonego na ekranie obszaru obszar zaznaczenia;

- Substract from Selection zmniejsza aktualną selekcję o obszar zaznaczenia;

- Intersect with Selection zmniejsza obszar aktualnej selekcji do części wspólnej z obszarem zaznaczenia

5.22  Obrót

Jeżeli w GIMP jakiś obszar jest wybrany (selekcją) — obrót będzie dotyczył tylko tego obszaru. Jeżeli jednak nic nie jest wybrane, obracana jest cała zawartość warstwy aktywnej. Operację pokażę na przykładzie właśnie takiej sytuacji.

Rysunek 5.22.1 Wybór narzędzia Rotate

Jeżeli wykonujesz obrót po raz pierwszy, warto odpowiednio ustawić opcje tego narzędzia.

Zaznacz je w przyborniku (Rysunek 5.22.1), aby w panelu Tool Options GIMP wyświetlił aktualne ustawienia operacji Rotate (Rysunek 5.22.2). Proponuję wyłączyć wyświetlanie siatki linii pomocniczych dla tej operacji, bo jest na tyle gęsta, że wydaje się zasłaniać obracany obraz. Wyłącza się je wybierając z listy rozwijalnej Guides pozycję No guides (Rysunek 5.22.2):

Rysunek 5.22.2 Przygotowanie do obrotu (Rotate)

Przed każdym obrotem upewnij się, że Twój obraz jest dostatecznie duży (Rysunek 5.22.2). Chodzi o to, że GIMP obraca zawartość obrazu, ale jego granice („ramka”) pozostaje nieruchoma. Jeżeli obrócisz zbyt niski obraz, górna część po obrocie może zostać obcięta, tak jak to pokazuje Rysunek 5.22.3:

Rysunek 5.22.3 Obcięcie części obróconego obrazu

Jeżeli chcesz obrócić tylko zaznaczony obszar rysunku (aktualną selekcje) — zacznij od wywołania polecenia Select→Float. W przeciwnym razie będziesz obracać całą zawartość warstwy aktywnej.

Wywołaj polecenie Tools→Transform Tools→Rotate (Shift-R). Pojawi się dodatkowe okno Rotate (Rysunek 5.22.4). Zauważysz także pewne pogorszenie jakości wyświetlanego obrazu. Linie stały się mniej gładkie, gdyż GIMP przełączył się na wyświetlanie “roboczej kopii” rysunku. Pokazuje teraz, jak będzie wyglądał obraz, gdy zatwierdzisz ten obrót. (Czyli taki, jaki byłby, gdybyś w tym momencie nacisnął przycisk Rotate. Jeżeli naciśniesz Cancel — zrezygnujesz z całej operacji).

Rysunek 5.22.4 Obrót obrazu (Rotate)

Zwróć uwagę, że okno Rotate nie przeszkadza w zmianie powiększania widoku, ani w przesuwaniu poziomym i pionowym suwakiem. To bardzo wygodne, gdyż z większą dokładnością możesz obserwować zgodność linii pomocniczej i linii na kadłubie samolotu. Podczas obrotu pokazywana jest także oś obrotu — kółko z krzyżykiem, wyglądające jak celownik (Rysunek 5.22.4). Możesz w każdym momencie ją złapać (LPM) i przesunąć w nowe miejsce.

Obraz można obracać przesuwając myszkę z wciśniętym LPM (dobre na pierwsze przybliżenie). Można także zmienić numeryczną wartość kąta obrotu w oknie Rotate, polu Angle (tak najwygodniej wprowadzać ostatnie, drobne poprawki). Wartość kąta w polu Angle zmienia się także wtedy, gdy obracasz obraz myszką.

Obrót zatwierdzamy naciskając przycisk Rotate.

Jeżeli obracałeś tylko zaznaczony fragment obrazu (selekcję), po zakończeniu obrotu wywołaj jeszcze polecenie Layer→Anchor Layer (Ctrl-H).

(To scali “pływający” ponad rysunkiem, obrócony obszar z resztą obrazu, i zakończy całą operację).

5.23  Przesunięcie

Jeżeli chcesz przesunąć tylko zaznaczony obszar rysunku (aktualną selekcje) — zacznij od wywołania polecenia Select→Float. W przeciwnym razie będziesz przesuwać całą zawartość warstwy aktywnej.

Transformację zademonstruję na przykładzie, gdzie przesuwam obraz na jednej warstwie tak, by pokrył się ze wzorcem (umieszczonym na innej warstwie — Rysunek 5.23.1). Naciśnij na klawiaturze M (jest to skrót polecenia Tool→Transform Tools→Move). “Złap” zmieniamy obszar (LPM) i przenieś we właściwe miejsce:

Rysunek 5.23.1 Przesuwanie zawartości warstwy

Przesunięcie kończysz, zwalniając LPM (Rysunek 5.23.2):

Rysunek 5.23.2 Obraz po przesunięciu

Jeżeli przesuwałeś tylko zaznaczony fragment obrazu (selekcję), po zakończeniu przesuwania wywołaj jeszcze polecenie Layer→Anchor Layer (Ctrl-H).

(To scali “pływający” ponad rysunkiem, deformowany obszar, z resztą obrazu, i zakończy całą operację).

5.24  Przekoszenie (Shear)

Jeżeli chcesz zdeformować tylko zaznaczony obszar rysunku (aktualną selekcje) — zacznij od wywołania polecenia Select→Float. W przeciwnym razie deformacji ulegnie cała zawartość warstwy aktywnej.

Rysunek 5.24.1 Wybór narzędzia Shear

Jeżeli wykonujesz przekoszenie po raz pierwszy, warto odpowiednio ustawić opcje tego narzędzia. Zaznacz je w przyborniku (Rysunek 5.24.1), aby w panelu Tool Options GIMP wyświetlił aktualne ustawienia operacji Shear (Rysunek 5.24.2). Proponuję wyłączyć wyświetlanie siatki linii pomocniczych dla tej operacji, bo jest na tyle gęsta, że wydaje się zasłaniać deformowany obraz. Wyłącza się je wybierając z listy rozwijalnej Guides pozycję No guides (Rysunek 5.24.2).

Rysunek 5.24.2 Parametry

Często takie operacje jak przekoszenie wywołujemy, aby dopasować obraz na jednej warstwie do wzorca na drugiej warstwie. Aby podczas transformacji nie stracić ani przez chwilę wzorcowego obrazu z oczu, włącz w panelu Tool Options opcję Show preview image, oraz zmniejsz jego nieprzejrzystość (Opacity) do 50% lub mniej (Rysunek 5.24.2). Aby nie zmieniać tych ustawień za każdym razem, możesz potem je zapisać jako domyślne (służy do tego ikona dyskietki u dołu tego panelu — por. Rysunek 5.24.2).

Przekoszenie pokażę na przykładzie transformacji prostokątnego fragmentu obrazu. Ponieważ deformujemy selekcję, wywołaj najpierw polecenie Image→Float. Potem użyj Tools→Transform Tools→Shear (lub Shift-S). Pojawi się dodatkowe okno Shear (Rysunek 5.24.3). Zauważysz także pewne pogorszenie jakości obrazu w zaznaczonym obszarze. Linie stały się mniej gładkie, gdyż GIMP przełączył się na wyświetlanie “roboczej kopii” tego fragmentu. Pokazuje teraz, jak będzie wyglądał obraz, gdy zatwierdzisz tę transformację. (Czyli gdy naciśniesz przycisk Shear. Jeżeli naciśniesz Cancel — zrezygnujesz z całej operacji).

Rysunek 5.24.3 Przekoszenie (poziome)

Polecenie Shear działa podobnie do obrotu. (Zresztą wszystkie transformacje w GIMP działają w taki sposób). Obecność okna Shear nie przeszkadza w zmianie powiększenia widoku, ani w przesuwaniu pionowym i poziomym suwakiem. Przekoszenie nie ma, niestety, widocznego środka, który można by było przesunąć. Punkt ten jest stały i znajduje się w środku obszaru selekcji.

Podświetlony na rysunku fragment można deformować przesuwając myszkę z wciśniętym LPM (dobre na pierwsze przybliżenie). Można także zmienić numeryczną wartość transformacji w oknie Shear, polu Shear magnitude X (Rysunek 5.24.3) (tak najwygodniej wprowadzać ostatnie, drobne poprawki). Wartość w polu Shear magnitude X zmienia się także wtedy, gdy dokonujesz deformacji myszką. Przekoszenie zatwierdzasz naciskając przycisk Shear.

W GIMP nie można wskazać środka tej transformacji. Po jej zakończeniu zmieniony fragment może leżeć niezupełnie tam, gdzie trzeba. Potem trzeba go wtedy przesunąć (M, por. str. 247) we właściwe miejsce.

Jeżeli deformujesz tylko fragment obrazu, wywołaj na koniec polecenie Layer→Anchor Layer (Ctrl-H). To scali “pływający” ponad rysunkiem deformowany obszar z resztą obrazu, i zakończy całą operację.

5.25  Skalowanie

Jeżeli chcesz zdeformować tylko zaznaczony obszar rysunku (aktualną selekcje) — zacznij od wywołania polecenia Select→Float. W przeciwnym razie deformacji ulegnie cała zawartość warstwy aktywnej.

Rysunek 5.25.1 Wybór narzędzia Scale

Jeżeli przeskalowujesz po raz pierwszy, warto odpowiednio ustawić opcje tego narzędzia.

Rysunek 5.25.2 Parametry skalowania

Zaznacz je w przyborniku (Rysunek 5.25.1), aby w panelu Tool Options GIMP wyświetlił aktualne ustawienia operacji Scale (Rysunek 5.25.2). Proponuję wyłączyć wyświetlanie siatki linii pomocniczych dla tej operacji, bo jest na tyle gęsta, że wydaje się zasłaniać deformowany obraz. Wyłącza się je wybierając z listy rozwijalnej Guides pozycję No guides (Rysunek 5.25.2).

Często takie operacje jak skalowanie wywołujemy, aby dopasować obraz na jednej warstwie do wzorca na drugiej warstwie. Aby podczas transformacji nie stracić ani przez chwilę wzorcowego obrazu z oczu, włącz w panelu Tool Options opcję Show preview image, oraz zmniejsz jego nieprzejrzystość (Opacity) do 50% lub mniej (Rysunek 5.25.2). Aby nie zmieniać tych ustawień za każdym razem, możesz potem je zapisać jako domyślne (służy do tego ikona dyskietki u dołu tego panelu — por. Rysunek 5.25.2).

Wywołaj polecenie Tools→Transform Tools→Scale (lub Shift-T). Pojawi się okno dialogowe Scale (Rysunek 5.25.3). Zauważysz także pewne pogorszenie jakości wyświetlanego obrazu. Linie stały się mniej gładkie, gdyż GIMP przełączył się na wyświetlanie „roboczej kopii” rysunku. Pokazuje teraz, jak będzie wyglądał obraz, gdy zatwierdzisz tę zmianę skali. (Czyli gdy naciśniesz przycisk Scale. Jeżeli naciśniesz Cancel — zrezygnujesz z całej operacji).

Rysunek 5.25.3 Zmiana rozmiaru obrazu w kierunku pionowym

Zwróć uwagę, że okno Scale nie przeszkadza w zmianie powiększania widoku, ani w przesuwaniu poziomym i pionowym suwakiem. To bardzo wygodne, gdyż z większą dokładnością możesz obserwować zgodność linii pomocniczej i linii na rysunku samolotu.

Jeżeli nie zamierzasz zmieniać skali tak samo w obydwu kierunkach: upewnij się, że wysokość i szerokość są „rozprzęgnięte”. (Ogniwa łańcucha w oknie dialogowym Scale powinny być przerwane). Następnie w polu Height lub Width wpisz nowy rozmiar obiektu.

Transformację zatwierdzamy naciskając przycisk Scale.

Jeżeli przekształcaliśmy tylko wybrany obszar, a nie całą warstwę — po zakończeniu skalowania należy dodatkowo wywołać polecenie Layer→Anchor Layer. To „zatwierdzi” rezultat operacji.

5.26  Identyfikacja wartości RGB z obrazu wyświetlanego na ekranie

Czasami może zajść potrzeba identyfikacji wartości komponentów R, G, B (więcej na temat tych komponentów — str. 575) jakiejś barwy, widocznej na ekranie. Na przykład — jeden z serwerów wzorów barw, http://colorserver.net, pokazuje tylko obrazy próbek koloru. Liczbowe wartości RGB nie są tam nigdzie podane (Rysunek 5.26.1):

Rysunek 5.26.1 Próbka koloru, wyświetlanego przez colorserver.net.

Aby skopiować zawartość jakiegoś innego okna, uruchom GIMP i z menu File wywołaj polecenie FIle→Create→Screen Shot (Rysunek 5.26.2):

Rysunek 5.26.2 GIMP — uruchomienie kopiowania z zawartości wybranego okna.

W oknie WinSnap naciśnij przycisk Grab. Potem wskaż za pomocą „krzyżyka” z Select Window okno do skopiowania. Po chwili kopia wskazanego fragmentu ekranu zostanie umieszczona w oknie Gimpa.

W GIMP wybierz narzędzie Color Picker (O, albo Tools→Color Picker). Kliknij nim (LPM) w obszar, którego barwę chcesz poznać (Rysunek 5.26.3):

Rysunek 5.26.3 GIMP — pobieranie barwy z obrazu

Color Picker zmienia kolor pierwszoplanowy (Foreground Color) na kolor piksela, wskazanego na obrazie. Teraz wystarczy otworzyć okno edycji tej barwy, by odczytać jego właściwości (Rysunek 5.26.4):

Rysunek 5.26.4 GIMP — odczytanie wartości R,G,B pobranego z próbek koloru

W oknie Change Foreground Color można odczytać wartości komponentów barwy z pól R, G, B. Są podane jako liczby całkowite z zakresu 0..255. W polu HTML notation te same liczby, ale w postaci heksadecymalnej (szesnastkowej), są „sklejone” w jeden symbol.

5.27  Definiowanie nowego pędzla

Rysunek 5.27.1 Przybornik Brushes — zestaw pędzli różnego rozmiaru i kształtu

Czasami możesz stwierdzić, że potrzebujesz pędzla o innym kształcie, niż te, które są dostępne w przyborniku Brushes (Rysunek 5.27.1).

Nic prostszego — w istocie tworzenie nowego wzoru pędzla w Gimpie nie różni się specjalnie od stworzenia nowego rysunku.

W tej sekcji utworzymy nowy pędzel o kształcie podłużnej plamy. Taki pędzel bardzo się przydaje do malowania przetarć farby na poszyciu samolotu.

Zacznij od stworzenia nowego rysunku (File→New). Nadaj mu jakiś niewielki rozmiar, a w ustawieniach zaawansowanych zmień typ przestrzeni barw (Color space) z RGBColor na Grayscale (Rysunek 5.27.2):

Rysunek 5.27.2 Tworzenie nowego obrazu — wzoru pędzla

Rysunek 5.27.3 Obraz nowego pędzla

Powinieneś zacząć od obrazu zupełnie wypełnionego bielą.

Jeżeli obraz jest trybie Grayscale, GIMP traktuje kolor biały w pędzlu jako przeźroczysty, a czarny — jako zupełnie nieprzeźroczysty.

Gdy już znasz zasadę, nic prostszego jak namalować odpowiedni kształt. Powiększ obraz do jakiegoś znaczącego rozmiaru (300-400%). W tym przypadku za pomocą innych pędzli (Bristles, Grass, Oils, Acrylic) stworzyłem nowy obraz plamy, biegnącej wzdłuż przekątnej obrazu (Rysunek 5.27.3). Na przemian to domalowywałem jej fragment, a potem usuwałem granice gumką o podobnie nieregularnym kształcie.

Gdy już narysujesz pędzel, sprawdź, do którego folderu należy go zapisać. GIMP podczas uruchamiania przeszukuje kilka folderów w poszukiwaniu plików z definicjami pędzli. Otwórz okno preferencji (Edit→Preferences) , aby sprawdzić (w Folders:Brushes) , jakie to są katalogi (Rysunek 5.27.4):

Rysunek 5.27.4 Foldery, w których są wyszukiwane pędzle

Gdy wiesz już, do jakiego folderu trzeba zapisać plik, nie pozostaje nic innego, jak to zrobić. Wywołaj polecenie File→Export As (Rysunek 5.27.5):

Rysunek 5.27.5 Zapisywanie obrazu jako definicji pędzla GIMP (plik *.gbr)

Wskaż odpowiedni folder i nadaj plikowi nazwę — koniecznie z rozszerzeniem *.gbr („gimp brush”). Gdy naciśniesz przycisk Save, pojawi się dodatkowe okno Save a Brush (Rysunek 5.27.5). W polu Description wpisz nazwę pędzla — taką, pod jaką ma figurować w zakładce Brushes.

Potem wystarczy odświeżyć zakładkę Brushes poleceniem Refresh Brushes (z jej menu kontekstowego — por. Rysunek 5.27.6):

Rysunek 5.27.6 Odświeżenie zawartości palety pędzli

Aby usunąć jakiś pędzel, zaznacz go i wywołaj z jego menu kontekstowego polecenie Delete Brush. (To polecenie jest niedostępne dla pędzli standardowych).

5.28  Definiowanie skrótów zmieniających parametry narzędzia

W trakcie prac nad teksturami samolotu trzeba namalować dużo zabrudzeń, zadrapań, i innych tego rodzaju efektów. Do uzyskania takich plam GIMP oferuje cały zestaw „pędzli” o nieregularnych kształtach. Jednak sam kształt narzędzia to nie wszystko: oko ludzkie szybko rozróżnia wystąpienia podobnych kształtów. Dlatego wielką pomocą podczas rysowania takich zabrudzeń jak to które pokazuje Rysunek 5.28.1a) jest możliwość obracania i zmiany rozmiaru pędzla (Rysunek 5.28.1b):

Rysunek 5.28.1 Przykładowe pasmo „zabrudzeń” i parametry pędzla, zmieniane podczas malowania tego efektu

Najczęściej trzeba zmieniać kąt pędzla — tak, aby dwa podobne kształty nie wystąpiły obok siebie. Nieco rzadziej zmieniamy rozmiar, a w ostatniej kolejności — kształt narzędzia.

Dużą pomocą w rysowaniu takich tekstur byłaby możliwość obrotu oraz powiększania i pomniejszania pędzla bez konieczności ciągłego klikania w kontrolki w panelu jego opcji. Domyślnie GIMP nie ma takich skrótów, ale na szczęście możemy je dopisać sami. Zaczynamy od otwarcia okna preferencji programu (Edit→Preferences). Przejdź tam do sekcji Input Devices:Input Controllers i kliknij w Active Controllers:Main Mouse Wheel (Rysunek 5.28.2):

Rysunek 5.28.2 Przejście do akcji przypisanych do kółka myszki

Spowoduje to otwarcie okna Configure Input Controller w którym widzisz na liście wszystkie czynności (w slangu programistów to „zdarzenia” — ang. event) związane z kółkie myszki. Możesz do nich przypisać jakieś polecenie GIMP (Rysunek 5.28.3):

Rysunek 5.28.3 Przypisanie akcji do obrotu kółka mszyki

Rysunek 5.28.4 Zmodyfikowana lista poleceń kółka myszki

Obrót narzędzia (polecenia Increase Brush Angle / Decrease Brush Angle) proponuję przypisać do obrotu kółka myszki (zdarzenia Scroll Up / Scroll Down). Aby za dużo nie kręcić tym kółkiem, zdecydowałem się przypisać do tego zdarzenia bardziej „zgrubną” wersję poleceń GIMP (tą z końcówką *More).

Podobnie zgrubną zmianę rozmiaru narzędzia (polecenia Increase Brush Size More / Decrease Brush Size More) przypisałem do obrotu myszki przy wciśniętym klawiszu Shift (zdarzenia Scroll Up (Shift) / Scroll Down (Shift)). Po tych modyfikacjach lista zdarzeń kółka myszki powinna wyglądać tak, jak to pokazuje Rysunek 5.28.4.

Potem pozamykaj wszystkie otwarte okna preferencji, naciskając odpowiednie przyciski Close i OK. (GIMP automatycznie zapisuje zmiany dokonane w konfiguracji programu gdy zamkniesz jego okno). Od tego momentu nowe skróty są już dostępne podczas malowania.

Dzięki nowym skrótom malowanie stało się bardziej dynamiczne, bo nie musisz co chwila wracać do panelu Tool Options. Z palety z prawej strony możesz wybrać różne kształty pędzli. Rozmiar narzędzia zmieniasz trzymając obracając KM z klawiszem Shift wciśniętym na klawiaturze (Rysunek 5.28.5):

Rysunek 5.28.5 Szybkie zmniejszenie lub powiększenie pędzla

Gdy wciśniesz Shift, GIMP łączy linią pomocniczą obecne położenie kursora z ostatnio narysowanym miejscem (Rysunek 5.28.5 — gdybyś teraz nacisnął LPM, narysowałby linię prostą). Jednak nie ma co się tym przejmować: obrót KM w tej kombinacji poprawnie zmienia rozmiar narzędzia.

Obrót samego KM, bez żadnych dodatkowych klawiszy, powoduje obrót pędzla (Rysunek 5.28.6):

Rysunek 5.28.6 Szybki obrót pędzla

5.29  Rozmycie metodą Gaussa

Jeżeli w GIMP jakiś obszar jest wybrany (selekcją) — transformacja będzie dotyczyć tylko tego obszaru. Jeżeli jednak nic nie jest wybrane, zmianie ulega cała zawartość aktualnej warstwy.

Rozmycie zademonstruję na przykładzie ostrego, biało-czarnego rysunku. Wywołaj polecenie Filters→Blur→Gaussian Blur... (Rysunek 5.29.1):

Rysunek 5.29.1 Menu efektów rozmycia (Blur)

W oknie dialogowym, które się pojawi, ustaw odpowiedni Blur Radius (Rysunek 5.29.2). Im większy promień ustawisz, tym intensywniejsze będzie rozmycie. Ma to także wpływ na czas przeliczania całego obrazu (większe promienie zabierają procesorowi więcej czasu).

Rysunek 5.29.2 Okno polecenia Gaussian Blur i jego efekt

5.30  Nanoszenie śladów dymu i innych zabrudzeń

Za pomocą Inkscape można wygenerować mapę „podstawowych zabrudzeń”, biegnących wzdłuż krawędzi paneli poszycia samolotu (por. str. 151). W tej sekcji pokażę, jak szybko wzbogacić ten obraz o inne, mniej regularne efekty — losowe zabrudzenia i ślady spalin.

Aby wygodnie nanosić te elementy w GIMP, wczytaj na oddzielną warstwę (File→Open as Layers) obraz uzyskany z Inkscape (w tym przykładzie nazywa się Shadows.png) (Rysunek 5.30.1):

Rysunek 5.30.1 Układ warstw w GIMP

Ponad warstwą Shadows.png umieść nową, przejrzystą (Transparent) warstwę o nazwie Smoke. To na niej będziemy rysować. Wybierz z palety odpowiednie narzędzie: — aerator (A).

Rysunek 5.30.2 Pędzel do malowania dymu i jego ustawienia

Dobierz odpowiedni pędzel (z zakładki Brushes) — ten o nazwie Harndess 0.25 (Rysunek 5.30.2a).

Potem przejdź do zakładki narzędzia i ustaw jego parametry mniej więcej tak, jak to pokazuje Rysunek 5.30.2b):

- Size — nie za duża: 30.0;

- Rate — umiarkowane 20.0;

Jeżeli chcesz nakładać efekt stopniowo i powoli, możesz dodatkowo zmniejszyć wartość Opacity ze 100 do, powiedzmy, 50 (Rysunek 5.30.2b).

Aby w trakcie rysowania płynnie zmieniać rozmiar pędzla, przypisz mu skrót Shift-KM (por. str. 258).

Ślady brudu i spalin możesz mieć już naniesione w Blenderze (w trybie Texture Paint — por. str. 548)[1]. W Gimpie możesz je poddać drobnym poprawkom. Jeżeli jednak narzędzia malarskie Blendera wydają Ci się zbyt toporne, możesz namalować dym od podstaw w Gimpie (Rysunek 5.30.3):

Rysunek 5.30.3 Korygowanie śladu spalin za rurami wydechowymi silnika

Aby uzyskać inny efekt: zacieków — zmień narzędzie na zwykły pędzel (Paintbrush — P). Wybierz „twardszą końcówkę” (Hardness 075) i zmniejsz je rozmiar do kropki (Size = 4.0). Użyj jej by nanieść ciemne punkty tam, skąd mają się zaczynać zacieki (Rysunek 5.30.4):

Rysunek 5.30.4 Zacieki: naniesienie punktów początkowych

Potem przełącz się na „rozmazywanie” (Smudge — S) : . Zwiększ rozmiar narzędzia (do Size = 10) i zacznij rozmazywać narysowane przed chwilą kropki zgodnie z kierunkiem opływu powietrza (Rysunek 5.30.5):

Rysunek 5.30.5 Zacieki: rozmazywanie (Smudge)

„Ogólne” plamy, o kształcie nie związanym z kierunkiem opływu, uzyskasz w ten sam sposób, tylko rozmazując je we równomiernie we wszystkie strony (Rysunek 5.30.6):

Rysunek 5.30.6 Zwykłe plamy: kropki rozmazywane (Smudge) w różne strony

Ciekawy efekt w plamieniu można uzyskać, przełączając narzędzie na gumkę (Eraser — Shift-E) i zmieniając kształt pędzla na jakąś złożoną, bezkształtną plamę — np. Galaxy (Rysunek 5.30.7):

Rysunek 5.30.7 Nanoszenie kontrastów na plamach poprzez usuwanie (Erase) ich części

Jeżeli używasz warstwy Smoke scalonej z obrazem spalin uzyskanym z Blendera (ref_dirt.png, por. str. 154), zamiast narzędzia Erase użyj tego samego pędzla, ale malującego w kolorze białym. (Obraz uzyskany z Blendera ma białe, nieprzejrzyste tło i Erase tworzy w nim „dziury”).

Rysunek 5.30.8 Typowe zmiany ustawień gumki podczas korygowania plam

Czasami dobry efekt daje także wykonanie „drugiego przebiegu” narzędziem o zmodyfikowanych parametrach. W przypadku gumki można np. zmniejszyć jej intensywność (Opacity) , albo włączyć ostre granice efektu (Hard edge) (Rysunek 5.30.8).

Aby płynnie obracać podczas malowania tak nieregularnym kształtem jak Galaxy, zdefiniuj dodatkowy skrót. Przypisz obrót narzędzia obrotowi KM (por. str. 258).

[1] (str. 263) W takim przypadku wczytaj obraz z Blendera jako kolejną warstwę GIMP, pomiędzy Smoke i Shadows.png. W związku z tym, że obraz z Blendera ma białe tło, przełącz jego tryb wyświetlania (Mode) na Multiply, aby nadal widzieć zawartość warstwy Shadows.png. Docelowo możesz scalić warstwę Smoke i tę dodatkową warstwę poleceniem Layers→Merge Down.

5.31  Nanoszenie przetarć i odprysków farby

Każda maszyna od chwili rozpoczęcia eksploatacji, zaczyna „obrastać” w ślady zużycia. W przypadku samolotu są to, między innymi, odpryski i przetarcia farby. Właściwie naniesione, znacznie poprawiają realizm modelu. Każdy typ samolotu ma charakterystyczny układ takich śladów. Nim zaczniesz te skazy malować, warto najpierw przejrzeć zdjęcia, aby określić ich położenie, rozmiar i rodzaj. W czasie malowania uważaj, by nie ulec pokusie i nie pokrywać rysami całej powierzchni maszyny. W normalnej sytuacji obsługa naziemna nie próżnowała, i na bieżąco zamalowywała spostrzeżone uszkodzenia. Obszarem, z którym nie była w stanie sobie na dłuższą metę poradzić, jest w dolnopłatach górne poszycie skrzydła, przy kabinie. Mimo odpowiednich „dywaników”, widocznych na wielu zdjęciach, to miejsce zawsze było porysowane butami pilotów i mechaników. Każde zamalowanie w tym obszarze szybko znikało. W tej sekcji pokażę, jak można uzyskać efekt zużycia powłok samolotu właśnie na przykładzie tego fragmentu.

Do pracy bardzo się nam przyda obraz linii nitów i krawędzi paneli poszycia (np. wyeksportowany z wektorowego pliku Inkscape). Wczytaj go na odpowiednią warstwę referencyjną: UV-Lines.png (Rysunek 5.31.1):

Rysunek 5.31.1 Wstawienie warstw: podstawowej i referencyjnej

Wstaw do rysunku także nową warstwę Color-Chips, na którą naniesiemy obraz rys na powierzchni. Następnie zmień aktualny kolor na biały, i za pomocą „ołówka” (N, Tools→Paint Tools→Pencil) oraz pędzelka o nazwie Bristles 02, zacznij rysować na warstwie Color-Chips obszar złuszczonej farby (Rysunek 5.31.2):

Rysunek 5.31.2 Wybór narzędzia i rysowanie

Podczas rysowania za pomocą tak nieregularnego kształtu warto co chwila obracać pędzel. Można także nieznacznie zmieniać jego rozmiar. Aby te operacjie nie przerywały malowania, przypisz obrot narzędzia do obrotu KM, a zmianę rozmiaru — do kombinacji Shift-KM (por. str. 258).

Możeż też przygotować do takich operacji swoje własne pędzle. Ja np. stworzyłem pędzel o nazwie Jitter specjalnie do rysowania tego rodzaju efektów. Plik z jego definicją znajdziesz w folderze source\gimp\brushes (por. str. 20) pod nazwą jitter.gbr. Aby stał się widoczny w zakładce Brushes, wgraj go do jednego z folderów ustalonych w konfiguracji Gimpa (zob. str. 256, Rysunek 5.27.4)[1].

Nadal używając pędzla Bristles, przełącz się na usuwanie barwy za pomocą „gumki” (Eraser). Włącz w zakładce właściwości tego narzędzia opcję Hard edge (Rysunek 5.31.3a), i pousuwaj część obszarów odprysków, redukując je do właściwego kształtu. Postaraj się, aby „plamy” białego koloru miały jak najbardziej realistyczny (a jednocześnie — chaotyczny) kształt. To dobra okazja, by uwolnić w sobie uśpionego impresjonistę ☺. Postaraj się uwzględnić mniej przetartą powierzchnię w drobnych zagłębieniach — na przykład wokół śrub (Rysunek 5.31.3b):

Rysunek 5.31.3 Ustawienie „gumki” i usuwanie naddatków

Rysunek 5.31.4 pokazuje narysowaną na warstwie Color-Chips białą plamę, która na modelu wygląda jak złuszczenie farby:

Rysunek 5.31.4 Przykład efektu łuszczącej się farby

Zwróć uwagę, że każda ze stron tego fragmentu na obrazie tekstury jest malowana osobno: część na rozwinięciu kadłuba (Rysunek 5.31.4a), a część — na rozwinięciu płata (Rysunek 5.31.4b). Mimo pozorów, niespecjalnie starałem się te dwie plamy „zsynchronizować”. Złożenie wyszło „samo” (Rysunek 5.31.4c) — wydaje mi się, że całkiem dobrze.

Odchodząca całym płatami farba świadczy o kiepskich składnikach, użytych do jej produkcji, i/lub problemach z obsługą naziemną[2]. Powłoki nanoszone bezpośrednio w zakładach Curtissa były dobrej jakości. Przejrzałem wiele zdjęć, ale nawet na szkolnych P-40, używanych intensywnie przez kilka ładnych lat, nie znalazłem śladu łuszczącej się farby. Co najwyżej — przetarte „do gołej blachy” pokrycie tam, gdzie wszyscy chodzili: na krawędzi kadłuba i skrzydeł.

Malowanie przetarcia zacznij od przygotowania odpowiedniej maski, poprzez którą będziemy nanosić barwę. Najłatwiej jest ją narysować w trybie Quick Mask (Shift—Q, szczegóły — str. 243) (Rysunek 5.31.5b):

Rysunek 5.31.5 Efekt przetarcia — przygotowanie maski (tryb Quick Mask)

Z maski usuń za pomocą „gumki” (Eraser) kolor z tych obszarów, które mają być poprzecierane. Stosuj tu w dużym stopniu obszary półprzeźroczyste — aby przetarcia płynnie zanikały w otoczeniu. Aby to osiągnąć, zmniejsz nieprzejrzystość (Opacity) „gumki” do 50%. Do usuwania stosuj pędzelek o rozmytych brzegach (Hardness 050— Rysunek 5.31.5a).

Teraz wyłącz Quick Mask i zacznij malować białe linie zarysowań powłoki. Użyj do tego zwykłego narzędzia Paintbrush i jednego z dołączonych do tej książki pędzli (source\gimp\brushes\lines.gbr) (Rysunek 5.31.6):

Rysunek 5.31.6 Efekt przetarcia — nanoszenie linii „zadrapań”

Aby znaleźć pokazywane przez Rysunek 5.31.6a) pędzle Lines-00, musisz przenieść pliki source\gimp\brushes\*.gbr do jednego z folderów, figurujących w konfiguracji GIMP (zob. str. 256). Alternatywnie — możesz dopisać w ustawieniach GIMP ten folder jako jeden z katalogów z definicjami pędzli.

Podczas malowania za pomocą końcówki Lines-00 unikaj nakładania równoległych linii blisko siebie. Umieść kolejne „przyłożenia” narzędzia w takiej odległości, by widać było pojedyncze kreski (Rysunek 5.31.6b).

Aby uczynić układ rys na powierzchni bardziej chaotycznym, zmień teraz kształt końcówki na pędzel Scratches (Rysunek 5.31.7a):

Rysunek 5.31.7 Efekt przetarcia — nanoszenie innych skaz powierzchni

Wzór tego pędzla — plik scratches.gbr — jest w tym samym folderze, co pozostałe wzory dołączone do tej książki (source\gimp\brushes). To relatywnie duża końcówka (Rysunek 5.31.7b). Nie przejmuj się jednak tak bardzo jej rozmiarem. Zaznaczony obszar rysowania skutecznie ograniczy jej zasięg. Tak samo jak linie, nanieś jej obrazy kolejnymi „kliknięciami” tak, by nie nakładały się na siebie.

Na koniec można trochę ograniczyć różne naddatki plam, które w nieunikniony sposób pojawiły się podczas malowania. To ten sam finalny krok, co w przypadku odprysków farby. Zmień z powrotem narzędzie na „gumkę” (Eraser). Tym razem wymazywanie ma działać z pełną ostrością, więc zwiększ Opacity narzędzia Eraser do 100%, i włącz opcję Hard edge (Rysunek 5.31.8a):

Rysunek 5.31.8 Efekt przetarcia — usuwanie naddatków

Wyłącz ograniczenie do zaznaczonego obszaru (Select→None). Wybierz pędzel Jitter. Używając „gumki” tego kształtu, postaraj się zmienić granice wytartych obszarów na mniej regularne (Rysunek 5.31.8b).

Wyeksportuj tak zmodyfikowany obraz barw do pliku color.png. Ten plik wykorzystujemy w Blenderze, w materiale poszycia samolotu (B.Skin.Camouflage — Rysunek 5.31.9, por. także str. 160 i następne):

Rysunek 5.31.9 Użycie obrazu color.png w Blenderze (fragment schematu materiału B.Skin.Camouflage)

Rysunek 5.31.10 pokazuje, jak nasze przetarcia prezentują się w różnych ujęciach modelu:

Rysunek 5.31.10 Przetarcia na modelu (pełna intensywność)

Mówiąc szczerze, efekt jest na tyle intensywny, że reszta powierzchni wydaje się wręcz wołać o podobne „przetarcie”! To oznaczałoby dużo pracy. Na szczęście, obsługa naziemna zazwyczaj stawała na wysokości zadania a samoloty podczas wojny rzadko kiedy mają się okazję aż tak zestarzeć.

Zmniejsz w GIMP nieprzejrzystość warstwy Color-Chips do ok. 50% (Rysunek 5.31.11a). Rysunek 5.31.11b) pokazuje, jak „zbladły” w wyniku tej zmiany rysy na górnej powierzchni płata. Gdy wyeksportujesz ten obraz do pliku dla Blendera, uzyskamy na modelu właściwe, „umiarkowane” przetarcia (Rysunek 5.31.11c):

Rysunek 5.31.11 Efekt przetarcia — zmniejszenie intensywności

Choć powierzchnie P-40 były traktowane „z należytym szacunkiem”, pokażę jeszcze, jak uzyskać drobne rysy wzdłuż krawędzi paneli silnika. Rysuje się je prościej niż „szerokie” przetarcia, takie jak u nasady skrzydła.

Zmień aktualny kolor na biały, narzędzie — na Paintbrush, i zmniejsz rozmiar pędzla do niewielkiej kropki. Użyj jej do pociągnięcia cienkiej białej linii wzdłuż krawędzi, które mają być porysowane (Rysunek 5.31.12):

Rysunek 5.31.12 Zużyte krawędzie — naniesienie linii bazowej

Następnie zmień pędzel na Jitter, i dodaj po „pacnięciu” w okolicach każdej śruby (Rysunek 5.31.13a). Potem ogranicz te „pacnięcia” i poprzerywaj białą linię za pomocą „gumki” (pędzel bez zmian: Jitter), z włączoną opcją Hard Edge (Rysunek 5.31.13b):

Rysunek 5.31.13 Zużyte krawędzie — malowanie i wycieranie

Na koniec jeszcze namaluj najdrobniejszym pędzlem, gdzieś na środku każdego panelu, parę chaotycznych kropek — aby nie było tam „za czysto” (Rysunek 5.31.14a):

Rysunek 5.31.14 Zużyte krawędzie — ostatnie dodatki i efekt finalny

Rysunek 5.31.14b) przedstawia ostateczny efekt na modelu (po zmniejszeniu nieprzejrzystości warstwy Color-Chips do 50%). Uzyskaliśmy dyskretne rysy, podkreślające nieco krawędzie okapotowania silnika (na modelu wyszły nam zbyt dokładnie dopasowane, więc staram się je w ten sposób dodatkowo wyróżnić).

Rysy na poszyciu warto malować jako bardzo wyraźne — tak, jak na jakimś „starym gracie”. Potem zawsze możesz je stonować, adekwatnie do stopnia zużycia odwzorowywanego egzemplarza samolotu. Wystarczy zmniejszyć nieprzejrzystość (Opacity) warstwy Color-Chips.

Wnętrze kabiny P-40 było pomalowane wyłącznie farbą podkładową (Curtiss Green). Zakładam, że łatwiej się przecierała niż powłoka powierzchni zewnętrznych. Dlatego na teksturze barwy materiału wnętrza kabiny (B.Skin.Cockpit — por. Tom IV) namalowałem duże, białe przetarcia. Detale kabiny oglądamy z bliska, więc podczas wypełniania szczegółami tego obszaru szybko zacząłem dostrzegać że takie białe plamy w zbliżeniach nie wyglądają dobrze. Weźmy za przykład taki fotel pilota (Rysunek 5.31.15):

Rysunek 5.31.15 Duże przetarcia w zbliżeniach

Rysunek 5.31.15a) przedstawia widok ogólny. Siedzenie fotelu powinno być przetarte „do gołego metalu”, stąd umieściłem w tym miejscu biały obszar (Rysunek 5.31.15c). Niestety, to nie wygląda jak przetarcie, a jak zwykła, biała plama. Szczególnie to przeszkadza w zbliżeniach (Rysunek 5.31.15b).

Trzeba było coś z tym zrobić. Przetarcia są najjaśniejszym elementem tekstury barwy, stąd spróbowałem użyć jej jak maski sterującej połączeniem z prostym shaderem metalu (odpowiednio ustawiony Gloss Paint). Wykorzystałem tu funkcję Greater Than, aby uzyskać ostre granice materiałów (Rysunek 5.31.16):

Rysunek 5.31.16 Zmodyfikowany materiał fotela (B.Skin.Cockpit)

Rezultat takiej modyfikacji wygląda bardzo ciekawie. Biała plama na siedzeniu zmieniła się w metaliczną powierzchnię (Rysunek 5.31.17a). Gdy obejrzysz z bliska granice tego obszaru, zauważysz że dotychczasowe białe plamy teraz mają ostre krawędzie i wyglądają jak odpryski farby (Rysunek 5.31.17b). Widać to nawet w zbliżeniach (Rysunek 5.31.17c).

Rysunek 5.31.17 Fotel po modyfikacji materiału

Ten rezultat był na tyle zachęcający, że spróbowałem wprowadzić taką samą zmianę do materiału poszycia samolotu (B.Skin.Camouflage — Rysunek 5.31.18):

Rysunek 5.31.18 Dodanie do materiału poszycia (B.Skin.Camouflage) efektu „przetarć metalu”

Po tej modyfikacji wyraźniejsze stały się śruby na okapotowaniu silnika (Rysunek 5.31.19a). W zbliżeniach ciekawe efekty daje większa połyskliwość obszarów przetarć (Rysunek 5.31.19b):

Rysunek 5.31.19 Materiał B.Skin.Camouflage po modyfikacji

Jeżeli producent samolotu używał jakiejś kontrastowej farby podkładowej (w wielu samolotach z USA była to jasna, żółtozielona Zinc Chromate), możesz spróbować ją odwzorować, tworząc wokół przetarć „otoczkę” w barwie podkładu. To może podnieść realizm rys na powierzchni. W przypadku modelu P-40 kolorem farby podkładowej był Curtiss Green, ten sam który wykorzystywaliśmy w materiale powierzchni wewnętrznych (B.Skin.Inner). Stworzyliśmy nawet specjalną grupę — shader X.Curtiss Green, ułatwiający powtórzenie tej barwy w wielu schematach (por. str. 189). Teraz zastosujemy ją do ulepszenia efektu przetarcia. Wstaw do materiału B.Skin.Camouflage kolejny zespół z tym shaderem i węzłami Greater Than i Mix Shader (Rysunek 5.31.20). Węzeł Mix Shader efektu farby podkładowej podłącz przed węzłem Mix Shader efektu „przetarć do metalu”:

Rysunek 5.31.20 Dodanie do materiału poszycia efektu „farb podkładowej”

W efekcie wokół przetarć „do gołego metalu” pojawiły się zielonkawe obwódki. Widać je już z większych odległości (Rysunek 5.31.21a). Poprawiły także efekt przetarć w zbliżeniach (Rysunek 5.31.19b):

Rysunek 5.31.21 Materiał B.Skin.Camouflage po kolejnej modyfikacji

Opisane powyżej rozwiązanie wykorzystujące intensywność tekstury barw do łączenia shaderów opracowałem dość późno, podczas modelowania kabiny. Dlatego materiały, które je wykorzystują, znajdziesz dopiero w pliku model\p40\history\P40B-8.06.blend (por. str. 20).

Rysowanie przetarć, zadrapań i zabrudzeń to zajęcie, w pewnym sensie, artystyczne. Często dwa zupełnie różne (i wykonane różnymi technikami) obrazy tekstur znajdują jednakowo wysokie uznanie wśród widzów. Pod żadnym pozorem nie należy traktować metod, które przedstawiłem w tej sekcji, jako ostatecznych. Pokazałem tu kilka rzemieślniczych „sposobów”, jak osiągnąć efekt na — bądźmy szczerzy — średnim poziomie. (To znaczy na poziomie, który przynajmniej nie razi widza). Na pewno można to zrobić lepiej lub inaczej. Jestem pewien, że z czasem dopracujesz się swojego własnego stylu.

[1] (str. 267) W istocie pędzel Jitter to raptem kilkanaście ostrych, czarnych kropek. Jeżeli chcesz przygotować swój własny pędzel — patrz str. 255.

[2] (str. 268) Dużo „złuszczeń” widać na zdjęciach samolotów japońskich, operujących w trudnym, gorącym klimacie południowej Azjii i wysp Pacyfiku. Innym przypadkiem takiego „obłażenia” były francuskie Hawk 75 pod koniec maja i w czerwcu 1940r. (Curtiss dostarczał je w barwie naturalnego duralu. Kamuflaż był nanoszony już po odbiorze, w warsztatach francuskich)

Rozdział 6.  Inkscape — szczegóły obsługi

Na Inkscape natknąłem się przypadkiem. GIMP miał tylko marginalne możliwości rysowania linii wektorowych. A ja szukałem więc czegoś, w czym można by było wygodnie rysować (i poprawiać) linie nitów i łączenia blach. Gdy jednak wertowałem jego plik podpowiedzi, szukając szczegółów tej funkcji, natknąłem się na zdanie:

„Rysowanie linii w GIMP nie jest tak wygodne, jak w wyspecjalizowanych programach, np. Inkscape”.

Co to jest to „Inkscape”? Wystarczyło wpisać to hasło w Google, by znaleźć stronę tego projektu. Jest to najmłodszy z programów, używanych w tej książce. Nie osiągnął jeszcze “pełnoletniości” (aktualne wersje mają nadal numer poniżej 1.00). W związku z tym potrafi czasami się zawiesić, lub zakończyć się nagle z jakimś krytycznym błędem. Na szczęście nie dzieje się to zbyt często. W każdym razie nie zapominaj o częstym zapisywaniu swojej pracy do pliku!

6.1  Instalacja

Pobierz (z http://inkscape.org/en/download/ ) i uruchom program instalacyjny. Na początku pojawia się ekran “powitalny”, a następnie ekran z umową licencyjną (Rysunek 6.1.1):

Rysunek 6.1.1 Instalacja GIMP — pierwsze dwa ekrany

Po naciśnięciu przycisku Next > na ekranie License Agreement, przejdziemy do ekranu Choose Components (Rysunek 6.1.2):

Rysunek 6.1.2 Wybór opcji instalacji

Warto dopilnować, aby na ekranie Choose Components. wyłączyć z komponentów wszelkie tłumaczenia poza angielskim (obowiązkowe) i polskim. Na ekranie Choose Install Location można zmienić domyślny folder programu.

Po naciśnięciu przycisku Install wykonuje się instalacja (Rysunek 6.1.3):

Rysunek 6.1.3 Instalacja Inkscape - ekrany: postępu i finalny

Kiedy otworzysz po raz pierwszy Inkscape, program może być w języku polskim (choć nie zawsze — wydaje mi się że to zależy od wersji Windows, której używasz). Proponuję przełączyć się na język angielski (z tych samych przyczyn, dla których sugeruję używać języka angielskiego w GIMP — por. str. 211). Zacznij od otwarcia okna ustawień programu (Plik→Ustawienia Inkscape’a — Rysunek 6.1.4):

Rysunek 6.1.4 Inkscape: przejście do ustawień programu

W oknie ustawień wybierz sekcję Interfejs. W niektórych Windows język angielski może figurować jako język Domyślny systemu (Rysunek 6.1.5) w innych znajdziesz go jako angielski (w kilku odmianach: amerykańskiej, kanadyjskiej, brytyjskiej):

Rysunek 6.1.5 Inkscape — zmiana języka programu

Przełącz język na angielski (lub, jeżeli nie możesz znaleźć takiej pozycji na liście — na Domyślny systemu). W oknie Ustawienia Inkscape’a nie ma żadnego przycisku „OK”. Wystarczy że zamkniesz Inkscape i uruchomisz go powtórnie.

Po powtórnym uruchomieniu program wyświetla wszelkie opisy w języku angielskim (Rysunek 6.1.6):

Rysunek 6.1.6 Okno Inkscape (wygląd zaraz po instalacji)

Nie wiem dlaczego, ale domyślny układ ekranu Inkscape po instalacji wcale nie jest „domyślny”! Pasek z poleceniami systemowymi jest umieszczony po prawej (Rysunek 6.1.6), zamiast — w sposób typowy dla Windows — u góry okna, pod menu rozwijalnym. Tych pasków narzędzi nie można przesuwać myszką. Zmień ich układ wybierając opcję View→Default (Rysunek 6.1.7):

Rysunek 6.1.7 Przeniesienie przybornika z poleceniami systemowymi pod nagłówek okna

Wreszcie ostatni szczegół: wersja 64-bitowa z partha.com (por. opis instalacji Inkscape w Tomie I) ma interfejs utrzymany w ciemniejszych barwach niż w standardowym oknie Inkscape (Rysunek 6.1.8):

Rysunek 6.1.8 Okno 64-bitowego Inkscape (z partha.com )

W wersji 0.48 nie można jeszcze zmieniać barw programu w oknie preferencji. Aby sobie z tym problemem poradzić, musimy użyć metody nieco hakerskiej. Zacznij od pobrania z http://inkscape.org/en/download/ plików oficjalnej wersji 32-bitowej, spakowanej w formacie 7z (Rysunek 6.1.9):

Rysunek 6.1.9 Pobranie oficjalnej (32-bitowej) wersji Inkscape w postaci spakowanego folderu

Format *.7z to alternatywa popularnego formatu *.zip. Jeżeli do tej pory nigdy jeszcze takich plików nie rozpakowywałeś, pobierz ze strony http://7-zip.org/ i zainstaluj program Open Source o tej samej nazwie.

Gdy zajrzysz do wnętrza pliku pobranego ze strony Inkscape, przekonasz się że zawiera pojedynczy folder o nazwie inkscape (Rysunek 6.1.10):

Rysunek 6.1.10 Zawartość pliku *.7z, pobranego z portalu Inkscape (okno programu 7-zip)

Gdybyś chciał używać wersji 32-bitowej, mógłbyś po prostu rozpakować ten folder gdziekolwiek na swój dysk twardy i uruchomić umieszczony w środku plik inkscape.exe.

My jednak chcemy używać zainstalowanej wersji 64-bitowej, dlatego wykorzystamy tylko niektóre podkatalogi folderu inkscape z pliku 7z.

Na ilustracji poniżej pliki 64-bitowego Inkscape znajdują się w folderze C:\Program Files\Inkscape-0.48\. Zacznij od zmiany nazwy podkatalogu etc\ na etc.org\ [1] (Rysunek 6.1.11):

Rysunek 6.1.11 Podmiana podkatalogu etc\ na nowy, pobrany z pliku *.7z.

Następnie skopiuj do folderu Inkscape katalog etc\ z pliku 7z (Rysunek 6.1.11). Najprościej to zrobić przeciągając ten folder z okna 7-zip do folderu Inkscape w oknie Eksploratora Windows.

Następnie przejdź w obydwu oknach do podkatalogów o nazwie share\ (w oknie Inkscape to Inkscape-0.48\share, w pliku 7z to inkscape\share — por. Rysunek 6.1.12):

Rysunek 6.1.12 Skopiowanie folderu themes z pliku 7z do katalogu share\

Skopiuj z pliku 7z do katalogu share folder o nazwie themes (Rysunek 6.1.12). Po tych zmianach, gdy powtórnie wywołasz 64-bitowy Inkscape, okno będzie maiło jaśniejszy odcień, i nie będzie problemu z widocznością jakichkolwiek ikon (Rysunek 6.1.13):

Rysunek 6.1.13 Poprawione barwy okna 64-bitowej wersji Inkscape

[1] (str. 280) Robimy to po to, aby w razie czego odtworzyć oryginalny stan zmienianej aplikacji. Podczas uruchamiania Inkscape szuka w swoim katalogu folderów o ściśle określonych nazwach. Taka zmiana nazwy powoduje, że „nie będzie zwracał uwagi” na etc.org. A gdyby coś nie działało tak jak to poniżej opisałem — wystarczy wycofać opisane dalej operacje i z powrotem zmienić nazwę folderu etc.org na etc.

6.2  Wprowadzenie

Rysunek 6.2.1 pokazuje, jak wygląda ekran Inkscape zaraz po pierwszym otwarciu:

Rysunek 6.2.1 Okno Inkscape

Okno programu jest tu jednocześnie oknem obrazu. Wokół krawędzi są rozmieszczone różnorodne przyborniki z ikonami (Rysunek 6.2.1). Pionowo, po lewej — przybornik z narzędziami edycji. U góry — m.in. pola umożliwiające zmianę położenia i rozmiarów wybranego obiektu.

6.3  Otwieranie i zapisywanie do pliku

W zależności od kompilacji Inkscape wykorzystuje różne odmiany okna wyboru plików (otwieranych poleceniem polecenia File→Open. Oficjalne, 32-bitowe wersje programu, wykorzystują standardowe okno wyboru plików Windows. Wersja 64-bitowa, pochodząca spoza oficjalnego portalu (tam jest dostepna tylko wersja 32-bit) ma takie same okna wyboru plików, jak w Gimpie (Rysunek 6.3.1 — por. str. 219):

Rysunek 6.3.1 Inkscape (64-bitowe) — okno wyboru plików

Inkscape umożliwia podgląd zawartości pliku, podświetlonego na liście — ale tylko do pewnego rozmiaru. Po naciśnięciu przycisku Open, w Inkscape pojawi się załadowany plik.

Podobnie w przypadku zapisu pliku (polecenie File→Save As): 32-bitowa wersja Inkscape używa standardowego okna Windows, a 64-bitowa — okna z tej samej biblioteki (komponentu) co GIMP (Rysunek 6.3.2):

Rysunek 6.3.2 Inkscape (64-bitowe) — okno zapisu plików

6.4  Ustalenie rozmiaru obrazu

Wywołaj polecenia File→Document Properties. (Rysunek 6.4.1):

Rysunek 6.4.1 Ustalenie rozmiaru dokumentu

W oknie dialogowym Document Properties, w pola Width, Height sekcji Custom size, wpisz wymiary dokumentu. Sugerowałbym, aby — dla wygody — założyć, że 1 jednostka Inkscape = 1 piksel weryfikowanego obrazu.

Okno Document Properties nie ma przycisku “OK.” — zmiany zostają wprowadzone, gdy tylko opuścisz to okno.

6.5  Wstawienie dodatkowego obrazu rastrowego

Wywołaj polecenie File→Import. W oknie dialogowym wyboru plików, które się pojawi, wskaż jakiś plik rastrowy (Rysunek 6.5.1a):

Rysunek 6.5.1 Wybór pliku rastrowego (wersja 32-bitowa)

Gdy naciśniesz przycisk Otwórz, Inkscape wyświetli jeszcze dodatkowe okno dialogowe (Rysunek 6.5.1b). Wybierz na nim opcję link. Wówczas wybrany obraz zostanie wstawiony do aktualnego rysunku (Rysunek 6.5.2):

Rysunek 6.5.2 Kolejny obraz rastrowy, dodany do dokumentu Inkscape

64-bitowa wersja Inkscape używa okien dialogowych wyboru plików w stylu GTK+ — takich jak te używane w GIMP (por. str. 219).

6.6  Obrazy rastrowe — właściwości

Inkscape potrafi wyświetlać zawartość plików rastrowych. Traktuje je jako niepodzielną całość, której wnętrze nie podlega żadnej edycji. Program może nawet nie przechowywać kopii takich obrazów w swoich rysunkach (*.svg). Zapamiętuje tylko ścieżki do plików, które ma wyświetlić[1]. Ma to dwie konsekwencje:

- jeżeli usuniesz z dysku plik, którego referencja jest w rysunku Inkscape — program już go nie wyświetli;

- jeżeli zmienisz za pomocą GIMP coś w pliku wstawionym do rysunku Inkscape, zmiany wprowadzone w ten sposób staną także widoczne w Inkscape.

Rysunek 6.6.1 Rysunek rastrowy wczytany do Inkscape

W razie potrzeby sam możesz zmieniać w Inkscape referencje do pliku. Zaznacz obraz, który chcesz zmienić. Naciśnij teraz PPM, aby otworzyć jego menu kontekstowe, i wybierz z niego polecenie Image Properties (Rysunek 6.6.2):

Rysunek 6.6.2 Okno właściwości obrazu rastrowego

W oknie Image Properties możesz wpisać nazwę zupełnie innego pliku, z innym obrazem. Inkscape go wyświetli, w aktualnie zaznaczonym miejscu.

[1] (str. 286) Działa w ten sam sposób, jak strony internetowe (HTML) — one także przechowują tylko referencje do obrazów, które wyświetlają.

6.7  Eksport do obrazu rastrowego

Rysunek 6.7.1 Szczegóły eksportu do bitmapy (obrazu rastrowego)

Wywołaj File→Export Bitmap l. Inkscape otworzy odpowiednie okno dialogowe (Rysunek 6.7.1):

W sekcji Export area naciśnij przycisk (przełącznik) Page. W tym trybie eksportowany jest zadeklarowany obszar rysunku (por. str. 284). W sekcji Bitmap size ustal rozmiary obrazu rastrowego. Jeżeli eksportowany plik ma być użyty jako tekstura, postaraj się, by miał taką samą wysokość i szerokość. Jeszcze lepiej, gdy rozmiar obrazu w pikselach jest jakąś potęgą liczby 2. Zazwyczaj stosuje się rozmiary 512, 1024, 2048. Jak widać na ilustracji, ja wybrałem 2048 (aby było widać jak najwięcej szczegółów) .

W polu Filename ustalamy nazwę pliku. Inkscape zapisuje (na razie?) bitmapy tylko w jednym formacie: *.png. Nie jest to jednak duży problem, możemy ją później przekształcić na inny format za pomocą Gimpa. Zresztą Blender akceptuje obrazy także w formacie *.png.

Po naciśnięciu przycisku Export zostanie utworzony obraz, gotowy do użycia w Blenderze.

Eksportowana jest tylko zawartość tych warstw Inkscape, które są aktualnie widoczne!

6.8  Widok: powiększanie, przesuwanie

Obsługa zmiany powiększenia (zoom) i przesuwania obrazu (pan) jest w Inkscape prawie taka sama jak w GIMP.

Zmiany powiększenia można dokonać na dwa sposoby:

- szybko i mniej dokładnie: trzymając wciśnięty Ctrl i obracając kółkiem myszki (KM);

- dokładnie: wpisując %powiększenia w pole Zoom, u dołu ekranu (Rysunek 6.8.1);

Rysunek 6.8.1 Widok: dwie metody zmiany powiększenia (Zoom)

Przesunięcie widoku to ruch myszki z wciśniętym SPM (identycznie jak w GIMP — str. 224). Możesz także użyć w tym celu pasków przewijania (scrollbars), umieszczonych z boku ekranu.

Dodatkowo, zgodnie ze standardem Windows, obrót KM powoduje przewijanie obrazu w górę i w dół. Już poza tym standardem, kombinacja Shift - KM przesuwa widok w poziomie.

6.9  Warstwy — zarządzanie

W Inkscape, podobnie jak w GIMP, istnieją warstwy, za pomocą których możesz grupować elementy rysunku. Gdy wywołasz polecenie Layer→Layers (Shift-Ctrl-L), na ekranie pojawi się dodatkowy panel (Rysunek 6.9.1) :

Rysunek 6.9.1 Panel zarządzania warstwami

Panel sterowania warstwami zapewnia pełną kontrolę ich stanu. Zwróć szczególną uwagę na kontrolkę Opacity — zmienia przejrzystość podświetlonej na liście warstwy. Będziesz jej często używał. Panel Layers (i wszystkie inne) możesz “schować” lub przywołać z powrotem naciskając F12 (View→Show/Hide Dialogs)

Oprócz paneli zarządzania, Inkscape ma dodatkową kontrolkę u dołu ekranu (Rysunek 6.9.2). Za pomocą tej listy rozwijalnej i dwóch przełączników można:

- zmienić aktualną warstwę;

- włączyć lub wyłączyć widoczność warstwy;

- włączyć lub wyłączyć blokadę zmian dla obiektów umieszczonych na warstwie.

Rysunek 6.9.2 Elementy szybkiego zarządzania warstwami

Z kontrolki umieszczonej u dołu ekranu korzysta się najczęściej, gdyż nie zajmuje tyle cennej przestrzeni ekranu, co panel Layers.

Warto zwrócić uwagę na pewne konwencję prezentowania nazwy warstw na liście rozwijalnej:

- nazwa zablokowanej warstwy jest ujęta w nawiasy kwadratowe.

- nazwa warstwy ukrytej jest szare, a nie czarna.

W ten sposób, zaraz po rozwinięciu listy, możesz się szybko zorientować co do stanu każdej z warstw.

6.10  Warstwy — dodanie nowej

Otwórz panel Layers (Layer→Layers). Na panelu naciśnij przycisk . Możesz także (alternatywnie) użyć polecenia z menu: Layer→Add Layer.... Pojawi się okno dialogowe nowej warstwy (Rysunek 6.10.1):

Rysunek 6.10.1 Dodawanie nowej warstwy

W oknie Add Layer wpisz w pole Layer name nazwę nowej warstwy. W polu Position możesz ustalić, w którym miejscu na liście ma być umieszczona (powyżej lub poniżej warstwy aktualnej).

6.11  Warstwy — usuwanie

Otwórz panel Layers (Layer→Layers). Na panelu podświetl warstwę do usunięcia i naciśnij przycisk (Rysunek 6.11.1). (Możesz także — alternatywnie — użyć polecenia z menu: Layer→Delete Current Layer..).

Rysunek 6.11.1 Usunięcie warstwy

6.12  Zaznaczanie obiektów (selekcja)

Wybór (selekcja) obiektów odbywa się w Inkscape w sposób typowy dla aplikacji Windows. Zaznaczony obiekt/obiekty są obramowane prostokątną ramką z uchwytami (Rysunek 6.12.1). Naciśnięcie klawisz Esc powoduje rezygnację z wykonanego wyboru (w menu jest to polecenie Edit→Deselect) .

Wybór pojedynczego obiektu to kliknięcie w jego obszar LPM. Powoduje jednocześnie wyłączenie z selekcji ewentualnych obiektów wybranych wcześniej (Rysunek 6.12.1):

Rysunek 6.12.1 Zaznaczony, pojedynczy obiekt

Gdy chcesz zaznaczyć obiekt, który nie ma wypełnienia, musisz kliknąć LPM dokładnie w jedną z jego linii. Jeżeli np. wybierasz kwadrat, który nie ma wypełnionego środka, kliknięcie w jego wnętrze wcale go nie zaznaczy!

Aby wybrać wiele obiektów, jeden po drugim: trzymaj wciśnięty Shift i klikaj w nie po kolei LPM (Rysunek 6.12.2):

Rysunek 6.12.2 Zaznaczanie wielu obiektów — metoda bezpośrednia

Jeżeli powtórnie klikniesz Shift - LPM w zaznaczony obiekt - zostanie wykluczony z selekcji.

Aby wybrać wiele obiektów za pomocą prostokątnego obszaru: wciśnij LPM w miejscu, gdzie nie ma żadnego obiektu. To wyznacza jeden z narożników prostokąta; Następnie, trzymając wciśnięty LPM, przesuwaj kursor. Będziesz “ciągnął” w ten sposób przeciwległy narożnik obszaru selekcji. Miejsce, w którym zwolnisz LPM, wyznaczy rozmiar prostokąta. Wybrane zostaną wyłącznie obiekty, które mieszczą się w nim w całości (Rysunek 6.12.3):

Rysunek 6.12.3 Zaznaczanie obiektów obszarem prostokątnym

6.13  Zmiana kolejności obiektów

W Inkscape każdy obiekt jest umieszczony “ponad” albo “poniżej” innych. Przyjrzyjmy kwadratowi i elipsie, umieszczonym na tej samej warstwie (Rysunek 6.13.1). Elipsa zasłania kwadrat — jest obiektem pierwszoplanowym:

Rysunek 6.13.1 Oryginalna kolejność obrazów

Zaznacz elipsę. Następnie wywołaj polecenie Object→Lower to Bottom. Sytuacja ulegnie zmianie (Rysunek 6.13.2):

Rysunek 6.13.2 Kolejność obrazów po przesunięciu pierwszoplanowego “na dno”.

Spośród czterech poleceń, za pomocą których można w Inkscape zmieniać kolejność obiektów, w praktyce używałem tylko dwóch:

- Object→Lower to Bottom (skrót klawiatury: End, ikona: ): umieszcza zaznaczony obiekt poniżej wszystkich innych;

- Object→Raise to Top (skrót klawiatury: Home, ikona: ): umieszcza zaznaczony obiekt powyżej wszystkich dotychczas narysowanych;

Każdy nowy obiekt, który tworzysz, jest umieszczany ponad wszystkimi narysowanymi do tej pory.

W Inkscape istnieją także warstwy, pełniące podobną rolę jak w GIMP: podzielenia rysunku na fragmenty, łatwiejsze do zarządzania (patrz str. 289). W ogólnej hierarchii Inkscape najważniejsza jest kolejność warstw. To ona określa “zgrubnie”, co jest widoczne, co nie widoczne, a także co jest na wierzchu a co pod spodem. Omawiane w tej sekcji operacje — “przesuń na spód”, “przesuń na wierzch” — zmieniają kolejność obiektów tylko w obrębie pojedynczej warstwy.

6.14  Linie pomocnicze (guides)

W Inkscape możesz użyć linii pomocniczych (guides). Służą do zaznaczania jakiegoś istotnego miejsca, a także porównań. Tworzy się je tak samo jak w GIMP: poprzez “wyciągnięcie” z linijki z boku lub z góry ekranu (Rysunek 6.14.1):

Rysunek 6.14.1 “Pobranie” linii pomocniczej

Linia pomocnicza nie jest częścią obrazu — nie jest drukowana, ani nie pojawia się w obrazach wyeksportowanych do pliku rastrowego.

Istniejące linie pomocnicze można przesuwać. Gdy zbliżasz do nich wskaźnik myszki na odległość kilkunastu pikseli, linie zmieniają kolor na czerwony. W ten sposób Inkscape sygnalizuje, że wciśnięcie w tym obszarze LPM i przesunięcie myszki przeniesie linię pomocniczą w nowe miejsce. Zostanie umieszczona tam, gdzie zwolnisz LPM.

Aby usunąć linię pomocniczą — trzymając wciśnięty Ctrl, kliknij w nią LPM.

Rysunek 6.14.2 Włączenie “przyciągania” do linii pomocniczych

Jeżeli w oknie Document Properties (Shift-Ctrl-D) jest włączone “przyciąganie” do punktów charakterystycznych (Rysunek 6.14.2) — tworzone lub edytowane obiekty będą się dopasowywać do linii pomocniczych.

6.15  Dokładnie określanie pozycji obiektu

Przesunięcie za pomocą myszki zawsze jest obarczone jakimś błędem. Inkscape umożliwia — jako alternatywę — wpisanie dokładnych wartości numerycznych dla położenia i rozmiaru obiektu. Można to zrobić w trybie wyboru obiektów. Służą do tego pola X, Y, W, H, umieszczone w przyborniku ponad rysunkiem (Rysunek 6.15.1):

Rysunek 6.15.1 Obraz: ustalenie dokładnego położenia

Najczęstsze zastosowanie tej funkcji, to dokładne pozycjonowanie obrazów na rysunku. Aby ustalić ostateczną pozycję, wpisz w pola X i Y współrzędne lewego górnego narożnika obrazu (Rysunek 6.15.1).

Inkscape dolicza do rozmiaru obiektu także grubość jego obrysu (jeżeli kształt obiektu jest obrysowany — tzn. ma włączoną opcję Stroke — por. str. 298).

6.16  Rysowanie linii

Rysowanie linii zaczynamy od przełączenia się w odpowiedni tryb pracy — rysowania linii (Rysunek 6.16.1):

Rysunek 6.16.1 Rysowanie linii w Inkscape

Linię zaczynasz od kliknięcia LPM w punkt, który będzie początkiem pierwszego odcinka. Od tej chwili za kursorem myszki zaczyna się “ciągnąć” czerwona kreska (mimo, że nie naciskasz żadnego klawisza). Gdy po raz drugi klikniesz LPM — wskażesz koniec odcinka. Linia może się składać z jednego lub więcej takich segmentów. Zwróć uwagę, że po wskazaniu drugiego punktu Inkscape “z własnej inicjatywy” rozpoczął “ciągnąć” kolejny odcinek linii. Musisz na koniec nacisnąć Enter, aby zasygnalizować programowi, że “na tym kończymy”.

Aby usunąć ostatnio narysowany odcinek linii — naciśnij Backspace.

Jeżeli rysowany odcinek ma być poziomy lub pionowy — podczas rysowania trzymaj wciśnięty Ctrl.

Rysunek 6.16.2 “Zamykanie” obrysu

Inkscape stara się ułatwić rysowanie linii jako figury zamkniętej. Stąd, gdy podczas rysowania linii zbliżysz koniec ostatniego odcinka do początku pierwszego — punkt początkowy ulegnie podświetleniu (Rysunek 6.16.2). Gdy umieścisz w nim punkt końcowy odcinka, który rysujesz (kliknięcie LPM) — linia stanie się zamknięta.

6.17  Właściwości kształtu

Każdy obiekt w dokumencie Inkscape — poza obrazem rastrowym — jest figurą geometryczną, złożoną z dwóch elementów:

- linii konturu (stroke);

- wypełnienia (fill);

Dla obydwu można ustalić kolor, a w bardziej złożonych przypadkach — gradient czy deseń, jakim są rysowane. Linia konturu dodatkowo posiada takie właściwości jak grubość i wzór (ciągła, kreskowana, kropkowa,...)

Kontury otwarte także mogą posiadać wypełnienie — choć w takim przypadku wygląda nieco dziwnie.

Do zmiany wypełnienia i linii konturu obiektu służy panel Fill and Stroke (Rysunek 6.17.1):

Rysunek 6.17.1 Okno właściwości kształtu (Fill and Stroke)

W zakładce Stroke style ustalasz grubość i deseń linii obrysu. W zakładce Stroke paint ustalasz barwę (lub gradient, lub deseń) linii (Rysunek 6.17.2):

Rysunek 6.17.2 Zmiana barwy linii — zakładka Stroke paint

Rysunek 6.17.3 Wyłączenie wypełnienia wnętrza obiektu

Zakładka sterująca wypełnieniem obiektu to Fill. Zawiera identyczne kontrolki jak Stroke paint.

Spośród możliwych trybów wypełnienia wyróżnia się pierwsza opcja od lewej — (Rysunek 6.17.3). Gdy ją wybierzesz w zakładce Fill, obiekt w ogóle nie będzie miał wypełnienia. (Analogicznie, wybór tej opcji w Stroke paint spowoduje, że obiekt w ogóle nie będzie miał obrysu).

Na zakończenie warto wspomnieć o jeszcze jednej właściwości obiektu w Inkscape. Możesz tu sterować nieprzejrzystością pojedynczego obiektu dokładnie tak samo, jak w GIMP steruje się nieprzejrzystością całych warstw. Służy do tego niewielka kontrolka O, umieszczona u dołu ekranu (Rysunek 6.17.4):

Rysunek 6.17.4 Zmiana nieprzejrzystości obiektu (O pacity)

6.18  Edycja linii

Linie (a właściwie — “ścieżki”, bo Inkscape określa je jako paths), które narysowałeś, możesz później modyfikować. Służy do tego oddzielny tryb — edycji węzłów (Rysunek 6.18.1). (Węzłem linii jest każdy z jej wierzchołków):

Rysunek 6.18.1 Edycja wierzchołków wybranej linii

W tym trybie każdy punkt linii (węzeł) jest oznaczony małym rombem. Możesz za nie „łapać” (LPM) i przesuwać w nowe miejsca. Obowiązują tu dokładnie te same reguły, co przy edycji całych obiektów. Pojedyncze kliknięcie w węzeł oznacza go jako wybrany (Węzeł wybrany zmienia swój kolor na niebieski). Jeżeli podczas wskazywania węzłów będziesz trzymać wciśnięty klawisz Shift - możesz zaznaczyć wiele punktów naraz. Możesz je także zaznaczać obszarem prostokątnym.

Aby dodać do linii nowy wierzchołek — kliknij dwukrotnie LPM w segment, w miejscu w którym ma być wstawiony.

Aby usunąć wybrany węzeł/węzły — naciśnij klawisz Del. To zazwyczaj powoduje zmianę kształtu linii.

6.19  Linie krzywe

Inkscape pozwala od razu rysować linie krzywe — wystarczy w trakcie rysowania kolejnego segmentu trzymać przez cały czas wciśnięty LPM. Muszę jednak przyznać, że dla dokładnego odwzorowania kształtu ta metoda jest trochę nieodpowiednia. (A może — nie przećwiczyłem jej dostatecznie.) W każdym razie pokażę tu sposób, którego używam “na co dzień”.

Polega on na:

- pierwszym przybliżeniu obrysu za pomocą linii łamanej (patrz str. 297, 305);

- przekształceniu kolejnych segmentów łamanej w odcinki krzywej.

Aby zmienić kształt linii łamanej w krzywą, musisz się przełączyć w tryb edycji. Potem wystarczy “złapać” za segment linii LPM i wygiąć w odpowiedni kształt (Rysunek 6.19.1):

Rysunek 6.19.1 Linia krzywa uzyskana poprzez “wyciągnięcie”

Alternatywną metodą jest zamiana poszczególnych węzłów (wierzchołków) z “ostrych” na “gładkie”, poprzez naciśnięcie ikony . Rysunek 6.19.2 przedstawia, na czym to polega:

Rysunek 6.19.2 Linia krzywa uzyskana poprzez zmianę typu węzła na “gładki, symetryczny”

W węźle pojawiły się dwie styczne do krzywej. Możesz sterować kształtem linii zmieniając ich pochylenie i długość. Przedstawiony na rysunku węzeł jest “symetryczny”, co oznacza że zmiana jednej stycznej powoduje identyczną zmianę drugiej. (Dzięki temu wygięcie będzie bardziej “płynne”, gdyż krzywe z obydwu stron węzła mają w tym miejscu taki sam promień krzywizny).

Jeżeli nie zależy Ci na aż tak “dokładnych” zaokrągleniach — możesz węzeł przełączyć w tryb (Rysunek 6.19.3). Wtedy styczne z każdej strony węzła będą utrzymywały współliniowość. Mogą się jednak różnić długością.

Rysunek 6.19.3 Węzeł gładki, niesymetryczny

Krzywe, uzyskane w ten sposób, “na oko” wyglądają na gładkie. Gdy jednak styczne w węźle różnią się długością, występuje w nich skokowa zmiana promienia krzywizny.

Gdy chcesz uzyskać w węźle „narożnik” — przełącz się w tryb . Wtedy możesz manipulować każdą ze stycznych oddzielnie (Rysunek 6.19.4):

Rysunek 6.19.4 Węzeł ostry

Ostateczny kształt krzywej uzyskujesz, przekształcając kolejne węzły na “gładkie” i — zazwyczaj — symetryczne (Rysunek 6.19.5). Zaczynasz ten proces od jednego krańca linii łamanej. Sukcesywnie przekształcasz w krzywą i nadajesz właściwy kształt kolejnym segmentom, dopóki nie dotrzesz do końca linii.

Rysunek 6.19.5 Krzywa z wieloma wierzchołkami

Podobnie jak podczas edycji linii łamanych:

- Aby dodać nowy wierzchołek, kliknij dwukrotnie LPM w miejscu, gdzie ma powstać.

- Aby wierzchołek usunąć — zaznacz go i naciśnij Delete;

6.20  Odwzorowanie obrysu zawierającego łuk

Łuk to specjalny przypadek krzywej. Operację pokażę na przykładzie formowania obrysu krawędzi natarcia statecznika pionowego. Jest to odcinek prostej i fragment łuku. Zacząłem jednak od narysowania dwóch prostych odcinków (Rysunek 6.20.1a):

Rysunek 6.20.1 Obrys — wygładzanie

Aby zmienić drugi segment w łuk:

- przełącz się w tryb edycji węzłów;

- kliknij w środek segmentu, który ma być zakrzywiony. (Jego obydwa wierzchołki powinny zabarwić się na niebiesko);

- naciśnij przycisk w pasku narzędzi, zmieniający odcinek w segment krzywej (Rysunek 6.20.1a);

- ustaw odpowiednio uchwyty stycznych na końcu linii, aby nadać krzywiźnie właściwy kształt (Rysunek 6.20.1b);

W Inkscape każda krzywa to tzw. krzywa Beziera. Pojedynczy segment takiej linii potrafi całkiem dokładnie odwzorować łuk o kącie do 60º. W tym przypadku kąt nie przekracza 45º, więc nie dodawałem żadnego dodatkowego węzła pośrodku.

Gdy za pomocą krzywej Beziera masz zamodelować łuk, trzymaj się następujących zasad:

- kierunki stycznych na końcach krzywej powinny być takie same, jak styczne łuku;

- długości obydwu odcinków stycznych powinny być równe.

6.21  Odwzorowanie krzywizny

W tej sekcji pokażę, jak za pomocą krzywych odwzorować zadany kontur - na przykładzie obrysu steru kierunku P-40. (Odwzorowanie przedniej części — konturu krawędzi natarcia statecznika pionowego — jest opisane na str. 304). Jeżeli do tej pory w Inkscape rysowałeś tylko linie łamane — zerknij na str. 301. Znajdziesz tam wprowadzenie do tworzenia linii krzywych.

Najpierw obrysuj kontur linią łamaną (Rysunek 6.21.1a). Wierzchołki linii wstawiaj w takich miejscach, by największe wybrzuszenie krzywej leżało w równej odległości od początku i końca odcinka (Rysunek 6.21.1b).

Rysunek 6.21.1 Wstępny obrys steru kierunku — odcinkami prostych

Rysunek 6.21.2 Wygładzanie linii łamanej

Po narysowaniu linii, włącz tryb edycji węzłów. Zamień łamaną na krzywą, wygładzając kolejne wierzchołki (p. str. 302).. Dla kolejnych węzłów (poza krańcowymi):

- zaznacz węzeł jako “symetrycznie gładki” (Rysunek 6.21.2);

- dostosuj krzywiznę za pomocą stycznych. Czasami trzeba także przesunąć węzeł.

Podczas wygładzania może się także zdarzyć, że zdecydujesz się jakiś węzeł dodać lub usunąć.

6.22  Rysowanie prostokąta

Przełącz się w tryb rysowania prostokątów (Rysunek 6.22.1):

Rysunek 6.22.1 Rysowanie kwadratu

Wciśnij LPM w miejscu, gdzie ma się znajdować jeden z narożników prostokąta. Następnie, trzymając wciśnięty LPM, przesuwaj kursor. Będziesz “ciągnął” w ten sposób przeciwległy narożnik prostokąta. Aby uzyskać kształt kwadratu, trzymaj jednocześnie wciśnięty Ctrl. Miejsce, w którym zwolnisz LPM, wyznaczy przeciwległy narożnik obiektu.

6.23  Edycja prostokąta

Zaznacz prostokąt i przełącz się w tryb “prostokąta” (Rysunek 6.23.1):

Rysunek 6.23.1 Punkty sterujące rozmiarem prostokąta

Możesz przeciągnąć LPM kwadratowe uchwyty, umieszczone w narożnikach prostokąta, w nowe miejsce. W ten sposób zmienić rozmiar tego obiektu. Alternatywnie — możesz ustalić rozmiar w sposób dokładny — wpisując wartości numeryczne w pola W, H, umieszczone w przyborniku ponad obszarem rysunku (Rysunek 6.23.1).

Dodatkowo, prostokąt ma w pobliżu prawego górnego narożnika widoczne jeden lub dwa okrągłe węzły. Gdy widzisz jeden, oznacza to, że są na siebie nałożone (por. Rysunek 6.23.1). Węzły okrągłe służą do ustalenia promienia zaokrąglenia narożników prostokąta (Rysunek 6.23.2):

Rysunek 6.23.2 Prostokąt - zaokrąglanie

Jeżeli przeciągniesz jeden okrągły węzeł do dołu, a drugi - w lewo (Rysunek 6.23.2) — narożniki prostokąta staną się zaokrąglone. Jeżeli zsuniesz je w to samo miejsce — narożniki staną się ostre. Możesz ustalić dokładne wartości promieni zaokrąglenia, wpisując je w pola Rx i Ry, umieszczone ponad obszarem rysunku. Zwróć uwagę, że zaokrąglenia mogą być eliptyczne (gdy Rx i Ry nie są równe).

6.24  Rysowanie elipsy

W Inkscape okręgi rysuje się tak samo jak kwadraty (por. str. 306). Wybierasz tylko inny tryb rysowania: okręgów (oznaczony ikoną: ). Następnie naciskasz LPM w miejscu, gdzie mają sięgać lewe, górne granice elipsy. Przeciągasz kursor z wciśniętym LPM, i zwalniasz ten przycisk w miejscu, do którego mają sięgać prawe, dolne granice elipsy (Rysunek 6.24.1):

Rysunek 6.24.1 Rysowanie okręgu

Podobnie jak w przypadku kwadratów, ważne jest wciśnięcie klawisza Ctrl podczas “przeciągania” drugiego punktu, bo inaczej narysujesz elipsę.

Jeżeli podczas tworzenia okręgu będziesz trzymał wciśnięty klawisz Shift — początkowe położenie myszki stanie się środkiem okręgu, a nie narożnikiem jego „ramki”

6.25  Edycja elipsy

Zaznacz okrąg/elipsę i przełącz się w tryb “okręgu” (Rysunek 6.25.1):

Rysunek 6.25.1 Węzły sterujące elipsy/łuku

Kwadratowe węzły sterujące, umieszczone z lewej strony i u góry, służą do zmiany długości promieni elipsy/ promienia okręgu.

Okrągłe uchwyty służą do zmiany elipsy w łuk (eliptyczny) (Rysunek 6.25.2):

Rysunek 6.25.2 Przekształcenie w łuk

Rysunek 6.25.3 Drugi sposób rysowania łuku

Dokładną wartość kąta początkowego można wpisać w pole Start, a końcowego — w pole End, umieszczone w przyborniku ponad obszarem rysunku (Rysunek 6.25.2).

Ikona , umieszczona z lewej strony, służy do ponownego zamknięcia elipsy (zmiany kąta łuku na 360º).

Jeżeli nie chcesz widzieć linii skierowanych od krańców łuku do środka elipsy — przełącz się na alternatywny tryb rysowania (Rysunek 6.25.3).

6.26  Przesunięcie

“Złap” LPM obiekt (tylko nie ramkę zaznaczenia!) i przesuwaj. Punkt, gdzie zwolnisz LPM, określi nowe położenie obiektu. Na przykład, złap LPM za obraz rzutu z góry i przesuń, aby wyrównać z rzutem z lewej (Rysunek 6.26.1).

Rysunek 6.26.1 Przesunięcie — dopasowywanie rzutu z góry do rzutu z boku

Aby dobrze dopasować do siebie obydwa obrazy, często warto użyć linii pomocniczych (Rysunek 6.26.2):

Rysunek 6.26.2 Linie pomocnicze — ułatwiają dopasowanie dwóch obrazów

Zamiast przesuwać obiekt myszką, możesz także wpisać dokładne współrzędne jego nowego położenia. Możesz to zrobić w polach X, Y, w przyborniku ponad obszarem rysunku (Rysunek 6.26.1).

6.27  Ramka selekcji

W Inkscape, wokół każdego zaznaczonego obiektu rysowana jest ramka. Nazwijmy ją ramką selekcji.

Początkowo ramka selekcji pojawia się zawsze w trybie “zmiany rozmiaru” (Rysunek 6.27.1). Jeżeli jednak jeszcze raz klikniesz w zaznaczony obiekt LPM, przełączysz się w tryb “obrotu/przekoszenia” (Rysunek 6.27.2):

Rysunek 6.27.1 Ramka zmiany rozmiaru

Rysunek 6.27.2 Ramka obrotu/przekoszenia

Ramka obrotu zawiera bardzo ważny punkt — środek transformacji. Jest oznaczony niewielkim krzyżykiem (Rysunek 6.27.2). (Gdy nie możesz go od razu dostrzec, zmniejsz powiększenie — wtedy łatwiej go znaleźć).

Rysunek 6.27.3 Przesuwanie środka obiektu

Środek transformacji można “złapać” LPM i przesunąć w inne miejsce (Rysunek 6.27.3).

Środek jest zawsze wykorzystywany przez Inkscape podczas obrotu, oraz — gdy trzymasz wciśnięty klawisz Shift — podczas zmiany skali i przekoszenia.

6.28  Skalowanie

Zaznacz obiekt, który ma być zmieniony. Następnie złap LPM za uchwyt ramki selekcji i przeciągnij. Nowe rozmiary obiektu będą ustalone dla miejsca, w którym zwolniłeś LPM (Rysunek 6.28.1):

Rysunek 6.28.1 Zmiana rozmiaru (skali) obiektu

Domyślnym środkiem skalowania jest przeciwległy narożnik ramki.

Aby zmieniać skalę względem środka obiektu (patrz str. 311) — podczas przesuwania myszki dodatkowo trzymaj wciśnięty klawisz Shift.

Aby zmienić skalę równomiernie we wszystkich kierunkach — podczas przesuwania myszki dodatkowo trzymaj wciśnięty klawisz Ctrl.

Rysunek 6.28.2 Panel transformacji — zakładka skalowania

Jeżeli chcesz dokonać zmiany skali o dokładnie ustaloną wartość — otwórz panel Transform za pomocą polecenia Object→Transform (Shift-Ctrl-M) . Wybierz w niej zakładkę Scale (Rysunek 6.28.2). W pola Width, Height możesz wpisać dokładne wartości nowej skali.

6.29  Obrót

Zaznacz obiekt, który ma być obrócony. Kliknij w niego jeszcze raz, aby przełączyć ramkę selekcji w tryb obrotu (szczegóły - str. 311). Następnie złap LPM za jeden z narożników ramki i zacznij przesuwać. Obrót obiektu będzie zatwierdzony dla miejsca, w którym zwolnisz LPM (Rysunek 6.29.1):

Rysunek 6.29.1 Obrót obiektu

Przed obrotem możesz przesunąć środek transformacji w inne miejsce. Wystarczy go “złapać” LPM i przesunąć (szczegóły - str. 311).

Aby obrót następował skokowo, dokładnie co 15º — podczas przesuwania myszki dodatkowo trzymaj wciśnięty klawisz Ctrl.

Rysunek 6.29.2 Panel transformacji — zakładka obrotu

Jeżeli chcesz dokonać obrotu o dokładnie ustaloną wartość — otwórz panel Transform za pomocą polecenia Object→Transform (Shift-Ctrl-M). Wybierz w niej zakładkę Rotate (Rysunek 6.29.2). W polu Angle możesz wpisać dokładną wartość kąta obrotu.

(Shift-Ctrl-M)

6.30  Przekoszenie (Skew)

Zaznacz obiekt, który ma być przekoszony. Kliknij w niego jeszcze raz, aby przełączyć ramkę selekcji w tryb przekoszenia (szczegóły - str. 311). Następnie złap LPM za jeden z uchwytów na boku ramki, i przesuń. Przekoszenie obiektu będzie ustalone dla miejsca, w którym zwolnisz LPM (Rysunek 6.30.1):

Rysunek 6.30.1 Obrót obiektu

Przed przekoszeniem możesz przesunąć środek transformacji w inne miejsce. Wystarczy go “złapać” LPM i przesunąć (szczegóły — str. 311).

Aby przekoszenie następowało skokowo, dokładnie co 15º — podczas przesuwania myszki dodatkowo trzymaj wciśnięty klawisz Ctrl.

Rysunek 6.30.2 Panel transformacji — zakładka przekoszenia

Jeżeli chcesz dokonać przekoszenia o dokładnie ustaloną wartość — otwórz panel Transform za pomocą polecenia Object→Transform (Shift-Ctrl-M) . Wybierz w niej zakładkę Skew (Rysunek 6.30.2). W pola Horizontal, Vertical możesz wpisać dokładne wartości przekoszenia.

6.31  Wstawienie i edycja tekstu

Gdy włączysz tryb tekstowy (oznaczony ikoną: ), Inkscape zamienia się w typowy edytor tekstu. W pasku narzędzi pojawią się typowe kontrolki formatowania: wybór czcionki, jej rozmiar, wyrównanie tekstu, pogrubienie, pochylenie, kierunek (Rysunek 6.31.1):

Rysunek 6.31.1 Włączenie trybu wpisywania tekstu

Kursor myszki zmienia w tym trybie postać — staje się małym krzyżykiem. Tam, gdzie klikniesz LPM, Inkscape wstawia kursor tekstowy (pionowa, mrugająca kreska). Tekst, który zaczniesz wpisywać, będzie się pojawiał w tym miejscu (Rysunek 6.31.2):

Rysunek 6.31.2 Wpisywanie/edycja tekstu

Podobnie, gdy klikniesz LPM w jakiś istniejący tekst, Inkscape wstawi w to miejsce kursor tekstowy, umożliwiając edycję tego fragmentu. Uważaj tylko na „podpowiedzi” programu: w trybie tekstowym kursor myszki może zmieniać swoją postać, w zależności od tego, co znajduje się pod nim na ekranie. Kursor w kształcie krzyża z małą literą „A” oznacza, że kliknięcie LPM w tym miejscu rozpocznie nowy tekst (Rysunek 6.31.3a):

Rysunek 6.31.3 Oznaczanie „gotowości do edycji tekstu”.

Gdy przesuwasz kursor myszki ponad jakimś tekstem, zmienia swój kształt w pionową kreskę (ang. „I-beam” — Rysunek 6.31.3b). Jeżeli w tym miejscu naciśniesz LPM, przejdziesz do edycji tekstu. Abyś nie miał wątpliwości, o który tekst chodzi, Inkscape otacza go niebieską obwódką (Rysunek 6.31.3b).

6.32  Wyrównanie tekstu do krzywej

Tekst w Inkscape może być ułożony wzdłuż dowolnej linii — łamanej lub krzywej. Aby uzyskać ten efekt, zaznacz tekst, zaznacz krzywą, i wywołaj polecenie Text→Put on Path (Rysunek 6.32.1):

Rysunek 6.32.1 Ustawienie tekstu wzdłuż krzywej

Mimo powiązania, obydwa elementy można nadal modyfikować: edytować tekst w trybie tekstowym (por. str. 316), lub zmieniać kształt krzywej (Rysunek 6.32.2):

Rysunek 6.32.2 Tekst podążą za zmianą kształtu linii

Operacją odwrotną do Put on Path jest — jak łatwo się domyśleć — Text→Remove from Path.

6.33  Powielenie obiektu

W Inkscape istnieją dwie metody powielenia obiektu: w „duplikat” i w „klon” . Duplikat to niezależna kopia (taka, która „ma wszystko własne”: wierzchołki, ustawienia barwy wypełnienia i linii, itp.) Tworzymy go, zaznaczając pierwowzór i wywołując polecenia Edit→Duplicate (Ctrl-D) (Rysunek 6.33.1) .

Klon — to kolejna instancja pierwowzoru. Inkscape zamienia zaznaczony obiekt we wzorzec, którego referencje zostają umieszczone na rysunku. W przypadku jakiejkolwiek zmiany kształtu czy barwy wzorca, tej samej zmianie ulegają wszystkie jego referencje (klony). Zaznaczony obiekt „klonujemy” jednym z poleceń z menu Edit→Clone(Rysunek 6.33.1). Najbardziej popularne, tworzące pojedynczy klon — Edit→Clone→Create Clone — ma skrót na klawiaturze: Alt-D.

Rysunek 6.33.1 Powielanie obiektów — polecenia.

„Klon” możesz zmienić w „duplikat” poleceniem Edit→Clone→Unlink Clone (Shift-Alt-D). Pamiętaj tylko, że jest to w zasadzie operacja nieodwracalna — chyba, że wycofasz ją ogólnym poleceniem Edit→Undo.

6.34  Rysowanie linii kropek (nitów)

W Inkscape możesz wybrać wiele różnych wzorów linii kropkowych i przerywanych (por. str. 298). Do odwzorowania linii nitów potrzebujemy takiej, która jest złożona z samych kropek (kółek). W tej sekcji pokażę, jak uzyskać taki efekt.

Narysuj linię, reprezentującą szew nitów. Początkowo będzie to linia ciągła, o grubości odpowiadającej średnicy nitu (Rysunek 6.34.1a):

Rysunek 6.34.1 Zmiana typu linii na kropkową

Następnie zmień jej wzór, wybierając z listy Fill and Stroke:Dahses linię kropkową o odpowiednim dystansie pomiędzy punktami (Rysunek 6.34.1b). W zwykłym powiększeniu rezultat wydaje się być poprawny (Rysunek 6.34.1c). Jeżeli jednak przyjrzysz się mu z bliska — zobaczysz, że każdy punkt („nit”) to mały kwadrat, a nie kółko!

Spróbujmy to skorygować. Zmieńmy typ zakończenia linii (Fill and Stroke:Cap) z płaskiego na zaokrąglony (Rysunek 6.34.2b — por. z Rysunek 6.34.1b):

Rysunek 6.34.2 Zmiana kształtu zakończeń linii na okrągłe

Niestety, zaokrąglenia zwiększają szerokość linii, i kwadraty zamieniają się nie w koła, a w bardziej podłużne kształty (Rysunek 6.34.2c)!

Możesz sprawdzić każdą z linii kropkowych, zdefiniowanych w Inkscape. Nie znajdziesz takiej, która pozwala uzyskać okrągłe kropki. Skoro żaden ze wzorców linii dostępnych w menu Dahses nam nie odpowiada, możemy zdefiniować własny. Aby to zrobić, wywołaj polecenie Edit→XML Editor… (Rysunek 6.34.3):

Rysunek 6.34.3 Wywołanie edytora XML

(Pliki Inkscape są zapisane w standardzie SVG, a SVG wykorzystuje jako format zapisu język XML, stąd nazwa tego okna). Po lewej stronie widać w nim listę elementów rysunku. Inkscape podświetla na niej zaznaczony obiekt. Po prawej stronie, u góry, widać listę atrybutów zaznaczonego elementu. Zaznacz na niej (kliknięciem LPM) atrybut o nazwie style. U dołu okna, po prawej stronie, zobaczysz wtedy jego wartość — tekst opisujący, jak obiekt ma być rysowany (Rysunek 6.34.3). W tym polu możesz także modyfikować ten tekst. Zmień wartość wyrażenia stroke-dasharray (to właśnie jest definicja wzoru linii) (Rysunek 6.34.4):

Rysunek 6.34.4 Wpisanie niestandardowego wzoru kreskowania

Zmniejsz pierwszą liczbę (szerokość kreski) do 0.05 (Rysunek 6.34.4b), a potem naciśnij przycisk Set. Uzyskamy w ten sposób linię okrągłych kropek (Rysunek 6.34.4c).

Ten niestandardowy wzór Inkscape będzie błędnie pokazywał w panelu Fill and Stroke jako linię ciągłą (Rysunek 6.34.4d). Wiąże się z tym także druga wada: gdy teraz zmienisz jakąkolwiek właściwość w tym panelu, linia naprawdę zmieni się w linię ciągłą, i będziesz musiał jej jeszcze raz ustawiać to specjalne kreskowanie. Dlatego linie nitów z użyciem linii kropkowej najprościej jest rysować kopiując jakąś istniejącą linię w nową (Rysunek 6.34.5):

Rysunek 6.34.5 Wstawienie do rysunku nowej linii kropkowanej (poprzez kopiowanie)

Zaznacz jakąś istniejącą linię kropkową, i naciśnij Ctrl-D (Edit→Duplicate) (Rysunek 6.34.5a). Następnie przesuń tę nową linię w położenie docelowe (Rysunek 6.34.5a). Jeżeli trzeba potem zmienić jej kształt — kliknij w nią dwa razy LPM, by przejść w tryb edycji wierzchołków (Rysunek 6.34.5c). Potem ustaw je tak, by biegły wzdłuż krawędzi łączonych paneli poszycia (Rysunek 6.34.5d).

Czasami na poszyciu samolotu występują jakieś otwory, które przerywają linie szwów. Możesz, rzecz jasna, odwzorować to rysując dwie oddzielne linie (tzn. dwa oddzielne obiekty). Możesz także narysować to jako jeden obiekt, wykorzystując fakt, że linie w Inkscape mogą mieć przerwy pomiędzy wierzchołkami (Rysunek 6.34.6):

Rysunek 6.34.6 Wstawienie przerwy w linii

Przejdź w tryb edycji wierzchołków linii i wstaw (dwukrotne kliknięcie LPM) dwa wierzchołki na przeciwległych krańcach otworu (Rysunek 6.34.6b). Potem zaznacz obydwa (Shift-LPM) (Rysunek 6.34.6c). Następnie wywołaj z przybornika (u góry ekranu) polecenie usunięcia fragmentu linii (Rysunek 6.34.6d).

Zwróć uwagę, że po wystąpieniu takiej przerwy Inkscape zaczyna od nowa wzór linii — tak, że pierwszy nit wypada zawsze na początku nowego segmentu (Rysunek 6.34.7):

Rysunek 6.34.7 Efekt małej przerwy pozwala dokładnie sterować położeniem nitów

Ten efekt może się przydać, jeżeli chcesz staranniej narysować przecięcia szwów nitów. Początkowo, gdy rysujesz nity za pomocą pojedynczych segmentów linii ciągłych, rezultat wydaje się być poprawny — przynajmniej z daleka (Rysunek 6.34.8a):

Rysunek 6.34.8 Szwy nitów, narysowane za pomocą pojedynczych odcinków linii

Jednak w powiększeniu widać, że na przecięciu poprzecznych linii podłużnic i żeber nity nie układają się tak, jak powinny (Rysunek 6.34.8b). Można to skorygować za pomocą drobnych przerw w liniach (Rysunek 6.34.9):

Rysunek 6.34.9 Nanoszenie poprawek na przecięciu dwóch szwów

Przerwy w liniach nitów należy nanosić zaczynając od początku odcinka i sukcesywnie przesuwając się do jego końca. W ten sposób na pewno wszelkie przerwy będą miały wpływ jedynie na jeszcze nie przejrzaną część szwu.

6.35  Dokładna transformacja obiektu (Transform)

Choć o wiele łatwiej jest dokonywać wszelkich przesunięć, obrotów i zmian skali „łapiąc” myszką za uchwyty obiektu, czasami trzeba wykonać transformację o dokładnie określone, ułamkowe wartości liczbowe. Taka sytuacja ma na przykład miejsce, gdy rysujesz tarcze przyrządów pokładowych. Na wielu z nich skala jest podzielona np. na 32 „kreski”. Oznacza to, że kąt pomiędzy kreskami skali musi wynosić dokładnie 11.25º. Takiego obrotu nie uzyskamy za pomocą skoku Snap (klawisz Ctrl). Najprościej to zrobić, używając panelu Transform.

Rysunek 6.35.1 pokazuje przygotowanie do takiej operacji. Narysowałem pustą tarczę przyrządu, a w jej środku umieściłem przecięcie linii pomocniczych — by jego środek sam przyciągał przesuwane obiekty. Następnie narysowałem „wzorcową”, pojedynczą kreskę skali. Przesunąłem jej środek do środka tarczy (bo wokół tego punktu będzie obracana). Następnie wywołałem polecenie Object→Transform (Rysunek 6.35.2):

Rysunek 6.35.1 Przygotowanie obiektu do transformacji

Rysunek 6.35.2 Wywołanie polecenia

W panelu Transform, który w ten sposób otworzyłem, wpisałem w zakładce Rotate, polu Angle, dokładny kąt pomiędzy kreskami skali (Rysunek 6.35.3):

Rysunek 6.35.3 Wykonanie dokładnego obrotu

Teraz wystarczy ostatnią kreskę zaznaczyć, skopiować, i nacisnąć przycisk Transform:Apply. I tak po kolei, dopóki nie wypełnisz całego zakresu skali klonami „wzorca”.

6.36  Przeniesienie obiektu na inną warstwę

W Inkacape masz do dyspozycji dwa polecenia przenoszące zaznaczony obiekt na inną warstwę:

- przeniesienie na wyższą warstwę (Shift-PgUp, albo Layer→Move Selection to Layer Above);

- przeniesienie na niższą warstwę (Shift-PgDn, albo Layer→Move Selection to Layer Below);

Obydwa są dostępne w menu Layer (Rysunek 6.36.1):

Rysunek 6.36.1 Polecenia zmiany warstwy obiektu.

Z poleceń tych będziesz korzystać dość często, więc warto zapamiętać ich skróty na klawiaturze. O ile warstwa docelowa nie ma jakichś specjalnych ustawień przejrzystości czy rozmycia, jedynym widocznym na ekranie efektem jest zmiana nazwy w liście rozwijalnej u dołu ekranu. Rysunek 6.36.2 pokazuje przykład takiej operacji — przesunięcie prostokąta z warstwy Bkg-White na Bkg-Grey:

Rysunek 6.36.2 Efekt zmiany warstwy jest widoczny tylko na pasku stanu.

Inkscape pozwala przenosić obiekty tylko „po kolei”, poprzez poszczególne warstwy. Jeżeli podczas tej „podróży” zostanie napotkana warstwa o zmniejszonej nieprzejrzystości (Opacity), zmniejszy się także nieprzejrzystość obiektów, które się na niej znajdują. Nawet gdy już ją opuszczą, przemieszczone na kolejną warstwę, pozostaną częściowo przeźroczyste!

6.37  Łączenie obiektów w grupę

Zaznacz elementy, z których chcesz stworzyć grupę, i wywołaj polecenie Object→Group (Ctrl-G) (Rysunek 6.37.1):

Rysunek 6.37.1 Grupowanie obiektów

Inkscape traktuje grupę obiektów jak pojedynczy element. Klonowanie (por str. 318) grup obiektów jest efektywną techniką, pozwalającą zmniejszyć rozmiar rysunku, i ułatwiającą jego późniejsze zmiany. (Wystarczy tylko raz zdefiniować grupę „śruba”, a później wstawić w całym rysunku setki klonów tej grupy.)

Operacją odwrotną do grupowania jest Object→Ungroup Shift-Ctrl-D. „Rozkłada” grupę na elementy, z których powstała. Transformacje (obrót, przesunięcie, skala), jakim została poddana grupa, zostają zachowane.

Inkscape pozwala na edycję elementów wchodzących w skład grupy. Służy do tego polecenie Enter group, z menu kontekstowego (Rysunek 6.37.2):

Rysunek 6.37.2 Przejście do edycji grupy

W istocie, warstwy w Inkscape to z punktu widzenia standardu SVG takie duże grupy, zawierające wiele elementów.

Jeżeli grupowane elementy znajdują się na wielu warstwach — to po połączeniu zostaną przeniesione na jedną, wspólną warstwę.

6.38  Wypełnienie gradientem

Zaznacz obiekt, który ma być wypełniony. Następnie w panelu Fill and Stroke, zakładce Fill, wybierz opcję wypełnienia gradientem (Rysunek 6.38.1):

Rysunek 6.38.1 Włączenie wypełnienia gradientem (liniowym)

Domyślny gradient jest płynnym przejściem pomiędzy dwoma kolorami: początkowym i końcowym. Gdy go włączysz, zmieni się zawartość zakładki Fill. Pojawią się w niej kontrolki, służące do zmiany gradientu (zob. Rysunek 6.38.1).

Układ geometryczny gradientu możesz zmieniać, po przełączeniu w tryb edycji linii (Rysunek 6.38.2a):

Rysunek 6.38.2 Odcinek, sterujący położeniem, rozmiarem i orientacją gradientu

W trybie edycji linii pojawi się, obok punktów sterujących kształtem obiektu, dodatkowy odcinek: to sterowanie geometrią gradientu (Rysunek 6.38.2a). Zmieniasz ją, przesuwając końce odcinka sterującego w nowe miejsce. Możesz w ten sposób zmienić rozmiar gradientu (zwężać lub poszerzać), a także zmienić jego orientację, oraz położenie (Rysunek 6.38.2b).

Gdy zawężasz gradient tak, aby był mniejszy od obiektu (np. tak jak to pokazuje Rysunek 6.38.2b), możesz włączyć inny efekt: powtórzenie. Służy do tego lista Repeat (Rysunek 6.38.3):

Rysunek 6.38.3 Powtarzanie gradientu, w trybie direct

W Inkscape masz dostępne dwa sposoby powtarzania gradientu: bezpośredni (direct) i odbity (reflected). Przykład zastosowania trybu direct przedstawia Rysunek 6.38.3. Zasada jest prosta: koniec jednego segmentu gradientu jest jednocześnie początkiem następnego.

Rysunek 6.38.4 przedstawia inny tryb powtórzenia: reflected. W tym trybie koniec jednego segmentu gradientu spotyka się z końcem „sąsiada”, a początek — z początkiem:

Rysunek 6.38.4 Powtarzanie gradientu, w trybie reflected

Rysunek 6.38.5 Zagęszczone powtórzenie gradientu ( w trybie reflected)

Zwróć uwagę na efekt trybu reflected dla prostego, dwukolorowego gradientu: to trochę wygląda jak fragment rzędu walców, widzianych z przodu (Rysunek 6.38.5). Ten efekt możesz jeszcze poprawić, zmieniając rozkład barwy wzdłuż gradientu z liniowego na bardziej „kołowy”. (Poprzez wstawienie dodatkowego węzła — patrz na następnych stronach).

Rozkład barwy wzdłuż gradientu, zastosowany do wypełnienia, możesz zmieniać na kilka sposobów. Pierwszym, najbardziej oczywistym, jest wybór z listy jednego z gradientów, które już są zdefiniowane w rysunku (Rysunek 6.38.6). Za każdym razem, gdy włączysz w jakimś kształcie wypełnienie gradientem, na tej liście pojawi się nowa pozycja. Jeżeli z niej nie skorzystasz — zniknie, gdy zaznaczysz na rysunku inny obiekt. Możesz także stworzyć nowy gradient, za pomocą przycisku Duplicate. Naturalną konsekwencją takiego powielenia jest jakaś zmiana tak uzyskanego gradientu. Służy do tego przycisk Edit... , który otwiera okno Gradient editor (Rysunek 6.38.7):

Rysunek 6.38.6 Wybór wzoru (rozkładu) gradientu

Rysunek 6.38.7 Okno edycji wzoru gradientu

W Inkscape nie ma możliwości zmiany nazwy gradientu i jego węzłów. Musisz korzystać z nazw wygenerowanych przez program. Może w przyszłości ta niedogodność zostanie usunięta.

W oknie Gradient editor możesz zmienić barwy węzła (stop) gradientu. Z listy u góry wybierasz punkt, który chcesz zmienić, a następnie ustalasz jego barwę za pomocą kontrolek z sekcji Stop Color (Rysunek 6.38.8):

Rysunek 6.38.8 Zmiana barwy końca wzoru gradientu

Gradient musi mieć co najmniej dwa węzły: początek i koniec. Może być ich więcej — wystarczy, że dodasz kolejny za pomocą przycisku Add stop. Położenie takiego węzła możesz zmieniać w oknie Gradient editor za pomocą kontrolki Offset. Nowy punkt jest także widoczny na rysunku, i tam także możesz go przesuwać — za pomocą myszki (Rysunek 6.38.9):

Rysunek 6.38.9 Dwie metody zmiany węzła gradientu

Ten „dualizm” metod edycji dotyczy także zmiany barwy — po zaznaczeniu węzła możesz użyć kontrolek z zakładki Fill (Rysunek 6.38.9). W sumie — okna Gradient editor można tylko używać do dodania lub usunięcia węzła.

W Inkscape, oprócz gradientu liniowego, istnieje także gradient kołowy. Wystarczy włączyć inną opcję wypełnienia (Rysunek 6.38.10):

Rysunek 6.38.10 Gradient kołowy

6.39  Odwzorowanie nierówności na poszyciu samolotu

Linie połączeń na poszyciu samolotu odwzorowujemy za pomocą tekstury nierówności[1]. Proponuję, aby podstawową mapę, odwzorowującą także nity i inne szczegóły konstrukcyjne, wykonać jako rysunek wektorowy w Inkscape (więcej na ten temat — zobacz str. 60 i następne).

Odwzorowanie połączeń blach poszycia samolotów odrzutowych jest, paradoksalnie, najłatwiejsze. Począwszy od lat 50-tych XX w. blachy na ich powierzchni są łączone zazwyczaj „na styk” , by powodować jak najmniejsze zaburzenia warstwy przyściennej. Na rysunkach samolotu takie połączenia poznasz po tym, że mają linię nitów z obydwu stron. Zresztą, łby nitów są „na gładko” zeszlifowane z kadłubem, i często ich obecność można poznać tylko po innej barwie poszycia, utrzymanym w kolorze naturalnego duralu. Takie „wklęsłe” szwy znajdziesz już na MiG-15 czy F-86. Ich odwzorowanie na teksturze nierówności jest banalne — po prostu ciemniejsza linia (Rysunek 6.39.1):

Rysunek 6.39.1 Łączenie poszycia „na styk” i jego odwzorowanie na mapie nierówności

Rysunek 6.39.2 Łączenie poszycia „na zakładkę” i jego odwzorowanie na mapie nierówności

W wolniej latających konstrukcjach stosowano (i nadal się stosuje) mniej pracochłonne łączenie „na zakładkę” (Rysunek 6.39.2). Takie szwy wymagają dwa raz mniej nitów, umieszczonych tylko po jednej stronie. Szwy „na zakładkę”, czasami jeszcze z nitami o wypukłych łbach, spotkasz w większości konstrukcji z okresu II Wojny Światowej. Jeżeli miały nawet nity z łbem wpuszczanym — to często nie były szlifowane do poziomu poszycia (wiadomo, produkcja wojenna...). Cały problem z narysowaniem takich połączeń to uzyskanie powoli narastającej barwy, która — w miejscu krawędzi — gwałtownie ciemnieje. Można ten efekt uzyskać przy użyciu powierzchni wypełnionych gradientami. Oczywiście, nie jest to tak proste, jak rysowanie pojedynczych linii.

Zacznij od przygotowania poziomu odniesienia — to szare tło. Uzyskałem je poprzez wstawienie na warstwę Background prostokąta, zasłaniającego cały obraz. Prostokąt jest wypełniony kolorem szarym, o odcieniu na poziomie 50% czerni (czyli, w wartościach podawanych w Inkscape — 128).

W kolejnej warstwie — Rivets — umieściłem linie nitów. Nie obawiaj się — nie rysowałem każdego osobno! Stworzyłem je, używając specjalnego wzoru linii kropkowej[2]. To wzór niestandardowy — aby go uzyskać, musiałem użyć okna XML Editor (szczegóły — str. 319). Rysunek 6.39.3 przedstawia rezultat:

Rysunek 6.39.3 Faza pierwsza — neutralne tło i linie nitów.

Jeżeli nity mają być wypukłe, nadaj im barwę białą (255), a jeżeli wklęsłe - czarną (0). W razie czego — zawsze przyglądaj się zdjęciom. Nawet tam, gdzie poszycie było „z zasady” pokryte nitami z łbem wpuszczanym, mogą się trafić jakieś szczególnie obciążone szwy, w których konstruktorzy zdecydowali się użyć nitów z łbem wypukłym (mają większą wytrzymałość)[3].

Głębokość / wysokość nitów ustalasz, zmieniając nieprzejrzystość warstwy Rivets (Rysunek 6.39.3a). Pamiętaj, że nity wpuszczane są niemal niewidoczne. Tylko dlatego, aby coś było widać na ilustracjach w tej sekcji, ustawiłem nieprzejrzystość tej warstwy na 50%. Zazwyczaj odpowiednią wartością jest 5%, może czasami 10%. (Przy takich wartościach nity na obrazie są niemal niewidoczne, ale mimo to „wyjdą” po zastosowaniu tekstury na modelu!).

Utwórz teraz kolejną warstwę poniżej warstwy Rivets. Nadaj jej nazwę PanelH i ustal nieprzejrzystość na 50% (Rysunek 6.39.4a). Narysuj na niej zamknięte obrysy paneli. Nie rysuj wszystkich — tylko te, które odpowiadają za jakieś połączenie w poziomie (Rysunek 6.39.4b):

Rysunek 6.39.4 Faza druga — poziome połączenia blach.

Do wypełnienia paneli użyj najprostszego gradientu (jak — str. 326), w którym obydwa krańce maja kolor biały. Różnią się tylko przejrzystością — jeden z nich jest zupełnie przejrzysty (A = 0), a drugi — wcale (A = 255). Użyj tego samego gradientu na wszystkich narysowanych panelach (wspominam o tym tylko „na wszelki wypadek”, gdybyś w przyszłości chciał go zmienić). Zorientuj rozmiar i pochylenie gradientu tak, by biała, nieprzejrzysta krawędź biegła wzdłuż linii szwu, a przejrzysta mieściła się mniej więcej w zarysie panelu (Rysunek 6.39.4b) .

Utwórz jeszcze jedną warstwę ponad warstwą PanelH. Nadaj jej nazwę PanelV, i także ustal jej przejrzystość na 50% (Rysunek 6.39.5a). Na tej warstwie umieść z kolei panele odpowiedzialne za krawędzie pionowe (Rysunek 6.39.5b):

Rysunek 6.39.5 Faza trzecia — pionowe połączenia blach.

Do wypełnienia narysowanych paneli użyj tego samego gradientu, jaki stosowałeś do obiektów na warstwie PanelH. Dopasuj go według tych samych reguł — jasna krawędź wzdłuż linii szwu, przeciwległa — na przeciwnym krańcu panelu (tam, gdzie biegnie linia kolejnego pionowego połączenia). Panele należy rozciągnąć do granic obrysu kadłuba — nawet tam, gdzie do tej pory nie było paneli poziomych (Rysunek 6.39.5b).

Zwróć uwagę, że dzięki zastosowaniu „krzyżowania” obrysów z dwóch warstw, odwzorowaliśmy oryginalne 7 „kawałków blachy” poszycia tylko za pomocą 4 elementów! Oszczędziło to nam sporo pracy przy wzajemnym dopasowaniu kształtów (ta rośnie geometrycznie w stosunku do liczby dopasowywanych obiektów).

Czy już widzisz, co udało się nam uzyskać? W wyniku zastosowania gradientów panele stają się coraz jaśniejsze, by doprowadzić do dużego kontrastu wzdłuż linii szwu. To na mapie nierówności wywoła właściwe wrażenie zachodzących na siebie blach. Nawet narożniki nie są tu przeszkodą — są dwa razy jaśniejsze od środka szwu. Dokładne intensywności szarości (w skali 0..255) przedstawia Rysunek 6.39.6. Z jednej — „wyższej„ — strony szwu są piksele o jasności 192, z drugiej — „niższej” — 128 (kolor tła). Daje to różnicę poziomów (kontrast) rzędu 64. W narożnikach, gdzie nakładają się na siebie dwa gradienty, „najwyższy” narożnik ma jasność 224. Graniczy z liniami o jasności 192 (kontrast - 32). Największy kontrast — 96 — występuje na połączeniach w kształcie litery „T”. Tam narożnik o jasności 224 graniczy z jednej strony z tłem (Rysunek 6.39.6):

Rysunek 6.39.6 Rezultat złożenia paneli „pionowych” (PanelV) i „poziomych” (PanelH).

Na powierzchni samolotu mogą wystąpić jeszcze elementy nałożone na wszystkie inne blachy — jakieś pokrywy, czy temu podobne. Stwórzmy dla nich specjalną warstwę Overlay, umieszczoną ponad PanelV i PanelH (Rysunek 6.39.7a):

Rysunek 6.39.7 Faza czwarta — blachy, które są nałożone na pozostałe.

Elementy, umieszczone na warstwie Overlay muszą być jaśniejsze od jakiejkolwiek krawędzi powstałej z nałożenia paneli z warstw PanelH i PanelV. W przykładzie, jaki pokazuje Rysunek 6.39.7b, jest to jakiś prostokątny fragment blachy, przymocowany do poszycia. Nadałem mu odpowiednio „wysoką” jasność (232). Warstwa Overlay jest całkowicie nieprzejrzysta (oczywiście tam, gdzie jest cokolwiek na niej narysowane).

Aby wypukłe (białe) nity lepiej „wyszły” na renderingu, możesz przyciemnić tło — z 50% np. do 25% szarości (ze 128 do 64). Taka ściemni wszystkie barwy na panelach, ale zachowa kontrasty wzdłuż linii szwów.

Rysunek 6.39.8 Brak kontrastu na narożniku panelu

Na koniec warto wspomnieć o pewnym typowym problemie. Pokażę go na przykładzie z realnej konstrukcji — fragmentu kadłuba P-40.

W miejscu, które pokazuje Rysunek 6.39.8, z jednolitą krawędzią panelu A graniczą początki dwóch innych paneli (B i C). W takiej sytuacji mamy problem z kontrastem w lewym dolnym narożniku panelu B. Odcień szarości jest tam taki sam, jak w sąsiedniej panelu A.( Rysunek 6.39.8). Oznacza to, że na modelu krawędź podziału blach w tym miejscu zaniknie.

Jak poradzić sobie z takim problemem? Należy „obniżyć” odcień obszaru za panelem A — zarówno wypukłości, jak też barwę „bazy” (tło). Narysuj najpierw obszar tego obniżenia. Musisz nadać mu taki kształt, by krawędzie poprzeczne były ukryte (Rysunek 6.39.9a):

Rysunek 6.39.9 Uzyskanie kontrastu wzdłuż krawędzi panelu za pomocą gradientu „przyciemniającego”.

Potem wypełnij ten obszar gradientem, którego przejrzystość zmienia się od 0 do 25% (64) (Rysunek 6.39.9b).

Ostatnim elementem poszycia, który odwzorujemy, są śruby (przymocowujące do poszycia np. prostokątny panel z warstwy Overlay). Umieść je ponad nitami, na oddzielnej warstwie Screws (Rysunek 6.39.10):

Rysunek 6.39.10 Faza piąta — inne elementy poszycia (śruby, zamki, itp.)

Blacha poszycia tworzy często drobne zagłębienia wokół dokręconych śrub (Rysunek 6.39.10b) . Możesz je odwzorować za pomocą kolistych gradientów, umieszczonymi na specjalnej warstwie Bumps. Umieść ją pod innymi warstwami (por. Rysunek 6.39.10a). Aby cienie pod śrubami były widoczne, zwiększ nieco (np. o 30%) przejrzystość warstwy Overaly.

Aby ułatwić ewentualne przyszłe modyfikacje, proponuję nanieść na rysunek „klony” (Object→Clone→Create Clone, p. str. 318) wzorców śrub i ich cieni, które narysujesz raz, gdzieś z boku (Rysunek 6.39.11a):

Rysunek 6.39.11 Wzorce śrub i cieni

Wzorce mogą być o wiele większe od swoich klonów — gdyż rozmiar (oraz ewentualną deformację — zobacz cienie na narożnikach przyśrubowanej na rysunku płyty) można ustalić dla każdego klonu indywidualnie. Wzór zaciemnienia uzyskasz, wypełniając koło odpowiednim gradientem (Rysunek 6.39.11b).

[1] (str. 330) Pouczającym przykładem może być praca, zaprezentowana na forum max3d.pl przez użytkownika kliment_woroszyłow . To model Bf-109G, na którym autor pracowicie zamodelował łączenia blach jako wklęsłości siatki. Na zbliżeniach fragmentów samolotu wyglądało to bardzo ładnie, choć zapewne wymagało sporo dodatkowej pracy. Takie połączenia jednak bardzo komplikują siatkę modelu. I co więcej — aby w ogóle być widoczne na renderze, musiały mieć przesadzoną szerokość (może poza zdejmowanymi osłonami na masce silnika). Na renderach całego samolotu nie było już widać specjalnej różnicy pomiędzy takimi szwami „zamodelowanymi w siatce”, a szwami naniesionymi za pomocą mapy nierówności.

[2] (str. 331) Jeżeli chesz bardzo dokładnie odwzorować nity — tak, by np. te z łbem wpuszczanym miały miały cienką, ciemną obwódkę — możesz je napisać jako tekst. Pojedynczą linię nitów można uzyskać jako tekst złożony ze znaków „●” (unicode - hex. 25CF), rozdzielonych spacjami (pisanie i edycja tekstu — p. str. 315). Znaki „●” uzyskasz kopiując do schowka z towarzyszącego tej książce pliku source\textures\dots.txt. Wklej je do tekstu w Inkscape. Nadaj czcionce jakiś niewielki rozmiar — np. 2.5px. Takie linie nitów wydłużasz, wklejając do nich kolejne fragmenty tekstu. Skracasz — usuwając znaki. W pobliżu miejsca, gdzie przecinają się dwie linie nitów, możesz trochę pokombinować ze spacjami, aby na takim „skrzyżowaniu” nity nie zachodziły na siebie.

Mankamentem odwzorowania nitów za pomocą wiersza tekstu, a nie linii kropkowej, jest większe obciążenie programu. To może się dać we znaki gdy na jednym rysunku masz rozwiniętą całą powierzchnię samolotu. Na kompletnym obrazie powierzchni P-40 znajdowało się około 60 tys. znaków. Inkscape z trudem sobie radził z rysowaniem takiej ilości tekstu (duże opóźnienia w odświeżaniu ekranu). Ten sam efekt uzyskany za pomocą linii kropkowanej nie sprawiał żadnego problemu.

Jeżeli jednak chcesz rysować nity jako ciągi tekstu — zwróć uwagę na zaokrąglony prostokąt, który przerywa linię nitów (Rysunek 6.39.3b). Specjalnie umieściłem go na naszej próbce, gdyż takie elementy występują powszechnie na powierzchni samolotów. To może być wzmocnienie wokół jakiegoś otworu, lub innego szczegółu konstrukcji. Jego kształt naniosłem na warstwę Rivets, a następnie „otoczyłem” oddzielną linią tekstu. (Użyłem funkcji Text→Put on Path — str. 317). Gdy nie chcesz, aby obiekty, które otaczasz tekstem były widoczne — umieść je na oddzielnej, wyłączonej warstwie. Do tego przykładu jej nie dodałem, ale znajdziesz ją np. w pliku ze wzorem tekstur, stworzonym dla modelu P-40 (skin.svg). Nosi tam nazwę Helpers.

[3] (str. 331) Szwy nitów z łbem wypukłym są także łatwiejsze (tańsze, szybsze) do wykonania. Ciekawym przypadkiem jest Spitfire. Konstruktorzy tego samolotu wykonali kompleksowe badania, szukając miejsc, gdzie zastosowanie nitów „wpuszczanych” daje wyraźne korzyści. Ostatecznie zdecydowali się zastosować je w przedniej części skrzydeł (od krawędzi natarcia do dźwigara). To zmniejszyło opór wywoływany przez szwy o ok. 70—80%. Reszta powierzchni Spitfire była pokryta nitami wypukłymi.

6.40  Posługiwanie się filtrem

Do przygotowania obrazów drugorzędnej tekstury nierówności (B.Skin.Nor-Bump), a także tekstury odbić i odbłysków (B.Skin.Ref) należy ostre i dokładne linie obrazu wektorowego poddać „rozmyciu”. Najbardziej oczywistą metodą jest wyeksportowanie ostrego obrazu z Inkscape do pliku rastrowego, by potem „rozmyć” go w Gimpie. Taką właśnie to zrobiłem w początkowych sekcjach o teksturowaniu (por. str. 64-65). Do obrazu tekstury potrzebne było złożenie trzech kolejnych „rozmyć”, różniących się promieniami: 5, 10, 25 px. Każde z nich było tworzone w GIMP na oddzielnej warstwie.

Okazuje się, że ten sam efekt można osiągnąć wprost w Inkscape, za pomocą tzw. filtrów (Filters) . Nie będę się tutaj szczegółowo rozwodził, jakie filtry są dostępne w Inkscape i co umożliwiają, bo to baardzo rozległy temat. (W razie czego spróbuj sam poszukać w Internecie materiałów z ich opisem — to tzw. „SVG filters”). Zamiast tego skoncentruję się na przykładzie konkretnego filtra, wykonującego „w locie” kaskadowe rozmycie metodą Gaussa. Zastosowanie tego filtra pozwoli nam uzyskać obraz drugorzędnej tekstury nierówności — nor_bumps.png (por. str. 63) — wprost z Inkscape.

Przygotowanie filtra zacznij od zaznaczenia na rysunku obiektu/obiektów, wobec których ten filtr ma być zastosowany. Ze względu na wydajność nie przypisuj tego samego filtru do zbyt wielu obiektów na rysunku. Lepiej jest je połączyć w grupę (str. 325), wobec której zastosujesz odpowiedni filtr.

Polecenia związane z filtrami znajdziesz w menu Filters. Twórcy Inkscape umieścili tu mnóstwo gotowych kompozycji filtrów — możesz z nimi poeksperymentować. Aby stworzyć nowy filtr „od zera”, wybierz polecenie Filters→Filter Editor... .Spowoduje to pojawienie się po prawej stronie okna edytora filtrów (Rysunek 6.40.1):

Rysunek 6.40.1 Tworzenie nowego filtra — wywołanie i ekran edytora

Rysunek 6.40.1b) pokazuje, z jakich elementów składa się edytor filtrów. Aby dodać do rysunku nowy filtr, naciśnij przycisk New. Rysunek 6.40.2 pokazuje rezultat:

Rysunek 6.40.2 Tworzenie nowego filtra — ustalenie nazwy i wykorzystanie pól wyboru efektu

Najpierw zacznijmy od „czynności porządkowych”: kliknij w nazwę filtru i zmień ją na coś reprezentatywnego (Rysunek 6.40.2a). Temu filtrowi nadałem nazwę Blur. Potem możesz zacząć dodawać do definicji filtra kolejne komponenty (tzw. „efekty” — effects). Robi się to w dwóch krokach (por. Rysunek 6.40.2b):

1. wybierasz z listy dostępnych efektów odpowiednią pozycję ;

2. naciskasz przycisk Add Effect ;

Wybierz efekt rozmycia metodą Gaussa (Gaussian Blur) . W rezultacie na liście definicji filtra pojawił się pierwszy komponent, a element przypisany do filtru Blur uległ rozmyciu (Rysunek 6.40.3):

Rysunek 6.40.3 Efekt zastosowania pojedynczego komponentu typu Gaussian Blur

Popatrz uważnie na obszar definicji filtra. To w istocie schemat, pokazujący co jest wejściowym obrazem do rozmycia (Source Graphic). Rezultatem działania filtru jest rezultat zwracany przez ostatni (najniższy) efekt.

Spośród pięciu potencjalnych źródeł obrazu wejściowego (Source Graphic, Source Alpha, Background Image, Fill Paint, Stroke Paint — por. Rysunek 6.40.3) najczęściej wykorzystuje się dwa:

- Source Graphic oznacza zawartość elementu (wszystkie linie, wypełnienia, itp.), do którego filtr jest przypisany (Source = element przypisany) ;

- Background Image oznacza cały widoczny rysunek, znajdujący się pod elementem przypisanym do filtru;

Podczas komponowania filtrów zazwyczaj wykorzystujemy Source Graphic, choć czasami spotkałem się także z użyciem Background Image. Pozostałe są mniej użyteczne, np. Fill Paint to barwa, gradient, lub wzór wypełnienia, a Stroke Paint — barwa, gradient, lub wzór linii przypisanego obiektu.

Pozostaw w parametrach pierwszego komponentu wartość Standard Deviation = 1.0. Dla takiej wartości rozmycie obrazu jest mniej więcej takie, jak w GIMP dla promienia Blur Radius = 5. (Promień rozmycia w GIMP i standardowe odchylenie w Inkscape to zupełnie inne parametry! W dodatku zależność pomiędzy nimi wcale nie jest liniowa).

Teraz dodaj do filtra kolejne rozmycie Gaussa (Rysunek 6.40.4):

Rysunek 6.40.4 Dodanie do filtra drugiego komponentu typu Gaussian Blur

Domyślnie Inkscape podstawia, jako informację wejściową dla nowo dodanego efektu, rezultat wszystkich dotychczasowych komponentów (Rysunek 6.40.4a). Wyszło by z tego jednak zbyt duże rozmycie, a chcemy tu uzyskać złożenie trzech rozmyć oryginalnego, ostrego obrazu, o promieniach 5, 10 i 25 px (por. str. 64-65). Przestaw więc „wejście” do drugiego komponentu: złap LPM za końcówkę jego „wejścia” i przesuń ją z wyjścia pierwszego rozmycia ponad obszar Source Graphic (Rysunek 6.40.4b) . Zwiększ także odchylenie standardowe drugiego rozmycia z 1.0 do 1.7 (odpowiada to w przybliżeniu Blur Radius = 10 w Gimpie).

Zwróć uwagę, że po tym zabiegu obraz na ekranie wygląda jakby był rozmyty wyłącznie przez drugi komponent (nie widać żadnego wpływu pierwszego rozmycia). Tak jest w istocie: w obecnym układzie wyjść i wejść z komponentów rezultat pierwszego rozmycia (tego o Standard Deviation = 1.0) nie jest podłączony do niczego. Podczas przerysowania ekranu jest „po cichu” pomijany przez Inkscape.

Jak „złożyć” rezultaty tych dwóch rozmyć ze sobą? Można to zrobić np. za pomocą kolejnego komponentu: Blend (Rysunek 6.40.5):

Rysunek 6.40.5 Złożenie rezultatu dwóch komponentów za pomocą efektu Blend

Komponent Blend dokonuje złożenia dwóch wejściowych obrazów, stąd ma dwa wejścia. Dokonuje tego zgodnie z regułami „arytmetyki barw” (patrz str. 575). W zależności od tego, jaką operację ustawisz w jego parametrach, będzie wykonywał „zwykłe” sumowanie (Normal), mnożenie (Multiply), rozjaśnianie (Lighten) lub zaciemnianie (Darken). Zaraz po dodaniu, obydwa wejścia komponentu Blend są podłączone do rezultatu poprzedniego efektu, a tryb jest ustawiony na Normal (Rysunek 6.40.5a). (Przy takich ustawieniach tego komponentu na rysunku nic nie ulegnie zmianie). Przełącz jedno z jego wejść na rezultat pierwszego rozmycia, a operację Blend — na Multiply (Rysunek 6.40.5b). Uzyskasz w ten sposób na rysunku złożenie dwóch rozmyć — zupełnie tak samo, jak wcześniej w Gimpie.

Pozostaje teraz dodać kolejny efekt: trzeci, najbardziej rozmyty obraz. Wstaw do filtra kolejny komponent Gaussian Blur, tym razem ze Standard Deviation = 3.4 (odpowiada to w przybliżeniu Blur Radius = 25px w GIMP). Zsumuj rezultat tego efektu z pozostałymi za pomocą kolejnego komponentu Blend (Rysunek 6.40.6) :

Rysunek 6.40.6 Gotowy filtr: złożenie trzech rozmyć Gaussian Blur (Std Dev. = 1, 1.7, 3.4)

Na zakończenie warto wspomnieć o kilku typowych operacjach w edytorze filtru:

- aby przesunąć jeden z komponent w górę lub w dół, wystarczy go „złapać” LPM i „upuścić” w docelowym miejscu;

- aby usunąć komponent z filtra, zaznacz go, i z menu kontekstowego (PPM) wybierz polecenie Remove (Rysunek 6.40.7);

- aby usunąć cały filtr, zaznacz go, i z menu kontekstowego (PPM) wybierz polecenie Remove (Rysunek 6.40.8);

Rysunek 6.40.7 Usuwanie pojedynczego efektu

Rysunek 6.40.8 Usuwanie całego filtru

6.41  Odwzorowanie szczegółów powierzchni krytych płótnem

Pewne powierzchnie samolotów mogą być pokryte płótnem. Jest to stosunkowo gruba tkanina, naprężona jak bęben za pomocą impregnatów. Myśliwce z pierwszej połowy lat 40-tych zazwyczaj miały pokryte w ten sposób powierzchnie sterów i lotek.

Specyfiką takich powierzchni są wypukłości wzdłuż krawędzi żeber (Rysunek 6.41.1a). Płótno na szkielecie jest napięte, więc w dalszej odległości od żeber wygląda na zupełnie płaskie. (O ile krawędzie żeber są linią prostą. Jeżeli jest to wyraźna krzywa — pomiędzy żebrami pojawią się zagłębienia). Rysunek 6.41.1b) pokazuje typową mapę nierówności, imitującą pokrycie z płótna:

Rysunek 6.41.1 Odwzorowanie płóciennego pokrycia steru na mapie nierówności

Obraz mapy nierówności został narysowana w Inkscape (Rysunek 6.41.2):

Rysunek 6.41.2 Szczegóły obrazu nierówności pokrycia steru (warstwa Fabric)

W miejscu każdego żebra narysuj prostokąt, wypełniony liniowym gradientem odbitym (reflected) wzdłuż osi żebra,. Z obydwu stron prostokąta umieść zamykające półkola, wypełnione tym samym gradientem, ale w układzie kołowym (Rysunek 6.41.2). Wzmacniające paski tkaniny, naszyte na płótno w miejscach narażonych na przetarcia można łatwo odwzorować za pomocą jednolitych, białych obszarów o niewielkiej nieprzejrzystości (komponent A barwy wypełnienia rzędu 25%, czyli 64). Tam, gdzie takie fragmenty się nałożą, uzyskasz w naturalny sposób dodatkowe „pogrubienie”.

Czasami na płótnie widoczne były nierówności od leżących pod spodem nitów (w tym miejscu były to zawsze nity z łbem wypukłym). Właściwie należałoby każdy z nich zamodelować kołowym gradientem. Nity są jednak małe, a podczas eksportu do obrazu rastrowego i tak się rozmyją, więc zdecydowałem się odwzorować je tak samo, jak pozostałe tego rodzaju szwy.

Do uzyskania właściwej wypukłości wzdłuż żebra należy użyć białego gradientu (R, G, B = 100%, czyli 255), w którym kolejne węzły będą się różnić tylko nieprzejrzystością (A) . Nieprzejrzystość powinna się zmniejszać nie liniowo, a parabolicznie (Rysunek 6.41.3):

Rysunek 6.41.3 Gradient paraboliczny, wykorzystany do odwzorowania wypukłości żeber

Gradient paraboliczny dobrze odwzorowuje wypukłość wokół żebra nawet na dużo szerszych obszarach, niż te, pokazywane na poprzedniej stronie. Takie szersze obszary możesz stosować w konstrukcjach, gdzie zagłębienia płótna pomiędzy żebrami były głębsze.

Wykonanie obrazu nierówności całego steru zaczynasz od narysowania zespołu pojedynczego żebra — prostokąta i dwóch okrągłych końcówek, wypełnionych gradientem. Nanieś na nie także pasek, imitujący naszyte wzmocnienia — prostokąt o 25% nieprzejrzystości (patrz Rysunek 6.41.2). Dla ułatwienia dalszych kroków nadaj tym wszystkim elementom jakieś całkowite współrzędne położenia i wymiary. (Jeżeli zadeklarowane w Inkscape rozmiary Twojego obrazu to 2048x204 px, nie powinno być z tym problemu).

Potem po prostu kopiuj tę grupę w miejsce kolejnego żebra. Zazwyczaj po skopiowaniu będziesz musiał zmienić długość prostokątów i odpowiednio przesunąć półokrągłą końcówkę. Aby położenie (współrzędne X, Y) końcówki i szerokość (W) prostokąta były dobrze do siebie dopasowane — ustalaj nowe wartości numerycznie, w polu powyżej ekranu. (Dlatego przydatne jest posługiwanie się wymiarami bez części ułamkowych — bo można je szybko przeliczyć w pamięci).

Uzyskany obraz nierówności dla powierzchni krytych płótnem umieść na jakiejś wydzielonej warstwie (nazwijmy ją Fabric). Ustaw nieprzejrzystość takiej warstwy na np. na 50%. Umożliwi Ci to w wygodne sterowanie głębokością nierówności na lotkach i sterach modelu.

Mapa nierówności, którą na razie stworzyliśmy, pozwala uzyskać wrażenie lokalnych wypukłości na żebrach (por. Rysunek 6.41.1). Tak rzeczywiście wygląda naprężone płócienne pokrycie w sytuacji „statycznej”, gdy samolot stoi na lotnisku. Ale w locie to już inna sprawa: pod wpływem gwałtownych różnic ciśnienia płótno potrafi się deformować jak balon[1]!

Przygotujmy obraz takich dynamicznych wgłębień w powierzchniach sterów (Rysunek 6.41.4):

Rysunek 6.41.4 Rysowanie zagłębień w płótnie lotki w Inkscape (warstwa Fabric Bump)

Na ilustracji pokazuję to na przykładzie lotki. Obrysuj na oddzielnej warstwie (nazwijmy ją Fabric Bump) cały obszar powierzchni sterowej czarnym wielobokiem (Rysunek 6.41.4a). Potem ponad każdym żebrem umieść prostokąt (Rysunek 6.41.4b). Te prostokąty połącz w jedną siatkę i odejmij (Difference) od czarnego wieloboku (Rysunek 6.41.4c). Na koniec „rozmyj” uzyskany obrys zmodyfikowanym filtrem Rounded (Rysunek 6.41.4d). Ten filtr uzyskasz poprzez rozmycie standardowego filtra: Filters→Morphology→Smooth Edges dodaną na końcu operacją Gaussian Blur w której Standrad Deviation = 6 (Rysunek 6.41.5):

Rysunek 6.41.5 Filtr Rounded, wykorzystywany do rozmycia wgłębień w płótnie

Rysunek 6.41.6 przedstawia rezultat zastosowania samej warstwy Fabric (Rysunek 6.41.6a), z wypukłościami wzdłuż żeber i innymi szczegółami konstrukcyjnymi. Tak wygląda ster gdy samolot stoi na lotnisku (Rysunek 6.41.6b):

Rysunek 6.41.6 Efekt użycia samej warstwy z wypukłościami żeber (Fabric)

Rysunek 6.41.7 przedstawia rezultat uzyskany po nałożeniu na poprzednio użytą warstwę Fabric warstwy z obrazem zagłębień w płótnie (Fabric Bump: Rysunek 6.41.7a). Tak może się odkształcać poszycie steru podczas lotu (Rysunek 6.41.7b):

Rysunek 6.41.7 Efekt użycia dodatkowej warstwy z zagłębieniami płótna (Fabric Bump)

[1] (str. 342) Ten efekt zachodzi szczególnie drastycznie przy prędkościach większych od 500 km/h. Zetknięto się z nim samolotach myśliwskich na początku II Wojny Światowej. Aby uzyskać na tych maszynach lekkie (a w efekcie — czułe na każdy ruch pilota!) powierzchnie sterowe, kryto je płótnem. W 1940r okazało się jednak, że przy większych prędkościach rozdęte płótno lotek potrafiło bardzo utrudniać sterowanie w Spitfire (dlatego począwszy od odmiany Mk V zaczęto stosować lotki z poszyciem metalowym). Jesienią tego samego roku Luftwaffe zanotowała serię katastrof na pierwszych egzemplarzach Bf 109F: samoloty nie wychodziły z lotu nurkowego. Przyczyną okazał się z kolei „bąbel” powstający na poszyciu steru kierunku, który blokował ruch steru wysokości. Z podobnych przyczyn wprowadzono kryte metalem powierzchnie sterowe w P-51 i P-47. Wszystko zależy jednak od konkretnej konstrukcji. Na przykład F4U „Corsair” od prototypu do końca wojny miał nie tylko stery, ale całe końcówki skrzydeł kryte płótnem! (Odziedziczył je po bombowcu Chance-Vought „Vindicator”, bo tak było taniej).

6.42  Stworzenie filtru imitującego zabrudzenia

Przy tworzeniu tekstur dla modelu samolotu dużo czasu może zająć stworzenie efektu zabrudzeń, biegnących wzdłuż linii połączeń poszycia. W tej sekcji pokażę, jak można ten efekt uzyskać w Inkscape za pomocą filtra (Rysunek 6.42.1):

Rysunek 6.42.1 Cel: stworzenie filtra przekształcającego prosty rysunek połączeń w obraz „zabrudzeń”

Zawartość tej sekcji może także posłużyć także jako ilustracja praktycznego zastosowania różnorodnych efektów, dostępnych w Inkscape.

Stwórz nowy filtr i przypisz go do rysunku linii. Wstaw do edytora pierwszy komponent: Morphology. Ustaw go w tryb „zanikania” linii: Erode (Rysunek 6.42.2):

Rysunek 6.42.2 Użycie efektu Morphology:Erode do zmniejszenia grubości linii

Ustaw promień efektu (Radius) 1.5 - 2.0. Przy takich wartościach z oryginalnych linii prawie nic nie zostanie, ale nie przejmuj się tym. Im promień jest mniejszy, tym bardziej kontrastowe będą ciemne „odpryski” wokół linii na ostatecznym obrazie. Gdybyś ustawił go np. na wartość = 1.4, rezultat byłby zbyt wyrazisty.

Aby „zmiękczyć” trochę efekt „zanikania” linii, dodaj kolejny komponent Composite, „mieszający” zanikające linie z oryginalnym obrazem (Rysunek 6.42.3):

Rysunek 6.42.3 Użycie efektu Composite do stonowania efektu Morphology:Erode.

Dodajmy teraz zaburzenia: efekt Turbulence. Po jego dodaniu uważaj: dopóki nie zmienisz parametru Base Frequency, Inkscape może niczego nie pokazywać na ekranie (to chyba jakiś błąd programisty). Ustaw typ zaburzeń (Type) na Fractal Noise, o największej częstotliwości Base Frequency = 0.4 (Rysunek 6.42.4):

Rysunek 6.42.4 Ustawienia efektu Turbulence.

Choć nie ma to wielkiego znaczenia, ustaw także Octaves i Seed na wartość 5. Na razie wygląda na to, że zepsuliśmy sobie tą turbulencją cały efekt, ale wstrzymaj się z oceną do następnego kroku.

Teraz dodaj kolejny komponent: Displacement Map. Zasadę działania tego efektu najlepiej chyba ilustruje obrazek, załączony przez twórców Inkscape (Rysunek 6.42.5). Ustaw jedno z jego wejść na obraz przed zastosowaniem Turbulence, a drugie — po Turbulence. Wartość Scale ustaw na = 20. Ten parametr określa szerokość „rozrzutu” śladu linii (im mniejsza, tym rozrzut mniejszy).

Rysunek 6.42.5 Użycie efektu Displacement Map i Turbulence do „rozproszenia” linii obrazu.

Aby „wzmocnić” nieco centrum śladu linii, wstawmy tam bardzo słaby ślad ich oryginałów. Użyjemy do tego kolejnego komponentu Composite (Rysunek 6.42.6). Aby to scalenie wyglądało lepiej, rozjaśnimy całość o 20% (parametr K4).

Rysunek 6.42.6 Dodanie „centralnych” śladów linii i rozjaśnienie efektu za pomocą kolejnego efektu Composite.

Komponent Composite ma wiele trybów, ale zazwyczaj używam go do arytmetycznego sumowania obrazów (Operator = Arithmetic). Gdy pozostawiasz współczynnik K1 = 0, wówczas K2 określa udział obrazu podłączonego do wejścia i1, a K3 — do wejścia i2 (Rysunek 6.42.6). Oprócz tego istnieje jeszcze współczynnik K4, który jest wartością stałą, dodawaną do reszty. Wartości R,G,B,A każdego piksela obrazów i1 i i2 są podstawiane do wzoru: I = i1*K2 + i2*K3 + K4. Potem rezultat I jest „obcinany” do zakresu 0.0 .. 1.0.

Pod te „kropkowe” zabrudzenia pasowało mi podstawić jakieś rozmycie Gaussa o dość dużym Std Deviation — powiedzmy, równym 5.0 (Rysunek 6.42.7):

Rysunek 6.42.7 Obraz linii, rozmyty metodą Gaussa — dodatkowy komponent obrazu.

Teraz pozostaje złożyć „cienie” linii (Rysunek 6.42.7) z dotychczasowym rezultatem. Użyjmy do tego komponentu Blend. Ten efekt imituje operacje, użyte w trybach nakładania warstw: Multiply, Darken, Lighter, itp. Więcej na ich temat znajdziesz na str. 575 i dalszych. Rysunek 6.42.8 przedstawia rezultat złożenia efektów „rozproszenia” i „rozmycia” linii:

Rysunek 6.42.8 Złożenie za pomocą komponentu Blend „rozproszonych” i „rozmytych” linii.

Do połączenia tych dwóch obrazów wybrałem tryb „zwykły” — Normal (Rysunek 6.42.8). Daje to taki efekt, jak gdyby każdy ze składników znajdował się na oddzielnej warstwie. Wygląda to już całkiem nieźle, ale przydałoby się jakoś zaburzyć te gaussowskie rozmycia — biegną zbyt regularnie wzdłuż linii podziału blach.

Zaburzenie linii uzyskamy w ten sam sposób co poprzednio: wstaw przed rozmycie Gaussa efekt Turbulence. Tym razem ustaw w nim dwukrotnie mniejszą częstotliwością niż poprzednio (Rysunek 6.42.9):

Rysunek 6.42.9 Przygotowanie do zaburzenia rozmycia Gaussa — dodanie kolejnego efektu Turbulence.

Nieodłącznym następcą turbulencji jest Displacement Map (te efekty zawsze chyba trzeba używać w parze). Wstaw go pomiędzy Turbulence i Gaussian Blur. Rysunek 6.42.10 przedstawia, jak wyglądają „surowe” linie (Source Graphic), przetworzone przez zespół Turbulence + Displacement Map:

Rysunek 6.42.10 Efekt przetworzenia prostych linii przez złożenie Turbulence i Displacement Map.

Porównaj Rysunek 6.42.10 z efektem działania pokazanym przez Rysunek 6.42.5 (str. 347). Czy widzisz jak różne efekty można osiągnąć zmieniając częstotliwość komponentu Turbulence? Linie, które przedstawia Rysunek 6.42.5 zostały „rozbite w proch” za pomocą najwyższej częstotliwości: 0.4. Gdy użyliśmy częstotliwości dwa razy mniejszej (0.2 — por. Rysunek 6.42.10), to linie jeszcze się nie rozerwały. Zamiast tego wiją się po obrazie jak dym z papierosa.

Z połączenia komponentów Turbulence i Displacement Map można uzyskać dużo różnorodnych deformacji prostych linii — od „zacieków” po „rozproszenie”.

Włącz teraz ten zespół (Turbulence i Displacement Map) przed Gaussian Blur (Rysunek 6.42.11):

Rysunek 6.42.11 Złożenie obrazów: rozproszonego i rozmytego („turbulentnie”).

Pozostają teraz jeszcze drobne poprawki końcowe. Pierwszą z nich jest przyciemnienie za pomocą odpowiedniej Color Matrix (Rysunek 6.42.12):

Rysunek 6.42.12 O kontrastów obrazu poprzez przyciemnienie i zmniejszenie przejrzystości rozmyć.

W sumie macierz, którą przedstawia Rysunek 6.42.12, wykonuje dwie operacje równocześnie:

- zwiększa przejrzystość obiektu, przypisanego do filtra, o 50%;

- ściemnia całość — a przede wszystkim chodzi tu o rozproszone linie — o 60%;

Wizualnie spowodowało to przyciemnienie linii i ich tła o jakieś 10% (bo linie, choć ciemniejsze, stały się jednocześnie bardziej przejrzyste). Obszary pomiędzy liniami także stały się ciemniejsze, gdyż nie były zupełnie przeźroczyste — wcześniej rozjaśnialiśmy je o 20% (por. str. 347, Rysunek 6.42.6). W sumie „spłaszczyło” to kontrast pomiędzy filtrowanym obiektem, a jego tłem.

Na koniec dodajmy jeszcze jeden komponent Composite, by rozjaśnić efekt ostateczny (Rysunek 6.42.13):

Rysunek 6.42.13 Ostateczny obraz, rozjaśniony za pomocą komponentu Composite.

Element ten łączy obraz sprzed i po przetworzeniu przez Color Matrix. Robi to w trybie Default, który nie wymaga podania żadnych dodatkowych parametrów.

6.43  Wykorzystanie specjalnych czcionek True Type

Na samolocie można wyróżnić wiele większych i mniejszych napisów. Do większych należą numery seryjne, oznaczenia kodowe, a do mniejszych — napisy eksploatacyjne. Małe napisy można wykonać, używając czcionki o kształcie liter zbliżonym do oryginału — w Windows będzie to zazwyczaj Arial. Gorzej jednak z większymi elementami — tu każdy dostrzeże różnice! Czasami trzeba zakasać rękawy i po prostu je narysować.

Na szczęście ktoś specjalnie przygotował czcionkę True Type, o kształcie takim, jak szablony używane w USAAC/USAAF w latach 40-tych. Jest do pobrania z serwisu http://www.simmerspaintshop.com [1]. Możesz ją swobodnie używać do celów niekomercyjnych. Kopie tych plików znajdziesz wśród materiałów towarzyszących książce — umieściłem je w folderze source\stencil\ (por. str. 20).

Czcionki True Type można stosować tylko w środowisku Microsoft Windows. Możesz sprawdzić, czy istnieją gdzieś wersje tych czcionek dla Apple Mcintosh. Niestety, nie można ich używać pod Linuxem.

W source\stencil\ znajdują się dwa pliki *.ttf. Podstawowym jest USAAF_Stencil.ttf. Zawiera definicję „ogólnego” kroju pisma, o nazwie USAAF Stencil, stosowanego w Siłach Powietrznych USA podczas drugiej wojny światowej (Rysunek 6.43.1):

Rysunek 6.43.1 Czcionka USAAF Stencil.

Rysunek 6.43.2 Wszystkie znaki USAAF Stencil.

Aby USAAF Stencil stał się dostępny we wszystkich aplikacjach Windows, skopiuj plik USAAF_Stencil.ttf do systemowego folderu Windows: C:\Windows\fonts\.

Czcionka zawiera, oprócz liter pokazywanych przez Rysunek 6.43.1, także dodatkowe wersje poszczególnych znaków, różniące się układem „prześwitów”. (Autor naniósł wszystkie przypadki, jakie mógł zidentyfikować na podstawie zdjęć). W odróżnieniu od podstawowego zestawu, te dodatkowe litery są przypisane w sposób trochę przypadkowy, do różnych innych znaków (np. apostrof, cudzysłów, itp.) Najwygodniejszą metodą wyboru takich liter jest skorzystanie ze standardowej aplikacji Windows „Tabela znaków”. Ten program znajdziesz w menu Windows: Start →Akcesoria→Narzędzia systemowe→Tablica znaków (Rysunek 6.43.2)

Używając w Inkscape tekstów napisanych czcionką USAAF_Stencil, możesz błyskawicznie stworzyć takie elementy oznakowania samolotu, jak napis na dolnej powierzchni płata (Rysunek 6.43.3) :

Rysunek 6.43.3 Zastosowanie czcionki USAAF_Stencil — odtworzenie napisów na samolocie.

Gdybyś nie miał do dyspozycji tego zestawu znaków — trzeba byłoby podstawić „pod spód”, jako tło, jakiś wzorzec. Zapewne byłaby to zeskanowana kopia schemat malowania. Potem musiałbyś obrysować każdą literę napisu „U.S. ARMY”. Zajęłoby to dłuższą chwilę. A tu — do narysowania pozostały mi dwa małe kwadraty, udające „kropki” w napisie „U.S.” (kropek nie ma w zestawie USAAF_Stencil).

W folderze source\stencils znajdziesz jeszcze drugi plik: USAAF_Serial_Stencil.ttf. Ta czcionka jest uzupełnieniem USAAF_Stencil. Zawiera wyłącznie pomniejszone definicje cyfr, z podkreślonymi (poszerzonymi) „prześwitami”. Według twórcy czcionki, „takie litery będą lepiej wyglądać na małych napisach, takich jak numery seryjne” (Rysunek 6.43.4):

Rysunek 6.43.4 Czcionka USAAF Serial Stencil — do małych numerów seryjnych.

[1] (str. 352) Oprócz wzorów USAAF, znajdziesz tam także czcionki używane w RAF i w Luftwaffe, oraz jeden krój rosyjski (nie jestem jednak pewien, czy to nie jest zwykły Arial, tyle że z podzbiorem znaków dla cyrylicy).

6.44  Wektoryzacja bitmap

Czasami trzeba odwzorować na modelu jakieś skomplikowane godła lub inne oznaczenia. Na przykład — na każdej z łopat śmigła P-40 był naniesiony znak firmowy „Curtiss Electric”. Rysunek 6.44.1a) przedstawia „surowy” obraz, wycięty z zeskanowanej strony monografii:

Rysunek 6.44.1 „Surowy” obraz naklejki z łopaty śmigła Curtiss Electric, zeskanowany z planszy barwnej

W takiej postaci obraz pokryty jest rastrem o nieco innym odcieniu (Rysunek 6.44.1b). Może to jest efekt druku w technologii offsetu?. Aby te kropki wyeliminować, poddaj go „wstępnej obróbce” w GIMP:

- Image→Scale, (zmniejsz obraz do 50%, z filtrem Linear) — to eliminuje część „kropek”;

- Color→Posterize (zmniejsz liczbę barw do 6);

- Wybrać (Select By Color) na napisie Curtiss Electric Propellers „kropki” innych kolorów niż pomarańczowy, i zamalować je na pomarańczowo (barwą pobraną z napisu);

- Powtórnie wywołaj Color→Posterize (zmniejszyć liczbę barw do 3);

- Wybrać (Select By Color) na napisie Curtiss Electric Propellers „kropki” innych kolorów niż pomarańczowy. Zamalować je barwą pomarańczową pobraną z napisu;

Powinieneś uzyskać w ten sposób uproszczony obraz, o liczbie barw zredukowanej do minimum (Rysunek 6.44.2):

Rysunek 6.44.2 Ten sam obraz, po ujednoliceniu barw (do trzech)

Tak przygotowany obraz załaduj do Inkscape (Rysunek 6.44.3):

Rysunek 6.44.3 Rastrowy wzorzec, załadowany do Inkscape

Przyjrzyj się uważnie temu wzorcowi i zastanów, które szczegóły szybciej i dokładniej można narysować od podstaw w Inkscape, a które lepiej będzie uzyskać poprzez automatyczne odwzorowanie kształtu. (To polecenie nie działa idealnie — czasami pozostawia jakieś niewielkie przekłamania). Osobiście, patrząc na Rysunek 6.44.3, zdecydowałem się automatycznie przenieść tylko główny napis: „Curtiss Electric Propellers”. Szczególnie sam „Curtiss” jest bardzo fantazyjny i trudno byłoby go narysować od podstaw.

Aby stworzyć wektorową kopię obrazu rastrowego, zaznacz go na rysunku i wywołaj polecenie Path→Trace Bitmap. Spowoduje to pojawienie się okna dialogowego z opcjami wykrywania kształtu (Rysunek 6.44.4):

Rysunek 6.44.4 Okno dialogowe polecenia Trace Bitmap.

Możesz poeksperymentować chwilę z różnymi opcjami wykrywania kształtu i rezultatami ich działania, pokazywanymi obok, w obszarze podglądu (Preview). Przekonasz się, że każda z nich tworzy efekt znacznie różniący się od pozostałych. W tym konkretnym przypadku zdecydowałem się użyć metody Color quantization, z Colors = 3, gdyż z takim ustawieniem „wydobywa” z obrazu rastrowego sam napis „Curtiss Electric Propellers”. Niczego więcej nie potrzebuję, więc oszczędzę sobie w ten sposób usuwania zbędnych rezultatów wektoryzacji.

Po naciśnięciu w oknie Trace Bitmap przycisku OK., Inkscape stworzy nową ścieżkę, o konturach odpowiadających kształtom, które wykrył w obrazie rastrowym (Rysunek 6.44.5):

Rysunek 6.44.5 Rezultat polecenia Trace Bitmap.

Domyślnie nowy kontur powstał na tej samej warstwie, na której umieszczony jest rastrowy pierwowzór. Aby ułatwić sobie dalszą pracę, przenieś go na jakąś warstwę powyżej. Będziesz mógł wtedy łatwo manipulować przejrzystością wzorca.

Ogólny kształt, uzyskany w wyniku polecenia Trace Bitmap, wygląda poprawnie. Gdy jednak wyłączysz na chwilę widoczność leżącego pod spodem wzorca, zaczniesz dostrzegać pewne różnice. Podczas śledzenia kształtu Inkscape ma tendencję do zaokrąglania wszelkich ostrych narożników i uskoków. Takie drobne zaokrąglenia składają się jednak na ogólny efekt. Warto więc skorygować nieco uzyskany kształt, nadając odpowiednim narożnikom z powrotem kąty ostre (Rysunek 6.44.6):

Rysunek 6.44.6 „Wyostrzanie kątów” na ścieżce stworzonej poleceniem Trace Bitmap.

Tak jak wspomniałem wcześniej, pozostałe elementy obrazu prościej jest narysować od podstaw. Używając obrazu rastrowego jako „podkładki”, narysuj jedną łopatę śmigła, a następnie skopiuj ją i obrócić o 120º, by uzyskać dwie pozostałe. Tło, wraz z wewnętrznymi kręgami, narysuj jako zespół kół, z których niektóre mają białe obwódki. Napis „T.M. REG. U.S. PAT. OFF.” bardzo ładnie można odwzorować za pomocą jakiejś prostej czcionki bezszeryfowej — nawet standardowej Arial.

Gorzej z białymi napisami: „CONSTANT SPEED”, „SELECTIVE PITCH”, „FEATHERING”. Użyto do nich bardzo podobnej czcionki, co w napisie „Electric Propellers”. Nie udało mi się znaleźć podobnej, a wektoryzacja tego kształtu nie wyszłaby zbyt dobrze — za dużo byłoby „babrania” się z poprawianiem kątów ostrych. Ostatecznie zdecydowałem się użyć innego kroju pisma. Choć nie jest takie samo, to na pierwszy (a może i drugi) rzut oka nie razi, szczególnie gdy nigdzie obok nie widać oryginału[1] (Rysunek 6.44.7):

Rysunek 6.44.7 Efekt finalny — całkowicie wektorowy obraz rastrowego pierwowzoru

[1] (str. 357) Swoją drogą — wygląda na to, że datujący się z początku XX w. krój markowego napisu „Coca-Cola” jest wykonany w bardzo popularnym w tym czasie stylu. Tyle, że inne firmy, używające w swoich logo podobnych czcionek, już zdążyły poznikać (pozostał jeszcze „Ford”).

Rozdział 7.  Blender — ogólne

W tym rozdziale przedstawione są zagadnienia, które dotyczą więcej niż jednego okna (edytora) Blendera lub więcej niż jednego trybu pracy.

Pomijam tu zagadnienia, które przedstawiłem wcześniej (Tom II). Były to:

- wprowadzenie do programu;

- metody zmiany projekcji (zoom, pan, obrót wokół obiektu);

7.1  Instalacja

Ta sekcja opisuje instalację Blendera ze spakowanego pliku *.zip. Uważam, że ta metoda jest równie dobra co użycie programu instalacyjnego. Za to wiesz dokładnie, co i gdzie zostało zmienione na Twoim komputerze.

Zacznij od głównej strony tego programu: http://www.blender.org . Jest na niej umieszczony skrót do plików instalacyjnych (Rysunek 7.1.1):

Rysunek 7.1.1 Strona główna Blendera

Pobierz z jednego z dostępnych serwerów odpowiedni plik *.zip (Rysunek 7.1.2):

Rysunek 7.1.2 Pobieranie pakietu instalacyjnego

Pobrany w ten sposób plik rozpakuj do folderu C:\Program Files (może to być także inny folder) (Rysunek 7.1.3):

Rysunek 7.1.3 Rozpakowanie plików Blendera

Potem zmień nazwę rozpakowanego folderu ze specyficznej na jakąś „ogólną”: np. Blender (Rysunek 7.1.4):

Rysunek 7.1.4 Zmiana nazwy folderu Blendera

Aby uruchomić Blender, należy dwukrotnie kliknąć na pliku blender.exe, umieszczonym w tym katalogu (Rysunek 7.1.5):

Rysunek 7.1.5 Uruchomienie Blendera

Oczywiście, wygodniej będzie jeżeli skopiujesz skrót do tego pliku na pulpit i/lub do menu Start.

Warto także przypisać Blender jako domyślny edytor plików o rozszerzeniu *.blend [1].

Chwilę po uruchomieniu zobaczysz okno Blendera wraz z ekranem powitalnym (Rysunek 7.1.6):

Rysunek 7.1.6 Ekran po uruchomieniu Blendera

[1] (str. 361) To najwygodniej zrobić, gdy już zapiszesz jakąś scenę na dysku. Wystarczy wówczas w Eksploratorze Windows z menu kontekstowego wybrać polecenie Otwórz za pomocą… i wskazać blender.exe. Ci z Was, którzy mają nieco większe doświadczenie z Windows, mogą w Eksploratorze wywołać polecenie Narzędzia→Opcje folderów, i tam w zakładce Typy plików zmienić nazwę typu np. na „Blender file”.

7.2  Otwieranie pliku

Wybierz z menu Blendera (nagłówek okna Info) polecenie File→Open (lub naciśnij Ctrl-O) (Rysunek 7.2.1):

Rysunek 7.2.1 Wybór polecenia z menu

Spowoduje to chwilowe wyświetlenie na całym ekranie Blendera w okno wyboru plików (File Browser) – Rysunek 7.2.2:

Rysunek 7.2.2 Okno wyboru pliku

Jak widać, Blender ma własne okno do wskazywania pliku – jest to konsekwencja decyzji o zastosowaniu własnego interfejsu użytkownika. Omówmy pokrótce jego obsługę. Z panelu System, po lewej stronie, można wybrać dysk. Z niżej położonego panelu Bookmarks można wybrać jeden z typowych folderów, a z panelu Recent — ostatnio otwierany folder (Rysunek 7.2.3):

Rysunek 7.2.3 Okno wyboru pliku — elementy interfejsu użytkownika

Pobierz towarzyszący tej książce plik la5.zip (por. str. 20). Jego zawartość rozpakowuje się do folderu o nazwie model\la5. Załóżmy że umieściłeś te pliki na jakimś dysku E:, więc teraz otworzymy w Blenderze plik E:\model\la5\la5.blend.

Otwórz w oknie wyboru plików dysk E:\ (Rysunek 7.2.4):

Rysunek 7.2.4 Nawigacja w oknie wyboru plików

Wystarczy kliknąć (LPM) w nazwę folderu model, aby go otworzyć. W podobny sposób przejdź do folderu la5 (Rysunek 7.2.5):

Rysunek 7.2.5 Zawartość folderu model

Kliknij w plik, który chcesz otworzyć – jego nazwa pojawi się w polu na nazwę pliku do otwarcia (Rysunek 7.2.6). (Można było, oczywiście, wpisać ją z klawiatury, ale komu by się chciało...):

Rysunek 7.2.6 Wybór i otworzenie pliku Blendera

Po naciśnięciu przycisku Open Blender File plik zostanie załadowany. W zależności od mocy obliczeniowej Twojego komputera, może to zająć Blenderowi od jednej do paru sekund.

Warto jeszcze wspomnieć o kilku innych poleceniach z menu File (okna Info), związanych z otwieraniem plików:

- File→Open Recent: pozwala otworzyć jeden z dziesięciu ostatnio zapisywanych plików;

- File→Recover Last Session: pozwala odzyskać plik, który był załadowany gdy ostatni raz zamykałeś Blender (np. poleceniem File→Quit). Podczas zamykania Blender nie ostrzega, że aktualny plik zawiera niezapisane zmiany. Zamiast tego po prostu zawsze go zapisuje w folderze tymczasowym, pod nazwą quit.blend. To polecenie otwiera właśnie ten plik. Pozwala to odzyskać niezapisane zmiany, o ile zorientowałeś się w porę i nie zamknąłeś Blendera po raz kolejny…

- File→Recover Auto Save… Jeżeli masz w konfiguracji programu włączone okresowe zapisywanie kopii pliku, tym poleceniem możesz go otworzyć po np. zawieszeniu programu. Więcej o odtwarzaniu danych — p. str. 376.

7.3  Zapisanie pliku

Aby zapisać aktualnie otwarty plik, wybieramy polecenie File→Save (Rysunek 7.3.1). Alternatywnie możesz nacisnąć na klawiaturze Ctrl-S — to skrót do tego polecenia:

Rysunek 7.3.1 Polecenie - zapisanie pliku

Jeżeli chcesz zapisać plik pod inną nazwą, wybierz polecenie File→Save As. Analogicznie jak przy otwarciu pliku (por. str. 362), na ekranie pojawi się na chwilę okno wyboru pliku (Rysunek 7.3.2):.

Rysunek 7.3.2 Okno zapisu pliku

Zwróć uwagę, że w polu z nazwą do zapisania domyślnie pozostaje oryginalna nazwa pliku. Aby zapisać go pod nową nazwą, musisz ją zmienić — wpisując z klawiatury lub klikając w inny plik (który chcesz nadpisać). Zapis pod nową nazwą nastąpi po naciśnięciu przycisku Save As Blender File.

Osobiście używałem tego polecenia co najmniej raz dziennie – do zapamiętania kolejnej wersji pliku. Nazywałem to „wersją dzienną”. Takie wersje bywają przydatne. Na początku pracy z Blenderem, zdarzało mi się poprzestawiać dziesiątki parametrów i nie uzyskać oczekiwanego efektu. Czułem, że szukając rozwiązania zabrnąłem w „ślepą uliczkę”. Wycofanie dokonanych zmian do stanu początkowego wyglądało często na bardzo pracochłonne, a czasami na praktycznie niemożliwe. O wiele prościej było zacząć jeszcze raz od „czystej” wersji z poprzedniego dnia. Twórcy Blendera z myślą o takich jak ja, dodali do okna zapisu pliku (Rysunek 7.3.2) dodatkowy „gadżet”. Przyciski [+], [-] lub klawisze + i - z klawiatury numerycznej zwiększają lub zmniejszają cyfrę (numer wersji) na końcu nazwy pliku.

Z innych poleceń które mogą okazać się przydatne, warto wspomnieć:

- SaveScreenshot: zapisuje obraz aktualnego ekranu Blendera. Polecenie dostępne tylko za pomocą skrótu: Ctrl-F3. Format obrazu (JPG, PNG, ...) — ustalamy w oknie właściwości (Properties), zestaw Render, panel Output;

- Image→Save As Image (F3): Polecenie z nagłówka okna UV/Image Editor. Zapisuje wyrenderowany finalny obraz sceny do pliku o wskazanej nazwie. Domyślnie proponuje taki sam format pliku rastrowego, jak Save Screenshot, ale można go zmienić w panelu Save As Image okna File Browser.

7.4  Ustawienie środowiska pracy

Szczegóły wyglądu i działania środowiska Blendera są wynikiem złożenia dwóch grup ustawień. Są to:

- ustawienia „ogólne” z okna User Preferences. Są one zapisywane do pliku o nazwie userpref.blend gdy naciśniesz w tym oknie przycisk Save User Settings. Oznacza to, że te ustawienia nie są związane z jakimkolwiek aktualnym rysunkiem. Traktuj je jako konfigurację Twojej instalacji Blendera;

- ustawienia „lokalne”, przechowywane w każdym pliku Blendera. Dotyczą one przede wszystkim interfejsu użytkownika: układ okien, alternatywnych układów ekranu (screen layouts). Gdy nie załadowałeś jeszcze żadnego pliku lub gdy tworzysz nowy plik poleceniem File→New, Blender wykorzystuje tzw. plik startowy, o nazwie startup.blend. (Stąd zawartość tego pliku decyduje, jak wygląda ekranu programu zaraz po uruchomieniu. Możesz ją nadpisać poleceniem File→ Save Startup File) ;

W pliku source.zip (por. str. 20) umieściłem foldery z konfiguracją Blendera, której używałem pisząc tę książkę. Możesz je wgrać tak, jak jest to pokazane na str. 375.

Jeżeli jednak nie czujesz się w takich operacjach na folderach zbyt pewnie, istnieje inna metoda. Otwórz w Blenderze (File→Open, por. str. 362) wzorcowy plik source\config\startup.blend. A potem w oknie User Preferences naciśnij przycisk Save User Settings i wywołaj polecenie File→Save Startup File, aby zachować także układ ekranu (Rysunek 7.4.1):

Rysunek 7.4.1 Przeniesienie ustawień z pliku startup.blend, dostarczonego z tą książką

I to wszystko! Kopia tego pliku, wraz z plikiem userpref.blend zostanie zapisana w Twoim profilu użytkownika jako aktualna konfiguracja Blendera. Dodatkowo możesz jeszcze zainstalować dodatki (add-ons), z których będziemy korzystać. (por. str. 383). Pliki tych dodatków umieściłem w katalogu source\scripts\addons.

Blender jest już skonfigurowany do dalszej pracy. Pierwszą różnicą, którą zapewne zauważyłeś, są jaśniejsze okna 3D View (Rysunek 7.4.1). Domyślne, ciemne tło z Blendera 2.5/2.6 źle wyglądało na ilustracjach dla tej książki. Dlatego zdecydowałem się używać schematu barw, do którego przywykłem, używając Blendera 2.4.

Abyś jednak wiedział, co i dlaczego jeszcze zmieniłem, przejdę przez kolejne sekcje okna User Preferences. Pokażę na nich, jakie ustawienia standardowe zostały zmienione.

W sekcji Interface — włączyłem View Manipulation: Rotate Around Selection (Rysunek 7.4.2). To ułatwi obracanie widoku wokół detali. Oprócz tego wyłączyłem Manipulator (to taki pomocniczy „gadżet” w oknie 3D View). Niektórzy uważają, że ułatwia manipulację obiektami w przestrzeni trójwymiarowej. Ja jednak należę do „starej szkoły” Blendera, która takiego udogodnienia nie znała:

Rysunek 7.4.2 Ustawienia Blendera — sekcja Interface

Jak pokazuje to Rysunek 7.4.2, w sekcji Interface możesz opcjonalnie przełączyć jeszcze parę innych opcji.

W sekcji Editing — włączyłem New Objects:Align to:View (Rysunek 7.4.3). Dzięki temu każdy obiekt, który stworzysz, powstanie w płaszczyźnie równoległej do aktualnego widoku. (Inaczej, aby odpowiednio zorientować nowo powstały element, musiałbyś go dodatkowo obracać).

Rysunek 7.4.3 Ustawienia Blendera — sekcja Editing

W sekcji Input — włączyłem opcję Emulate Numpad (Rysunek 7.4.4). Choć jest to praktyczne przede wszystkim dla notebooków, może okazać się przydatne także na tradycyjnych komputerach. (Pozwoli utrzymywać lewą rękę ponad centrum klawiatury, a nie przesuwać ponad całą jej szerokością).

Rysunek 7.4.4 Ustawienia Blendera — sekcja Input

Zwróć uwagę, że w tej sekcji możesz zmienić konfigurację skrótów poleceń Blendera (Rysunek 7.4.5):

Rysunek 7.4.5 sekcja Input — rozwinięta grupa poleceń Window

Dwa dodatkowe klawisze w nagłówku okna tej sekcji pozwalają także zapisywać i odczytywać skróty do poleceń z pliku (Rysunek 7.4.6):

Rysunek 7.4.6 Przyciski w nagłówku okna w sekcji Input

W sekcji Add-Ons (programowe rozszerzenia Blendera) włączyłem Dynamic Spacebar Menu (Rysunek 7.4.7):

Rysunek 7.4.7 Ustawienia Blendera — sekcja Add-Ons

W sekcji Themes, jak już o tym wspominałem, pozmieniałem kolory widoku 3D View (Rysunek 7.4.8):

Rysunek 7.4.8 Ustawienia Blendera — sekcja Themes

Sekcja File zawiera domyślne ścieżki, na których Blender ma poszukiwać różnych rodzajów plików. Niczego w niej nie musiałem zmieniać. (Rysunek 7.4.9):

Rysunek 7.4.9 Ustawienia Blendera — sekcja File

Wreszcie sekcja System (Rysunek 7.4.10). Tu także niczego nie zmieniałem:

Rysunek 7.4.10 Ustawienia Blendera — sekcja System

Przy okazji omawiania sekcji System wspomnę o pewnym udogodnieniu. W domyślnej konfiguracji Blendera wysunięcie przybornika z boku okna 3D View powoduje zmniejszenie wyświetlanego obrazu (Rysunek 7.4.11):

Rysunek 7.4.11 Pomniejszanie obrazu przy otwarciu przybornika

Mówiąc szczerze, niezbyt lubię ten efekt. Na szczęście w Blenderze 2.66 pojawiła się alternatywa: zaznacz w zakładce System opcję Region Overlap i przełącz Window Draw Method na Triple Buffer (Rysunek 7.4.12):

Rysunek 7.4.12 Zmiana parametrów w sekcji User Preferences:System

W rezultacie tło przyborników stało się półprzejrzyste, i teraz „wysuwają się” ponad obrazem (Rysunek 7.4.13):

Rysunek 7.4.13 Półprzeźroczyste tło przybornika, zachowujące oryginalny rozmiar obrazu

W stosunku do oryginalnej wersji Blendera, wprowadziłem także parę zmian w domyślnym układzie ekranu. Nie było to niezbędne, ale często łapałem na tym, że ciągle w ten sam sposób poprawiam zawartość nowo utworzonego rysunku. Po co? Zapisałem raz poprawiony plik jako domyślny, i w ten sposób oszczędziłem sobie ciągłej roboty (Rysunek 7.4.14):

Rysunek 7.4.14 Trzy widoki robocze

Zwróć uwagę, że usunąłem ze sceny “pudełko”, które Blender domyślnie umieszcza pośrodku sceny. (Zawsze pierwszą rzeczą, którą robiłem, było pozbycie się tego obiektu). Przesunąłem także obiekty związane wyłącznie z renderingiem — kamerę i lampę — na warstwę 20 (Rysunek 7.4.15):

Rysunek 7.4.15 Warstwa obiektów związanych z renderingiem: kamery i lampy

To taka moja konwencja — oczywiście, możesz to sobie zorganizować inaczej.

7.5  Pliki konfiguracji Blendera

Gdy choć raz wywołasz w Blenderze polecenie File→Save Startup File, lub naciśniesz w oknie User Preferences przycisk Save User Settings, Blender zapisze w Twoim profilu użytkownika zmienioną konfigurację. Stosunkowo trudno znaleźć folder, zawierający te dane. Jest tworzony (przynajmniej w Windows) w ukrytym katalogu Application Data. W różnych wersjach Windows Application Data znajduje się w różnych miejscach profilu użytkownika. W dodatku Eksplorator Windows w każdej wersji językowej systemu wyświetla nazwę tego folderu w lokalnym języku (podobnie jak My Documents) co pogłębia zamieszanie. (Nawet gdybym podał ścieżkę do tego folderu dla każdej wersji Windows, część użytkowników i tak by go nie znalazła).

Zamiast tego przygotowałem w pliku source.zip (por. str. 20) skrót Blender configuration. Wykorzystuje zmienną środowiskową Windows (APPDATA) by otworzyć w Eksploratorze Windows Twój folder z konfiguracją Blendera (Rysunek 7.5.1):

Rysunek 7.5.1 Otwarcie folderu na konfiguracje Blendera

Każda z wersji Blendera przechowuje tu swoje pliki w oddzielnym katalogu (Rysunek 7.5.1). Dzięki temu możesz z nich korzystać jednocześnie (np. aby sprawdzić, jak coś działało poprzednio). Gdy instalujesz nową wersję programu, przy pierwszym uruchomieniu Blender proponuje skopiowanie konfiguracji z wersji poprzedniej.

Wewnątrz katalogu każdej wersji znajdują się dwa podfoldery:

Rysunek 7.5.2 Zawartość subfolderu config

- config\: zawiera dwa ważne pliki (Rysunek 7.5.2) Pierwszy z nich nazywa się userpref.blend. Są w nim przechowywane wszelkie ustawienia z okna User Preferences, zapisane przyciskiem Save User Settings. Drugim plikiem jest startup.blend. Zawartość tego pliku Blender wyświetla bezpośrednio po uruchomieniu, lub gdy wybierzesz polecenie File→New. Plik startup.blend determinuje m.in. domyślny układ ekranu Blendera Możesz go zastąpić jakimś bieżącym rysunkiem, wywołując polecenie File→Save Startup File.

Rysunek 7.5.3 Zawartość scripts\addons

- scripts\addons\: w podfolderze addons Blender przechowuje dodatki (add-ons) zainstalowane przez użytkownika (Rysunek 7.5.3, por. także str. 383). Dzięki temu są przenoszone z całą konfiguracją przy aktualizacji do nowej wersji programu.

W operowaniu konfiguracją Blendera nie ma żadnej „ukrytej magii” . Wystarczy zmieniać odpowiednie pliki. Na przykład, instalację grupy dodatków (add-on), możesz wykonać na dwa sposoby:

- łatwy: używając GUI Blendera (tak jak to jest opisane na str. 383) — ale wtedy musisz wgrywać po kolei każdą wtyczkę;

- zaawansowany: jednym ruchem skopiować wszystkie pliki wtyczek do podkatalogu scripts\addons\ folderu z konfiguracją Blendera. Wymaga to tylko wiedzy, gdzie ten folder się znajduje, i za pierwszym razem należy po prostu tam założyć takie podkatalogi;

Podobnie możesz się przełączać pomiędzy się różnymi konfiguracjami Blendera — wystarczy przechowywać pod inną nazwą lub w innym miejscu alternatywne pliki userpref.blend i startup.blend. Gdy skopiujesz do folderu config\ ich nowe wersje — Blender posłuży się nimi przy najbliższym uruchomieniu .

Abyś mógł podążać za przykładami, umieszczonymi w tej książce, w pliku source.zip dostarczyłem podkatalogi config i scripts z odpowiednią konfiguracją Blendera. Na wszelki wypadek najpierw skopiuj wszystkie pliki z Twoją oryginalną konfiguracją w jakieś inny miejsce. Potem po prostu przenieś odpowiednie te dwa podkatalogi z source.zip do folderu z konfiguracją Twojej aktualnej wersji Blendera (Rysunek 7.5.4):

Rysunek 7.5.4 Przeniesienie konfiguracji Blendera, wymaganej dla tej książki

7.6  Kopia bezpieczeństwa i odtwarzanie

W tej sekcji opiszę sposób „awaryjnego” odzyskiwaniu pliku. Uczciwie mogę powiedzieć, że przez długi czas (pierwszych 7-8 miesięcy pracy) Blender zachowywał mi się bardzo stabilnie. Na palcach jednej ręki mógłbym policzyć sytuacje, gdy straciłem choć trochę pracy z powodu niespodziewanego zakończenia przez błąd w programie. Potem, gdy model przekroczył ok. 500 tys. ścian, a ja zacząłem używać różnych zaawansowanych funkcji, bywało, że czasami Blender mi się nagle „wysypał”. W każdym razie – istnieje pewien sposób, pozwalający odzyskać choć część pracy od ostatniego zapisu.

W oknie User Preferences przejdź do sekcji File (Rysunek 7.6.1):

Rysunek 7.6.1 Włączenie automatycznego zapisu

Ważne są tu dwie kontrolki:

- Opcja Auto Save Temporary Files: moja rada: pozostaw ją zawsze włączoną, jak na ilustracji;

- Pole numeryczne Timer: tu wpisz, co ile minut ma być zachowywany stan pliku;

Gdy Blender nagle zgłosił „fatalny” błąd i został zamknięty przez system operacyjny, nie popadaj w rozpacz. Jeżeli miałeś włączony Auto Save, możesz jeszcze odzyskać swoją pracę. Uruchom ponowie Blender, a następnie wywołaj polecenie File→Recover Auto Save (Rysunek 7.6.2):

Rysunek 7.6.2 Przejście do odzyskiwania pliku

Blender otworzy wówczas w oknie wyboru plików Twój folder tymczasowy (Rysunek 7.6.3):

Rysunek 7.6.3 Wybór pliku do odzyskania

Dużo tutaj plików Blendera, prawda? I w dodatku nazwy wszystkich to jakieś niezrozumiałe, numeryczne nazwy! To właśnie efekty automatycznego zachowywania. Blender zapisuje plik pod nazwą, która jest tzw. „identyfikatorem procesu” (ang. process ID — skrót: PID). Co prawda — nie wiesz, jaki numer procesu miała sesja Blendera, która zakończyła się tym fatalnym błędem. Nie przejmuj się jednak tym: znajdziemy potrzebny plik, posługując się czasem jego modyfikacji. Włącz w nagłówku okna wyświetlanie szczegółów opisu plików (Rysunek 7.6.3). Następnie uporządkuj je malejąco według daty. Przypuszczalnie pierwszy od góry plik pochodzi z ostatnich kilkunastu minut — i to jest ten, którego szukamy! Zaznacz go (kliknięciem) i otwórz w Blenderze. Gdy się przekonasz, że to jest właściwy rysunek, zapisz go pod inną nazwą w tym samym folderze, w którym trzymasz poprzednie wersje swoich prac. Potem po prostu pracuj dalej. Robiłem tak niejeden raz. Pliki, odzyskane w ten sposób, są zupełnie normalne — bez żadnych luk w danych, czy skaz w zapisie.

7.7  Kursor 3D — ustalanie położenia

Kursor 3D (3D Cursor) jest w Blenderze specjalnym punktem w przestrzeni. Wyznacza “aktualną pozycję”, która jest używana podczas dodawania do sceny nowych obiektów. Może być także wykorzystany jako punkt odniesienia podczas obrotu, zmiany skali, lub odbicia lustrzanego (Mirror).

Położenie kursora 3D jest oznaczane niewielkim krzyżem, otoczonym czerwono-białą obwódką (Rysunek 7.7.1):

Rysunek 7.7.1 Kursor 3D na scenie

Kliknięcie LPM można traktować jako pierwszą, przybliżoną metodę wskazania położenia kursora. Z oczywistych przyczyn nie jest specjalnie dokładnie. Potem możesz zawsze dosunąć kursor do najbliższego węzła “kratki pomocniczej” (grid), która jest naniesiona na płaszczyznę widoku. Naciśnij w tym celu Shift-S (Object→Snap), i wybierz z menu Snap polecenie Cursor to Grid (Rysunek 7.7.2):

Rysunek 7.7.2 Dosunięcie kursora do węzła siatki pomocniczej (grid)

W podobny sposób możesz także wybrać polecenie Cursor to Selected. W trybie obiektu (Object Mode) kursor zostanie umieszczony w środku (tzn. punkcie odniesienia) aktualnie zaznaczonego obiektu. W trybie edycji siatki (Edit Mode) kursor przesunie się do aktualnie zaznaczonego wierzchołka

Podczas modelowania prawie przez cały czas używam kursora 3D.

Polecenie Snap→Cursor to Selected, w połączeniu ze zmianą skali do zera (często tylko wzdłuż jednej osi) pozwala szybko ustawić obiekty lub wierzchołki dokładnie w takim położeniu, jakie jest potrzebne.

Dokładne położenie kursora 3D można także po prostu wpisać. Wywołaj przybornik Properties (N, albo View→Properties). W przyborniku, w panelu 3D Cursor znajduje się sekcja Location (Rysunek 7.7.3):

Rysunek 7.7.3 Ustalanie położenia kursora w przyborniku Properties:View

Możesz z niej bezpośrednio odczytać lub wpisać liczbowe wartości współrzędnych X, Y, Z kursora.

Warto wspomnieć o jeszcze jednej możliwości. Pokażę ją na przykładzie modelu walca (Rysunek 7.7.4):

Rysunek 7.7.4 Przykładowy model walca

Gdy klikniesz gdzieś w oknie 3D View LPM, Blender umieści tam kursor 3D, nie zmieniając jednak jego położenia wzdłuż osi prostopadłej do ekranu (Rysunek 7.7.5):

Rysunek 7.7.5 Zwykłe przenoszenie kursora 3D za pomocą myszki

Włącz jednak oknie User Preferences włączysz opcję Cursor Depth (Rysunek 7.7.6, por. także str. 368, Rysunek 7.4.2):

Rysunek 7.7.6 Włączenie opcji Auto Depth

Wówczas, gdy klikniesz LPM w jakieś miejsce na powierzchni modelu, kursor zostanie umieszczony tuż ponad jego powierzchnią (Rysunek 7.7.7):

Rysunek 7.7.7 Przenoszenie kursora 3D z włączoną opcją Cursor Depth

Niestety, w tym trybie kursor nigdy nie jest umieszczany dokładnie na powłoce klikniętej siatki. W dodatku jego odległość od ściany wydaje się zależeć od kąta pochylenia do płaszczyzny widoku. Wydaje mi się, że ten brak dokładności praktycznie uniemożliwia wykorzystanie tego trybu do modelowania konstrukcji, takich jak samolot.

Podczas budowy modelu prezentowanego w tej książce, tryb Cursor Depth był wyłączony.

Zdecydowałem się jednak wspomnieć o tej opcji. Nie mogę bowiem wykluczyć, że przy innym stylu pracy może okazać się bardzo przydatna.

7.8  Układ ekranu (Screen layout) — zarządzanie

Blender domyślnie proponuje kilka różnych układów ekranu, przygotowanych do różnych faz pracy nad projektem. Możesz się pomiędzy nimi przełączać za pomocą listy Screen lay-out (Rysunek 7.8.1a):

Rysunek 7.8.1 Lista Screen lay-out: Zespół kontrolek do zarządzania układem ekranu

Lista układów ekranów (Rysunek 7.8.1b) to jednocześnie dobry przykład typowej kontrolki Blendera do zarządzania referencjami tzw. bloków danych (np. materiałami, teksturami, itp.)[1]. Po wybraniu z listy Screen lay-out np. układu do pracy nad teksturami (UV Editing) , zobaczysz zupełnie inne okna (Rysunek 7.8.2):

Rysunek 7.8.2 Inny układ ekranu — (UV Editing)

Jeżeli nie jesteś zadowolony z domyślnych ustawień Blendera — możesz tu wszystko pozmieniać. Oprócz zmiany istniejącego układu, istnieje możliwość dodania nowego. Wystarczy nacisnąć przycisk , umieszczony z lewej strony okna (Rysunek 7.8.3a):

Rysunek 7.8.3 Dodanie własnego układu ekranu

Potem możesz już go pozmieniać, jak chcesz (Rysunek 7.8.4):

Rysunek 7.8.4 Nowy układ ekranu: Modeling

Rysunek 7.8.5 Nowy układ na liście

Nowy układ już figuruje na liście (Rysunek 7.8.5). Oczywiście, jeżeli nie będziesz zadowolony ze swojego układu — zawsze możesz go usunąć, naciskając przycisk , umieszczony po prawej stronie listy Screen lay-out. Gdy to zrobisz, znajdziesz się w poprzednim układzie (w tym przykładzie byłby to „Default”).

Blender przed usunięciem układu ekranów nie zadaje żadnego pytania typu „jesteś pewien?”. Usuwa i już!

Układy ekranów są zapamiętywane oddzielnie w każdym pliku Blendera. Dlatego np. w pliku pochodzącym z Blendera 2.4 będą miały inne nazwy, niż pokazane na ilustracjach w tym przykładzie. Aby stworzyć układ, którego będziesz używać we wszystkich swoich rysunkach, musisz zapisać go do pliku startowego, poleceniem File→Save User Settings (por. str. 367).

[1] (str. 381) Wyrażenie „blok danych” (datablock) przewija się przez całe słownictwo Blendera. W istocie to jedno ze kluczowych pojęć w tym programie. Dokładne wyjaśnienie tego określenia znajdziesz na str. 569.

7.9  Instalacja i usuwanie dodatków (add-ons)

Benderowi towarzyszy dużo dodatków[1], rozszerzających jego funkcjonalność. Są to skrypty napisane w języku programowania Python, zazwyczaj przez samych użytkowników. Dodatki to zazwyczaj niewielkie pliki z rozszerzeniem *.py. Oprócz tych, które są dostarczane wraz z Benderem, możesz znaleźć inne np. na forach Blendera w Internecie. Także do tej książki dodałem kilka narzędzi, które wykorzystuję od lat i uważam za bardzo przydatne i godne polecenia (znajdziesz je w pliku source.zip, w scripts\addons — por. str. 20). Instalacja dodatku Blendera może polegać po prostu na wgraniu pliku wtyczki do odp. podkatalogu w folderze z konfiguracją programu (por. str. 374). Jeżeli jednak nie czujesz się w tej materii zbyt pewnie, pokażę tutaj inną, mniej „hakerską” metodę. W oknie User Preferences, sekcji Add-Ons, naciśnij przycisk Install Add-On… (Rysunek 7.9.1):

Rysunek 7.9.1 Wywołanie instalacji dodatku (okno User Preferences)

Blender wyświetli wówczas okno File Browser. Przejdź w nim do katalogu, w którym umieściłeś dodatki do zainstalowania, wskaż jeden z nich, i naciśnij przycisk Install Add-On (Rysunek 7.9.2):

Rysunek 7.9.2 Wybór pliku skryptu do zainstalowania

W oknie File Browser wskazuj zawsze tylko jeden skrypt! Choć Blender w tym oknie pozwala zaznaczyć wiele plików dodatków, to zainstaluje tylko jeden – ten, który zaznaczyłeś jako ostatni.

Dodatek jest już zainstalowany. Abyś ją dostrzegł wśród innych, Blender przełączył wyświetlane kategorie na All i w polu filtra wpisał jego nazwę (Rysunek 7.9.3):

Rysunek 7.9.3 Wygląd okna User Preferences po zainstalowaniu dodatku (Handle Panel)

W razie czego nie bądź przerażony, że z Blendera znikły wszystkie pozostałe dodatki. Wystarczy usunąć filtr (Rysunek 7.9.4):

Rysunek 7.9.4 Wygląd okna User Preferences po usunięciu filtra

Aby usunąć dodatek z Blendera, po prostu naciśnij jej przycisk Remove (Rysunek 7.9.5):

Rysunek 7.9.5 Usuwanie dodatku

[1] (str. 383) Dodatki czasami są także nazywane „wtyczkami” (ang. plugin), ale ta nazwa powinna raczej dotyczyć binarnych, a nie skryptowych rozszerzeń Blendera. W poprzedniej wersji Blendera — 2.4 — istniała możliwość użycia binarnych wtyczek implementujących jakieś specjalne tekstury. W wersji 2.5 i następnych niczego takiego (jeszcze) nie zaimplementowano.

7.10  Sceny — zarządzanie

Plik Blendera może zawierać wiele scen. Każda z nich to odrębna “przestrzeń”, w której można umieszczać obiekty (więcej na ten temat — str. 573). Domyślnie w nowym rysunku istnieje tylko jedna, o nazwie Scene. Do zarządzania scenami służy zespół kontrolek umieszczony w nagłówku okna Info (Rysunek 7.10.1). Składa się z pola, pokazującego nazwę aktualnej sceny, przycisku rozwijającego listę scen, oraz przycisku usuwającego aktualną scenę.

Aby zmienić nazwę aktualnej sceny, kliknij LPM w jej nazwę, i wpisz nową (Rysunek 7.10.1):

Rysunek 7.10.1 Zmiana nazwy aktualnej sceny

Aby stworzyć nową scenę, naciśnij przycisk , umieszczony z prawej strony nazwy (Rysunek 7.10.2):

Rysunek 7.10.2 Dodanie nowej sceny

Spowoduje to pojawienie się menu New scene, z którego możesz wybrać jedną z opcji:

- New: tworzy nową, pustą scenę (z globalnymi ustawieniami jak w pliku startowym);

- Copy Settings: tworzy nową, pustą scenę, kopiując globalne ustawienia ze sceny aktualnej;

- Link Objects: wypełnia nową scenę referencjami do obiektów z aktualnej sceny. (Ten sam obiekty będzie “użyty” przez obydwie sceny. Więcej na ten temat — str. 573);

- Link Object Data: tworzy w nowej scenie kopie obiektów z aktualnej sceny, które współdzielą z obiektami aktualnej siatki, materiały, itp. (To tak, jak gdybyś wszystkie powielił poleceniem Alt-D — Duplicate Linked);

- Full Copy: cała zawartość nowej sceny będzie niezależną kopią aktualnej;

W praktyce stosuję zazwyczaj opcję Copy Settings (pojedyncze obiekty można później dodać do innej sceny poleceniem Object→Make Links→To Scene). Nowa scena otrzyma taką nazwę, jak scena oryginalna, z dodanym na końcu “.001”. Zmień ją na właściwą.

Aby usunąć aktualną scenę, naciśnij przycisk [x] z prawej strony nazwy (Rysunek 7.10.3):

Rysunek 7.10.3 Usunięcie aktualnej sceny

Blender nie zadaje już żadnego pytania „czy jesteś pewien”: po naciśnięciu przycisku [x] scena znika. Jeżeli usunąłeś ją przez pomyłkę — możesz się z tej operacji wycofać, wywołując polecenie Undo (Ctrl-Z)

7.11  Kontrolka wyboru barwy

Kontrolka służąca do ustalania koloru jest w Blenderze niewielkim prostokątnym polem. Aby zmienić kolor, który wyświetla, kliknij w nią LPM (Rysunek 7.11.1):

Rysunek 7.11.1 Kontrolka w trybie RGB

Rysunek 7.11.2 Kontrolka w trybie HSV

Spowoduje to rozwinięcie chwilowego okna (menu?) z zestawem kontrolek służących do zmiany barwy. W górnej części okna znajduje się koło braw i pasek intensywności. Wykorzystaj je do ustalenia koloru za pomocą myszki. Jeżeli jednak chcesz wpisać dokładną wartość numeryczną — możesz skorzystać z zestawu pól umieszczonych poniżej. Blender oferuje trzy tryby wpisywania wartości koloru: RGB, HSV, i Hex. W trybie RGB (Rysunek 7.11.1) możesz zmieniać wprost intensywności składników R, G, B barwy. Są one tu wyrażone jako liczby z zakresu od 0.0 do 1.0. Niezależnie od tego, którego zestawu kontrolek użyjesz, Blender na bieżąco aktualizuje pole z którego rozwinęliśmy to okno, wyświetlając tam bieżący kolor.

Parametry z zestawu HSV są alternatywną metodą opisu koloru (Rysunek 7.11.2):

- H (Odcień — ang. Hue): determinuje barwę. Ta wartość odpowiada poruszaniu się „wzdłuż spektrum barw”, czyli w naszym przypadku po obwodzie koła pokazywanego przez Rysunek 7.11.2;

- S (Nasycenie — ang. Saturation): Wartość 0.0 to zupełny brak barwy (wszystko jest w odcieniach szarości), a 1.0 — czyste barwy. Ta wartość odpowiada przesuwaniu punktu wzdłuż promienia koła barw (Rysunek 7.11.2);

- V (Intensywność — ang. Value): determinuje „jasność” barwy (widać ją na suwaku po prawej);

Czasami wygodniej jest po prostu wskazać jakąś istniejącą barwę. Służy do tego przycisk z „pipetką”. Gdy klikniesz w niego myszką, okno zniknie, a kursor zmieni postać (Rysunek 7.11.3):

Rysunek 7.11.3 Podstawienie barwy wskazanego piksela ekranu

Końcówką tej „pipetki” kliknij w dowolne miejsce ekranu, a w polu kontrolki pojawi się jego kolor.

Rysunek 7.11.4 Kontrolka w trybie Hex

Wreszcie ostatni tryb określania barwy: Hex (heksadecymalny — por. str. 582). Przydaje się, gdy chcesz np. przenieść kolor z innego programu, np. z GIMP (tam to się nazywa HTML notation — por. str. 254, Rysunek 5.26.4). Kopiujesz w nim do schowka 6-znakowy kod barwy, a następnie wklejasz w tym trybie do okna Blendera (Rysunek 7.11.4):

Zwróć uwagę, że np. kolor materiału, przypisany do obiektu, jest w oknie View 3D ciemniejszy niż na kontrolce. To przede wszystkim wpływ domyślnego oświetlenia OpenGL, używanego przez Blender w trybie Viewport Shading:Solid (por. str. 371, Rysunek 7.4.10).

Inną przyczyną może być także brak tzw. „korekty gamma” . Pod tą tajemniczą nazwą kryje się proces lepszego dopasowania zakresu wyświetlanych barw do czułości ludzkiego oka. Blender od wersji 2.64 wyświetla barwy stosując taką korektę.

Jest to ustawione w panelu Color Management zestawu Scene (Rysunek 7.11.5a). Gdy opcja Display Device jest ustawiona na wartość sRGB, wówczas wyświetlane kolory ulegną rozjaśnieniu. Ten tryb to nieliniowa konwersja intensywności wejściowej barwy (Rysunek 7.11.5b) poprzez krzywą gamma (Rysunek 7.11.5c) na barwę wyświetlaną (Rysunek 7.11.5d):

Rysunek 7.11.5 Efekt korekty gamma (sRGB): nieliniowe rozjaśnianie barw

Należy pamiętać, że ta konwersja działa także w drugą stronę. Gdy wkleisz do okna koloru w trybie Hex tekst „808080”, odpowiadający mieszance 50% czerni i bieli, to w trybie sRGB Blender wcale nie przyjmie dla niego wartości R=G=B=0.5, jak można by się było spodziewać (por. str. 575). Zamiast tego zobaczysz R=G=B=0.216 (por. Rysunek 7.11.5b). I mimo to wyświetlany w kontrolce kolor dokładnie odpowiada temu, który uzyskasz dla kodu hex. „808080” w GIMP! Dlaczego? Bo korekta gamma jest wbudowana w system operacyjny. I Windows, i Linux używają takiej samej krzywej sRGB. Dla większej części jej zakresu (gdzieś tak od 0.25 do 1.0) jej współczynnik gamma = 2.2. Mac OS używa krzywej o nieco innym współczynniku: 1.8, więc dla tych samych wartości heksadecymalnego kodu odcień koloru na ekranie komputera od Apple może wyglądać nieco inaczej. (Przypuszczam jednak, że Color Management Blendera uwzględnia i takie przypadki, dokonując odpowiedniej konwersji).

W pracy nad modelem opisanym w tej książce przez cały czas używałem korekty sRGB. (Dokładniej — od rozdziału o materiałach: por. str. 24, Rysunek 2.1.7).

W węzłach Cycles (np. Image Texture) włączasz korektę gamma (sRGB) wybierając tryb Color. Dla tekstur nie odwzorowujących barwy (np. nierówności) używa się trybu bez żadnej korekty: Non-Color Data.

7.12  Edytor węzłów (Node Editor)

Węzły, podobnie jak znane Ci do tej pory kontrolki w panelach czy oknach dialogowych, służą do zmiany jakichś parametrów. To po prostu inna forma prezentacji. Tradycyjny interfejs użytkownika udostępnia w oknie/oknach wszystkie możliwe opcje naraz. Zazwyczaj podczas pracy zmieniasz tylko niektóre z nich. Można nazwać tę formę “statyczną”. Węzły stosuje się tam, gdzie wielka liczba dostępnych opcji czyni „statyczną” prezentację w oknie lub oknach niemożliwą. Każdy węzeł to jakiś pojedynczy zespół parametrów. Budując z węzłów schemat, “dynamicznie” dobierasz tylko te kontrolki, których wartości chcesz zmienić. W związku z tym musisz się trochę orientować, jakie komponenty (węzły) masz do dyspozycji i co każdy z nich robi. To pewna wada. Z drugiej strony, węzły można łączyć na najróżniejsze sposoby, których uzyskanie nie byłoby praktycznie możliwe w tradycyjnym, “statycznym” GUI.

Gdy przełączysz jedno z okien Blendera w tryb Node Editor, zobaczysz widok przypominający Rysunek 7.12.1:

Rysunek 7.12.1 Okno Node Editor (aktualny kontekst: materiał Cycles)

Edytor węzłów może służyć do pracy z definicjami materiałów, tekstur lub kompozycji ostatecznego obrazu. Rysunek 7.12.1 przedstawia definicję materiału o nazwie B.Skin.Camouflage. To prosty schemat, składający się z dwóch węzłów: shadera (Glossy BSDF) połączonego z rezultatem (Material Output). Z lewej strony każdego węzła znajdują się punkty wejścia, z prawej — punkty wyjścia. W Node Editor budujesz definicję, łącząc wyjścia jednych węzłów z wejściami innych. Rysunek 7.12.2 przedstawia typowe kontrolki węzłów i sposób ich łączenia:

Rysunek 7.12.2 Podstawowe elementy i łączenie węzłów

Aby połączyć węzły ze sobą, „łapiesz” odpowiedni punkt wyjścia i przeciągasz ponad wejście innego węzła. Blender łączy je eleganckim „kablem” (por. Rysunek 7.12.2). Usunięcie takiego połączenia polega na złapaniu myszką końcówki takiego „kabla” i „upuszczeniu” jej gdziekolwiek poza węzłem. Możesz także „przeciąć” te linie (Ctrl-LPM).

Węzły możesz zaznaczać tak samo jak obiekty w oknie 3D View: Kliknięcie PPM (a także LPM) zaznacza pojedynczy węzeł. Skrót A (View→Select or Deselect All) zaznacza/wyłącza zaznaczenie wszystkich węzłów schematu. Dostępne jest także zaznaczenia obszarem prostokątnym (B — View→Border Select).

Aby przesunąć pojedynczy węzeł, wystarczy go „złapać” LPM i przeciągnąć w nowe miejsce. Tak jak w oknie 3D View dostępne są także skróty G (przesunięcie), S (skalowanie) i R (obrót). Szczególnie te dwie ostatnie operacje mają sens jedynie dla dwóch lub więcej węzłów. (Skalowanie zbliża lub oddala zaznaczone węzły, a obrót obraca ich środki).

Aby wstawić do schematu nowe węzły, wybierasz je z menu Add (z nagłówka okna Node Editor). W każdym trybie pracy zawartość tego menu jest inna. (W każdym z tych trybów używane są inne węzły). Tak jak obiekty, węzły mogą być kopiowane (Shift-D — Node→Duplicate).

Aby usunąć jakiś węzeł, zaznacz go i naciśnij Delete lub X (Node→Delete).

Aby przesunąć ekran (Pan) na inny fragment schematu, przesuń myszkę z wciśniętym SPM.

Powiększenie można zmienić tak samo jak w oknie 3D View: obracając KM lub przesuwając myszkę z wciśniętym Ctrl i SPM. Działa tu także skrót Home (View→View All).

Schemat materiału lub kompozycji, który budujesz w Node Editor, będzie wykorzystany do przetworzenia każdego piksela renderowanego obiektu lub obrazu.

Specyfiką Cycles jest dodatkowe wyświetlanie kontrolek węzłów w panelach okna Properties (zestawu Material — Rysunek 7.12.1). Każda z tych paneli wyświetla kontrolki wszystkich węzłów podłączonych do odpowiednich wejść (Surface, Displacement) węzła Material Output (Rysunek 7.12.3):

Rysunek 7.12.3 Powtórzone kontrolki węzłów materiału w panelach Surface i Displacement (Cycles)

To powiązanie powoduje, że dla nieco bardziej złożonych schematów panele gwałtowanie się rozrastają — i liczba wyświetlanych w niej kontrolek czyni je praktycznie bezużytecznymi. Możesz je zwinąć, aby nie przeszkadzały. Sądzę, że ta właściwość przydaje się w dwóch przypadkach:

- dla bardzo prostych materiałów — niedoświadczeni użytkownicy mogą się czuć pewniej, używając panelu, a nie edytora węzłów;

- do obsługi parametrów materiału, który jest oparty na grupie węzłów (por. str. 443);

Kolor punktów wyjścia i wejścia węzła zależy od jego typu danych (Rysunek 7.12.4):

Rysunek 7.12.4 Oznaczenia barwne typów wejść i wyjść węzłów

Żółty punkt oznacza barwę (R, G, B, A), szary — pojedynczą liczbę (rzeczywistą), zielony — informacje dla shadera, a niebieski — wektor (X, Y, Z), determinujący położenie lub kierunek. Wektory są zazwyczaj potrzebne na wejściu węzłów tekstur: określają, jak dwuwymiarowy obraz tekstury ma być rozłożony na trójwymiarowej powierzchni.

Istnieją specjalne typy węzłów, które służą do konwersji z jednego rodzaju danych na drugi. Przykładem takiego węzła jest chociażby RGB to BW, (RGB to Black/White). Można go użyć do przekształcenia koloru na pojedynczą liczbę (od 0.0 do 1.0) (Rysunek 7.12.5):

Rysunek 7.12.5 Przykład jawnej konwersji typu połączenia (tutaj: z barwy na liczbę)

Node Editor pozwala także łączyć ze sobą węzły różnych typów (Rysunek 7.12.6):

Rysunek 7.12.6 Przykłady automatycznej konwersji typów

Wzdłuż takiego połączenia Blender dokonuje automatycznej konwersji z jednego typu wartości na drugi. Reguły tej automatycznej konwersji przedstawia Tabela 7.12.1 (pola na przekątnej nie są konwertowane):

Na końcu

Na początku

Value

Color

Vector

Shader

Value

v

v→ R, v→ G, v→ B

v→ X, v→ Y, v→ Z

brak

Color

Odcień szarości

RGBA

R → X, G → Y, B → Z

brak

Vector

(X+Y+Z)/3

X → R, Y → G, Z → B

XYZ

brak

Shader

brak

brak

brak

—

Tabela 7.12.1 Automatyczna konwersja danych na połączeniu pomiędzy różnymi rodzajami wejść i wyjść węzłów

Zwróć uwagę, że nie istnieje żadna automatyczna konwersja na / z danych shadera.

Edytor węzłów można uruchamiać w trzech różnych kontekstach (trybach pracy): materiału, tekstury, i końcowej kompozycji obrazu (postprocessing). Przełącznik tych trybów znajduje się w nagłówku okna (Rysunek 7.12.7):

Rysunek 7.12.7 Nagłówek okna Node Editor (aktualny kontekst: materiał Cycles)

Każdy z tych trybów oferuje inny zestaw węzłów i służy do czego innego. Rysunek 7.12.7 przedstawia nagłówek w trybie edycji materiału. W tej książce będziemy także wykorzystywać tryb kompozycji (postprocessing). Trybu tekstur nie będziemy używać, gdyż jest przeznaczony wyłącznie dla renderera BI (W Cycles tekstury można komponować w trybie materiału).

Zwróć także uwagę, że w trybie materiału w nagłówku okna Node Editor pojawia się z prawej strony opcji wyboru trybu jeszcze dodatkowy przełącznik (Rysunek 7.12.7). Umożliwia przełączanie pomiędzy definicją aktualnego materiału (materiału przypisanego do aktywnego łącza siatki[1] — por. Rysunek 7.12.3) i definicją otoczenia sceny.

Sporą pomocą przy pracy nad złożonymi schematami są przyciski Copy/Paste, umieszczone z prawej strony nagłówka (Rysunek 7.12.7). Pozwalają na kopiowanie i wklejanie całych zespołów węzłów.

Inną pomocą w pracy nad węzłami jest możliwość łączenia węzłów w ramki (Rysunek 7.12.8)

Rysunek 7.12.8 Łączenie węzłów w ramki

Zaznacz węzły, które chcesz połączyć w ramkę i naciśnij Ctrl-J (Node→Join in new Frame). Blender otoczy wówczas zaznaczone elementy ramką. To prostokąt z zaokrąglonymi narożnikami i umieszczoną etykietą pod górną krawędzią (domyślnie jest tam wpisane „Frame”). Ramki traktuj jak pomocnicze „skrzynki”. Możesz je „złapać”, naciskając LPM w jej wnętrzu, i trzymając wciśnięty ten klawisz myszy przeciągnąć w nowe położenie. Ramka zawsze przesuwa się wraz z całą zawartością. To często wygodniejsze niż zaznaczanie wielu węzłów.

Gdy zaznaczysz ramkę i naciśniesz przycisk N (View→Properties) , Node Editor wyświetli po prawej stronie ekranu odpowiedni przybornik. W panelu Active Node możesz zmienić właściwości ramki (Rysunek 7.12.9):

Rysunek 7.12.9 Właściwości ramki

Uważam że jedną z najważniejszych elementów ramki jest jej etykieta. Zawsze ją zmieniaj, nadając ramce jakąś nazwę odpowiednią do roli węzłów, które zawiera. To bardzo pomaga w późniejszej analizie schematów!

Aby włączyć jakiś węzeł do istniejącej ramki, po prostu przeciągnij go do jej wnętrza (Rysunek 7.12.10):

Rysunek 7.12.10 Dodawanie węzłów do ramki

Operacja odwrotna nie jest tak intuicyjna: aby „wyjąć” węzły z ramki musisz je zaznaczyć i wywołać polecenie Node→Remove from Frame. Czasami prościej jest po prostu usunąć całą ramkę (zaznacz ją i naciśnij X lub Del). To usuwa tylko obramowanie — zawartość ramki (węzły, połączenia) pozostaje na schemacie.

Czasami krzywa linia łącząca dwa punkty bywa przesłonięta przez inne węzły (Rysunek 7.12.10):

Rysunek 7.12.11 Połączenie, zasłonięte przez inny węzeł

To zmniejsza czytelność schematu. Czy można wymusić inny przebieg tej linii połączenia?

Do sterowania kształtem linii połączeń używamy w Blenderze punktów pomocniczych. Aby je wstawić, musisz „przeciąć” linię myszką, trzymając na klawiaturze wciśnięty klawisz Shift (Rysunek 7.12.12):

Rysunek 7.12.12 Wstawianie pomocniczego punktu w linię połączenia

Blender wstawia w miejscu przecięcia nowy punkt pomocniczy. Ten punkt od razu jest zaznaczony (ma białą obwódkę). Wystarczy nacisnąć G i przesunąć go w nowe miejsce (Rysunek 7.12.13):

Rysunek 7.12.13 Przesuwanie pomocniczego punktu

Aby skończyć przesuwanie punktu, kliknij LPM (to działa tak samo jak przesuwanie zwykłego węzła). Aby usunąć jakiś punkt pomocniczy musisz go zaznaczyć (PPM) i nacisnąć X lub Delete (Rysunek 7.12.14):

Rysunek 7.12.14 Usuwanie pomocniczego punktu

Usunięcie punktu pomocniczego usuwa także jego linię połączenia.

[1] (str. 392) Lub definicji materiału przypisanego do źródła światła — w Cycles lampy mogą mieć swoje materiały, a także dowolny obiekt (siatka) może być źródłem światła. (W Cycles światło emituje wszystko, co ma przypisany shader Emission).

7.13  Obsługa listy

W niektórych panelach okna Properties znajdują się listy. Służą do zarządzania materiałami, grupami wierzchołków, alternatywnymi rozwinięciami UV i dziesiątką innych rzeczy. Obsługę listy Blendera pokażę na przykładzie panelu zarządzającego grupami wierzchołków siatki. Inne listy mogą nie mieć niektórych z opisanych tu kontrolek.

Rysunek 7.13.1 opisuje funcje kontrolek widocznych na i wokół listy:

Rysunek 7.13.1 Elementy typowej listy (zawartość panelu Vertex Groups z okna Properties)

Aby zmienić nazwę elementu listy, należy kliknąć ten element myszką (LPM), z wciśniętym na klawiaturze klawiszem Ctrl (Rysunek 7.13.2):

Rysunek 7.13.2 Zmiana nazwy pozycji listy

W etykiecie pozycji pojawia się karetka, i możesz wtedy zmienić wpisany tam tekst. Ta funkcja nie jest związana z żadnym widocznym przez cały czas elementem, ani z żadnym elementem menu kontekstowego[1]. W podpowiedzi można przeczytać że w celu zmiany nazwy należy kliknąć dwukrotnie na pozycję listy. W praktyce nie zawsze to działa, bo np. pozycje na liście wierzchołków należy kliknąć czterokrotnie (2 x podwójne kliknięcie) aby przełączyła się w ten tryb.

Aby wyszukać na długiej liście element zawierający w nazwie jakiś charakterystyczne słowo, rozwiń sekcję wyszukiwania i wpisz to słowo w polu Search, a następnie naciśnij Enter (Rysunek 7.13.3):

Rysunek 7.13.3 Wyszukiwanie pozycji na liście

Listy Blendera można uporządkować „ręcznie” lub alfabetycznie. Uporządkowanie „ręczne” polega na ustaleniu pozycji kolejnych elementów za pomocą przycisków z prawej strony listy (Rysunek 7.13.4a):

Rysunek 7.13.4 Zmiana uporządkowania listy

Za pomocą przycisku w obszarze wyszukiwania możesz się przełączyć na uporządkowanie w kolejności alabetycznej (Rysunek 7.13.4b). Dodatkowy przycisk z prawej strony pozwala przełączyć się pomiędzy kolejnością rosnącą i malejącą.

Rysunek 7.13.5 Menu kontekstowe listy

Niektóre listy mają dodatkowy przycisk, rowzwijający menu kontekstowe jej elementów (Rysunek 7.13.5). Jego zawartość zależy od rodzaju elementów listy — inne menu zobaczysz dla grup wierzchołków, a inne dla alternatywnych współrzędnych UV. Polecenia z menu kontekstowego mogą dotyczyć całej zawartości listy (np. Lock All) albo aktywnego (podświetlonego) elementu (np. Mirror Vertex Group).

[1] (str. 395) Uważam to za błąd w projektowaniu interfejsu użytkownika. Wzmianka o możliwości zmiany nazwy pozycji listy pojawia się tylko w „dymku” podpowiedzi (tooltip), wyświetlanym gdy zatrzymasz na niej kursor myszki.

Rozdział 8.  Blender — edytor obiektów (Object Mode)

Z edytorem obiektów miałeś już okazję się zetknąć (Tomie II, Rozdział 3, “Blender – pierwsze kroki”). W tym rozdziale omówimy kilka poleceń Object Mode wykorzystywanych w tym tomie.

8.1  Rysowanie walca (Cylinder)

Umieść kursor 3D w miejscu, gdzie ma być umieszczony nowy walec (Rysunek 8.1.1a). (Każdy nowy obiekt jest umieszczany tam, gdzie aktualnie jest kursor). Następnie wywołaj polecenie Add→Mesh→Cylinder (Rysunek 8.1.1b):

Rysunek 8.1.1 Stworzenie walca

Na scenie pojawi się domyślny walec, o promieniu = 1, wysokości 2 i 32 ścianach bocznych (Rysunek 8.1.2a). (W Twoim przypadku może być inny, bo Blender „pamięta” ostatnio użyte parametry). Stworzony cylinder możesz teraz interaktywnie pozmieniać, otwierając zaraz po stworzeniu Tool Shelf (T). W jego dolnej części znajdziesz panel Add Cylinder, z parametrami tego polecenia:

Rysunek 8.1.2 Vertices: zmiana liczby boków

Rysunek 8.1.2b) pokazuje walec o liczbie boków (Vertices) zredukowanej do 8 (to właściwie graniastosłup). Z kolei przełącznik Cap Ends steruje obecnością ścian podstaw walca (Rysunek 8.1.3):

Rysunek 8.1.3 Cap Ends:włączanie i wyłączanie ścian podstaw walca

Czasami, w małym oknie 3D View, dolna część Tool Shelf z parametrami ostatnio wywołanego polecenia może być „zwinięta”. Możesz ją „wyciągnąć” za pomocą małego uchwytu z ikonką „+”, wystającego z nagłówka okna 3D View. Możesz także nacisnąć F6, by otworzyć na ekranie okno z tym samym panelem Add Cylinder, który jest wyświetlane w Tool Shelf (tylko na innym tle — Rysunek 8.1.4):

Rysunek 8.1.4 Alternatywne okno, pozwalające na interaktywną modyfikację parametrów ostatniego polecenia

Podobnie jak okrąg, walec można jeszcze wygładzić. Wystarczy, że w panelu Modifiers wybierzesz z listy Add Modifier modyfikator Subdivision Surface (Rysunek 8.1.5):

Rysunek 8.1.5 “Wygładzenie” walca

Ustaw parametry Subdivisions: View i Subdivisions: Render na 2. To wartość wystarczająca do uzyskania całkiem porządnego przybliżenia okręgu.

Do wygładzania okręgu i elips najlepiej jest używać schematu obliczeniowego o nazwie Catmull-Clark. Nie zmieniaj tego ustawienia w modyfikatorze Subsurf. Schemat Catmulla-Clarka całkiem dokładnie odwzorowuje takie krzywizny już dla oryginalnej siatki złożonej z 6-8 wierzchołków, i dla niewielkiego poziomu podziału (Subdivisions = 2).

Jeżeli chcesz dowiedzieć się więcej o krzywych i powierzchniach podziałowych — patrz w Tomie II.

Możesz także stworzyć walec wykorzystując Tool shelf (T): w jego zakładce Create, panelu Add Primitive, naciśnij przycisk Cylinder (jest w sekcji Mesh).

8.2  Wstawienie źródła światła (Lamp)

Umieść kursor 3D w miejscu, gdzie ma być umieszczone nowa źródło światła (Rysunek 8.2.1a). (Każdy nowy obiekt jest umieszczany tam, gdzie aktualnie jest kursor). Wywołaj polecenie Add→Add Lamp→Sun (Rysunek 8.2.1b):

Rysunek 8.2.1 Wstawienie źródła światła (lampy)

Z submenu wybierz jeden z dostępnych typów źródeł światła. W tej książce będziemy używać tylko światła kierunkowego (słonecznego — Sun) bo żadna ze scen które stworzymy nie rozgrywa się w pomieszczeniu zamkniętym.

Jeżeli nawet wybierzesz nieprawidłowy — nic złego się nie stanie. Typ źródła światła można zmienić także po jego stworzeniu, w jego właściwościach (okno Properties, zakładka Object Data).

Możesz także stworzyć źródło światła wykorzystując Tool shelf (T): w jego zakładce Create, panelu Add Primitive, naciśnij przycisk Sun (jest w sekcji Lamp).

8.3  Wstawienie kamery (Camera)

Umieść kursor 3D w miejscu, gdzie ma być umieszczona nowa kamera. (Każdy nowy obiekt jest umieszczany tam, gdzie aktualnie jest kursor). Następnie wywołaj polecenie Add→Camera (Rysunek 8.3.1):

Rysunek 8.3.1 Wstawienie nowej kamery

Jeżeli dodajesz do sceny drugą kamerę, tylko jedna z nich może być kamerą aktywną — czyli taką, z której widok będzie renderowany. Aby uczynić zaznaczoną kamerę aktywną, użyj polecenia View→Cameras→Set Active Object as Camera (Rysunek 8.3.2):

Rysunek 8.3.2 Przełączanie aktywnej kamery

Kamera aktywna jest oznaczana na rysunku wypełnioną „strzałką”.

Możesz także stworzyć kamerę wykorzystując Tool shelf (T): w jego zakładce Create, panelu Add Primitive, naciśnij przycisk Camera (jest w sekcji Other).

8.4  Zmiana właściwości kamery (Camera)

Widok z kamery (0, albo View→Cameras→Active Camera) jest w oknie 3D View pokazywany w następujący sposób (Rysunek 8.4.1):

Rysunek 8.4.1 Widok z kamery (w oknie 3D View)

Największa ramka, narysowana linią ciągłą, to sama kamera. (Możesz np. w nią kliknąć PPM, aby została zaznaczona). Wokół niej Blender rysuje przerywaną linią drugi prostokąt. Oznacza w ten sposób obszar, który pojawi się na renderowanym obrazie. Najmniejszy obszar — prostokąt o zaokrąglonych narożnikach — to pomocnicza informacja, gdzie się zaczynają brzegi renderowanego obrazu.

Aby dostać się do właściwości kamery, zaznacz jej obiekt, i przełącz się na zestaw przycisków Object Data [1] (Rysunek 8.4.2):

Rysunek 8.4.2 Właściwości kamery (zestaw Object Data)

Rysunek 8.4.2 pokazuje istotne pola panelu Lens. (Pozostałych w tym modelu nie używałem). Najbardziej oczywistym parametrem kamery jest ogniskowa (Focal Length). Domyślna ogniskowa kamery w Blenderze to 35mm. Odpowiada to kątowi rozwarcia 50º. To nieco za duży kąt jak dla odległości oczu od ekranu. Często powoduje, że zniekształcenie perspektywiczne kamery wywołuje wrażenie “rybiego oka”. Lepiej jest ją przestawić na większą wartość, np. 70mm (Rysunek 8.4.3):

Rysunek 8.4.3 Kamera — efekt zmiany ogniskowej z 35mm do 70mm

Aby kamera nie “obcięła” zbyt odległej części modelu, wydłuż także jej zasięg. Chodzi o pola Clipping Start/End. Zmień pole End z domyślne 100 na 1000 jedn. Blendera, gdyż inaczej kamera może “obciąć” model (Rysunek 8.4.4):

Rysunek 8.4.4 “Obcięcie” modelu przez zbyt małą wartość Clipping:End

Warto także wydłużyć wartość Clipping:Start z domyślnego 0.1 do 1 jednostki, aby w widoku 3D View blisko położone powłoki modelu nie generowały artefaktów “przebić” jednej powierzchni przez drugą (Rysunek 8.4.5):

Rysunek 8.4.5 Artefakty na powierzchni modelu, powstałe przez zbyt małą wartość Clipping:Start

Co prawda, “przebicia”, które pokazuje Rysunek 8.4.5 nie pojawią się na ostatecznym renderze. Po co jednak mają nas drażnić podczas edycji obiektu!? Lepiej zmienić pole Clipping:Start i po kłopocie!

[1] (str. 402) Kamera to w Blenderze coś takiego jak siatka (mesh) . To alternatywna zawartość obiektu (datablock, por str. 569) , i dlatego jej właściwości są wyeksponowane tym samym zestawie Object Data, służącym do zmiany danych obiektu.

8.5  Chwilowe ukrycie obiektu (Hide Selected)

Czasami, podczas pracy, przydatna jest możliwość ukrycia na jakiś czas niektórych obiektów. Jest to szczególnie ważne wtedy, gdy jedna część zasłania drugą.

Aby ukryć zaznaczony obiekt (lub obiekty), po prostu naciśnij H (Object→Show/Hide→Hide Selected). To sprawi, że zaznaczenie zniknie (Rysunek 8.5.1):

Rysunek 8.5.1 Ukrycie wybranego obiektu

Aby ukryte obiekty stały się z powrotem widoczne — naciśnij Alt-H (Object→Show/Hide→Show Hidden).

8.6  Wyrównanie widoku do orientacji obiektu (Align View to Selected)

Podczas pracy nad modelem potrzeba czasami ustawić płaszczyznę widoku (czyli płaszczyznę, po której możemy przesuwać obiekty) prostopadle do wybranego obiektu. Aby to zrobić, zaznacz obiekt, do którego chcesz się “wyrównać” (Rysunek 8.6.1a). Następnie rozwiń menu View→Align View→Align View to Selected (Rysunek 8.6.1b):

Rysunek 8.6.1 Wyrównanie aktualnego widoku do wybranego obiektu

Z menu Align View to Selected możesz wybrać jedną z sześciu “kardynalnych” płaszczyzn obiektu (Rysunek 8.6.1b). Efekt zobaczysz natychmiast (Rysunek 8.6.1c). W razie czego, jeżeli za pierwszym razem wybrałeś złą płaszczyznę kardynalną - wywołaj to polecenie jeszcze raz, i wybierz właściwą. Zwróć uwagę, że poszczególnym poleceniom z menu Align View to Selected przypisano skróty klawiatury. Są łatwe do zapamiętania: wystarczy poprzedzić skrót, którym zmieniasz projekcję względem globalnego układu współrzędnych klawiszem Shift. I tak, jeżeli normalnie wybierałeś widok z góry klawiszem 7, to na widok z góry w lokalnej płaszczyźnie aktywnego obiektu przełączy Cię Shift-7. Podobnie na lokalny rzut z boku przełączysz się skrótem Shift-3, a z powrotem na „globalny” rzut z boku — klawiszem 3.

8.7  Przypisanie obiektu do warstwy

Aby sprawdzić, na jakiej warstwie jest pojedynczy obiekt: zaznacz go, i przejdź do zestawu przycisków Object. Tam, w panelu Relations zobaczysz warstwę, do której należy wybrany element (Rysunek 8.7.1):

Rysunek 8.7.1 Warstwy, do których jest przypisany aktywny obiekt.

Klikając w kontrolki Layers (Rysunek 8.7.1) zmienisz przypisania obiektu do warstwy. Zwróć uwagę, że w Blenderze obiekt może być równocześnie na wielu warstwach (gdy będziesz klikał w warstwy z wciśniętym klawiszem Shift). Jeżeli włączysz widoczność którejkolwiek z nich — obiekt także stanie się widoczny.

Aby zmienić warstwę dla wielu obiektów jednocześnie: zaznacz je i naciśnij M (Object→Move to Layer…). Rysunek 8.7.2 pokazuje, jak to masz zrobić:

Rysunek 8.7.2 Zmiana warstwy dla grupy obiektów

Na kontrolce, pokazanej w oknie dialogowym (Rysunek 8.7.2) także możesz wskazać naraz wiele warstw. Pamiętaj, że jeżeli przypiszesz wybrane obiekty do warstwy, która jest aktualnie niewidoczna, znikną z ekranu!

8.8  Przypisanie materiału do obiektu

Domyślnie Blender przypisuje materiał do siatki (por. str. 368, Rysunek 7.4.3, i str. 414). Czasami jednak potrzebujemy czegoś odwrotnego. Dotyczy to, na przykład, różnych drobnych części o identycznym kształcie — śrub, bolców, jakichś standardowych okuć. Zobacz ten trójkątny element okucia z otworem na oś, który pokazują: Rysunek 8.8.1a) i Rysunek 8.8.2a). Każde okucie składa się z dwóch takich blaszek. Wszystkie blaszki używają tej same siatki, o nazwie B.519.Nest. (Są to jej „klony”). Siatce jest przypisany materiał wyglądający jak „gładka stal” — B.Steel.Smooth. To barwa, w której te płaskowniki występowały najczęściej. Dopóki obiekt ma w kontekście Material włączoną opcję Data (Rysunek 8.8.1b), dopóty „dziedziczy” materiał swojej siatki:

Rysunek 8.8.1 Materiał przypisany do siatki

W innym miejscu — prowadnicy cięgna, przymocowanej do wręgi kadłuba (Rysunek 8.8.2a) — te same blaszki powinny być „pomalowane” na kolor reszty szkieletu: B.Skin.Inner. Czy można ten efekt osiągnąć bez powielania siatki? Tak, wystarczy przełączyć tryb kontekstu Material z Data na Object, i wybrać odpowiedni materiał (Rysunek 8.8.2b):

Rysunek 8.8.2 Materiał przypisany do obiektu

Co właściwie ten przełącznik Object robi? Informuje Blender, że dla tej konkretnej części należy użyć materiału przypisanego do obiektu, a nie do siatki (Data).

8.9  Przypisanie ograniczenia Track To

Obiekt z ograniczeniem Track To jest zawsze zorientowany w przestrzeni tak, by jego oś była skierowana na środek wskazanego celu (innego obiektu). Domyślnie w cel kierowana jest lokalna oś Z, ale oczywiście we właściwościach ograniczenia można wskazać inną (X lub Y).

Najszybsza metoda utworzenia ograniczenia Track To to:

- zaznaczenie obiektu/obiektów podlegających ograniczeniu;

- zaznaczenie obiektu - celu (to musi być ostatni zaznaczony — tzn. to musi być obiekt aktywny!);

- naciśnięcie skrótu Ctrl-T i wybranie z podręcznego menu polecenia Track To Constraint:

Rysunek 8.9.1 pokazuje, jak to zazwyczaj wygląda:

Rysunek 8.9.1 Dodanie ograniczenia Track To za pomocą skrótu Make Track

Bardziej ogólna metoda, pozwalająca dodać każde ograniczenie, polega na zaznaczeniu najpierw „celu” a potem obiektu “ograniczanego”, i wywołaniu polecenia Object→Constraints→Add Constraint (with Targets). Lista rozwijalna, która się wówczas pojawi, zawiera wszystkie typy ograniczeń.

Właściwości ograniczenia Track To wybranego obiektu można zmienić w zestawie Object Constraints (), i panelu o tej samej nazwie (Rysunek 8.9.2):

Rysunek 8.9.2 Właściwości ograniczenia Track To

W przypadku tworzenia powiązania kamery z celem, nie zapomnij włączyć przełącznika Target Z.

Najprostszą drogą do usunięcia ograniczenia Track To jest użycie skrótu Alt-T. W menu, które wówczas się pojawi, warto wybrać opcję Clear Track and Keep Transform. Po jej wybraniu obiekt/obiekty zostaną “uwolnione”, ale nie zmienią swojego położenia ani orientacji w przestrzeni.

Innymi drogami do usunięcia ograniczenia są:

- polecenie Object→Constraints→Clear Constraints ;

- usunięcie pojedynczego ograniczenia ze stosu ograniczeń aktualnego obiektu (Rysunek 8.9.2).

Te metody nie gwarantują jednak zachowania aktualnej transformacji obiektu, jak to ma miejsce przy użyciu skrótu Alt-T.

Rozdział 9.  Blender — edytor siatki (Edit Mode)

W Blenderze każdy kształt odwzorowany jest za pomocą ścian, połączonych w tzw. „siatkę” (mesh). Tryb Edit Mode służy do zmiany siatki pojedynczego obiektu. Większość polecen Edit Mode miałeś okazję poznać w Tomie II. Ten rozdział opisuje tylko te, które zostały użyte w tym tomie.

9.1  Lustrzane odbicie siatki (Mirror)

Siatki obiektów symetrycznych można tworzyć w uproszczony sposób — modelując tylko jedną połowę. Kształt drugiej strony można uzyskać, stosując modyfikator Mirror.

Aby stworzyć lustrzane odbicie siatki, w zestawie Modifiers naciśnij przycisk Add Modifier. Spowoduje to rozwinięcie listy dostępnych “modyfikatorów” siatki. Wybierz spośród nich Mirror.

Rysunek 9.1.1 Zastosowanie modyfikatora Mirror

Środkiem lustrzanego odbicia, wykonywanego przez modyfikator Mirror, jest domyślnie środek obiektu (tzn. jego punkt odniesienia — nie mylić ze środkiem geometrycznym). Stąd też zawczasu należy zadbać, aby znajdował się we właściwym miejscu. Odbicie dokonuje się wzdłuż lokalnych osi X, Y, Z obiektu. Oś odbicia ustalasz przełącznikami w panelu modyfikatora (X, Y, Z — Rysunek 9.1.1). Możliwe jest jednoczesne włączenie odbicia wzdłuż dwóch, a nawet wszystkich trzech osi.

Naciśnięcie przycisku Apply spowoduje “utrwalenie” siatki tworzonej przez modyfikator, tzn. stworzenie nowych wierzchołków i usunięcie modyfikatora Mirror (Rysunek 9.1.2):

Rysunek 9.1.2 „Utrwalenie” modyfikatora Mirror

Gdy stosujesz ten modyfikator dla powierzchni podziałowych — razem z modyfikatorem Subsurf — pamiętaj, aby Mirror był zawsze powyżej Subsurf. Szczególnie ważne w przypadku powierzchni podziałowych jest także ustawienie wartości Merge Limit (Rysunek 9.1.1). Dwa wierzchołki — oryginał i jego odbity obraz — leżące w odległości mniejszej niż Merge Limit, są traktowane jakby były jednym wierzchołkiem. Dzięki tej właściwości wygładzone modyfikatorem Subsurf powierzchnie nie mają w płaszczyźnie symetrii ostrej krawędzi, ani przerwy. Zazwyczaj nie musisz zmieniać wartości Mege Limit.

9.2  Dopasowanie widoku do zaznaczonych elementów siatki (Align View to Selected)

Zaznacz ścianę, do której chcesz dopasować bieżący widok okna 3D View (Rysunek 9.2.1a). Potem naciśnij Shift-7 (View→Align View→Align View to Selected→Top) :

Rysunek 9.2.1 Ustawienie widoku na wprost zaznaczonej ściany

W rezultacie Blender ustawi płaszczyznę ekranu równolegle do zaznaczonej ściany (Rysunek 9.2.1b).

Warto pamiętać skróty, wywołujące te polecenia. Znajdziesz je w menu Align View to Selected. Są takie same jak skróty zmiany widoku globalnego, tyle że z dodatkowym klawiszem Shift (Rysunek 9.2.2):

Rysunek 9.2.2 Dostępne polecenia z submenu Align View to Selected

Widok można dopasowywać także do pojedynczej krawędzi siatki (Rysunek 9.2.3):

Rysunek 9.2.3 Rezultaty poleceń Align View dla pojedynczej krawędzi

9.3  Przypisanie materiału do siatki

Aby przypisać pojedynczą siatkę do jakiegoś istniejącego materiału, należy zaznaczyć obiekt, który ją zawiera (tak, aby się stał obiektem aktywnym — Rysunek 9.3.1a). Następnie w oknie Properties, zestawie Material rozwiń listę z lewej strony przycisku New, i wybierz z niej jeden z widocznych tam materiałów (Rysunek 9.3.1b). Blender przypisuje domyślnie materiał do siatki[1], a nie obiektu, stąd zmianie ulegnie nie tylko aktywny obiekt, ale także wszystkie inne obiekty, które używają tą samą siatkę (Rysunek 9.3.1c):

Rysunek 9.3.1 Przypisanie materiału do pojedynczej siatki

Aby szybko przypisać materiał do wielu obiektów (siatek) naraz, zaznacz je i wykorzystaj polecenie Copy Material to Others (Rysunek 9.3.2):

Rysunek 9.3.2 Skopiowanie przypisania materiału do wielu siatek naraz

Zwróć uwagę że w menu, które przedstawia Rysunek 9.3.2b), są także polecenia Copy Material i Paste Material. Możesz ich także użyć do przypisania pojedynczego materiału, jeżeli nie chcesz wybierać go co chwila z listy. Polecenie Copy Material to Others znajduje się także pod inną nazwą — Material — w menu Object→Make Links… (dostępnym pod skrótem Ctrl-L).

A jak przypisać do różnych fragmentów pojedynczej siatki różne materiały ?

Rysunek 9.3.3 Powiązanie ścian siatki z materiałem poprzez tzw. łącza (material slots)

W Blenderze materiały są przypisane do ścian siatki za pośrednictwem tzw. łączy materiałów (material slots — Rysunek 9.3.3).

W każdej siatce możesz stworzyć wiele łączy materiałów. Każda ściana jest przypisana tylko do jednego z nich. Niektóre z takich łączy mogą nie mieć przypisanych ścian. Mogą także nie mieć przypisanych materiałów. (Takie “puste” łącza nie mają wpływu na rendering).

Przypisanie fragmentu siatki do innego materiału pokażę na przykładzie gondoli podwozia głównego (obiektu B.150.R.Cover). Rysunek 9.3.4 przedstawia „sytuację wyjściową”:

Rysunek 9.3.4 Siatka, której fragmentowi chcemy przypisać inny materiał

Wszystkie ściany siatki owiewki ma już przypisany materiał odpowiedni dla powierzchni zewnętrznych: B.Skin.Camouflage. Teraz chcemy ścianom wewnętrznym przypisać materiał B.Skin.Inner.

Zaczynamy od utworzenia nowego, pustego łącza materiału. To „miejsce” na nowy materiał (Rysunek 9.3.5):

Rysunek 9.3.5 Dodanie do siatki nowego, pustego łącza materiału.

Naciśnij przycisk z prawej strony listy łączy materiałów. Blender doda na koniec listy nowe, puste łącze. Przesunie także na nie podświetlenie, czyniąc je łączem aktywnym.

Tak jak można się spodziewać, przycisk usuwa aktywne (tzn. podświetlone na liście) łącze materiału. Można jednak to robić tylko w Object Mode!

Teraz przypisujemy do naszego łącza materiał — w tym przypadku B.Skin.Inner (Rysunek 9.3.6):

Rysunek 9.3.6 Przypisanie materiału do łącza.

Na koniec przypisz do łącza ściany. Zaznacz je w oknie View 3D, a następnie naciśnij w panelu Material przycisk Assign (Rysunek 9.3.7):

Rysunek 9.3.7 Przypisanie ścian do nowego indeksu materiału.

Nie musisz zaznaczać od razu wszystkich ścian. Możesz tę operację przypisania powtórzyć kilka razy (w przypadku bardzo złożonych kształtów tak jest prościej).

Zwróć uwagę, by obszar siatki przypisany do łącza materiału nie zawierał żadnej nie powiązanej ze ścianą krawędzi lub wierzchołka. Takie miejsca mogą powodować różne artefakty na ostatecznym renderze.

Możesz używać ścian przypisanych do łączy do selekcji wierzchołków siatki w trakcie jej edycji. (Służą do tego umieszczone poniżej listy łączy przyciski Select i Deselect)

[1] (str. 414) W konfiguracji, jaką wybraliśmy dla Blendera (por. Rysunek 7.4.3, str. 368 — okno User Preferences, przełącznik Link Materials To:) materiał jest domyślnie przypisany do siatki, a nie do obiektu. Stąd operacje przedstawione na tej stronie można wykonać zarówno w Edit Mode, jak i w Object Mode. Zdecydowałem się je tutaj pokazywać w Object Mode, bo grupowe przypisanie materiału wymaga zaznaczenia wielu obiektów. W tym trybie wyraźnie widać, co jest obiektem aktywnym, a co zaznaczonym (Rysunek 9.3.2a).

9.4  “Zwykłe” rozwijanie siatki (Unwrap)

Zaznacz ściany siatki, które chcesz rozwinąć (to może być nawet mały fragment, niekoniecznie cała siatka). Następnie naciśnij U (Mesh→UV Unwrap). Na ekranie pojawi się menu UV Mapping, z alternatywnymi metodami rozwijania siatek. Wybierz z niego polecenie Unwrap (Rysunek 9.4.1):

Rysunek 9.4.1 Zwykłe rozwinięcie (Unwrap) siatki w przestrzeni UV

Rezultat rozwinięcia zobaczysz w oknie UV/Image Editor (por. str. 525). Jeżeli wyszło zdeformowane, np. tak jak pokazuje Rysunek 9.4.1b, możesz spróbować użyć alterntywną metodę rozwijania. W parametrach operatora (T lub F6) Unwrap wybierz z listy rozwijalnej inny tryb (Rysunek 9.4.2):

Rysunek 9.4.2 Sterowanie metodą rozwinięcia

Jak do tej pory, metoda Unwrap używa jednej z dwóch metod rozwijania: Conformal i Angle Based. Jeżeli nie jesteś zadowolony z aktualnej, przestaw ją na alternatywną (Rysunek 9.4.2). Rezultat operacji może wówczas ulec poprawie (porównaj Rysunek 9.4.2 i Rysunek 9.4.1b). Jeżeli nadal nie jesteś z niego zadowolony — pozostaje poprawić rozwinięcie „ręcznie”, tzn. poprzez zmianę położenia ścian w edytorze UV.

9.5  Rozwijanie poprzez rzutowanie siatki (Project from View)

Zaznacz ściany siatki, które chcesz rozwinąć w przestrzeni UV. Następnie naciśnij U (Mesh→UV Unwrap). Na ekranie pojawi się menu UV Mapping, z alternatywnymi metodami rozwijania siatek. Wybierz z niego opcję Project From View (Rysunek 9.5.1):

Rysunek 9.5.1 Rozwinięcie UV poprzez rzutowanie na płaszczyznę widoku (Project From View)

Rezultat rozwinięcia zobaczysz w oknie UV/Image Editor (opis — str. 525). Siatka wygląda dokładnie tak samo, jak w oknie 3D View, ale jest płaskim obrazem, umieszczonym na płaszczyźnie UV.

Za pomocą polecenia Project From View można rozwijać nie tylko całe siatki, ale także ich pojedyncze fragmenty. Przykład takiej operacji pokazuje Rysunek 9.5.2:

Rysunek 9.5.2 Rzutowanie na płaszczyznę UV fragmentu siatki

Gdy zaznaczysz na siatce w oknie 3D View tylko jej fragment (jak np. krawędź owiewki, którą pokazuje Rysunek 9.5.2), i wywołasz polecenie UV Unwrap→Project From View, w oknie UV/Image Editor zobaczysz rzut tego fragmentu. Możesz go np. zaraz po rzutowaniu „przyszpilić” (UVs→Pin — patrz str. 536).

9.6  Definiowanie grupy wierzchołków (Vertex Group)

W Blenderze istnieje możliwość przypisania wierzchołków siatki do grupy. Została stworzona z myślą o powiązaniu powierzchni modelu z animowanym szkieletem. Może się jednak przydać do „zapamiętania” jakiegoś skomplikowanego obszaru siatki, który będziesz często zaznaczał.

Nową grupę wierzchołków tworzysz w zestawie Object Data, panelu Vertex Groups (Rysunek 9.6.1):

Rysunek 9.6.1 Stworzenie i zmiana nazwy nowej grupy wierzchołków

Po naciśnięciu przycisku (Rysunek 9.6.1a) Blender utworzy nową grupę. Na liście Vertex Groups pojawi pierwsza pozycja (Rysunek 9.6.1b). Zobaczysz w niej napis Group (taka nazwa jest domyślnie nadawana każdej nowo utworzonej grupie). Zmień ją na jakąś inną — na przykład Top (por. str. 395).

Do usunięcia aktualnej grupy, której nie potrzebujesz, służy przycisk . Usunięciu ulegają tylko przypisania wierzchołków do grupy i pozycja z listy. Same wierzchołki siatki nie są, rzecz jasna, usuwane.

Na razie z grupą nie jest związany żaden wierzchołek. Zaznacz odpowiedni obszar siatki w oknie 3D View, a następnie naciśnij w panelu Vertex Groups przycisk Assign. To przypisze wybrane wierzchołki do aktualnej grupy (Rysunek 9.6.2):

Rysunek 9.6.2 Przypisanie do grupy wierzchołków

Samo przypisanie wierzchołków do grupy nie powoduje żadnej widocznej zmiany w oknie 3D View. Aby się przekonać, czy są naprawdę w aktualnej grupie, wyłącz aktualne zaznaczenie (A). Następnie naciśnij przycisk Select (Rysunek 9.6.2b). Sprawdź, czy wszystkie wierzchołki, które powinny należeć do grupy, są zaznaczone. Jeżeli nie — zaznacz brakujące, i jeszcze raz naciśnij przycisk Assign.

Przycisk Select dodaje do aktualnego zaznaczenia wszystkie wierzchołki aktywnej (tzn. podświetlonej na liście Vertex Groups) grupy, a Deselect — wyłącza ich zaznaczenie.

Całą powierzchnię możesz podzielić na kilka grup. Skoro zdefiniowaliśmy już górną powierzchnię płata jako grupę, dodajmy w ten sam sposób drugą, zawierającą „całą resztę”. Stwórz ją w ten sam sposób, co poprzednią. Nadaj jej nazwę Bottom (Rysunek 9.6.3b):

Rysunek 9.6.3 Przypisanie reszty siatki do drugiej grupy wierzchołków (Bottom)

Najprościej wybrać „całą resztę” siatki zaznaczając (przycisk Select) grupę Top. Potem należy przełączyć tryb wyświetlania z wierzchołków na ściany, i z menu okna 3D View wywołać polecenie Selection→Inverse (Ctrl - I). Powinieneś uzyskać takie zaznaczenie, jakie pokazuje Rysunek 9.6.3a). Na koniec pozostaje nacisnąć przycisk Assign, aby przypisać ten fragment siatki do grupy Bottom. Uważaj, aby nie zaznaczyć za dużo, gdyż Blender nie stawia tu przeszkód, i ten sam wierzchołek może należeć do wielu grup.

Na koniec kilka dodatkowych wskazówek:

Pojedynczy wierzchołek siatki może należeć równocześnie do wielu różnych grup wierzchołków.

Nazwy grup muszą być unikalne tylko w obrębie tej same siatki. Oznacza to, że wiele różnych siatek w Twoim modelu może mieć grupy o takich samych nazwach — Top,Bottom, czy podobnych.

(To pewne ułatwienie, gdyż nie trzeba tworzyć jakiegoś kolejnego systemu nazw).

9.7  Zaznaczenie krawędzi jako szwu (Seam)

Podczas rozwinięcia UV, Blender automatycznie dzieli siatkę wzdłuż krawędzi, które oznaczysz jako „szwy” (seams).

Nanoszenie „szwów” jest bardzo proste: zaznacz krawędzie, wzdłuż których ma być podzielone rozwinięcie UV. Następnie naciśnij Ctrl-E, i z menu Edges wybierz polecenie Mark Seam (Rysunek 9.7.1):

Rysunek 9.7.1 Oznaczanie krawędzi siatki jako linii szwów (Mark Seam)

Rysunek 9.7.2 Sterowanie wyświetlaniem szwów siatki

(To polecenie znajdziesz także w menu: Mesh→Edges→Mark Seam).

Aby usunąć szwy z zaznaczonych krawędzi, użyj polecenia Clear Seam.

Szwy są na siatce oznaczane pomarańczowym pogrubieniem. Jeżeli nie widzisz żadnego dodatkowego oznaczenia linii szwów, które stworzyłeś — zajrzyj do przybornika Properties (N), panelu Mesh Display (Rysunek 9.6.2). Sprawdź, czy masz tam włączoną opcję Seams. Jeżeli nie — możesz ją tu włączyć.

Do zaznaczania szwów możesz także wykorzystać odpowiedni tryb z panelu Mesh Options (z przybornika narzędzi — Rysunek 9.7.3):

Rysunek 9.7.3 Alternatywa metoda oznaczania szwów

Po włączeniu Options:Mesh Options: Edge Select Mode na tryb Tag Seam, przełącz jeszcze w nagłówku okna 3D View tryb selekcji siatki na krawędzie (Edges). Od tej chwili kliknięcie Ctrl-PPM w krawędź siatki oznacza ją jako szew. Powtórne takie kliknięcie wyłącza to oznaczenie.

Czasami łatwiej jest znaleźć i zaznaczać linie szwów bezpośrednio na rozwinięciach w oknie UV/Image Editor. Dlatego tam także jest dostępne polecenie UVs→Mark Seams (Rysunek 9.7.4a):

Rysunek 9.7.4 Oznaczanie linii szwów w UV/Image Editor

Po zaznaczeniu krawędzi i wywołaniu polecenia w samym oknie UV/Image Editor nic nie ulegnie zmianie[1]. Efekt polecenia zobaczysz za to w oknie 3D View (Rysunek 9.7.4b).

[1] (str. 422) Przynajmniej w Blenderze 2.62, który był aktualną wersją w chwili pisania tego fragmentu książki

9.8  Dodanie alternatywnego rozwinięcia UV (UV Map)

Czasami możesz natknąć się na sytuację, gdy dla dwóch różnych tekstur przydałyby się dwa różne rozwinięcia siatki w UV. Pokażę to na przykładzie ramki oszklenia za kabiną pilota P-40 (Rysunek 9.8.1):

Rysunek 9.8.1 Alternatywne rozwinięcia w UV siatki ramek oszklenia za głową pilota

Przy nakładaniu barw — plam kamuflażu, znaków rozpoznawczych, itp. — najlepiej, by siatka ramki znajdowała się tam, gdzie była przymocowana: na powierzchni kadłuba (Rysunek 9.8.1a). Przy takim ustawieniu jednym pociągnięciem w Gimpie namalujesz idealnie dopasowany kamuflaż na obydwu elementach. Z kolei dla tekstury nierówności (czy też odbić) lepiej byłoby, gdyby rozwinięcia kadłuba i ramki były odseparowane (Rysunek 9.8.1a). Każdy z tych elementów ma swój własny układ linii nitów i innych detali konstrukcyjnych. Gdy jedna siatka leży na drugiej — nie jesteś w stanie ich prawidłowo odwzorować (bo na każdej z powierzchni zobaczysz naraz wszystkie linie).

Na szczęście w Blenderze każda siatka może mieć kilka alternatywnych rozwinięć UV (określanych także jako „mapowania UV” — UV Maps). Do zarządzania tymi rozwinięciami służy panel UV Maps z zestawu Object Data (Rysunek 9.8.2):

Rysunek 9.8.2 Panel zarządzania mapowaniami UV (UV Maps)

Gdy dokonałeś w edytorze UV rozwinięcia siatki, Blender automatycznie utworzył pierwszą mapę, o nazwie UVMap (Rysunek 9.8.2). Możesz zmienić jej nazwę na inną (por. str. 395). Nazwy map UV muszą być unikalne tylko w obrębie pojedynczej siatki. Mogą (a w przypadku naszego modelu — muszą) się powtarzać w różnych siatkach. Gdy naciśniesz przycisk , Blender stworzy duplikat podświetlonego na liście mapowania. Podobnie przycisk umożliwia usunięcie rozwinięcia UV.

Gdy naciśniesz przycisk , poniżej mapy UVTex pojawi się jej duplikat, o nazwie UVMap (Rysunek 9.8.3):

Rysunek 9.8.3 Nowa mapa UV

Aby o tym potem nie zapomnieć, zmień od razu nazwę nowego mapowania na docelową — np. na Color (Rysunek 9.8.4a). Zwróć także uwagę na ikonę aparatu fotograficznego (), umieszczoną z prawej strony nazwy każdego z rozwinięć. Tylko jedna spośród wszystkich pozycji na liście może mieć tę ikonę w stanie nie wyszarzanym (por. Rysunek 9.8.3a i Rysunek 9.8.4a). Taka „żywa” ikona oznacza mapowanie używane domyślnie podczas renderowania — czyli to, które Cycles zwróci na wyjściu Texture Coordinate:UV (por. str. 83). To nie jest tylko informacja, ale także kontrolka! Gdy klikniesz w jedną z tych wyszarzonych () ikon LPM — zmieni swój stan na „żywy” (). W ten sposób mapowanie UV, które ją zawiera, stanie się mapowaniem domyślnym.

W oknie UV/Image Editor, a także w oknie 3D View, w trybie Textured, Blender używa zawsze mapowania aktywnego — czyli tego, które jest podświetlone na liście UV Maps. Zwróć uwagę (Rysunek 9.8.3a) że to wcale nie musi być domyślne mapowanie renderu.

Po skopiowaniu rozwinięcia UV możesz je zaznaczyć i dowolnie zmieniać w UV/Image Editor (Rysunek 9.8.4):

Rysunek 9.8.4 Zmiana jednej z map UV

W nagłówku okna UV/Image Editor znajdziesz pomocniczą listę rozwijalną do wyboru aktywnej mapy UV (Rysunek 9.8.5):

Rysunek 9.8.5 Lista wyboru aktywnej mapy UV w oknie UV/Image Editor

9.9  Sterowanie zwrotem wektorów normalnych (Normal)

W Blenderze każda ściana ma stronę „wewnętrzną” i „zewnętrzną”. O tym, która jest zewnętrzna, decyduje zwrot[1] wektora normalnego (tzn. prostopadłego), który jest przypisany do każdej ściany.

Aby włączyć wyświetlanie normalnych do ścian siatki, otwórz Properties Shelf (N) i przejdź do panelu Mesh Display (Rysunek 9.9.1):

Rysunek 9.9.1 Włączenie wyświetlania kierunków normalnych do ścian siatki

Włącz w nim opcję Normals:Face, w środkach każdej ściany pojawią się błękitne kreski (Rysunek 9.9.1). Zazwyczaj będziesz musiał je nieco wydłużyć, korzystając z kontrolki Normal Size.

Gdy zwrot normalnych na sąsiadujących ścianach jest różny, w trybie cieniowania Shade Smooth zobaczysz na siatce brzydkie, czarne cienie. Ale gdy wszystkie normalne siatki wskazują w niewłaściwą stronę, podczas modelowania w oknie 3D View możesz nie zauważyć niczego podejrzanego. Będzie to jednak przyczyną dziwnego „lustrzanego” efektu na renderze, gdy użyjesz w materiale połyskliwego shadera Glosssy BSDF.

Zaradzenie temu efektowi jest bardzo proste: w trybie edycji siatki zaznacz wszystkie ściany (Select All — A) i naciśnij Ctrl-N (Mesh→Normals→Recalculate Outside — Rysunek 9.9.2):

Rysunek 9.9.2 Przeliczenie kierunku normalnych

Zazwyczaj Blender poprawnie zrozumie twoje intencje, i przerzuci wszystkie normalne na jedną stronę ścian siatki.

A co jeżeli jednak nie zrozumie? Rysunek 9.9.3a) przedstawia taki złożony przypadek. To siatka modelująca wewnętrzną powierzchnię kabiny pilota. Jak widzisz, część jej ścian jest skierowana poprawnie, a część nie. Polecenia Recalculate Outside nie można tu użyć, bo te ściany trzeba skierować „do wewnątrz”. W Blenderze istnieje także polecenie Recalculate Inside (Shift–Ctrl-N). Nie możemy go jednak tutaj użyć, bo część tylnych ścian kabiny ma pozostać skierowana „ na zewnątrz”. Jedynym rozwiązaniem jest zaznaczyć wszystkie nieprawidłowe ściany i wywołać polecenie Mesh→Normals→Flip Normals (Rysunek 9.9.3b)

Rysunek 9.9.3 Przełączenie kierunków normalnych dla wybranych ścian siatki

(Polecenie Flip Normals masz dostępne także w menu Specials — wywoływanym skrótem W).

Rysunek 9.9.4 Kierunki normalne w wierzchołkach siatki

Na zakończenie warto wspomnieć, że Blender potrafi także wyświetlać drugi rodzaj normalnych: w wierzchołkach (Rysunek 9.9.4) . Są one wypadkową normalnych do ścian, które łączy każdy wierzchołek. To, czy wolisz operować na normalnych ścian czy wierzchołków jest kwestią gustu. W istocie są to dwie alternatywne metody reprezentacji tych samych wartości.

[1] (str. 425) Jeżeli niespecjalnie uważałeś na lekcjach geometrii, zwrot określasz rysując „strzałkę” na końcu wektora (można ją narysować z jednej lub z drugiej strony kreski jego odcinka). Traktuj niebieską kreskę, rysowaną przez Blender, jako taką wychodzącą ze ściany „strzałkę”.

9.10  Sterowanie kierunkiem normalnych wzdłuż krawędzi siatki

Kierunek normalnych do powierzchni wpływa na to, w jaki sposób wyświetlane są na ekranie krawędzie siatki. Program może wyznaczyć wektor normalny dla każdej płaskiej, elementarnej ściany. Każdy komputerowy model oświetlenia wymaga określenia kierunku normalnego dla dowolnego miejsca powierzchni. Jeżeli przyjmiemy najprostsze założenie, że na kierunek normalny na całym obszarze ściany jest stały (Rysunek 9.10.1a), uzyskamy efekt jak dla trybu Shade Flat (Rysunek 9.10.1b):

Rysunek 9.10.1 Wektory normalne w trybie Shade Flat

Cieniowanie Shade Flat jest nieodpowiednie dla obłych powierzchni, takich jak opływowe kształty współczesnych samolotów. Musiałbyś bardzo zagęścić ich siatki, by wyglądały na gładkie!

Na szczęście nie musimy tak komplikować modelu, bo mamy do dyspozycji drugi tryb cieniowania: Shade Smooth (Rysunek 9.10.2):

Rysunek 9.10.2 Wektory normalne w trybie Shade Smooth

W tym trybie kierunek normalny w dowolnym punkcie powierzchni jest interpolacją (uśrednieniem) kierunków normalnych najbliższych ścian (Rysunek 9.10.2a). Do interpolacji wykorzystuje się tzw. metodę Phonga, bardzo popularną w grafice komputerowej. Używając jej, za pomocą niewielu ścian można uzyskać wrażenie gładkiej powierzchni (Rysunek 9.10.2b).

Element, który przedstawia Rysunek 9.10.2b), to oszklenie owiewki kabiny pilota. Na powiększeniu ilustracji pokazuję, że ma ona niewielką grubość. Jej siatka oryginalnie wygładzona powierzchnią podziałową. Krawędź, biegnącą wzdłuż jej brzegu oznaczyłem jako “ostrą” (Crease), by owiewka wyglądała jak wygięty arkusz szkła organicznego. Spowodowało to pojawienie się na ścianach sąsiadujących z tą ostrą krawędzią dziwnych cieni (Rysunek 9.10.2b).

Jeżeli zignorujesz te cienie, staną się przyczyną dziwnych efektów na renderze (Rysunek 9.10.3):

Rysunek 9.10.3 Efekt ostrej krawędzi oszklenia powierzchni i cieniowania Shade Smooth na renderze

To rezultat zastosowania interpolacji normalnych metodą Phonga dla ostrej krawędzi. Na szczęście remedium jest bardzo proste: włącz dla tej siatki opcję Auto Smooth i ustaw kąt graniczny na 30º- 90º (Rysunek 9.10.4):

Rysunek 9.10.4 Opcja Auto Smooth — automatyczne korygowanie ostrych krawędzi

Gdy opcja Auto Smooth z paneluNormals jest włączoną, Blender poprawia kierunki normalne wzdłuż wszystkich krawędzi siatki, które łączą ściany pod kątem większym niż określony graniczny kąt Angle. (Kierunki normalnych wzdłuż takiej krawędzi są rozdzielone, jak pokazywał to Rysunek 9.10.1a).

Dla powierzchni nieprzejrzystych interpolacja normalnych wzdłuż krawędzi nie powoduje tak drastycznych skutków, jak dla szkła. Przyjrzyj się na przykład tej owiewce skrzydła (Rysunek 9.10.5):

Rysunek 9.10.5 Odblask wzdłuż nieskorygowanej krawędzi

Tutaj taka krawędź wygląda jak zaokrąglona i nadaje elementowi wrażenie grubości (Rysunek 9.10.5b).

Co jednak robić w takim przypadku, jaki pokazuje Rysunek 9.10.6? Powiedzmy, że chcielibyśmy zachować wrażenie zaokrąglonych krawędzi przy szkle kabiny. Jednocześnie warto usunąć brzydkie cienie na zewnętrznych krawędziach tej ramki:

Rysunek 9.10.6 Nieskorygowane krawędzie ramki

Rysunek 9.10.7 Ramka po automatycznej korekcie

Zastosowanie Auto Smooth z wartością Angle do 90º „spłaszcza” wszystkie ostre krawędzie. A nam chodzi, aby tak poprawić tylko zewnętrzną krawędź ramki — tak, jak pokazuje Rysunek 9.10.7.

Taki wybiórczy efekt jest do osiągnięcia. Trzeba tylko najpierw oznaczyć krawędzie, które mają być skorygowane, specjalną flagą Sharp. Upewnij się, że przyborniku właściwości tej siatki masz włączoną opcję Mesh Display:Overlays:Sharp — Rysunek 9.10.8a). Potem zaznacz korygowane krawędzie:

Rysunek 9.10.8 Oznaczanie wybranych krawędzi jako Sharp

Z menu Mesh→Edges (Ctrl-E) wywołaj polecenie Mark Sharp. W efekcie Blender podświetli zaznaczone krawędzie na czerwono (Rysunek 9.10.8b). (Taki kolor jest przypisany fladze Sharp). Potem wystarczy przestawić kąt graniczny Normals:Angle na 180º (Rysunek 9.10.9a):

Rysunek 9.10.9 Rezultat — selektywna korekta krawędzi

Tak duży kąt graniczny powoduje, że „ostre” są tylko krawędzie oznaczone flagą Sharp (Rysunek 9.10.9b).

Oznaczanie krawędzi flagą Sharp można także wykonać w inny sposób (Rysunek 9.10.10):

Rysunek 9.10.10 Alternatywna metoda oznaczanie krawędzi flagą Sharp

Niestety, flaga Sharp nie może mieć wartości pośrednich, tak jakie ma dla powierzchni podziałowych flaga Crease. Czasami więc możesz natknąć się na taki przypadek, jak dla kołpaka śmigła, który przedstawia (Rysunek 9.10.11). Bez korekty kierunku normalnych krawędź kołpaka wygląda na zbyt zaokrągloną:

Rysunek 9.10.11 Krawędź nieskorygowana

Rysunek 9.10.12 Krawędź skorygowana

Działanie Auto Smooth jest w tym przypadku nieco za mocne: część krawędzi kołpaka zlewa się zupełnie z osłoną silnika (Rysunek 9.10.12).

W takim przypadku pozostaje tylko jedno: wstawienie w pobliżu „ostrej” krawędzi dodatkowego rzędu wierzchołków (np. poleceniem Loop Cut and Slide — Rysunek 9.10.13a):

Rysunek 9.10.13 Zmniejszenie cienia na powłoce poprzez wstawienie dodatkowej krawędzi

Nowa krawędź przy brzegu kołpaka zdecydowanie zmniejsza efekt zaokrąglenia (Rysunek 9.10.13b).

Jak widzisz, Blender nie pozwala na bezpośrednią manipulację kierunkami normalnych siatki. Możesz to robić pośrednio, aby uzyskać na renderze poprawny efekt ostrej krawędzi. Służą do tego opcje z panelu Normals.

Dopóki można, staraj się eliminować zaburzenia kierunku normalnych wzdłuż ostrych krawędzi opcją Auto Smooth i — ewentualnie — modyfikatorem Bevel. Dodanie nowej krawędzi do siatki nie eliminuje, a tylko zmniejsza te zaburzenia.

Aby uniknąć poważnych kłopotów na renderze (por. str. 428, Rysunek 9.10.3b), do elementów „szklanych” zawsze stosuj opcje Auto Smooth z kątem granicznym = 30º. Można go także używać do większości innych siatek z ostrymi krawędziami (np. siatki płata). Tylko w szczególnych przypadkach warto używać zaznaczania pojedynczych krawędzi flagą Sharp, tak jak to pokazałem na str. 429.

Czasami decydowałem się — ale jeszcze na etapie modelowania — wstawiać dodatkowe krawędzie aby usunąć duże zaburzenia kierunku normalnych. Zrobiłem to „na wszelki wypadek”. Sądzę, że w ten sposób te siatki sprawią mniejszy kłopot przy imporcie do jakiegoś programu, za pomocą formatu danych który nie uwzględnia informacji o kierunkach normalnych. Dodanie nowej krawędzi na późniejszych etapach prac nad modelem może być dość kłopotliwe. Gdy siatki modelu są już rozwinięte w przestrzeni UV (por. str. 95 - 128) każda nowa krawędź wymaga dodatkowej korekty tego rozwinięcia.

Na koniec warto wspomnieć o pewnym zaskakującym efekcie ubocznym opcji Auto Smooth. Gdy stworzyłem pierwszy render samolotu, obiekty, zobaczyłem że prawe skrzydło jest zupełnie czarne (Rysunek 9.10.14a). Taki efekt dotknął wszystkich obiektów, które powstały w wyniku „lustrzanego odbicia” (operacji Mirror — tzn. takich, które mają co najmniej jeden ze współczynników skali ujemny):

Rysunek 9.10.14 Niespodziewany efekt opcji Auto Smooth (dla „starszych” siatek)

Rysunek 9.10.15 Alternatywa: modyfikator Edge Split

Wystarczyło jednak wyłączyć opcję Auto Smooth, aby wszystko wróciło do normy (Rysunek 9.10.14b).

Takie samo działanie jak opcja Normals:Auto Smooth ma modyfikator Edge Split (Rysunek 9.10.15). Należy tylko pamiętać, że modyfikatory są związane z obiektem, a nie z siatką. W modelu przedstawionym powyżej ta sama siatka połowy skrzydła jest użyta dwa razy (i to dlatego prawe skrzydło ma ujemną skalę). Aby uniknąć na płatach sztucznych „przebarwień”, po wyłączeniu opcji Auto Smooth dodałem modyfikator Edge Split do obiektów prawego i lewego skrzydła.

Rozdział 10.  Blender — edytor materiałów (Cycles)

Ten rozdział opisuje szczegóły definiowania materiałów I otoczenia dla silnika renderującego Cycles. (Jest to renderer który wybrałem do użycia w tej książce — por. str. 25). Jego materiały komponuje się głównie za pomocą węzłów (nodes), więc w tym rozdziale będziemy prawie przez cały czas korzystać z okna Node Editor. (Wprowadzenie do Node Editor znajdziesz na str. 389).

10.1  Zdefiniowanie nowego materiału

Pokażę tu stworzenie najprostszego materiału dla silnika renderera Cycles. Nazwiemy go B.Skin.Camouflage.

Zacznijmy od sytuacji wyjściowej: wybraliśmy obiekt do którego ma być przypisany nowy materiał (to B.100.R.Wing — Rysunek 10.1.1a). W oknie Properties wybierz zestaw Material, i naciśnij przycisk New (Rysunek 10.1.1b):

Rysunek 10.1.1 Obiekt (a właściwie — siatka) bez przypisanego materiału

W rezultacie Blender stworzył nowy materiał (o domyślnej nazwie Material) i przypisał go do siatki aktywnego obiektu. W zestawie Material pojawiły się panele (Rysunek 10.1.2a):

Rysunek 10.1.2 Zmiana nazwy nowego materiału

Najlepiej od razu zmienić temu materiałowi nazwę — w tym przypadku na B.Skin.Camouflage (Rysunek 10.1.2b).

W konfiguracji, jaką wybraliśmy (por. Rysunek 7.4.3, str. 368 — okno User Preferences, przełącznik Link Materials To:) materiał jest przypisany do siatki, a nie do obiektu. Stąd obok nazwy materiału widzisz wybrany tryb Data (por. Rysunek 12.1.2b). To skrót od Object Data. Blender umożliwia przypisanie różnym fragmentom pojedynczej siatki różnych materiałów, które wybiera się z listy umieszczonej ponad nazwą. (Szczegółowy opis wykorzystania wielu materiałów w jednej siatce znajdziesz na str. 414).

Wróćmy jednak do naszego materiału. Jego kolor na renderze ustawiasz w polu Color panelu Surface (Rysunek 10.1.3):

Rysunek 10.1.3 Zmiana barwy materiału

(Szczegóły posługiwania się tą kontrolką znajdziesz na str. 386). Jednak ten kolor nie ma żadnego wpływu na barwę wyświetlaną w oknie 3D View. (Mam na myśli kolor w domyślnym trybie Solid, który wykorzystujemy podczas edycji). Do ustalenia tej barwy służy pole Viewport Color w panelu Settings (Rysunek 10.1.4):

Rysunek 10.1.4 Zmiana barwy materiału w oknie 3D View (tryb Viewport Shading=Solid)

Raz utworzony materiał można przypisać wielu obiektom/siatkom. W Blenderze możesz także przypisać materiał wielu obiektom naraz. O tym, jak to zrobić, możesz przeczytać na str. 414.

10.2  Wprowadzenie do kompozycji materiałów

Ta sekcja przedstawi Ci typową metodę pracy z materiałami w Cycles: definiowanie efektu za pomocą tzw. węzłów (nodes). Pokażę to na przykładzie modyfikacji materiału powierzchni samolotu. Zacznijmy od opisu problemu (Rysunek 10.2.1):

Rysunek 10.2.1 Jak uzyskać połysk na powierzchni samolotu?

Rysunek 10.2.1a) przedstawia samolot pokryty najprostszym materiałem w kolorze szarym — takim, jakiego stworzenie zostało opisane w sekcji 10.1 (str. 433). Materiał ten wykorzystuje zupełnie matowy typ powierzchni (określany tutaj jako shader, albo BSDF) o nazwie Diffuse (jest wybrany w panelu Material:Surface — por. Rysunek 10.2.2a)

Rysunek 10.2.2 Parametry shadera Diffuse

Rysunek 10.2.3 Wpływ parametru Roughness

Wygląda na to, że shader Diffuse ma raptem dwa parametry. Jeden z nich — Color — jest intuicyjny, zresztą ustawiałeś już go zaraz po utworzeniu materiału (por. str. 434).

Drugi — Roughness („szorstkość”) — jest domyślnie ustawiony na 0.0 (tak, jak pokazuje Rysunek 10.2.2a). A co by się stało, gdyby go zwiększyć?

Rysunek 10.2.3 przedstawia, jak zmienia się powierzchnia modelu dla różnych wartości tego parametru. Wygląda to tak, jak gdyby materiał stał się nieco mniej „czuły” na oświetlenie (dla większych wartości Roughness kadłub staje się ciemniejszy).

Efekt może i ciekawy, ale zupełnie nie jest to, o co nam chodzi. Ustawmy „szorstkość” naszego materiału na jakąś niewielką, niezerową wartość — np. 0.2 — i szukajmy połysków gdzie indziej.

Spróbuj wybrać z listy rozwijalnej Surface inny rodzaj shadera — na przykład ten o obiecującej nazwie Glossy

(Rysunek 10.2.4):

Rysunek 10.2.4 Przełączenie na shader Glossy

To z kolei dało efekt zbyt mocny — z przodu samolotu pojawiły się odbicia jak na zamazanym lustrze. Dla małych wartości Roughness (0.0..0.4) ten materiał wygląda metalicznie i jest zbyt połyskliwy (Rysunek 10.2.4b i Rysunek 10.2.5c). Zwróć uwagę, że im mniejsza „szorstkość” tym białe odbicia światła stają się mniejsze i mają coraz ostrzejsze granice. Ostatecznie dla Roughness = 0.0 powierzchnia samolotu zmienia się w idealne lustro i wszelkie odbicia światła znikają[1] (Rysunek 10.2.5d):

Rysunek 10.2.5 Shader Glossy — dla różnych wartości Roughness

Dla większych wartości „szorstkości” (0.5..0.8) odbicia wypełniają większą część powierzchni (Rysunek 10.2.5a i b). Są jednak na tyle rozproszone, że nie tworzą już połysków o kształcie i intensywności, której potrzebujemy.

Możesz spróbować wybrać jeszcze inne shadery z listy Surface. (Zwróć jednak uwagę, że wiele z nich — np. Background, Emission, Holdout, Mix Shader, Add Shader służy do czegoś zupełnie innego). W sumie ta lista dostępnych shaderów jest w Cycles dość krótka. Są to wszystkie te z końcówką „BSDF”. Mamy tu szkło (Glass), lustro (Glossy), „glina” (Diffuse), „aksamit” (Velvet)… Każdy z nich ma niewiele parametrów i bardzo się różni od pozostałych. I jak tu tworzyć w oparciu o takie shadery realistyczne materiały?

Otóż są to zaledwie podstawowe składniki! Kluczowym założeniem Cycles jest komponowanie przez użytkownika materiałów o najróżniejszych właściwościach poprzez łączenie ze sobą tych elementarnych typów powierzchni. Materiał, który pokazuje Rysunek 10.2.1b), uzyskamy z odpowiedniego połączenia shaderów Glossy i Diffuse. Aby to zrobić, przełącz jedno z okien Blendera w tryb Node Editor.

Node Editor pozwala tworzyć schematy złożone z tzw. węzłów (nodes). Węzły, podobnie jak znane Ci do tej pory kontrolki w panelach czy oknach dialogowych, służą do zmiany parametrów materiału. Takie schematy to po prostu inna forma prezentacji. Jeżeli nie pracowałeś do tej pory w edytorze węzłów — przeczytaj jego opis na str. 389. Obsługa nie jest specjalnie skomplikowana, skróty większości operacji (zmiana projekcji, zaznaczanie, przesuwanie, usuwanie, kopiowanie węzłów) są takie same jak w oknie 3D View.

W chwili otwarcia w edytorze, definicja naszego materiału składała się z dwóch węzłów: shadera (Glossy BSDF) i rezultatu (Material Output). Dodajmy do niej drugi shader: Diffuse (Add→Shader→Diffuse BSDF) (Rysunek 10.2.6):

Rysunek 10.2.6 Dodanie do definicji materiału shadera Diffuse

W podobny sposób dodaj do schematu trzeci węzeł: Mix Shader (Add→Shader→Mix Shader) i połącz je tak, jak pokazuje (Rysunek 10.2.7a):

Rysunek 10.2.7 Złożenie dwóch shaderów za pomocą Mix Shader

Mix Shader „miesza” shadery połączone do jego dwóch wejść w proporcji określonej przez wartość Factor. Gdy Factor = 0.0, wykorzystywany jest wyłącznie pierwszy shader (w tym przypadku Diffuse BSDF). Rezultat wygląda wtedy bardzo podobnie do tego, co przedstawia Rysunek 10.2.2b). Gdy z kolei Factor = 1.0, Blender bierze pod uwagę wyłącznie drugi shader (w tym przypadku — Glossy BSDF) i rezultat wygląda tak, jak Rysunek 10.2.4b). Efekt połysku, o który nam chodzi, pojawia się dla wartości Factor leżących w pobliżu wartości 0.5 (Rysunek 10.2.7b).

Do tej pory ocenialiśmy odblaski, oglądając model z dużej odległości. Teraz przyjrzyjmy się uzyskanemu efektowi nieco bliżej, z innego punktu widzenia (Rysunek 10.2.8):

Rysunek 10.2.8 Powierzchnia samolotu dla różnych wartości Mix Shader:Factor

Wydaje mi się, że cień na wlocie do chłodnicy nawet dla Mix Shader:Factor = 0.2 jest zbyt głęboki (Rysunek 10.2.8a). Z drugiej strony — dla jeszcze mniejszych wartości (< 0.2) połysk zupełnie zanika. W dodatku powierzchnia samolotu szybko ciemnieje w miarę wzrostu udziału shadera Glossy (por. Rysunek 10.2.8a i c). To może utrudnić późniejsze nałożenie tekstur, które najlepiej wychodzą na możliwie jasnych powłokach.

Rysunek 10.2.9 Użycie współczynnika Fresnela do łączenia shaderów

Te shadery trzeba połączyć w inny sposób — tak, by udział połyskliwego Glossy BSDF nie był wszędzie równy. Powinien być uzależniony od kąta, pod którym obserwator widzi poszczególne fragmenty powierzchni. Do uzyskania takiego efektu służy węzeł Layer Weight (por. str. 447). Dodaj go do schematu (poleceniem Add→Input→Layer Weight) i podłącz tak, jak to pokazuje Rysunek 10.2.9.

Ustaw współczynnik Layer Weight:Blend na jakąś umiarkowaną wartość (np. 0.6).

Przy takich ustawieniach model wygląda dużo lepiej. Stał się jaśniejszy, a cienie na wlocie chłodnicy stały się bardziej „miękkie” (Rysunek 10.2.10):

Rysunek 10.2.10 Eliminacja cieni na niektórych krawędziach — poprzez zmianę metody obliczeń odbić na CGX

Wypróbuj ten efekt dla różnych wartości Layer Weight:Blend. Przekonasz się, że masz teraz do dyspozycji o wiele większy zakres wartości, przy których odbłyski wyglądają realistycznie. Jedyne, co jeszcze mi się nie podoba to cienie wzdłuż górnych krawędzi skrzydła i usterzenia (Rysunek 10.2.10a). Okazuje się, że za ten efekt odpowiada domyślny algorytm węzła Glossy BSDF:Beckmann. Gdy zmienisz go na alternatywny — CGX — cienie znikają i całość wygląda tak, jak powinna (Rysunek 10.2.10b). Ostateczny schemat materiału przedstawia Rysunek 10.2.11:

Rysunek 10.2.11 Schemat opracowanego materiału i rezultat na podglądzie renderu

[1] (str. 436) Nasz model nie ma tu żadnego otoczenia, tylko jednolite tło — stąd na jego powierzchni odbija się tylko sam samolot, a reszta ma jednolity kolor. Więcej o takich metalicznych powierzchniach znajdziesz na str. 459.

10.3  Grupowanie węzłów

W sekcji 10.2 skomponowaliśmy materiał B.Skin.Camouflage, który ma odwzorować zewnętrzne powierzchnie samolotu (Rysunek 10.3.1):

Rysunek 10.3.1 Zespół węzłów, który zgrupujemy

To samo rozwiązanie powinniśmy wykorzystać także w drugim materiale, którym pokryte są powierzchnie wewnętrzne — B.Skin.Inner. Tyle, że tam materiał ma mieć inną barwę. Zamiast tworzyć od nowa ponownie ten sam schemat, możemy przekształcić zaznaczony na ilustracji zespół węzłów w tzw. grupę (group). Stworzymy w ten sposób nasz własny, wyspecjalizowany węzeł, który będzie można użyć w obydwu materiałach (Użycie grupy węzłów w materiale B.Skin.Inner — p. str. 445). Łączenie węzłów ma jeszcze tą zaletę, że gdy zdecydujemy się coś zmienić w tym zespole (np. zmienić typ odblasków w shaderze Glossy BSDF z CGX na Beckmann) to ta zmiana będzie dotyczyć każdego materiału, w którym jest użyta ta grupa.

Aby stworzyć nową grupę, zaznacz obiekty które wchodzą w jej skład, np. obszarem prostokątnym (B — Rysunek 10.3.2a). Potem wywołaj polecenie Node→Group→New Group (Ctrl-G). Zaznaczone węzły zostaną połączone w nową grupę (Rysunek 10.3.2b):

Rysunek 10.3.2 Stworzenie nowej grupy węzłów

Blender od razu otwiera nową grupę w trybie edycji. Świadczy o tym inny kolor tła oraz obecność dwóch nowych węzłów: Group Input i Group Output (Rysunek 10.3.2b).

W każdej chwili możesz powrócić z definicji grupy do definicji materiału: wystarczy nacisnąć Tab lub przycisk Go to parent tree (Rysunek 10.3.3a):

Rysunek 10.3.3 Przełączanie się pomiędzy definicją grupy i definicją wykorzystującego ją materiału

Aby z powrotem przejść do definicji grupy należy zaznaczyć jej węzeł (Rysunek 10.3.3b) i nacisnąć Tab (lub wywołać polecenie Node→Edit Group).

Od razu zmień w węźle grupy jej nazwę na jakąś bardziej odpowiednią (Rysunek 10.3.4):

Rysunek 10.3.4 Zmiana nazwy grupy

Grupa z tego przykładu będzie nam służyć jako shader powłok pomalowanych półmatową lub błyszczącą farbą. Dlatego proponuję ją nazwać Glossy Paint.

Powróćmy do definicji grupy. Przyjrzyj się dwóm węzłom o żółtych nagłówkach (por. Rysunek 10.3.3a): Group Input zawiera wejścia grupy, a Group Output — jej punkty wyjściowe. Na razie nasza grupa ma jedno wyjście (o nazwie Shader) i żadnych wejść. Umieśćmy więc w Group Input kolor obydwu shaderów. Aby to uzyskać, podłącz wejście jednego z shaderów do „pustego” gniazda węzła Group Input (Rysunek 10.3.5):

Rysunek 10.3.5 Definiowanie wejścia węzła grupy Gloss Paint

Zauważ, że Blender przesunął teraz puste wyjście węzła Group Input do dołu — ale nadal jest dostępne!

Rysunek 10.3.6 Synchronizacja ustawień shaderów

Załóżmy (tylko dla przykładu!) że obydwa shadery (Glossy BSDF i Diffuse BSDF) powinny mieć ten sam kolor. Możemy to teraz wymusić podłączając obydwa węzły do tego samego gniazda wejściowego (Rysunek 10.3.6).

W podobny sposób „wyciągnij” z obydwu shaderów parametr Roughness (jego wartości powinny być jednakowe). Na koniec przenieś także do parametrów wejściowych współczynnik Layer Weight:Blend (Rysunek 10.3.7a):

Rysunek 10.3.7 Ulepszony węzeł Gloss Paint

Gdy spróbujesz „zwinąć” definicję grupy przekonasz się, że „wyciągnięte” w ten sposób wejścia stały się parametrami jej węzła (Rysunek 10.3.7b).

Podczas edycji grupy z prawej strony ekranu możesz otworzyć przybornik Properties (N). Tam, w panelu Interface, znajdziesz się kontrolki służące do zarządzania jej wyjściami i wejściami (Rysunek 10.3.8a). Gdy na liście Inputs lub Outputs wybierzesz (podświetlisz) jakiś punkt we/wy, u dołu panelu zobaczysz jego właściwości. Możesz tam zmienić jego nazwę lub go usunąć. W polu Default Value można ustawić domyślną wartość tego parametru (w przypadku pokazanym przez Rysunek 10.3.8a jest to barwa):

Rysunek 10.3.8 Panel Interface — zarządzanie wejściami i wyjściami grupy

Dla parametrów które są pojedynczą liczbą, Blender wyświetla w panelu Interface inny zestaw kontrolek (Rysunek 10.3.8b). Możesz tu ustalić dopuszczalny zakres wartości takiego współczynnika (pola Min i Max).

Patrząc na grupę przedstawioną przez Rysunek 10.3.7, wydaje mi się że jej użytkownik (czyli — ja sam, za parę miesięcy) może mieć problem ze zrozumieniem co właściwie zmienia parametr Blend. Na szczęście bez problemu możemy zmienić tę nazwę na inną. Wystarczy wpisać nową w polu Interface:Name (Rysunek 10.3.9a). W ten sam sposób możesz zmieniać także nazwy punktów wyjścia, z listy Outputs (Rysunek 10.3.9b). (W naszym przykładzie jest to jeden punkt, o domyślnej nazwie Shader. Myślę że nie pozostawia wątpliwości co do sposobu użycia, więc pozostawiamy ją bez zmian).

Rysunek 10.3.9 Zmiana nazwy parametru grupy

Dzięki stworzeniu grupy schemat naszego materiału został zredukowany do dwóch węzłów i trzech parametrów, które są w nim istotne (Rysunek 10.3.10):

Rysunek 10.3.10 Węzeł Glossy Paint w oknie Properties (zestaw Material)

Zwróć uwagę, że w oknie Properties nawet zazwyczaj „zaśmiecona kontrolkami” panel Material:Surface wyświetla dla tego schematu wyłącznie parametry grupy Glossy Paint. Dzięki temu stała się prosta i czytelna.

W każdym schemacie materiału są jakieś parametry, które można zmieniać, oraz inne, których nie należy ruszać bo się zepsuje cały efekt. Łączenie węzłów w grupy pozwala także wyróżnić i nadać bardziej odpowiednie nazwy tym wybranym parametrom. W ten sposób schemat staje się bardziej czytelny — bo użytkownik może traktować każdą grupę jak „czarną skrzynkę”, nie zagłębiając się w to, jak działa.

W schemacie grupy możesz stosować nie jeden, a kilka instancji Group Input. Przydaje się to gdy chcesz uniknąć efektu „spaghetti”: wielu krzyżujących się linii połączeń, które są trudne do śledzenia (Rysunek 10.3.11):

Rysunek 10.3.11 Uproszczenie układu połączeń wewnątrz grupy za pomocą drugiej instancji Group Input

Rysunek 10.3.12 Użycie tego samego parametru w dwóch instancjach Group Input

Uważaj jednak by w takim upraszczaniu nie posunąć się zbyt daleko! Na przykład: unikaj wykorzystywania tego samego wyjścia w dwóch różnych instancjach Group Input (Rysunek 10.3.12). Choć z technicznego punktu widzenia jest to poprawne, wydaje mi się, że schemat jest mniej czytelny.

Przedstawiony w tej sekcji sposób prezentacji schematu grupy został wprowadzony dopiero w Blenderze 2.67. Poniżej opiszę pokrótce jak wyglądała definicja grupy we wcześniejszych wersjach (może się to przydać przy analizie różnych tutoriali stworzonych przed 2013r). W Blenderze 2.66 i wcześniejszych zawartość edytowanej grupy była otaczana ramką (Rysunek 10.3.13b). Na lewym boku ramki były umieszczone gniazda wejściowe, a na prawym — wyjściowe. Umieszczone wewnątrz węzły były podłączane do tych gniazd. Rysunek 10.3.13 pokazuje porównanie obydwu sposobów wyświetlania zawartości grupy:

Rysunek 10.3.13 Porównanie „starej” i „nowej” metody prezentacji definicji grupy węzłów

Uważam że dla mniej złożonych grup węzłów „stary” sposób prezentacji (Rysunek 10.3.13b) był bardziej czytelny, przynajmniej dla takich prostych grup jak przedstawione w tej książce. Widać było na nim nazwę grupy (w nagłówku ramki) i wartość domyślną każdego parametru. Otoczenie węzłów charakterystyczną ramką pozwala się natychmiast zorientować, że to jest definicja grupy.

10.4  Wykorzystanie grupy węzłów

W sekcji 10.3 (str. 440) przekształciliśmy grupę węzłów w nowy element — shader o nazwie Gloss Paint. Początkowo jest używany tylko w materiale powierzchni zewnętrznych samolotu (B.Skin.Camouflage). W tej sekcji pokażemy, jak użyć tego shadera w materiale powierzchni wewnętrznych (B.Skin.Inner).

Zaznacz jakiś obiekt, który wykorzystuje materiał B.Skin.Inner. Gdy jest to jakiś prosty materiał, złożony z jednego shadera, najwygodniej jest go zmienić w zestawie Material okna Properties (Rysunek 10.4.1):

Rysunek 10.4.1 Zmiana typu węzła shadera na Gloss Paint

Zacznij od skopiowania koloru ze starego węzła[1] do schowka (Rysunek 10.4.1a) — chyba, że nie chcesz go zachować. Następnie rozwiń listę rozwijalną z typami shaderów (Rysunek 10.4.1b) i wybierz z niej grupę Gloss Paint. I to wszystko. No, może nie do końca: zawróć uwagę, że podstawił się nam domyślny kolor i inne ustawienia grupy (Rysunek 10.4.1c). Możesz teraz zmienić kolor Glossy Paint:Diffuse [2] na ten skopiowany do schowka.

Jeżeli schemat materiału jest bardziej złożony, i w oknie Properties nie możesz odnaleźć węzła, który chcesz zmienić, otwórz okno Node Editor. Poleceniem Add→Group→Gloss Paint dodaj do schematu tego materiału nowy węzeł (Rysunek 10.4.2):

Rysunek 10.4.2 Dodanie do schematu materiału węzła grupy Gloss Paint

(Tak! Nie dziw się — Blender umieści w menu Group polecenie tworzące każdą grupę węzłów, którą masz zdefiniowaną w tym pliku *.blend).

Spowoduje to dodanie do schematu nowego, początkowo nie podłączonego węzła (Rysunek 10.4.3a):

Rysunek 10.4.3 Włączenie shadera Gloss Paint do schematu (na miejsce Diffuse BSDF)

Następnie zmień barwę Diffuse węzła Gloss Paint na kolor dotychczasowego węzła[3] (Rysunek 10.4.3a). Potem przenieś połączenia ze starego węzła na nowy, i ostatecznie usuń niepotrzebny element (Rysunek 10.4.3b).

Pamiętaj, że wszystkie materiały w których używasz grupy Glossy Paint, odwołują się do tego samego bloku danych z jej definicją (zwróć uwagę na licznik użycia tej grupy — Rysunek 10.4.3b).

Grupy są współdzielone pomiędzy materiałami. Oznacza to, że jakakolwiek zmiana w definicji grupy ma wpływ na wszystkie materiały, które jej używają.

[1] (str. 445) Można to zrobić kopiując do schowka odczytany z kontrolki Diffuse BSDF:Color kod koloru w trybie Hex (por. str. 387); Można także otworzyć kontrolkę Gloss Paint:Color i wskazać jej ten kolor z ekranu (por. str. 386).

[2] (str. 445) Wklejając skopiowany przed chwilą kod Hex w odpowiednie pole kontrolki Gloss Paint:Diffuse.

[3] (str. 446) Gdy masz stary i nowy węzeł obok siebie, możesz rozwinąć kontrolkę barwyGloss Paint:Diffuse i wskazać jej poprzedni kolor wprost z ekranu — kilkając w odpowiednie pole starego węzła (por. str. 386).

10.5  Węzły Layer Weight i Fresnel

Węzeł Layer Weight możesz dodać w Node Editor poleceniem Add→Input→Layer Weight. Ten element ma dwa wyjścia: Fresnel i Facing (Rysunek 10.5.2). Każde z nich zwraca liczbę z zakresu 0..1.0. Wartości tych współczynników zależą od kąta pod którym kamera „widzi” odpowiednią ścianę modelu. Parametr Blend steruje intensywnością efektu. Może przyjmować wartości z zakresu od 0 do 1 (traktuj je jako 0%..100%).

Rysunek 10.5.1 Węzeł Layer Weight

Rysunek 10.5.2 Materiał do testowania wartości współczynników Layer Weight

Wartości z węzła Layer Weight można na przykład użyć do sterowania udziałem shaderów łączonych węźle Mix Shader (Rysunek 10.5.2). Uzależnia to cechy otrzymanego materiału od kąta pochylenia powierzchni modelu, co pozwala uzyskać różne ciekawe efekty.

Abyś mógł lepiej ocenić, jakie właściwie wartości zwraca Layer Weight dla poszczególnych pikseli obrazu, proponuję je sprawdzić używając prostego materiału „testowego”, którego schemat przedstawia Rysunek 10.5.2. To połączenie dwóch matowych powierzchni: czerwonej i jasnoszarej. Wartości z węzła Layer Weight określają tutaj udział powierzchni jasnoszarej (udział powierzchni czerwonej to dopełnienie do 100%). Dla takiego materiału czerwone miejsca na powierzchni samolotu odpowiadają wartości = 0.0 (Rysunek 10.5.3a):

Rysunek 10.5.3 Wartości zwracane przez Layer Weight dla krańcowych wartości współczynnika Blend

Jasnoszare obszary odpowiadają miejscom, gdzie Layer Weight zwraca wartość = 1.0 (Rysunek 10.5.3b).

Dla Blend = 0.0 obydwa wyjścia węzła (Fresnel, Facing) zwracają wartość = 0.0 (Rysunek 10.5.3a) niezależnie od kąta pochylenia powierzchni. Podobnie dla Blend = 1.0 obydwa wyjścia na całej powierzchni modelu zwracają wartości = 1.0 (Rysunek 10.5.3b).

Ciekawe efekty uzyskasz ustawiając parametr Blend gdzieś pomiędzy tymi granicami. Przyjrzyjmy się najpierw wartościom uzyskiwanymi z wyjścia Layer Weight:Facing (Rysunek 10.5.4):

Rysunek 10.5.4 Wartości Layer Weight:Facing w zależności od parametru Blend

Wyjście Facing zwraca tym większą wartość, im powierzchnia materiału jest bardziej odchylona od obserwatora (Nie znalazłem w żadnym opisie bardziej szczegółowych informacji. Domyślam się, że jest to rezultat jakiejś funkcji, na przykład cosinusa tego kąta). Początkowo (dla Blend = 0.0.. 0.1) czerwień naszego samolotu robi się coraz jaśniejsza (Rysunek 10.5.4a). To oznacza, że współczynnik Facing dla prawie całej powierzchni jest w granicach 0.8-0.9, czyli na razie rezultat nie różni się znacznie od zwykłego mieszania ze stałym współczynnikiem udziału. Jedynie grzbiet skrzydeł i usterzenia poziomego mają bielsze krawędzie — zapewne tam Facing przyjmuje wartości rzędu 0.5.

Gdy zwiększysz wagę Blend do około 50%, tylko fragmenty powierzchni modelu które są bardziej równoległe płaszczyzny widoku (krawędzie natarcia, część kołpaka śmigła) pozostaną czerwone (Facing < 0.2) (Rysunek 10.5.4b). Reszta powierzchni stanie się bladoróżowa (oznacza to wartość Facing > 0.5), a górne powierzchnie płatów i usterzenia — wręcz jasnoszare (Facing = 1.0). Wreszcie dla Blend = 80% tylko powierzchnie równoległe do płaszczyzny widoku pozostaną czerwone (Rysunek 10.5.4c) — dla reszty wartość Facing jest bardzo bliska 1.0.

Rysunek 10.5.5 przedstawia podobne zestawienie dla wartości z drugiego wyjścia (Layer Weight:Fresnel):

Rysunek 10.5.5 Wartości Layer Weight:Fresnel w zależności od parametru Blend

Wartości Fresnel także rosną w miarę odchylania powierzchni od obserwatora, ale wolniej, mają inny układ niż w przypadku wyjścia Facing.

Te same wartości, co na wyjściu Layer Weight:Fresnel, możesz uzyskać używając bardziej wyspecjalizowanego węzła Fresnel (Rysunek 10.5.6). Rysunek 10.5.7 przedstawia materiał do testowania jego rezultatu:

Rysunek 10.5.6 Węzeł Fresnel

Rysunek 10.5.7 Materiał do testowania wartości współczynników Fresnel

Dla niewielkich wartości IOR = (1.0..1.2) węzeł Fresnel zwraca dla prawie całej powierzchni wartości zbliżone do 0.0 (Rysunek 10.5.8a). Rezultat jest taki sam jak z wyjścia Fresnel węzła Layer Weight (por. Rysunek 10.5.5a) i Rysunek 10.5.8b):

Rysunek 10.5.8 Wartości zwracane przez węzeł Fresnel dla małych wartości współczynnika IOR

Na tych ilustracjach widać, że wartości zwracane przez węzeł Fresnel i Layer Weight:Fresnel są takie same (por. Rysunek 10.5.4 i Rysunek 10.5.9). Tylko zależność pomiędzy współczynnikami IOR i Blend jest nieliniowa:

Rysunek 10.5.9 Wartości Fresnel dla większych wartości współczynnika IOR

Autor Cycles sugeruje użycie współczynnika Fresnel do uzyskania materiału „z połyskiem” (por. str. 439, Rysunek 10.2.11). Nic dziwnego, bo jest to funkcja używana w fizyce do obliczenia ilości światła odbitego od gładkiej powierzchni. Jej wartości należy użyć do sterowania udziałem dwóch powierzchni, łączonych w węźle Mix Shader: podstawowej (shadery Difusse lub Glass) i „lustrzanej” (shader Glossy). Pierwotnie jedynym węzłem dostarczającym współczynników Fresnel był w Cycles Layer Weight. Powstał głównie z myślą o wykorzystaniu w charakterze „wagi” dla węzła Mix Shader. Potem dodano oddzielny węzeł Fresnel dla tych użytkowników, którzy chcieliby sterować układem połysków podając fizyczną wartość współczynnika załamania światła (ang. index of refraction — IOR), a nie wagę Layer Weight:Blend. W każdym razie obydwa węzły zwracają te same wartości.

W Blenderze 2.7 węzły Fresnel i Layer Weight posiadają dodatkowe wejście: Normal (Rysunek 10.5.10):

Rysunek 10.5.10 Dodatkowe wejście w węzłach Fresnel i Layer Weight

Rysunek 10.5.11 Prosty przykład modyfikacji kierunku normalnych

Domyślnie (gdy nic do nich nie jest przyłączone) te węzły wykorzystują informacje o kierunku normalnych ścian modelu — taki sam efekt, jak gdybyś podłączył do nich wyjście Normal węzła Geometry (por. str. 456). Jednak czasami możesz się pokusić o modyfikację tego „naturalnego” kierunku — na przykład o odchylenie wszystkich wektorów normalnych o pewien stały kąt — tak jak to pokazuje Rysunek 10.5.11. Choć takie zmiany raczej nie prowadzą do poprawienia realizmu modelu, to być może w jakimś szczególnym przypadku mogą się przydać.

Na koniec chciałbym uczulić Czytelnika na problem doboru parametru IOR. Wartości tego współczynnika można znaleźć w wielu miejscach w Internecie. W fizyce IOR określa, ile razy mniejsza jest w danym ośrodku prędkość światła (a bardziej ogólnie — fali elektromagnetycznej) od prędkości w próżni. Zazwyczaj jest wiązany ze zjawiskiem załamania światła na granicy ośrodków przejrzystych (jak szkło czy woda). Można go także wyprowadzić dla materiałów nieprzejrzystych (na podstawie ich właściwości elektrycznych). Wygląda na to, że takie same wartości parametru o nazwie IOR ustawia się w kontrolkach efektu Fresnela w różnych programach do tworzenia grafiki 3D (np. Cinema4D, a także 3DSMax — tylko tam ustaw korektę gamma na wartość = 2.2). W praktyce wszystkich programów 3D przyjmuje się następujące wartości Fresnel:IOR [1]:

- Powietrze: w przybliżeniu 1.0;

- Woda: 1.33;

- Plexiglas, przejrzysty plastik: 1.5;

- Szkło: zazwyczaj 1.5, ale niektóre specjalne odmiany mogą dochodzić do 1.7 (por. Rysunek 10.5.9a — czerwony kolor odpowiadałby przejrzystemu szkłu);

- Wszystkie materiały złożone, jak drewno, kamień, beton, itp. (czyli w miarę jednorodne, ale chropowate) są przybliżane za pomocą IOR = 3 … 4 (por. Rysunek 10.5.9b);

- Plastik (nieprzejrzysty, o niezbyt gładkiej powierzchni) jest przybliżany za pomocą IOR = 5…8;

- Metale: fizycznie rzecz biorąc, te i inne przewodniki mają IOR < 1, ale w Cycles nie można używać tak małych wartości tego współczynnika (to inna funkcja matematyczna). Zadowalające przybliżenie metalu można uzyskać dla bardzo dużych wartości IOR — gdzieś pomiędzy 15 a 100 (por. Rysunek 10.5.9c — widoczny na nim biały kolor odpowiadałby lustrzanej powierzchni metalu).

W Blenderze, tak jak w większości programów do grafiki 3D, dostępne są tylko wartości funkcji Fresnela dla gładkich powierzchni dielektryków. (Szkła, plastiku, i innych materiałów nie przewodzących prądu elektrycznego). Tych funkcji można także użyć do uzyskania przybliżonego efektu połyskliwości metali. Więcej szczegółów o odbiciu światła i współczynniku Fresnela oraz IOR znajdziesz na str. 584.

[1] (str. 451) Zakładam że jest użyty do połączenia w schemacie podobnym do tego, jaki przedstawia na str. 447 Rysunek 10.5.2 lub na str. 449 Rysunek 10.5.7. Shader „podstawowy” — matowy Diffuse lub przejrzysty Glass — jest podłączony do górnego wejścia węzła Mix Shader. Do dolnego wejścia Mix Shader podłączony jest shader połyskliwy („lustrzanym”) Gloss. Węzeł Fresnel lub Layer Weight:Fresnel jest podłączony do Mix Shader:Fac.

10.6  Wykorzystywanie informacji o typie śledzonego promienia (Light Path)

Cycles, podobnie jak większość współczesnych programów do renderowania, wykorzystuje algorytm „śledzenia promieni” (ang. raytracing) . Teoretycznie program powinien śledzić promienie wychodzące ze źródła światła. Jednak większość z nich nigdy nie dotrze do kamery. Aby nie marnować czasu na ich obliczenia, program śledzi je w kierunku przeciwnym. Z każdego piksela renderowanego obrazu wyprowadza promień (określany także jako light path) w odwrotnym kierunku niż płynie światło z renderowanej sceny (Rysunek 10.6.1):

Rysunek 10.6.1 Podstawowa zasada działania renderera ( wikipedia.org )

Czasami promień nie napotka niczego po drodze, innym razem zostanie kilka razy odbity (ang. bounced) od obiektów wchodzących w skład sceny. Gdy natknie się na jakąś powierzchnię, renderer prowadzi pomocniczy promień wprost do źródła światła. Jeżeli napotka po drodze jakiś obiekt — piksel jest identyfikowany jako cień (Rysunek 10.6.1). W przypadku powierzchni połyskliwych lub przejrzystych śledzenie na tym się nie kończy, bo „podstawowy” promień ulega odbiciu i/lub załamaniu i trzeba go śledzić dalej. (W Cycles określasz max. liczbę śledzonych odbić w zestawie Render, panelu Light Paths).

Węzeł Light Path umożliwia uzyskiwanie w Cycles różnych „sztuczek”. Każdy z jego punktów wyjściowych (Rysunek 10.6.2a) zwraca wartość = 1.0 dla piksela obrazu, którego promień spełnia odpowiedni warunek. Dla pozostałych pikseli węzeł zwraca wartość = 0.0. Te wartości można wykorzystać jako współczynniki dla jakichś innych operacji. Rysunek 10.6.2b) przedstawia używane w Cycles nazwy poszczególnych typów promieni:

Rysunek 10.6.2 Typy promieni, rozróżniane w Cycles (wg wiki.blender.org )

Punkty wyjściowe węzła Light Path zwracają wartość 1.0 dla następujących pikseli obrazu:

- Is Camera Ray: piksel tła. Jego promień nie napotkał „po drodze” żadnego elementu sceny;

- Is Shadow Ray: piksel wchodzący w skład jakiegoś cienia;

- Is Reflection Ray: piksel odbity od jakiejś powierzchni;

- Is Transmission Ray: piksel z jakiejś powierzchni przejrzystej;

Pozostałe trzy wyjścia węzła (por. Rysunek 10.6.2a) pozwalają wyróżnić spośród pikseli spełniających warunek Is Reflection Ray lub Is Transmission Ray następując przypadki:

- Is Diffuse Ray: piksel pochodzący z odbicia światła rozproszonego;

- Is Glossy Ray: piksel pochodzący z odbicia „lustrzanego”;

- Is Singular Ray: piksel należy do bezpośredniego odbicia promienia światła;

Z opisu na wiki.blender.org można się domyślać, że wyjście Is Singular Ray powinno zwracać wartość 1.0 dla ostrych, punktowych odbić promieni słonecznych. Nie jestem jednak tego pewien, bo nie udało mi się uzyskać takiego efektu. (Może nie była w chwili pisania tego fragmentu książki implementowana? W każdym razie sprawdzałem w Blenderze 2.61).

Najprostszym przykładem „sztuczki” z udziałem węzła Light Path może być efekt „podstawienia odbicia”. W połyskliwej powłoce płata czerwona osłona kabiny odbija się na czerwono, a biała — na biało (Rysunek 10.6.3):

Rysunek 10.6.3 Kolor odbicia owiewki kabiny na powierzchni skrzydła

Gdy jednak zmieszasz tą czerwień i biel ze sobą wykorzystując wagę Light Path:Is Reflection Ray (Rysunek 10.6.4a), uzyskasz czerwony cień białego obiektu (Rysunek 10.6.4b):

Rysunek 10.6.4 Złożenie białego materiału z czerwonym odbiciem

W podobny sposób jak odbicie można zamienić cień. W kolejnym przypadku mamy dwa shadery: szkło (Glass BSDF), które przy wyłączonej kaustyce rzuca lity cień (Rysunek 10.6.5a), oraz „zupełną przejrzystość” (Transparent), która rzuca przejrzyste cienie (Rysunek 10.6.5b):

Rysunek 10.6.5 Materiały do złożenia

Złącz te dwie powierzchnie ze sobą w Mix Shader, wykorzystując jako współczynnik udziału wyjście Light Path: Is Shadow Ray (Rysunek 10.6.6):

Rysunek 10.6.6 Schemat materiału

Rysunek 10.6.7 Rezultat

W efekcie owiewka kabiny, mimo wyłączonej kaustyki (por. zestaw Render, opcja Light Paths:Reflective Caustics i Refractive Caustics) rzuca przejrzyste cienie (Rysunek 10.6.7). Pozwala to także zobaczyć zasłonięte przez nią wnętrze kabiny, które wcześniej było zupełnie czarne. (Domyślna barwa szkła, które pokazuje Rysunek 10.6.7, jest szara. Wnętrze kabiny będzie jeszcze jaśniejsze, gdy zmienisz ją na białą).

Uważam, że nawet gdy przyszłe wersje Cycles będą już poprawnie obsługiwać kaustykę dla światła równoległego, warto pamiętać o tej „sztuczce”. Wyłączenie kaustyki eliminuje większość „białego szumu” z nieprzejrzystych powierzchni i przyśpiesza renderowanie połyskliwych powłok — takich jak wypolerowane duraluminium. W scenach lotniczych nie potrzebujemy dokładnych i skomplikowanych cieni za szklanymi powierzchniami, jaki daje wyłączenie opcji No Caustics. Efektu „zamiany cienia” można użyć dla optymalizacji czasu renderowania.

10.7  Wykorzystanie informacji o geometrii powierzchni (Geometry)

Do uzyskania różnych specyficznych efektów (np. mgły) potrzebne są informacje geometryczne, dotyczące renderowanego piksela. W Cycles ich źródłem jest węzeł Geometry, dodawany do schematu poleceniem Add→Input→Geometry (Rysunek 10.7.1):

Rysunek 10.7.1 Węzeł Geometry

Geometry jest, podobnie jak Texture Coordinate czy Light Path, węzłem wejściowym. Oferuje do wykorzystania wiele różnorodnych informacji (wyjść). Jednym z nich jest flaga Backfacing, zwracająca wartość = 0 dla piksela z przedniej strony ściany, i wartość = 1 dla strony przeciwnej. Tę informację można wykorzystać do obejścia problemu barwy dla dwustronnych ścian, takich jak we wnęce klapy skrzydła (Rysunek 10.7.2)

Rysunek 10.7.2 Problem: „srebrne” powierzchnie po wewnętrznej strony ścian siatki

Flaga Geometry:Backfacing pozwala podstawić na tylnych ściankach matowy shader Diffuse (Rysunek 10.7.3):

Rysunek 10.7.3 Pokrycie wewnętrznych stron ścian siatki materiałem rozpraszającym światło (Diffuse BSDF)

Zauważ że kolor, który uzyskaliśmy na tylnych ścianach żeber, różni się nieznacznie od reszty powierzchni.

Fragmenty powierzchni wewnętrznych, takich jak wnęka klapy skrzydła, nie są w typowych scenach tak mocno oświetlone. W normalnym otoczeniu żebra toną w cieniu, przez co drobna różnica w barwie staje się zupełnie niewidoczna (Rysunek 10.7.4):

Rysunek 10.7.4 Skorygowany materiał w typowym oświetleniu

Zaadoptowałem rozwiązanie z flagą Geometry:Backfacing we wnętrzu grupy Gloss Paint, aby było dostępne „w standardzie” (por. str. 500). Dzięki temu można stosować w modelu pojedyncze ściany, oczywiście z umiarem i w miejscach mało wyeksponowanych. Te kilka dodatkowych węzłów praktycznie nie wydłuża czasu renderu. (Z moich doświadczeń wynika, że ew. różnica mieści się w granicy błędu pomiarowego – poniżej 1%).

10.8  Nazwy materiałów, tekstur i grup węzłów

Materiały. Zazwyczaj w skład modelu wchodzi o wiele mniej materiałów niż obiektów. Stąd przy nazewnictwie tych elementów nie ma potrzeby stosowania członu z unikalnym numerem. Wystarczą same nazwy.

W przypadku materiałów proponuję stosować tekst składający się z następujących segmentów (rozdzielonych kropkami):

- 1 znak: segment, który będzie pełnił rolę wyróżnika wersji samolotu. Wszystkie części w pojedynczym pliku Blendera będą używać takiej samej litery. Na przykład w modelu P-40B nazwy będą zaczynać się od “B”;

- segment z podstawową, “ludzką” nazwą materiału. Dwóm podstawowym materiałom, używanym do pokrycia samolotu, nadałem nazwę Skin. (To dlatego, że imitują różnorodne pokrycia, i nie można im przypisać jakiejś jednej “fizycznej materii”.) W pozostałych przypadkach stosujemy nazwy “fizyczne” — “Glass” (np. osłony kabiny), “Rubber” (np. na oponach), “Leather” (np. zagłówka pilota), “Chrome” (dla gładzi cylindrów amortyzatorów). W przypadku imitacji pokrycia farbą w jednolitym kolorze, można stosować nazwę koloru tej farby — np. “Black”.

- opcjonalny segment z członem “uszczegóławiającym”. W przypadku podstawowych materiałów poszycia (nazwa w pierwszym segmencie — “Skin”) ten segment zawiera niezbędne określenia: Inner lub Camouflage. W pozostałych przypadkach to potoczna nazwa zespołu, do którego należy stosować materiał (np. Canopy dla oszklenia kabiny).

Zgodnie z powyższymi regułami, materiał pokrywający zewnętrzne powierzchnie samolotu będzie nosił nazwę B.Skin.Camouflage, a materiał osłony kabiny — B.Glass.Canopy.

W przypadku materiałów związanych z konkretną sceną, a nie z modelem (np. trawy lotniska) nie stosuję żadnych 1-znakowych przedrostków.

Tekstury. W „starym” silniku renderującym Blendera (Internal) teksturą był nazywany zespół złożony z obrazu i różnych dodatkowych parametrów, związanych z próbkowaniem pikseli, mapowaniem na powierzchnię modelu, itp. W Cycles za te operacje są odpowiedzialne oddzielne węzły, które można dodać do schematu. Ekwiwalentem tekstury z silnika BI może być w Cycles grupa węzłów, zawierająca jakiś węzeł typu Image Texture. W tej książce stosuję jednak inny styl i nie łączę ich w ten sposób.

Do tekstur odwołuję się, używając nazwy pliku z ich obrazem (np. „color.png”, albo „decals.png”).

Stąd nazwy własne mają tylko tekstury związane z węzłami Image Texture lub Environment Texture (czyli te, które zawierają referencje do obrazów). Tekstury proceduralne (np. Noise Texture) nie mają nazw.

Grupy. Na przedstawionych w tej publikacji schematach można wyróżnić dwa rodzaje grup:

- Nowe węzły do ogólnych zastosowań (takie jak na te przedstawione na str. 508). Te grupy traktuję jakby były takimi samymi podstawowymi elementami schematu jak standardowe węzły Cycles. Dlatego noszą nazwy opisujące ich funkcję, bez żadnych przedrostków: Moderate, Negate, … Jak widzisz, nawet zapisuję je w tym samym stylu, co nazwy standardowych węzłów Cycles;

- Wyspecjalizowane zespoły efektów, stworzone, aby nie powielać tego samego fragmentu schematu w podobnych materiałach (por. str. 189). Takie grupom nadaję przedrostek „X”, aby w menu Add→Group znalazły się na końcu listy (gdyż są rzadziej używane). Pisząc ich nazwy używam stylu właściwego dla innych „nazw własnych” w tym modelu (np. X.Curtiss Green);

10.9  Użycie prostego obrazu nieba (Sky Texture)

Efekt Sky Texture to w Cycles programowo generowana panorama bezchmurnego nieba. Wstawia się ją do schematu w Node Editor, poleceniem Add→Texture→Sky Texture. Należy ją dołączyć do wejścia Color shadera Background. Rysunek 10.9.1 przedstawia ją w trybie Preetham (to nazwa algorytmu):

Rysunek 10.9.1 Użycie węzła Sky Tekture w schemacie otoczenia (World)

Rysunek 10.9.2 przedstawia obraz tekstury, uzyskany na powierzchni kulistej sondy (por. str. 462). Górna część otoczenia ma błękitny kolor nieba. Nieco powyżej „linii horyzontu” ta barwa płynnie przechodzi w pastelowy, jednolity kolor. Większość scen rozgrywa się na ziemi, i w takich zastosowaniach większej części tej dolnej półsfery po prostu nie widać. Dla ujęć w locie horyzont tej panoramy znajduje się zbyt wysoko (Rysunek 10.9.3):

Rysunek 10.9.2 Podgląd z użyciem sondy

Rysunek 10.9.3 Model w otoczeniu wykreowanym przez Sky Texture

Na błękitnym „niebie” Sky Texture znajduje się (domyślnie w zenicie) rozjaśnienie, odpowiadające słońcu (Rysunek 10.9.4a). Położeniem tego rozjaśnienia możesz sterować za pomocą „kulki”, umieszczonej w węźle. Wystarczy ją „złapać” LPM i przeciągnąć, aby przesunąć to rozjaśnienie ponad odbity przez powierzchnię sondy obraz słońca (obiektu typu Sun — Rysunek 10.9.4b):

Rysunek 10.9.4 Dopasowanie najjaśniejszego miejsca nieba do aktualnej pozycji słońca

Lepiej zawsze mieć te dwa źródła światła odpowiednio zsynchronizowane.

Rysunek 10.9.5 Działanie parametru Turbidity

Drugi parametr tekstury — Turbidity — służy do sterowania efektem, określanym jako „zamglenie”. Domyślna wartość wynosi 2.2 (por. Rysunek 10.9.1). Gdy ją zwiększysz, górna półsfera ulegnie rozjaśnieniu a dolna — pociemnieje. Obszar odpowiadający położeniu słońca stanie się większy i bielszy (Rysunek 10.9.5).

Rysunek 10.9.6 Wpływ zmiany parametru Turbidity na wygląd modelu (Background:Strength = 0.6)

Wpływ zmiany tego parametru na połyskliwą („aluminiową”) powierzchnię modelu pokazuje Rysunek 10.9.6. Domyślne Turbidity = 2.2 odpowiada warunkom „czystego nieba” (Rysunek 10.9.6a). Jednocześnie zbyt wysokie położenie horyzontu podstawia za modelem i w odbiciach na powierzchniach bocznych za dużo pastelowej barwy dolnej półsfery. Takie zabarwienie może mieć samolot oświetlony promieniami wschodzącego/zachodzącego słońca. (Oczywiście, trzeba by tu jeszcze zmienić barwę źródła światła Sun z białej na pomarańczową).

Przy zwiększonym zamgleniu (Turbidity = 5.0) powierzchnia modelu staje się jaśniejsza, a barwy — mniej zróżnicowane. Dolna półsfera stała się nieco ciemniejsza, ale nie zmieniło to specjalnie odcienia odbijanego przez dół i boki naszego testowego samolotu (Rysunek 10.9.6b).

Aby obniżyć linię horyzontu Sky Texture, wykorzystaj węzeł Vector→Mapping (por. str. 464). Tylko wtedy można uzyskać ujecie z boku na tle błękitnego nieba (Rysunek 10.9.7):

Rysunek 10.9.7 Przykładowe ujęcie modelu z boku, po obniżeniu linii horyzontu (tryb Preetham)

Gdy przełączysz się na alternatywny obraz nieba (Hosek/Wilkie) — w węźle Sky Texture pojawi się dodatkowy parametr (Ground Albedo — Rysunek 10.9.8):

Rysunek 10.9.8 Użycie węzła Sky Tekture w trybie Hosek/Wilkie

To współczynnik odbicia światła prez „ziemię” — czyli dolną półsferę panoramy. Zwiększenie tej wartości rozjaśnia nieco panoramę (por Rysunek 10.9.9), choć i tak algorytm Hosek/Wilkie tworzy ciemniejszy obraz od algorytmu Preetham (por Rysunek 10.9.9a) i Rysunek 10.9.2):

Rysunek 10.9.9 Wpływ parametru Ground Albedo na panoramę Sky Tekture

Rysunek 10.9.10 przedstawia test naszego modelu w tej drugiej odmianie panoramy Sky Texture:

Rysunek 10.9.10 Przykładowe ujęcie modelu z boku, po obniżeniu linii horyzontu (tryb Hosek/Wilkie)

Wydaje się, że niebo stworzone za pomocą algorytmu Hosek/Wilkie jest bardziej niebieskie od nieba wygenerowanego za pomocą metody Preethama. W dokumentacji Blendera podano także, że Hosek/Wilkie lepiej się nadaje do scen zachodu lub wschodu słońca.

10.10  Sonda obrazu otoczenia

Renderowaną scenę obserwujemy przez „okienko” kamery. Dla typowych ustawień (ogniskowa rzędu 70-90 mm) oznacza to że widać przez nie około 0.3% ogólnej powierzchni obrazu, który umieściliśmy w charakterze panoramy otoczenia (np. Environment Texture — por. str. 468). Obserwacja tak ograniczonego obszaru bardzo utrudnia modyfikację jego ustawień, np. geometrii (zmianę skali i przesunięcie w celu obniżenia linii horyzontu, lub podobne). Czasami po prostu trudno się zorientować, co właściwie aktualnie widać w tle okna.

W takich sytuacjach warto użyć w podglądzie renderu bardzo prostego narzędzia: sondy w postaci lustrzanej kuli. Nie musi mieć idealnie kulistego kształtu, więc łatwo ją stworzyć dosłownie w parę sekund. Wystarczy umieścić w środku sceny (zazwyczaj jest to środek globalnego układu współrzędnych — punkt 0,0,0) sześcian. Następnie wygładzić go porządnie modyfikatorem Subdivision Surface — ustawiając parametr Subdivisions na 4 lub 5 — aby uzyskał kształt zbliżony do sfery (Rysunek 10.10.1):

Rysunek 10.10.1 Siatka sondy

Nadałem temu pomocniczemu obiektowi nazwę E.001.Light Probe. Aby nie przeszkadzał w głównej scenie, dodałem go w pomocniczej scenie Spares (por. str. 385, 569). (Przypisz jej to samo otoczenie: World).

Powierzchnia sondy jest pokryta materiałem Artifical. W Cycles nadałem mu właściwości lustra, bo nie chciałem mnożyć niepotrzebnie materiałów pomocniczych (Rysunek 10.10.2):

Rysunek 10.10.2 Materiał sondy — powierzchnia lustrzana (Artifical)

Włącz teraz w oknie 3D View podgląd renderu, a przekonasz się, jak działa nasza sonda (Rysunek 10.10.3):

Rysunek 10.10.3 Użycie sondy do orientacji w obrazie otoczenia

Odbija się w niej otoczenie. Obracając się wokół tego obiektu, możesz w niej obejrzeć cały obraz panoramy — tak, jak jest rozłożony wokół sceny.

Zwróć uwagę, że na powierzchni kuli widać zarówno zenit jak i nadir sfery otoczenia. Zobaczysz to wyraźniej, gdy jako panoramę otoczenia podstawisz obraz testowej „szachownicy” ( Rysunek 10.10.4a):

Rysunek 10.10.4 Szczegóły geometrii odbijanego w sondzie obrazu

Ten efekt to naturalne zniekształcenie obrazu w kuli. Obraz otoczenia jest w Cycles rozpostarty na powierzchni olbrzymiej sfery, w środku której znajduje się scena. W jej biegunach — zenicie i nadirze — wyświetlana panorama ulega największej deformacji. Rysunek 10.10.4b pokazuje drogę promieni światła, w wyniku której na powierzchni kuli widać obszary położone po przeciwnej stronie biegunów otoczenia.

10.11  Transformacja współrzędnych (Mapping)

Węzeł Mapping dodaje się w Node Editor poleceniem Add→Vector→Mapping. Służy do modyfikacji danych typu Vector. Dane tego typu są zazwyczaj używane do ustalenia sposobu wyświetlania rozkładanych na powierzchniach obiektów obrazów (tekstur), oraz panoram otoczenia. Ten węzeł to typowy „konwerter”, wstawiany pomiędzy źródło i odbiorcę danych. Rysunek 10.11.1 przedstawia przykład użycia:

Rysunek 10.11.1 Typowe połączenie węzła Mapping

Źródłem danych geometrycznych jest tu węzeł Geometry, odbiorcą — panorama Sky Texture. Kontrolki węzła Mapping służą do transformacji współrzędnych dostarczanych na wejściu. Ustawienia węzła przedstawionego przez Rysunek 10.11.1 nie zmieniają jeszcze niczego — przesunięcie (Location) i obrót (Rotation) są zerowe. W tym stanie linia horyzontu Sky Texture jest w okolicy równika — tak jak pokazuje sonda (Rysunek 10.11.2a):

Rysunek 10.11.2 Zastosowanie węzła Mapping do obniżenia linii horyzontu panoramy otoczenia

Aby przesunąć horyzont w dół, zwiększ Location:Z do 0.5 (Rysunek 10.11.2b). Horyzont się przesunął, ale pojawił się niespodziewany efekt uboczny: czarna dziura w zenicie (Rysunek 10.11.2c)! (Obraz panoramy jest „za krótki” i po przesunięciu już nie sięga do końca sfery). Aby ją zlikwidować, zmniejsz Scale:Z z 1.0 do 0.5 (Rysunek 10.11.3b). Panorama „rozciągnie” się w obydwu kierunkach, z jednej strony docierając z powrotem do zenitu, a z drugiej — jeszcze bardziej obniżając linię horyzontu (Rysunek 10.11.3c):

Rysunek 10.11.3 Korygowanie efektu „czarnej dziury”

Węzeł Mapping ma wiele trybów działania: Texture, Point, Vector, Normal. To rozróżnienie wprowadzono stosunkowo niedawno, w Blenderze 2.69. Wcześniej węzeł działał tak, jakby był zawsze ustawiony w trybie Point (czyli traktował podane współrzędne jakby opisywały położenie punktu w przestrzeni).

Wszystkie przykłady w tej książce powstawały we wcześniejszych wersjach Blendera 2.6. Dlatego węzły Mapping, które wykorzystuję w schematach materiałów, działają w trybie Point.

Tryb Texture jest odwrotnością trybu Point (w zamyśle twórców ma służyć do transformacji obrazu tekstury, a nie jej współrzędnych). Jeżeli np. zastosujesz go do transformacji którą pokazuje Rysunek 10.11.2a) (por. Rysunek 10.11.4b) uzyskasz „czarną dziurę” u dołu, a nie u góry panoramy (Rysunek 10.11.4c):

Rysunek 10.11.4 Efektu „czarnej dziury” na panoramie (tryb Texture)

Aby uzyskać ją u góry, musisz przesunąć teksturę do dołu (wprowadzając ujemną Location:Z = -0.5), oraz zwiększyć, a nie zmniejszyć jej skalę (Scale: Z = 1.5). Ilustruje to Rysunek 10.11.5:

Rysunek 10.11.5 Korygowanie efektu „czarnej dziury” (tryb Texture)

Tryb Vector ma służyć do transformacji wektorów — stąd w tym trybie ignorowane są wszelkie zmiany położenia (Location). (Wektory można tylko obracać i skalować).

Tryb Normal ma służyć do transformacji wektorów o jednostkowej długości, stąd w tym trybie ignorowane są wszelkie zmiany położenia (Location) i skali (Scale). (Wektory jednostkowe można tylko obracać)

10.12  Dodanie obrazu tekstury (Image Texture)

Aby dodać obraz rastrowy jako nową teksturę[1], wywołaj w Node Editor polecenie Add→Texture→Image Texture. Spowoduje to dodanie do schematu nowego węzła (Rysunek 10.12.1):

Rysunek 10.12.1 Węzeł Image Texture

Na wejściu należy zawsze podłączyć jakieś współrzędne tekstury (Vector). (Zazwyczaj wykorzystuje się w tym celu jedno z wyjść węzła Texture Coordinate). Jeżeli nic tu nie podłączysz, Cycles wykorzystuje niejawnie współrzędne UV siatki. Na wyjściu węzeł zwraca piksele tekstury (Color). Można je podłączyć np. do wejścia Color jakiegoś shadera, nakładając w ten sposób obraz tekstury na jego powierzchnię.

Poniżej przypisania do obrazu węzeł Image Texture zawiera pomocniczą kontrolkę, za pomocą której wybiera się typ korekty barw pikseli. Na razie dostępne są dwie możliwości:

- Non-Color Data: bez korekty (używane są odczytane z pliku obrazu wartości RGBA);

- Color: odczytane z pliku wartości RGBA pikseli podlegają tzw. korekcie gamma (por. str. 387), a dopiero potem są użyte w renderze;

Początkowo nowy węzeł nie jest przypisany do żadnego obrazu. Nowy plik obrazu można odczytać z dysku używając przycisku Open (Rysunek 10.12.2):

Rysunek 10.12.2 Przypisanie teksturze nowego obrazu (z pliku)

Rysunek 10.12.3 Przypisanie teksturze istniejącego obrazu

Załadowany obraz to oddzielny blok danych (wyjaśnienie tego pojęcia — por. str. 569). Tekstura zawiera tylko jego przypisanie (referencję). Dlatego po załadowaniu obrazu na miejscu przycisku Open pojawił się typowy zestaw kontrolek do obsługi referencji. Przyciskiem można załadować z dysku inny obraz na miejsce aktualnego, a przycisk służy do usunięcia powiązania węzła z obrazem.

Po załadowaniu ten sam obraz można przypisać do wielu różnych węzłów Image Texture. Służy do tego lista rozwijalna, umieszczona z lewej strony przycisku Open (Rysunek 10.12.3).

Być może kiedyś do węzła Image Texture zostanie dodane jakieś okno podglądu obrazu. Póki co, każdy załadowany (w ten czy inny sposób) do Blendera obraz można obejrzeć w oknie Image Editor (Rysunek 10.12.4):

Rysunek 10.12.4 Podgląd pliku obrazu (Image Editor).

Domyślnie Blender nie kopiuje do pliku ze sceną zawartości obrazu[2]. Zapamiętuje tylko ścieżkę, skąd ma pobrać plik. Wynika stąd praktyczna wskazówka:

Możesz zmieniać zawartość obrazu tekstury za pomocą zewnętrznego narzędzia (np. GIMP), bez konieczności zamykania Blendera. Po prostu otwórz, zmodyfikuj i zapisz odpowiedni plik obrazu na dysku. Potem wystarczy w Image Editor wywołać polecenie Image→Reload Image (Alt-R)— i zobaczysz w Blenderze jego aktualną wersję.

[1] (str. 466) Słowo "tekstura" w grafice komputerowej nie całkiem odpowiada popularnemu znaczeniu — patrz słownik na str. 634

[2] (str. 467) Możesz go do tego zmusić: aktualny obraz w Image Editor można dołączyć do pliku Blendera poleceniem Image→Pack Image. Wszystkie obrazy naraz można dodać poleceniem File→External data→Pack into .blend file.

10.13  Dodanie panoramy otoczenia (Environment Texture)

Ten węzeł służy do otoczenia sceny jakimś panoramicznym obrazem, Dodaje się go w Node Editor poleceniem Add→Texture→Environment Texture (Rysunek 10.13.1):

Rysunek 10.13.1 Węzeł Environment Texture

Węzeł Environment Texture ma podobne kontrolki oraz takie same punkty wejścia i wyjścia jak węzeł Image Texture (por. str. 466, Rysunek 10.12.1). To dlatego, że używa się ich w podobny sposób. Czym się różnią? Kształtem obrazu! Węzeł Image Texture reprezentuje płaski kwadrat. A Environment Texture to panorama — a dokładniej, sfera. W domyślnym trybie mapowania (Equirectangular) Cycles oczekuje przypisania do tego węzła obrazu o proporcjach wysokości i szerokości jaki 1:2 (Rysunek 10.13.2a):

Rysunek 10.13.2 Odwzorowanie obrazu na otoczeniu sceny w mapowaniu Equirectangular

Efekt uzyskany z Environment Texture jest taki sam, jak gdybyś umieścił scenę w ogromnej sferze, na którą jest nałożony obraz (w znanej z geografii projekcji Merkatora: Rysunek 10.13.2b). Skąd wziąć takie panoramy? Spróbuj poszukać ich w Internecie. Wiele z nich jest zapisana w specjalnym formacie HDR (Rysunek 10.13.3):

Rysunek 10.13.3 Przykładowa panorama (obraz HDR z www.openfootage.net )

Pliki *.hdr możesz podejrzeć tylko w Blenderze, bo kolory są w nich zapisane jako liczby zmiennoprzecinkowe.

(GIMP nie obsługuje jeszcze tego formatu). Gdy wyświetlisz taki obraz w UV/Image Editor Blendera, zapewne zauważysz że jest przyciemniony (por. Rysunek 10.13.3). To efekt uboczny innej skali intensywności, stosowanej w takich plikach. Najprostszy przykład użycia węzła Environment Texture przedstawia Rysunek 10.13.4a):

Rysunek 10.13.4 Przykład zastosowania węzła Environment Tetxure

Podłączasz jego wyjście (Environment Texture:Color) do wejścia Color shadera Background. Nie musisz niczego podłączać do wejścia Environment Texture:Vector (chociaż możesz — o tym za chwilę). Jeżeli obraz panoramy jest w jednym z typowych formatów obrazów rastrowych — *.jpg, *.png, *.tiff — pozostaw domyślny tryb Color (z konwersją gamma, por. str. 466). Dla obrazów HDR użyj trybu Non-Color Data (to tryb bez żadnej korekty — por. Rysunek 10.13.4a). Obrazy HDR mogą także wymagać ustawienia większej intensywności (Background:Strength). Rezultat przedstawia Rysunek 10.13.4b). To sonda, wstawiona do tak ustawionego otoczenia. Zwróć uwagę, jak bardzo rozmyty jest obraz tła na tym próbnym renderze. To efekt zbyt małej rozdzielczości obrazu (choć ta panorama ma rozmiar 1000x2000px). Po prostu kamera „widzi” tylko jej mały wycinek (Rysunek 10.13.5):

Rysunek 10.13.5 Położenie fragmentu obrazu pokazywanego w kamerze (obraz jest rozjaśniony)

Ten rozmyty obraz wyklucza użycie panoram o rozdzielczości rzędu 2000 – 3000 px jako podstawowego tła sceny. Widać to na naszym testowym modelu — brak ostrości psuje efekt[1] (Rysunek 10.13.6):

Rysunek 10.13.6 Model w otoczeniu panoramy

Zwróć jednak uwagę, że odbicia otoczenia na powierzchni modelu są już przy tym rozmiarze panoramy całkiem zadowalające. Można to wykorzystać przy budowaniu złożonych schematów środowiska wokół sceny (str. 482).

Sferą otoczenia można poruszać. Wystarczy dołączyć do wejścia Environment Texture:Vector dwa dodatkowe węzły: Texture Coordinate i Mapping (Rysunek 10.13.7):

Rysunek 10.13.7 Dodatkowe węzły, umożliwiające sterowanie sferą otoczenia

Gdy zaczniesz zmieniać wartość Mapping:Rotation:Z, zobaczysz że otoczenie się obraca (Rysunek 10.13.8):

Rysunek 10.13.8 Obracanie otoczenia wokół sceny

Podobnie możesz obniżyć linię horyzontu, przesuwając otoczenie w dół. Wystarczy zwiększyć wartość parametru Mapping:Location:Z (Rysunek 10.13.9):

Rysunek 10.13.9 Przesuwanie linii horyzontu w dół sceny

Zwróć uwagę, że mimo znacznego przesunięcia do dołu, w zenicie nie pojawiły się tu żadne artefakty, jak to miało miejsce dla Sky Texture (por. str. 464, Rysunek 10.11.2).

Na koniec warto wspomnieć, że w wielu filmach instruktażowych (video tutorials) o Blenderze autorzy wykorzystują siatkę do zbudowania sfery wokół sceny. Następnie nakładają na nią obraz otoczenia. Podczas pracy nad tą sekcją porównałem uzyskiwany w ten sposób efekt z rezultatem uzyskiwanym za pomocą węzła Environment Texture. I wiecie co? Nie było żadnej specjalnej różnicy!

Wykorzystując otoczenie generowane przez węzeł Environment Texture można uzyskać ten sam efekt co za pomocą zamodelowanej siatki sfery, otaczającej scenę.

Wykorzystanie tego węzła jest rozwiązaniem prostszym, bardziej czytelnym i eleganckim niż dodawania do sceny ogromnej sfery. Pamiętaj o tym, gdy zobaczysz taką siatkę w kolejnym tutorialu o tworzeniu sceny w Blenderze!

[1] (str. 470) Chyba, że wykorzystasz ten obraz jako bazę do jakiegoś kierunkowego rozmycia — w ten sposób można stworzyć wrażenie szybkiego lotu tuż przy ziemi…

10.14  Użycie tekstury gradientu (Gradient Texture)

Tekstury proceduralne są oparte na jakimś wyrażeniu matematycznym, lub algorytmie, pozwalającym uzyskać dwuwymiarowy obraz. Są to zazwyczaj jakieś abstrakcyjne (co nie znaczy, że bezużyteczne!) wzory, nieregularne „chmury”. Zdarzają się jednak także wzory regularne — np. procedura generująca rzędy cegieł w ścianie. Tekstury proceduralne stosuje się zazwyczaj razem, a czasami nawet zamiast tekstur rastrowych.

Jedną z tekstur proceduralnych dostępnych w Cycles jest prosty, czarno-biały gradient. Jego węzeł dodaje się do schematu poleceniem Add→Texture→Gradient Texture. Węzeł Gradient Texture przydaje się często jako „źródło współczynników”, dlatego ma dwa wyjścia: Color (barwa) i Fac (odpowiadająca jej wartość odcienia szarości) (Rysunek 10.14.1a):

Rysunek 10.14.1 Węzeł Gradient Texture i obraz, który generuje

Podobnie jak inne węzły tekstur (por. str. 459, 466, 468) gradient ma jedno wejście typu Vector. Służy do transformacji wyświetlanego obrazu (pokażę to na następnych stronach tej sekcji). Gradient Texture ma jeden parametr — listę rozwijalną, z której można wybrać jeden z kilku dostępnych kształtów gradientu (Rysunek 10.14.1b). Rysunek 10.14.1c pokazuje, jak wygląda gradient liniowy (Linear). To „obraz jednowymiarowy”. Gdy na wejściu Vector współrzędna X jest równa 0.0, Gradient Texture:Linear zwraca wartość 0 (kolor czarny). Dla współrzędnej X = 1.0 zwraca wartość 1 (biały). W istocie to prosta zależność liniowa: V = X.

Rysunek 10.14.2a,b) przedstawia pozostałe kształty gradientów liniowych, które mamy do dyspozycji w tym węźle (Quadratic, Easing). Obydwa dla X = 0 zwracają 0, a dla X = 1 — 1. Różnią się tylko „tym, co pośrodku” — sposobem przejścia z czerni do bieli.

Rysunek 10.14.2 Pozostałe rodzaje gradientów jednowymiarowych

Trochę nadmiarowo jest tu także dostępny typ Diagonal. To właściwie gradient dwuwymiarowy. Jednak dokładnie taki sam efekt można uzyskać, pochylając pod kątem 45º (za pomocą węzła Mapping) gradient liniowy.

Pozostałe gradienty są oparte na okręgu o promieniu = 1.0, więc aby zobaczyć ich pełen kształt, trzeba poddać teksturę transformacji (por. str. 464). Wykorzystuję tu typowe rozwiązanie, oparte o węzły Texture Coordinate i Mapping. Transformacja współrzędnych polega na dwukrotnym powiększeniu obrazu wyświetlanego dla oryginalnego zakresu współrzędnych X,Y = [0.0 .. 1.0] i przesunięciu środka o połowę rozmiaru (-1, -1) (Rysunek 10.14.3):

Rysunek 10.14.3 Modyfikacja położenia i rozmiaru obrazu tekstury

Gradient Texture dla współrzędnych wejściowych (X. Y) z zakresu -1.0 do 1.0 wyświetla następujące kształty (Rysunek 10.14.4):

Rysunek 10.14.4 Dostępne rodzaje gradientów sferycznych

Do tej pory przedstawiałem obraz generowany przez Gradient Texture na płaskiej, kwadratowej płytce. Rezultat działania tego węzła można jednak także stosować dla obiektów sferycznych, takich jak otoczenie sceny (Rysunek 10.14.5). Takie wartości przydają się np. do łączenia dwóch różnych panoram:

Rysunek 10.14.5 Użycie Gradient Texture w otoczeniu sceny

Za pomocą Gradient Texture można uzyskać płynne przejście pomiędzy górną półsferą z obrazem nieba i chmur, i dolną, z obrazem ziemi. Trzeba tylko obrócić kierunek gradientu (Mapping:Rotation:Y) o 90º (Rysunek 10.14.6):

Rysunek 10.14.6 Zmiana kierunku gradientu na pionowy

Potem można także sterować także wysokością tak uzyskanej „linii horyzontu” (Rysunek 10.14.7):

Rysunek 10.14.7 Przesunięcie granicy gradientu do dołu sfery otoczenia

10.15  Proceduralne tekstury „szumu” (Noise Texture, Vornoi Texture, Musgrave Texture)

Cycles, oprócz tekstury gradientu (omówionej w poprzedniej sekcji — por. str. 472) udostępnia węzły z kilkoma innymi teksturami proceduralnymi. Znajduje się tam m.in. kilka rodzajów nieregularnych „szumów”.

Zacznijmy od „zwykłej” tekstury szumu, czy też „chmur”. Jej węzeł dodaje się do schematu poleceniem Add→Texture→Noise Texture. Węzeł Noise Texture przydaje się wszędzie tam, gdzie chcemy wprowadzić na powierzchni jakąś nieregularność. Często jest wykorzystywany jako „źródło współczynników”, dlatego ma dwa wyjścia: Color (barwa) i Fac (intensywność, czyli odcień szarości) (Rysunek 10.15.1):

Rysunek 10.15.1 Węzeł Noise Texture i obraz, który generuje

Noise Texture ma jedno wejście (Vector) na współrzędne mapowania, oraz po jednym z wejść dla każdej z wartości jego parametrów. (Możesz tworzyć różne ciekawe efekty, podłączając do nich inne tekstury proceduralne). Jeżeli do wejścia Vector nie podłączysz żadnych współrzędnych, Cycles użyje w sposób niejawny współrzędnych Texture Coordinate:Generated [1].

Aby dać Ci pojęcie, jak wygląda obraz generowany przez Noise Texture, przygotowałem po kilka przykładów ilustrujących wpływ każdego z trzech parametrów węzła (Scale, Detail, Distortion). Poza podaną na ilustracji wartością, pozostałe dwa parametry tekstury mają zawsze ustawione takie wartości, jakie pokazuje Rysunek 10.15.1.

Zacznijmy od parametru Scale. Zwiększenie skali powoduje zmniejszenie rozmiaru szumu, generowanego przez teksturę (Rysunek 10.15.2):

Rysunek 10.15.2 Wpływ parametru Scale

Zauważ, że obraz uzyskany dla Scale = 100 doskonale nadaje się dla jakichś chropowatych powierzchni!

Kolejnym parametrem jest Detail. To poziom “szczegółowości” szumu (Rysunek 10.15.3):

Rysunek 10.15.3 Wpływ parametru Detail

Gdy ustawisz Detail = 0, uzyskasz bardzo rozmyty obraz. Wraz ze zwiększaniem wartości Detail, “chmury” generowane przez Noise Image, mają coraz więcej drobnych szczegółów. Jednocześnie wydłuża się czas renderowania powierzchni, wykorzystującej tę teksturę. (Dla porównania 100 próbek renderowało mi się: gdy Detail = 0 →13s, gdy Detail = 1 → 14s, Detail = 2 → 15s, Detail = 5 → 18s a gdy Detail = 20 → 30s). Nie widziałem już specjalnej różnicy pomiędzy obrazem uzyskanym dla Detail = 5 i Detail = 20. Stąd wniosek:

Zazwyczaj nie opłaca się używać wartości Detail > 5. Gdy używasz dużej skali, zmniejszaj wartość Detail.

Na przykład gdy Scale = 100 (Rysunek 10.15.2c), warto zastosować Detail = 0, bo i tak nie ma sensu bardziej rozdrabniać na tych mikroskopijnych „ziarenek”.

Ostatnim parametrem tekstury szumu jest Distortion. Ta wartość opisuje intensywność „rozmazywania” obrazu szumu w różnych losowych kierunkach (Rysunek 10.15.4):

Rysunek 10.15.4 Wpływ parametru Distortion

W odróżnieniu od Detail, zmiana wartości Distortion nie ma znaczącego wpływu na czas liczenia każdej próbki.

Kolejnym rodzajem węzła, który mamy do dyspozycji, jest Vornoi Texture (Rysunek 10.15.5):

Rysunek 10.15.5 Tekstura Vornoi (w trybie Intensity)

Przy odpowiednio małej skali (Scale) możesz użyć tej tekstury do uzyskania chropowatej powierzchni.

Po przełączenie w drugi tryb — Cells — Voronoi Texture zwraca wzór przypominający nieregularne kryształy jakiegoś minerału. Czasami taki rozkład odcieni szarości można zaobserwować na powierzchni blachy (Rysunek 10.15.6):

Rysunek 10.15.6 Tekstura Vornoi (w trybie Cells)

Trzecim rodzajem węzła, który można wykorzystać do tworzenia różnego rodzaju nieregularnych wzorów, jest Musgrave Texture. Ten węzeł ma najwięcej parametrów (Rysunek 10.15.7):

Rysunek 10.15.7 Tekstura Musgrave

Opis parametrów węzła Musgrave Texture w podstawowej dokumentacji Cycles jest bardzo lakoniczny[2]. Pierwsze dwa parametry — Scale i Detail — działają podobnie jak te z Noise Texture (por. str. 475 i 476). Nieco inna wersja tekstury Musgrave jest używana od kilku lat w Blender Internal. W porównaniu z węzłem używanym w Cycles ma jeszcze większą liczbę parametrów — m.in. wybór funkcji bazowej (Noise Basis). Tym niemniej gdy nie ma nic lepszego, możesz posłużyć się jej opisem jako wskazówką co do działania parametrów tego węzła (por: http://wiki.blender.org/index.php/Doc:2.6/Manual/Textures/Types/Procedural/Musgrave ).

W każdym razie Musgrave Texture oferuje pięć różnych typów obrazów. Domyślny (fBM) przedstawia Rysunek 10.15.7, a pozostałe — Rysunek 10.15.8:

Rysunek 10.15.8 Inne typy tekstury Musgrave

W zasadzie wydaje się, że obraz typu Hetero Terrain (Rysunek 10.15.8a) różni się od Hibrid Multifractal (Rysunek 10.15.8b) tylko jasnością. Przypuszczam jednak, że dla innych wartości parametrów tej tekstury te różnice mogą być większe.

Pamiętaj, że najciekawsze efekty można osiągnąć łącząc ze sobą różne tekstury proceduralne. Na przykład — Rysunek 10.15.9 przedstawia jeden z możliwych rezultatów połączenia węzłów Vornoi i Musgrave:

Rysunek 10.15.9 Przykład efektu uzyskanego w wyniku złożenia dwóch tekstur proceduralnych

Taki wzór przypomina np. ogniska rdzy na płaskiej powierzchni blachy.

[1] (str. 475) To różnica w stosunku do węzła Image Texture, który domyślnie wykorzystuje współrzędne UV siatki obiektu (por. str. 466). Niestety, współrzędne należy za każdym razem dla siatki zdefiniować (por. str. 70). Jeżeli tego nie zrobisz —zamiast obrazu z węzła Image Texture zobaczysz na próbnym renderze jednolicie czarną powierzchnię. W odróżnieniu od domyślne współrzędne tekstur proceduralnych — Generated — są dostępne zawsze.

[2] (str. 477) Mam na myśli dokumentację Cycles z http://wiki.blender.org, a dokładniej opis umieszczony na tej stronie (stan na marzec 2013): http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes/Textures.

10.16  Podstawienie obrazu na tło renderingu

Tło, wypełnione prostymi barwami lub panoramą o niedostatecznej rozdzielczości (por. str. 469, Rysunek 10.13.4) pozostawia wiele do życzenia ze względu na brak realizmu. Rysunek 10.16.1 pokazuje jeden z takich przypadków. Czy można “podstawić” za model realistyczne zdjęcie, które pokazuje Rysunek 10.16.2?

Rysunek 10.16.1 Model z kiepskim tłem

Rysunek 10.16.2 Obraz — lepsze tło dla modelu

Jest to całkiem proste. Do schematu otoczenia dodaj węzeł Image Texture z obrazem tła (por. str. 466). Dodaj także węzeł Texture Coordinate i podłącz współrzędne tekstury do jego wyjścia Window. Wyjście z węzła tekstury (Image Texture:Color) podłącz jako barwę shadera Background (Rysunek 10.16.3):

Rysunek 10.16.3 Schemat otoczenia sceny

Rysunek 10.16.4 przedstawia rezultat renderu — nasz model na tle zdjęcia:

Rysunek 10.16.4 Rezultat: model z lepszym tłem

Efekt wygląda zadowalająco poza pewnym szczegółem: odbitym obrazem otoczenia. Jeżeli nawet samolot ma półmatową powierzchnię, na których tych odbić nie widać, to można je zobaczyć na oszkleniu kabiny (Rysunek 10.16.5):

Rysunek 10.16.5 Problem z kształtem odbić otoczenia

Aby uzyskać inny układ odbić, trzeba inaczej rozłożyć obraz za modelem. W takim razie proponuję użyć Texture Coordinate:Camera, wraz z konieczną korektą węzłem Mapping (Rysunek 10.16.6):

Rysunek 10.16.6 Zastosowanie innego mapowania obrazu

(Więcej na temat węzła Mapping znajdziesz na str. 464). Tak zastosowane współrzędne Camera pozwalają uzyskać za modelem niemal nie zdeformowany obraz (Rysunek 10.16.7):

Rysunek 10.16.7 Nowe ułożenie obrazu tła na renderze

W zbliżeniu odbicie otoczenia w oszkleniu kabiny wygląda inaczej. Zamiast wielu drobnych pasków jest jeden, ale większy (Rysunek 10.16.8):

Rysunek 10.16.8 Układ odblasków uzyskany dla mapowania Texture Coordinate:Camera

Spróbuj zmienić trochę punkt widzenia, a przekonasz się, że dla wielu ujęć uzyskany układ odblasków wygląda zupełnie nieźle (Rysunek 10.16.9a):

Rysunek 10.16.9 Porównanie odblasków dla różnych mapowań obrazu

Możesz także sprawdzić, że odbłyski uzyskane z użyciem Texture Coordinate:Window także wyglądają „znośnie” dla innych położeń kamery (Rysunek 10.16.9b).

Na koniec warto zauważyć, że cały ten problem „szklanych odbić” dotyczy tylko zbliżeń. W scenach, w których widać cały samolot, kabina jest zazwyczaj niewielka. Widoczne na niej półprzejrzyste odbicia otoczenia są w takim przypadku zbyt małe, by mogły popsuć efekt. Co innego, gdy połyskliwa jest cała powierzchnia samolotu (a tak jest w przypadku maszyn utrzymanych w barwie naturalnego duralu). Wówczas trzeba się uciec do bardziej złożonych kompozycji shaderów otoczenia (por. str. 482).

10.17  Komponowanie otoczenia sceny

W scenach “na wolnym powietrzu”, jakimi zazwyczaj są sceny lotnicze, trzeba umieścić wokół modelu imitację otoczenia. Najprościej jest “wstawić” za model jakąś fotografię — tak jak jest to opisane na str. 479. To nie wystarcza, gdy samolot na naszej scenie ma mieć powierzchnię w naturalnym kolorze duralu. Aby na takiej powierzchni pojawiły się przekonujące odbicia otoczenia, potrzebujemy obrazu, który zostanie rozpostarty wokół sceny. Chodzi o kulistą “panoramę”, obejmującą 360º równika, i 180º południków (od zenitu do nadiru — por. str. 468) . Obrazy tego rodzaju można znaleźć w Internecie, ale nie są tak liczne, jak zwykłe zdjęcia. Zazwyczaj, panoramy dostępne za darmo mają za małą rozdzielczość, by można je było zastosować do pełnego odwzorowania tła (do tego celu potrzebne są obrazy rzędu 10000x5000 pikseli lub większe — por. str. 469). Dlatego musimy tu użyć złożenia “płaskiego zdjęcia za modelem”, stanowiącego podstawowe tło obrazu, z panoramą otoczenia, zapewniającą odpowiednie odblaski (Rysunek 10.17.1):

Rysunek 10.17.1 Przykład otoczenia złożonego z płaskiego obrazu i panoramy (Tło: © Tomo Yun, www.yunphpto.net )

Na szczęście takie pomocnicze panoramy nie muszą mieć bardzo dużych rozdzielczości, i darmowe pliki, udostępniane w Internecie, zupełnie do tego celu wystarczą. W tej sekcji pokażę szczegóły tego rozwiązania.

Podczas poszukiwań w Internecie możesz się natknąć na panoramy zapisywane w specjalnych formatach: HDR lub EXR [1]. Taka forma zapisu wymaga nieco innych ustawień parametrów (por. str. 468)

Podstawowym obrazem, od którego zaczynamy kompozycję sceny, jest zwykłe, płaskie zdjęcie które podstawimy jako tło renderowanego obrazu. Czasami bywa tak, że masz pomysł na scenę i szukasz w Internecie odpowiedniego otoczenia. Czasami — na odwrót, znajdziesz zdjęcie, w którym dostrzeżesz jakąś nową, ciekawą możliwość. W każdym razie w podczas takich poszukiwań zawsze warto zajrzeć na www.yunphoto.net . Autor oferuje tam za darmo różne zdjęcia w dużej rozdzielczości, m.in. nieba widzianego z samolotu.

W tej sekcji jako podstawowy obraz tła wykorzystamy plik, który nazwałem 4046.jpg (Rysunek 10.17.2a). (To właśnie jedna jedno ze zdjęć z samolotu wykonane przez Tomo Yuna, udostępnione pod nr 4046):

Rysunek 10.17.2 Źródła obrazów, wykorzystywanych w tej sekcji

Teraz trzeba dobrać do tego zdjęcia panoramę nieba. Dla Cycles szukaj zawsze panoram w tzw. rozwinięciu cylindrycznym (por. str. 468). To takie dobrze znane rozwinięcie Merkatora, stosowane od wieków w geografii. Rysunek 10.17.2b) przedstawia panoramę, która wydaje mi się dość dobrze pasować do 4046.jpg. To darmowa próbka panoramy nr 163, udostępniona wyspecjalizowanym serwisie cgskies.com . Nazwałem ją cgsky.jpg.

Wykorzystywany w tej sekcji obraz: 4046.jpg nie jest niezbędny do wykonania modelu. Dlatego umieściłem go w dodatkowym pliku optional.zip (por. str. 20). Pozostałe pliki, które tutaj używam, pochodzą z pliku p40.zip, i znajdziesz w folderze model/p40/background.

Zwróć uwagę, że w panoramie cgsky.jpg brakuje dolnej połowy. Autorzy po prostu założyli, że dolna półsfera będzie się zawsze poza polem widzenia kamery. Na potrzeby naszej sceny w locie sami musimy wypełnić ten obszar obrazem „ziemi” . Najlepiej, aby odbicie tej półsfery na powierzchni samolotu pasowało do podstawowego tła (obrazu 4046.jpg). Proponuję więc uzyskać ją z przekształcenia tego właśnie obrazu (Rysunek 10.17.3):

Rysunek 10.17.3 Tworzenie panoramy dolnej półsfery (earth.jpg)

Załaduj obraz 4046.jpg do GIMP. Na początek możesz nieco zmniejszyć jego rozmiar (Image→Scale Image), na przykład dwukrotnie. (Oryginalne zdjęcie ma szerokość niemal 5000px, a w tej pomocniczej panoramie nie potrzeba aż takich rozdzielczości).

Następnie zduplikuj domyślną warstwę GIMP z obrazem i przerzuć tę kopię w poziomie, aby stworzyć „lustrzane odbicie” oryginalnego zdjęcia (Rysunek 10.17.3a). Zwiększ szerokość obrazu (Image→Canvas Size) dwukrotnie, a następnie starannie przysuń do siebie te dwie połówki. W ten sposób uzyskaliśmy podstawowy obraz, na którym nie będzie widać linii łączenia. To nic, że składa się z dwóch identycznych części. W odbiciach na powierzchni samolotu nie będzie tego widać.

Na koniec zwiększy wysokość obrazu (Image→Canvas Size) tak, by stała się równa połowie szerokości (Rysunek 10.17.3b). (To typowe proporcje obrazu panoramy). Ta część obrazu i tak będzie „zasłonięta” przez górną półsferę (cgsky.jpg). Oryginalne zdjęcie 4046.jpg miało proporcje 2:3, stąd zajmuje 2/3 wysokości panoramy. Taka „zakładka” może się jednak przydać, gdy będziesz chciał opuścić trochę ten obraz ziemi do dołu. Uzyskanemu w ten sposób plikowi z panoramą dolnej półsfery nadałem nazwę earth.jpg.

Rysunek 10.17.4 przedstawia złożenie obrazów górnej i dolnej półsfery (Environment Texture — por. str. 468):

Rysunek 10.17.4 Złożenie panoramy z dwóch obrazów (earth.jpg i cgsky.jpg)

Mogłem dla każdy z użytych obrazów podłączyć do odrębnego shadera Background, połączonych później za pomocą węzła Mix Shader. Zamiast łączenia shaderów wolałem połączyć w jeden obraz przygotowane panoramy. Stąd wykorzystuję do tego węzeł Color→Mix, którego wyjście jest połączone z pojedynczym shaderem otoczenia (Rysunek 10.17.4).

Na początek warto sprawdzić za pomocą sondy (por. str. 462), czy każda z panoram „układa” się tak jak tego byśmy chcieli (Rysunek 10.17.5):

Rysunek 10.17.5 Sprawdzanie obydwu panoram za pomocą sondy

Dla Mix:Fac = 0 scena jest otoczona wyłącznie przez panoramę earth.jpg (Rysunek 10.17.5b), a dla Mix:Fac = 1.0 — przez cgsky.jpg (Rysunek 10.17.5a).

Do właściwego złożenia tych dwóch obrazów potrzebujemy zmiennego współczynnika podziału. Użyjemy w tym charakterze obróconego o 90º gradientu typu Easing (Gradient Texture — str. 472) (Rysunek 10.17.6):

Rysunek 10.17.6 Współczynnik podziału: gradient liniowy

Rysunek 10.17.7 Pierwsza próba połączenia sfer

Rysunek 10.17.7 przedstawia rezultat podłączenia wyjścia Gradient Texture:Fac (Rysunek 10.17.6) do wejścia Mix:Fac zespołu pokazywanego przez Rysunek 10.17.4.

Po pierwsze — coś jest nie tak z tym naszym gradientem, bo w górnej części sfery widać nadal górną granicę obrazu tła (por. Rysunek 10.17.5).

Jednocześnie warto przesunąć trochę źródło światła kierunkowego (Sun), aby jego odbicie pokrywało się z obrazem słońca na panoramie otoczenia (Rysunek 10.17.7). (W tym przykładzie te dwa punkty były bardzo blisko siebie, więc takie drobne poprawki położenia obiektu Sun nie stanowiły problemu. W przypadku większych różnic konieczny może się okazać obrót panoramy nieba — por. str. 487, Rysunek 10.17.12).

Dlaczego na górnej półsferze poprzez panoramę nieba (cgsky.jpg) prześwituje ziemia (earth.jpg — Rysunek 10.17.7)? Popatrz jeszcze raz na Rysunek 10.17.6b). Zwróć uwagę, że dopiero w połowie górnej półsfery gradient uzyskuje wartość 50%. A taka wartość oznacza, że w tym miejscu zobaczysz złożenie obydwu łączonych obrazów! 100% nieba występuje na razie w jednym punkcie: w zenicie. Aby zwiększyć ten obszar, powiększ obraz gradientu wzdłuż osi Z (Mapping:Scale:Z) — na przykład 2 razy (Rysunek 10.17.8):

Rysunek 10.17.8 Zastosowanie gradientu jako współczynnika łączenia dwóch sfer

Rysunek 10.17.9 przedstawia nowy rozkład gradientu (a) oraz uzyskaną panoramę (b):

Rysunek 10.17.9 Poprawiony gradient do łączenia dwóch sfer

Po tej poprawce panorama wydaje się całkiem poprawna — sprawdźmy, jak wygląda w tym otoczeniu nasz model (Rysunek 10.17.10):

Rysunek 10.17.10 Model w otoczeniu panoramy (earth.jpg + cgsky.jpg)

O ile ujęcia z góry i z dołu (Rysunek 10.17.10a,b) wyglądają poprawnie, to w widoku poziomym (Rysunek 10.17.10c) horyzont położony jest zbyt wysoko. Trzeba go obniżyć (Rysunek 10.17.11):

Rysunek 10.17.11 Przesunięcie linii horyzontu do dołu

Aby zmieścić na poprzedniej stronie Rysunek 10.17.11, zmniejszyłem na nim węzeł transformacji dolnej półsfery (earth.jpg). Zrobiłem tak gdyż ta panorama nie ulega żadnej zmianie przy obniżaniu horyzontu. Warto jednak podłączyć do jej wejścia taki sam węzeł transformacji (Mapping) jak do półsfery nieba, aby móc swobodnie nią obracać (Rysunek 10.17.12a):

Rysunek 10.17.12 Panorama otoczenia (po dodatkowym obrocie panoramy earth.jpg)

(Za pomocą obrotu dolnej półsfery możesz zmieniać układ odbić otoczenia, widocznych na dolnych powierzchniach modelu). Uzyskane w wyniku tej i poprzedniej zmiany otoczenie sceny przedstawia Rysunek 10.17.12b). Jak widać, horyzont uległ tu znacznemu obniżeniu.

Sprawdźmy, jak to wpłynęło na ujęcia naszego modelu. Dla widoku z góry (Rysunek 10.17.13a) właściwie nic się nie zmieniło (por. Rysunek 10.17.10a). Na tle ujęcia z dołu (Rysunek 10.17.13b) majaczące w oddali odległe, błękitne góry (por. Rysunek 10.17.10b) zostały zastąpione przez czyste niebo. Tę zmianę widać jeszcze bardziej dobitnie w widoku z boku (Rysunek 10.17.13c). Poprzednio nasz samolot wyglądał jakby leciał między górami (Rysunek 10.17.10c), a teraz występuje na tle błękitnego nieba:

Rysunek 10.17.13 Model w otoczeniu poprawionej panoramy (earth.jpg + cgsky.jpg)

Dodajmy teraz do naszego schematu drugi element: konwencjonalny obraz (Texture Image) tła, podstawiony za modelem (Rysunek 10.17.14):

Rysunek 10.17.14 Złożenie panoramy z „płaskim” obrazem tła

Zastosowałem tu rozwiązanie opisane na str. 479: konwencjonalny obraz (Texture Image) podstawiony we współrzędnych okna (Texture Coordinate:Window.) . Do rozróżnienia promieni (pikseli renderowanego obrazu) odbitych od modelu i od tła użyłem flagi Light Path:Is Camera Ray (str. 453). Dla pierwszych (Is Camera Ray = 0) wykorzystywana jest przygotowana wcześniej panorama otoczenia. Dla drugich (Is Camera Ray = 1) podstawiany jest obraz nebraska.png [2]. Mogłem połączyć te obraz kolejnym węzłem Color→Mix z flagą Is Camera Ray w charakterze współczynnika udziału (Fac). Zdecydowałem się jednak podłączyć każdy z tych obrazów do oddzielnego shadera typu Background, które są łączone węzłem Mix Shader (Rysunek 10.17.14). Taki układ pozwala na niezależną regulację intensywności oświetlenia powierzchni modelu i tła (Rysunek 10.17.15):

Rysunek 10.17.15 Regulacja jasności panoramy otoczenia

Czasami przydaje się dodać niebu jakiś odrobinę inny odcień. Aby to zrobić, wstaw nowy element typu Color→Mix w środek linii łączącej wyjście z Environment Texture (z cgsky.jpg) z węzłem Color→Mix scalającym górną i dolną panoramę (Rysunek 10.17.16):

Rysunek 10.17.16 Dodatkowy efekt — odcień nieba

Ustaw wejście Mix:Color2 nowego węzła na barwę, która „pasuje” do obrazu tła sceny. Dla takiego otoczenia jak nebraska.png zastosowałem kolor pomarańczowy. Trybem łączenia jest Mix, a do wejścia Mix:Color1 podłączyłem obraz z Environment Texture. Intensywnością zabarwienia nieba steruje współczynnik Mix:Fac. Ustaw go na jakąś niewielką wartość — np. 0.1 (10%). Rysunek 10.17.17 przedstawia efekt takiej niewielkiej zmiany:

Rysunek 10.17.17 Regulacja „odcienia nieba”

Rysunek 10.17.17a) to wersja obrazu stworzona z użyciem obrazu nieba bez żadnej korekty. Rysunek 10.17.17b) przedstawia obraz, w którym niebo stało się lekko pomarańczowe (gdyż zmieniłem Mix:Fac na 0.1). Trzeba przyznać, że efekt jest „kosmetyczny”. Pomaga lepiej „dopasować” model do obrazu tła. Coś podobnego można także uzyskać w inny sposób — np. operując odpowiednimi obrazami w kompozytorze Blendera. Ja jednak takie proste poprawki wolę wstawiać bezpośrednio do schematu otoczenia sceny. Uważam, że w ten sposób łatwiej z nich skorzystać, niż z Render Layers kompozytora.

Pewien szczegół naszego modelu nadal nie pasuje do tła: za szybami kabiny wciąż widać błękitny fragment panoramy otoczenia, a nie obraz tła (Rysunek 10.17.18a):

Rysunek 10.17.18 Wpływ opcji Caustics na render

W pierwszej chwili sądziłem, że to efekt zaciemnienia szyb, wywołany włączonymi w panelu Light Paths zestawu Render opcjami Caustics (Rysunek 10.17.18b). Po włączeniu tych opcji (Rysunek 10.17.18d) błękit widoczny za kabiną pozostał, wnętrze kokpitu tylko nieznacznie się rozjaśniło, za to na kadłubie pojawiło się mnóstwo białych punktów („świetlików” — Rysunek 10.17.18c), które zaczęły znikać dopiero po kilku tysiącach próbek. Czym prędzej więc z powrotem wyłączyłem opcje Caustics. Nie one są tutaj przyczyną.

Węzeł Light Path zalicza promienie przechodzące przez szybę do grupy Is Transmission Ray. A promień (piksel renderu) może należeć tylko do jednej kategorii — więc za szybą kabiny widać fragment błękitu naszej panoramy otoczenia, a nie obraz tła. W takie sytuacji można tak zmienić schemat, by podstawiał obraz tła i dla Is Camera Ray, i dla Is Transmission Ray ( Rysunek 10.17.19a):

Rysunek 10.17.19 Uzyskanie obrazu tła za oszkleniem kabiny

Chodzi tu o sumę „logiczną”, która zwróci 1 gdy którakolwiek z tych flag będzie równa 1. Ten efekt można uzyskać za pomocą węzła Math, ustawionego na funkcję Maximum (Rysunek 10.17.19a). W efekcie na renderze za kabiną pojawi się odpowiednie tło obrazu (Rysunek 10.17.19b). Jedyną wadą tego rozwiązania są nietypowe odblaski otoczenia na szybach (szersze omówienie tego problemu znajdziesz na str. 480).

Należy zauważyć, że te odblaski są w wyniku „zmieszania” z panoramą otoczenia słabsze. W razie czego pamiętaj, że rozwiązanie oparte na sumowaniu Is Camera Ray z Is Transmission Ray warto stosować tylko wtedy, gdy przez oszklenie widać jakiś fragment tła sceny. Czasami możesz tak ustawić kamerę, by „za szkłem” były widoczne wyłącznie powierzchnie modelu. Wtedy możesz zastosować tylko flagę Light Path:Is Camera Ray (jak na str. 488, Rysunek 10.17.14) dla której nie ma problemu ze środowiskiem odbitym w szybach. Innym sposobem na uniknięcie stosowania flagi Is Transmission Ray jest podstawienie „za szybą” modelu takiego fragmentu panoramy otoczenia, który kolorystycznie pasuje do obrazu tła. (W przypadku Rysunek 10.17.18a i c mógłby to być jakiś fragment białej chmury).

Zresztą — najczęściej te nieprawidłowe odblaski, jakie uzyskamy stosując złożenie Is Camera Ray z Is Transmission Ray (Rysunek 10.17.19), nie są czymś specjalnie rażącym. Popatrz chociażby na model poniżej (Rysunek 10.17.20):

Rysunek 10.17.20 Rezultat — srebrzysty samolot na tle zimowego krajobrazu

Wydaje mi się, że nie zwróciłeś na nie uwagi także na renderze z początku tej sekcji (str. 482, Rysunek 10.17.1).

Rysunek 10.17.21 przedstawia uzyskany schemat otoczenia sceny. Aby zmieścić go na jednej ilustracji, pozostawiłem węzły transformacji (Mapping) gradientu i panoram w stanie „zminimalizowanym”:

Rysunek 10.17.21 Pełen schemat otoczenia sceny (World)

Zastanawiałem się, jak można przekształcić te węzły w jakąś elegancką grupę. Jednak zrezygnowałem, gdyż obecnie w Cycles nie ma możliwości wygodnego „wyciągnięcia” wybranych parametrów z węzłów Mapping.

[1] (str. 482) To dość nietypowe obrazy. Zwykły plik graficzny przechowuje informację o barwach w postaci tzw. "8-bitów na składnik” („per channel”) . (Oznacza to przypisanie każdemu ze składników: R,G,B 8-bitowej intensywności — więcej na ten temat na str. 575 ). Taki zapis umożliwia odwzorowanie do 24 milionów barw. Zazwyczaj to wystarcza (oko ludzkie nie rozróżnia ich więcej). Ale nie w przypadku panoram! Ich barwy są zapisane z większą dokładnością: 10, 12 i więcej bitów na składnik. Oznacza to, że potrafią odwzorować nie miliony, a miliardy odcieni. Ma to znaczenie przy zaawansowanych technikach imitacji oświetlenia (tzw. global ilumination — GI). Stąd panoramy są zapisywane w specjalnych formatach — *.HDR , *.EXR. To obrazy określane jako H igh D ynamic R ange I mage — HDRI . Nie wszystkie programy graficzne potrafią obsłużyć pliki o takich "rozszerzonych" kolorach. Możesz je wczytać i oglądać w UV/Image Editor Blendera. Niestety, zestaw narzędzi do edycji obrazu, dostępnych w tym edytorze, jest dość ubogi. Nie można ich wczytać do GIMP, bo ten program jeszcze nie obsługuje takich plików.

[2] (str. 488) Ten obraz znajdziesz w folderze model/p40/background (por. str. 20). Jest wykorzystywany w innych rozdziałach tej książki. To zmniejszona wersja zdjęcia 4046.jpg, które wykonał Tomo Yun (www.yunphoto.net). Obraz ma nieco zmienione proporcje. Usunąłem z niego co wyraźniejsze ślady ludzkich zabudowań. Nazwa jest wynikiem mojej pomyłki (w rzeczywistości to fragment Japonii), ale taka już została.

10.18  Skonfigurowanie materiału: szkło (Plexiglas)

Stwórz nowy materiał i przypisz go do elementów oszklenia kabiny. Nazwijmy go B.Glass.Canopy (por. str. 458). Uzyskanie materiału odpowiadającemu szkłu (a dokładniej: szkłu organicznemu) wydaje się w Cycles trywialne. Przecież mamy tu do dyspozycji gotowy shader Glass BSDF! Wykorzystajmy więc go w naszym materiale. Rysunek 10.18.1 pokazuje pierwszą wersję jego definicji, przygotowaną w Node Editor:

Rysunek 10.18.1 Domyślne ustawienia nowego materiału

Ustaliłem dla tej powierzchni kolor biały i idealną gładkość (Roughness = 0). Współczynnik refrakcji IOR jest odpowiedni dla plexiglasu (por. str. 451). Jednak rezultat tych ustawień na podglądzie renderu jest daleki od oczekiwanego (Rysunek 10.18.2):

Rysunek 10.18.2 Rezultat pierwszego zastosowania shadera Glass BSDF

Dlaczego w środku kabiny wszystko jest niemal zupełnie czarne!? Składa się na to kilka przyczyn. Po pierwsze, miałem wyłączoną obsługę tzw. kaustykę (ang. caustic) czyli przenikania światła przez szkło. (Wyłączenie kaustyki daje mniej przypadkowych białych punktów na renderze nieprzejrzystych, połyskliwych powierzchni. W przypadku naszego modelu to znacznie poprawia wynik i skraca cza renderowania). Włączenie kaustyki (Rysunek 10.18.3a) tylko trochę rozjaśnia wnętrze kabiny (Rysunek 10.18.3b):

Rysunek 10.18.3 Shader Glass BSDF: problemy z cieniem!

Właściwą przyczyną naszych problemów jest cień: ta szyba rzuca cień jak lity przedmiot! (Rysunek 10.18.3b).

W wersji Blendera, w której to wykonuję (2.71) Cycles nie obsługuje prawidłowo kaustyki dla źródła światła typu „słońce”, które stosujemy w tej scenie. Musimy to obejść pewną sztuczką. Otóż mamy do dyspozycji shader o nazwie Transparent. Kolor tego węzła pozwala płynnie regulować cień (Rysunek 10.18.4):

Rysunek 10.18.4 Shader Transparent: problemy z brakiem oszklenia

Powierzchnie Transparent nie zastąpią nam jednak szkła — jest to taki efekt „techniczny”, przeznaczony do łączenia z innymi shaderami. My podstawimy jego cień zamiast cienia szkła — używając znacznika Light Path:Is Shadow Ray (Rysunek 10.18.5). (Więcej na temat Light Path znajdziesz na str. 453).

Rysunek 10.18.5 Uzyskanie uproszczonych cieni za oszkleniem

Rysunek 10.18.6a) przedstawia rezultat, jaki otrzymaliśmy dla tak zmodyfikowanego materiału na renderze. Zwróć uwagę, że działa mimo włączonych opcji Caustics (Rysunek 10.18.6b):

Rysunek 10.18.6 Efekt: przejrzysty cień, mimo wyłączonej kaustyki

Uzyskaliśmy przejrzyste cienie, co zdecydowanie rozjaśniło wnętrze kabiny. Nasze szkło jest jednak nadal prawie niewidoczne (Rysunek 10.18.7):

Rysunek 10.18.7 Materiał szkła (złożenie shaderów Glass BSDF i Transparent BSDF) na owiewce kabiny

Trzeba wzbogacić jego powierzchnię o efekt lustrzanego odbicia, który zapewnia shader Glossy BSDF. Udział doskonale przejrzystej powierzchni szkła powinien się zmniejszać przy większych kątach widzenia. (Powierzchnia szkła pochylona pod kątem odbija obraz otoczenia). Dlatego jako współczynnika użyjemy wartości dostarczanych przez węzeł Fresnel (por. str. 449, 36). Rysunek 10.18.8 przedstawia zmodyfikowany schemat:

Rysunek 10.18.8 Połączenie shaderów Glass i Glossy

Rysunek 10.18.8 przedstawia tak zmodyfikowany materiał na podglądzie renderu. Teraz już wygląda jak szkło:

Rysunek 10.18.9 Szkło z połyskiem

Do uzyskania zadowalającego rezultatu takie przejrzyste powierzchnie wymagają wykonania kilkuset próbek renderu. Co gorsza, w pierwszej wersji Cycles, której używam, gdzieś w okolicach próbki nr 100 mogą się na nich pojawić białe punkty (Rysunek 10.18.8), które zostaną rozmyte dopiero po kilku tysiącach dalszych próbek!

Im gładsza powierzchnia kadłuba (Roughness → 0.0), tym większa szansa wystąpienia na renderze owiewki kabiny niepożądanych białych punktów („świetlików”).

Najwięcej takich punktów tworzy się na szybach z tyłu kabiny, gdzie powierzchnia kadłuba znajduje się zaraz za powierzchnią szkła. Zobacz na koniec tej sekcji (str. 497), gdzie umieściłem opis jak sobie poradzić z tym problemem.

Na szczęście P-40B i C były zawsze pomalowane jakąś półmatową farbą, co zmniejsza ryzyko pojawienia się na renderze „świetlików”. Zdecydowałem umożliwić użytkownikowi materiału sterowanie przejrzystością szkła, czyli parametrem IOR z węzła Fresnel. (Zwróć uwagę, że chodzi tu wyłącznie o możliwość zmiany udziału shadera Glossy BSDF. Nie zmienia to w żadne sposób współczynnika Glass BSDF:IOR, który decyduje o załamaniu promieni słonecznych w szkle). Przekształciłem opracowany do tej pory zespół węzłów w grupę Plexiglas (Rysunek 10.18.10a), wprowadzając jednocześnie kilka drobnych udogodnień:

- zastąpiłem węzeł Fresnel węzłem Layer Weight, którego parametr Blend w zakresie 0.0 .. 0.4 przekłada się bardziej liniowo na zmianę współczynnika Fresnela niż Fresnel:IOR. Z obserwacji kilku testowych renderów wywnioskowałem, że Fresnel:IOR = 1.5 odpowiada Layer Weight:Blend = 0.32;

- Dodałem na wejściu do Layer Weight dodatkowy węzeł Multiply (Convertor→Math), który przelicza wprowadzaną przez użytkownika wartości parametru Reflectivity (intuicyjne 0.0 .. 1.0) na wartość odpowiednią dla Layer Weight:Blend;

Parametry nowego shadera przedstawia Rysunek 10.18.10b):

Rysunek 10.18.10 Definicja shadera Plexiglas

Zdecydowałem się „wyciągnąć” z tych węzłów następujące wejścia (por. Rysunek 10.18.10b):

- Glass: barwa szkła (i — jednocześnie — barwa przejrzystego cienia);

- Specular: barwa połysków (zazwyczaj biała).;

- Reflectivity: domyślna wartość 1.0 oznacza „zmatowienie” szkła (wynikające z udziału shadera Glossy) odpowiednie dla IOR = 1.5, a mniejsze wartości — szkło bardziej przejrzyste. Zmniejszenie tego parametru może się przydać w zbliżeniach i przy wzmocnionym świetle otoczenia;

- Softness: „miękkość” odbłysków. To parametr Glossy BSDF:Roughness, pod zmienioną nazwą;

Aby dodatkowo nie komplikować schematu pokazywanego przez Rysunek 10.18.10, pokazuję oddzielnie wewnętrzne ulepszenie tej grupy. Przed wejściem do shadera Transparent dodałem węzeł typu Color→Mix. To operacja mieszania dwóch barw zgodnie z proporcją ustaloną przez współczynnik Fac (Rysunek 10.18.11):

Rysunek 10.18.11 Dodatkowy wewnętrzny element, przyciemniający cień rzucany przez oszklenie

W tym przypadku węzeł Mix służy do nieznacznego przyciemnienia barwy przeźroczystych cieni. Miesza podaną na wejściu grupy barwę szkła (Plexiglas:Glass) z 10% czerni, i tak zmieniony kolor dostarcza do wejścia shadera Transparent BSDF. Oczywiście, równie dobrze możesz ustawić tu jaśniejsze cienie — np. 5%.

Rysunek 10.18.12 przedstawia rezultat uzyskany za pomocą shadera Plexiglas. Tym razem zamiast jednolitego tła użyłem panoramicznej tekstury otoczenia, z chmurami i niebem, które w naturalny sposób odbija się w owiewce:

Rysunek 10.18.12 Rezultat użycia shadera Plexiglas (Reflectivity = 100%)

Zwróć uwagę, jak ważne jest uzyskanie jakiegoś zróżnicowanego odbicia otoczenia w szybach owiewki. Uważam, że dodają jej realizmu. Jednak bardzo trudno jest znaleźć odpowiednią panoramę, a jeszcze trudniej — panoramę o odpowiedniej rozdzielczości. Jeżeli w tle sceny podstawisz zamiast niej jakieś płaskie zdjęcie, zetkniesz się z pewnymi zniekształceniami odbić w oszkleniu owiewki (por. str. 480).

Na koniec chciałbym wrócić do problemu „świetlików” . W wersji 2.7 Blendera wprowadzono w Cycles pewne poprawki. Po pierwsze — zoptymalizowano nieco algorytm działania, co spowodowało, że białe punkty są jakby mniejsze. Po drugie — w panelu Render:Sampling pojawiły się dodatkowe parametry o nazwie Clamp (Rysunek 10.18.13a). To max. dopuszczalna jasność pikseli podczas obliczania kolejnych próbek renderu (wartość 1.0 oznacza biały). Domyślnie Sampling:Clamp Direct (odbicia bezpośrednie) i Clamp Indirect (odbicia wtórne) są ustawione na wartość = 0, co oznacza że są wyłączone. W takim przypadku białe punkty pojawiają się na renderze tak jak we wcześniejszych wersjach (Rysunek 10.18.13b):

Rysunek 10.18.13 Render bez ograniczeń na zakres jasności pikseli

Ustaw parametry Clamp na taką wartość, by nie „obcinały” białych pikseli, ale eliminowały tylko takie, które są ewidentnie zbyt jasne (tzn. nieprawidłowe). Wypraktykowałem, że dla naszych scen wystarczy przyjąć Clamp = 2.0 (Rysunek 10.18.14a). Dla tej wartości świetliki są wyeliminowane już po około 50 próbkach. Po 200 próbkach mamy już zupełnie porządny efekt (Rysunek 10.18.14b):

Rysunek 10.18.14 Render z ograniczeniem na zakres jasności pikseli (Clamp)

Jednocześnie scena nie ulega żadnemu widocznemu zaciemnieniu (tak się dzieje dla wartości Clamp < 1.0). Nie widać także innych negatywnych efektów ubocznych. Czyli — ustawienie godne polecenia!

Podczas modelowania wnętrza kabiny natknąłem się na problem odbicia otoczenia przez szkło. Każdy z przyrządów pokładowych zamontowanych w tablicy przyrządów był zabezpieczony płaską szklaną płytką. Początkowo przypisałem im materiał użyty w osłonie kabiny (oparty o shader Plexiglass). Okazało się, że w ujęciach z boku tarcze wskaźników zmieniały się w małe lusterka (Rysunek 10.18.15):

Rysunek 10.18.15 „Lustrzane” odbicia otoczenia w osłonach przyrządów pokładowych

Taki efekt nie wygląda realistycznie. Przyczyną jest shader Glossy BSDF, którego udział rośnie wraz z kątem pochylenia szklanej powierzchni do obserwatora. Aby to skorygować, trzeba uczynić ten shader częściowo przejrzystym. „Zmieszałem” go więc z shaderem Transparent BSDF (Rysunek 10.18.16):

Rysunek 10.18.16 Schemat zmodyfikowanego materiału dla osłon przyrządów (B.Glass.Dials)

Rysunek 10.18.17 przedstawia to samo ujęcie, uzyskane z wykorzystaniem materiału o schemacie przedstawionym powyżej (nadałem mu nazwę B.Glass.Dials):

Rysunek 10.18.17 Odbicia otoczenia w materiale B.Glass.Dials

Doszedłem do wniosku, że przesadziłem z połyskliwością szkła owiewki. Zdecydowałem się więc wprowadzić podobną modyfikację do shadera Plexiglass (Rysunek 10.18.18):

Rysunek 10.18.18 Grupa Plexiglass: wprowadzenie przejrzystych odbić

W wnętrzu grupy dodałem węzeł łączący shadery Transparent BSDF i Glossy BSDF [1]. Zdecydowałem się podłączyć parametr Reflectivity do nieprzejrzystości odbić. Współczynnik Fresnela „mieszania” shaderów szkła i odbić stał się teraz stały (= 1.45), stąd mogłem zastąpić węzeł Layer Weight węzłem Fresnel (por. str. 495, Rysunek 10.18.10). Sądzę, że poprawiło to czytelność schematu.

Rysunek 10.18.19 przedstawia porównanie rezultatu dla dwóch różnych przejrzystości odbić (Reflectivity):

Rysunek 10.18.19 Porównanie efektu dla dwóch różnych przejrzystości odbić

Sądzę, że lepsze efekty uzyskamy dla bardziej przejrzystego szkła (Reflectivity = 0.2 — Rysunek 10.18.19b). Przy okazji: zwróć uwagę, że w Cycles nic nie wymaga tylu próbek, co uzyskanie właściwych odbić w szybie! (Każdy z przedstawionych powyżej przykładów wymagał od renderera wykonania od 300 do 500 takich iteracji).

[1] (str. 499) Wprowadziłem tę modyfikację przy okazji pracy nad wnętrzem kabiny, stąd tak zmodyfikowaną grupę znajdziesz dopiero w przykładowym pliku model\p40\history\P40B-8.06.blend i następnych.

10.19  Skonfigurowanie materiału: dural i inne powierzchnie (Gloss Paint)

Jako podstawowy shader powierzchni samolotu stosuję grupę, której nadałem nazwę Gloss Paint. To klasyczne połączenie shaderów Diffuse BSDF i Glossy BSDF za pomocą współczynnika Fresnela. Stworzyliśmy je na początku tego rozdziału (por. str. 439 i 442). Na początku tej sekcji wspomnę tylko o pewnym drobnym usprawnieniu, o które warto wzbogacić tę grupę. Rzecz polega na tym, że gdy tylko udział Glossy BSDF jest niezerowy (czyli gdy parametr Reflectivity jest > 0), shader o schemacie jak na str. 442 tworzył na wewnętrznych ścianach siatki odbicie otoczenia (por. str. 37, 38). Dla powierzchni matowych lub półmatowych ten efekt można zminimalizować, podstawiając na ścianach wewnętrznych sam rezultat samego shadera Diffuse BSDF. Na str. 456 pokazałem to na schemacie, „mieszając” wynik z Glossy Paint z zewnętrznym shaderem, przy użyciu flagi Geometry:Backfacing. Ten sam rezultat można uzyskać wewnątrz samej grupy Gloss Paint, mnożąc współczynnik wagi (Layer Weigth:Fresnel) przez 1 dla ścian zewnętrznych i 0 dla wewnętrznych (Rysunek 10.19.1):

Rysunek 10.19.1 Modyfikacja shadera Gloss Paint — wyłączenie połyskliwości dla wewnętrznej strony ścian siatki

Ściany wewnętrzne są renderowane rzadko — w tym modelu tylko w żebrach skrzydła (Rysunek 10.19.2):

Rysunek 10.19.2 Shader Gloss Paint: działanie przed i po modyfikacji

Ten sam shader pozwala na odwzorowanie najróżniejszych rodzajów poszycia samolotu. Mimo nazwy, za pomocą Glossy Paint możesz uzyskać także efekt powierzchni utrzymanej w naturalnym kolorze metalu (Rysunek 10.19.3):

Rysunek 10.19.3 Powierzchnia jak dla wypolerowanej blachy Alcald

(Dla takich połyskliwych powierzchni istotny jest także obraz otoczenia. Na tej i następnych ilustracjach wykorzystuję panoramę otoczenie World jak na schemacie ze str. 491, Rysunek 10.17.21). Tak lustrzaną powierzchnię mogły mieć samoloty z produkowanej w USA blachy Alcald, odpowiednio wypolerowane przez obsługę naziemną. (Arkusze Alcald były pokryte cienką warstwą czystego aluminium). Dla mniej zadbanego samolotu użyj nieco większej wartości parametru Roughness — od 0.02 do 0.05 (por. str. 505).

O ile dla bardzo połyskliwych (Reflectivity = 0.98) powierzchni o barwie decyduje niemal wyłącznie kolor Specular, to po zmniejszeniu połyskliwości do 0.5 — 0.6 możesz uzyskać efekt wyglądający jak błyszczący lakier lub jak połyskliwy plastik. Teraz ważny staje się także kolor Diffuse (Rysunek 10.19.4):

Rysunek 10.19.4 Powierzchnia jak dla połyskliwego lakieru

Samoloty bojowe były zazwyczaj malowane farbami półmatowymi lub matowymi, by zmniejszyć szansę na dostrzeżenie przez przeciwnika. Aby uzyskać taki efekt, zwiększ wartość Roughness do wartości rzędu 0.15 — 0.25. Jednocześnie zastosuj ciemniejszą barwę Diffuse (utrzymuj jej intensywność V pomiędzy 0.05 — 0.01). Zmniejsz także intensywność barwy Specular do poziomu 0.15 — 0.25 (Rysunek 10.19.5):

Rysunek 10.19.5 Półmatowy kamuflaż samolotu bojowego

Wszystkie te zmiany spowodowały pogłębienie cieni na powierzchni samolotu. Stały się już na tyle ciemne, że ujęcie, które pokazuje Rysunek 10.19.5, nie wygląda najlepiej. W tej scenie światło słońca pada na lewą stronę kadłuba. Dlatego po prawej stronie, w cieniu, szczegóły jego powierzchni są mniej wyraźne. (Już nie rozjaśnia ich tak bardzo odbite światło otoczenia — bo zmniejszyliśmy intensywność Specular). Oczywiście, ten sam materiał wygląda inaczej po stronie oświetlonej (Rysunek 10.19.6):

Rysunek 10.19.6 Ten sam materiał od strony oświetlonej światłem słońca

Dla takich półmatowych powierzchni modelu można przywrócić obliczenia kaustyki (wyłączyć opcję Caustics w panelu Light Paths zestawu Render). To rozjaśni nieco wnętrze kabiny pilota, a dla tak „chropowatych” powierzchni Cycles nie będzie już tworzył masy „świetlików”, jak robił na str. 490, dla połyskliwej powierzchni (Rysunek 10.17.18). W zasadzie kamuflaż po oświetlonej stronie modelu wydaje się nawet trochę zbyt jasny. Tylko wloty do kanałów chłodnicy cieczy są bardzo ciemne. Później przypiszemy im właściwy kolor (były jasnoszare), w wyniku czego przestaną być tak czarne.

Często kamuflaż samolotów był znacznie ciemniejszy, niż ten na poprzednich ilustracjach — chociażby taki „fabrycznie świeży” kolor Olive Drab (Rysunek 10.19.7):

Rysunek 10.19.7 Samolot w kolorze zbliżonym do „fabrycznie nowego” Olive Drab

Barwa Diffuse określa podstawowy kolor powierzchni, a Specular — udział barwy odbitego otoczenia (w scenach w locie — głównie nieba). Dlatego zazwyczaj Specular to jakiś odcień neutralnej szarości.

Sądzę, że po przedstawieniu tych kilku typowych sytuacji będziesz już umiał dobierać właściwe barwy Diffuse i Specular. Wydaje mi się za to, że warto jeszcze pokazać na nieco innym przykładzie, jak „działają” dwa pozostałe parametry: Reflectivity i Roughness. Myślę, że chyba nikt z nas nie oglądał zbyt często odbić otoczenia na powierzchni samolotu w locie. Abyś mógł lepiej ocenić efekt testu, zdecydowałem się umieścić nasz model „na ziemi”, w środowisku, którego odbicia znane są nam na co dzień (Rysunek 10.19.8):

Rysunek 10.19.8 Obraz otoczenia, który wykorzystamy dalej jako środowisko testowe ( www.openfootage.net )

Do dalszych testów, aby wykluczyć wpływ cieni i odblasków słońca, zastosujemy uproszczony model oświetlenia: wyłącznie panorama otoczenia (Rysunek 10.19.9). Zmieniłem także kolor Diffuse powierzchni naszego modelu na jasnoszary (V=0.8), a Specular — na biały (V = 1.0).

Rysunek 10.19.9 Schemat otoczenia, które wykorzystamy do testów

Wpływ zmian współczynnika Reflectivity przedstawiają: Rysunek 10.19.10 (dla powierzchni o wysokim połysku — „srebrnych”) i Rysunek 10.19.11 (dla pozostałych rodzajów powierzchni):

Rysunek 10.19.10 Efekt dla wysokich wartości Reflectivity

Rysunek 10.19.11 Efekt dla niższych wartości Reflectivity

Nawet niewielkie modyfikacje wartości Roughness (w tym przykładzie — o 0.05) powodują znaczące zmiany dla powierzchni o wysokim połysku (Rysunek 10.19.12). Dla pozostałych są nieznaczne (Rysunek 10.19.13):

Rysunek 10.19.12 Efekt dla wysokich wartości Reflectivity

Rysunek 10.19.13 Efekt dla niższych wartości Reflectivity

W miarę zwiększania wartości Roughness powierzchnie “połyskliwe” (Reflectivity = 1) i matowe (Reflectivity = 0) stają się do siebie coraz bardziej podobne. Rysunek 10.19.14 przedstawia sytuację, gdy dla Roughness = 1.0 każda powierzchnia stała się zupełnie matowa:

Rysunek 10.19.14 Wpływ wysokich wartości parametru Rougness na powierzchnię połyskliwą (a) i matową (b)

Gdyby na takiej powierzchni umieścić jakiś czarny obszar, wyglądałby jak plama sadzy. Ten silny wpływ chropowatości na materiał “z połyskiem” wykorzystamy w następnym rozdziale do uzyskania efektów brudu i zakurzenia.

Wartości Reflectivity i Roughness powierzchni modelu można lokalnie modulować za pomocą tekstur, np. w celu uzyskania efektu zużycia lub zabrudzeń

Nie staraj się uzyskać zbyt połyskliwego kamuflażu. W Internecie możesz znaleźć dużo zdjęć różnych rekonstrukcji P-40. Choć przy ich malowaniu zazwyczaj starano się dobrać właściwy odcień farby (o doborze kolorów bazowych — por. str. 580), to użyty lakier jest z reguły połyskliwy. Ciekawe, czy to efekt zamierzony? (Taka maszyna wygląda ładniej na pokazach…). W każdym razie przy doborze kolorystyki lepiej korzystaj ze zdjęć archiwalnych. W sieci można znaleźć trochę kolorowych zdjęć z tego okresu. Pamiętaj tylko, że wraz z upływem lat te fotografie zrobiły się bardziej niebieskie. Trzeba na to wziąć poprawkę!

Rysunek 10.19.15 Wejście Normal shadera

W Blenderze 2.65 w węzłach shaderów BSDF pojawiło się nowe wejście: Normal. Jest ono przeznaczone do podłączenia alternatywnej mapy nierówności. Do tej pory nierówności powierzchni samolotu można było odwzorować podłączając do „globalnego” wejścia Displacement węzła Material Outpt mapę odcieni szarości. Tworzy to złudzenie drobnych zmian „wysokości” powierzchni (por. str. 60). Wejście Normal pozwala uzyskać jeszcze silniejszy efekt, gdyż możesz podać na wejściu współrzędne wektorów prostopadłych do powierzchni. (Zazwyczaj jest to specjalnie przygotowana tekstura, której wartość R, G, B barwy piksela są interpretowane jako współrzędne X, Y, Z wektora normalnego. Często tworzy się ją operacją Bake z odpowiednio przygotowanego, bardzo szczegółowego modelu). W ten sposób można dobrze odwzorować, nawet w zbliżeniach, np. nierówności odlewanych pancerzy czołgów czy spawy na krawędziach ich płyt.

Abyś mógł użyć wejścia Normal, stworzyłem kopię Gloss Paint wzbogaconą o ten element (Rysunek 10.19.16):

Rysunek 10.19.16 Zmodyfikowana wersja shadera (Opaque Surface)

Nazwałem tę grupę Opaque Surface. Stosuj ją wszędzie tam, gdzie masz jakąś mapę normalnych do podłączenia. Pamiętaj tylko, aby zawsze do wejścia Normal było coś podłączone — odpowiednikiem informacji domyślnej jest Geometry:Normal (Rysunek 10.19.17):

Rysunek 10.19.17 Zmodyfikowany shader Gloss Paint

Taka konieczność podłączania kolejnego węzła to zawsze dodatkowy element komplikujący schemat. Dlatego shader Gloss Paint pozostał, abyś mógł go używać wszędzie tam, gdzie nie potrzebujemy map normalnych (a tak jest w większości materiałów). We wnętrzu tej grupy umieściłem teraz shader Opaque Surface z podłączonymi domyślnymi kierunkami normalnych (Rysunek 10.19.17).

10.20  Węzły pomocnicze

Wartości, którymi operujemy na schematach Cycles, są zazwyczaj w przedziale od 0.0 do 1.0. Na przykład: liczbami z tego przedziału są intensywności poszczególnych komponentów barwy (RGBA — por. str. 575). Także współrzędne tekstur (dane typu Vector) to wartości od 0 do 1 (współrzędne UV — por. str. 523). W zasadzie autorzy Cycles starali się zbudować podstawowe węzły tak, by każdy z ich parametrów miał zakres od 0.0 do 1.0. Nawet funkcja Fresnela, normalnie zależąca od IOR materiału, została w ten sposób sparametryzowana w węźle Layer Weight (por. str. 447).

W tej sekcji przedstawię trochę pomocniczych grup węzłów, obsługujących różne powtarzające się na schematach operacje arytmetyczne na liczbach rzeczywistych od 0.0 do 1.0. Ich działanie zademonstruję, przekształcając monochromatyczne obrazy testowe[1].

Węzła Moderate używam do „łagodzenia” działania tekstur nierówności (Rysunek 10.20.1):

Rysunek 10.20.1 Działanie węzła Moderate

Gdy Moderate:Range = 1.0, węzeł zwraca bez zmian obraz wejściowy. Zmniejszenie wartości Range powoduje rozjaśnienie ciemniejszych miejsc obrazu. Wewnętrznie grupa Moderate wykorzystuje węzeł Color:Mix (Rysunek 10.20.2). Ten węzeł „miesza” otrzymane wartości tak, jak gdyby były kolorami (por. str. 575).

Rysunek 10.20.2 Budowa węzła Moderate

Pole Value, do którego podłączamy obraz tekstury, jest traktowane jako współczynnik udziału (Mix:Fac) barw Color2 i Color1 [2]. Dla czarnych pikseli tekstury (Value = 0) węzeł zwraca piksel o odcieniu szarości podstawionym jako Color1, a dla białych (Value = 1.0) — biały Color2. Jeżeli podstawimy pod Mix:Color1 czerń — otrzymamy na wyjściu obraz wejściowy, bez żadnych zmian. Jeżeli jednak rozjaśnimy tę barwę — otrzymamy na wyjściu obraz w której oryginalnej czerni będzie odpowiadał szary z Mix:Color1. W rezultacie zakres intensywności występujących w obrazie ulegnie „spłaszczeniu”, zachowując bez zmian białe piksele. Aby lepiej uświadomić użytkownikowi, czym operuje, obliczam odcień szarości dla Mix:Color1 jako „1 – Range” (za pomocą węzła Invert). Dzięki temu wartość parametru Range określa zakres intensywności w obrazie wyjściowym (Range = 1.0 podstawia pod Mix:Color1 czerń, a Range = 0.4 — szary, o V = 0.6).

O ile Moderate pozwalał tylko na rozjaśnienie obrazu, to jego rozbudowana wersja — węzeł Range To Max — pozwala także na zmniejszenie jasności obrazu. Rysunek 10.20.3 przedstawia trzy różne ustawienia tego węzła na tle uzyskiwanych rezultatów:

Rysunek 10.20.3 Działanie węzła Range To Max

Rysunek 10.20.3a) to ustawienie neutralne — dla wartości Range = 1 i Max = 1 węzeł Range To Max zwraca bez żadnych zmian obraz wejściowy. Parametr Max określa jasność odpowiadającą białym pikselom obrazu wejściowego. Jeżeli ulegnie zmniejszeniu — rezultat będzie odpowiednio przyciemniony (Rysunek 10.20.3b).

Do rozjaśniania najciemniejszych pikseli służy, tak jak w węźle Moderate, parametr Range. Jednak tutaj jego wartość określa względny % spektrum od 0 do Max. Odcień szarości Mix:Color1 jest tu określany ze wzoru: Max*(1-Range). Dlatego najciemniejszy odcień na obrazie przedstawionym przez Rysunek 10.20.3c) ma intensywność V = 0.7 * (1 – 0.3) = 0.49. Może to nie jest zupełnie intuicyjne, ale bezpieczne[3].

Rysunek 10.20.4 przedstawia wewnętrzną strukturę węzła Range To Max:

Rysunek 10.20.4 Budowa węzła Range To Max

Węzeł Range To Max najwygodniej używa się z obrazami o białym tle, które służą do lokalnego zmniejszania jakiejś wartości bazowej. (Ustawiasz wówczas tę wartość bazową jako Max, a parametrem Range regulujesz intensywność lokalnych zmniejszeń).

Aby obsłużyć sytuację odwrotną: obrazu o czarnym tle, który służy do lokalnego zwiększenia jakiejś wartości, przygotowałem węzeł Range From Min (Rysunek 10.20.5):

Rysunek 10.20.5 Działanie węzła Range From Min

Rysunek 10.20.5a) przedstawia sytuację neutralną — dla wartości Min = 0.0 i Range = 1.0 węzeł Range From Min zwraca bez żadnych zmian obraz wejściowy. Parametr Min określa jasność odpowiadającą czarnym pikselom obrazu wejściowego. Jeżeli ulegnie zwiększeniu — rezultat będzie odpowiednio rozjaśniony (Rysunek 10.20.5b). Parametr Range tu także określa % względnego spektrum od Min do 1.0 (Mix:Color2 = Min + (1-Min)*Range). Dlatego dla parametrów jakie pokazuje Rysunek 10.20.5c) białym polom obrazu wejściowego odpowiada kolor szary o V = 0.3 + (1-0.3)*0.4 = 0.58.

Rysunek 10.20.6 przedstawia wewnętrzną strukturę grupy Range From Min:

Rysunek 10.20.6 Budowa węzła Range From Min

Węzeł Stack Image służy do nałożenia jednej tekstury na drugą, tak jak się nakładają na siebie warstwy w Inkscape lub GIMP (Rysunek 10.20.7):

Rysunek 10.20.7 Działanie węzła Stack Image

Podobnie jak w tych programach rysunkowych, do łączenia obydwu barw wykorzystywana jest nieprzejrzystość (komponent Alpha) pikseli nakładanego obrazu (por. str. 575). Stąd zazwyczaj nakładana tekstura ma przejrzyste tło — tak jak decals.png na ilustracji powyżej. Należy ją podłączyć do wejść Color i Alpha węzła Stack Image. Obraz tła powinien być nieprzejrzysty — przynajmniej w obszarach, które będą nałożone na powierzchnię modelu. Podłączasz go do wejścia Stack Image:Background (w naszym przykładzie jest to tekstura color.png). Stack Image ma dodatkową kontrolkę Opacity. Używaj jej do sterowania nieprzejrzystością nakładanej warstwy (tak samo jak sterujesz nieprzejrzystością warstw w GIMP lub Inkscape). Wyjściem z węzła Stack Image jest obraz tekstury, który możesz normalnie podłączyć do innego wejścia — na przykład barwy shadera. Wykorzystując węzły Stack Image możesz także zbudować „stos” obrazów tekstur — wystarczy podłączać rezultat z węzła leżącego „poniżej” do wejścia Background następnego („wyższego”) węzła Stack Image. W porównaniu ze „stosem” warstw w GIMP czy Inkscape scalonych w jedną teksturę, to rozwiązanie pozwala łączyć w Blenderze obrazy tekstur nakładanych z różnymi alternatywnymi rozwinięciami UV.

Rysunek 10.20.8 przedstawia wewnętrzną strukturę grupy Stack Image:

Rysunek 10.20.8 Budowa węzła Stack Image

Właściwe “mieszanie” barw łączonych tekstur odbywa się tu w węźle Color→Mix (z ustawioną domyślną operacją Mix). Wagą tego łączenia jest przejrzystość (Alpha) “górnego obrazu”. Dodałem tu jeszcze pomocniczy węzeł Multiply, który służy do ewentualnego osłabienia przejrzystości nakładanej tekstury.

[1] (str. 508) Większość obrazów tekstur w naszym modelu jest monochromatyczna (wykorzystuje odcienie szarości). W takim obrazie każdy piksel także może być traktowany jako liczba od 0.0 (czarny) do 1.0 (biały). Dlatego najczęściej opisanych w tej sekcji węzłów używam do adaptacji lub sterowania intensywnością tekstur.

[2] (str. 508) Operacja Color:Mix to tzw. „średnia ważona”: Fac*Color2 + (1 – Fac)*Color1.

[3] (str. 509) W ten sposób węzeł jest „odporny” na ewentualne błędy użytkownika. Nie wystarczy, że same pola wejściowe akceptują tylko wartości z zakresu od 0 do 1. Nawet przy tym ograniczeniu dla np. Max = 0.2 wpisanie „absolutnej” wartości Range = 0.4 dałoby min. odcień szarości 0.2 – 0.4 = -0.2, czyli ujemny! Dlatego wolałem przejść na wartości względne, dla których najmniejszy odcień szarości to 0.2*(1 – 0.4) = 0.2*0.6 = 0.12. Pisząc o użytkowniku, mam także na myśli siebie — za miesiąc na pewno nie będę pamiętał o jakichś ograniczeniach w użyciu tego węzła!

10.21  Wykorzystanie alternatywnych rozwinięć UV (Attribute)

Jak właściwie używać alternatywnych map UV? W tym celu należy w Cycles użyć węzła Attribute. Abyś dobrze zrozumiał, jak to działa, przygotowałem przykładową scenę złożoną z trzech sześcianów (Rysunek 10.21.1a):

Rysunek 10.21.1 Rozwinięcia sześcianów na przykładowej scenie

Każdy z sześcianów posiada identyczne rozwinięcie ścian o nazwie UVMap (Rysunek 10.21.1b). Jest to domyślna mapa UV ich siatek. (O tym, co to znaczy „domyślna” i w jaki sposób włączać to oznaczenie — por. str. 424). Oprócz tego sześcian lewy i prawy mają alternatywne rozwinięcia UV, o nazwach Left (Rysunek 10.21.1d) i Right (Rysunek 10.21.1c).

Rysunek 10.21.2a) przedstawia materiał sześcianów, a Rysunek 10.21.2b) — ich testowy render:

Rysunek 10.21.2 Render sceny z użyciem domyślnego mapowania UV

Aby odwołać się do alternatywnego rozwinięcia UV, należy w Cycles użyć węzła Attribute. Wstaw go na miejsce węzła Texture Coordinate. W pole Attribute:Name wpisz nazwę mapy UV, którą chcesz wykorzystać (Rysunek 10.21.3a):

Rysunek 10.21.3 Wykorzystanie węzła Attribute w celu użycia innego rozwinięcia UV

Rezultat przedstawia Rysunek 10.21.3b). Tekstura pojawiła się tylko na siatce, która posiada rozwinięcie UV o podanej nazwie (w tym przypadku — Left). Siatki bez tego rozwinięcia są jednolicie szare.

Starszy renderer Blendera (BI) wykorzystałby do pokrycia sześcianów bez mapy Left domyślne współrzędne UV (w tym przypadku — UVMap). BI pokryłby te siatki teksturą w taki sam sposób, w jaki pokazuje je Rysunek 10.21.2b). Ten efekt (po angielsku określany jako fallback) pozwolił mi w pierwszej edycji książki przygotować alternatywne rozwinięcia UV tylko w tych siatkach, w których było to potrzebne. (Używałem wtedy BI, bo Cycles jeszcze nie istniał). Taki efekt wykorzystania domyślnych mapowań UV oszczędził mi sporo pracy. Cycles jednak tak nie działa. Czy można na to coś poradzić?

W takiej sytuacji zawsze próbuję szukać jakiegoś rozwiązania, sprawdzając rezultaty innych wyjść z badanego węzła. W tym przypadku sprawdziłem, co zwraca współczynnik Attribute: Fac (Rysunek 10.21.4):

Rysunek 10.21.4 Sprawdzanie wartości Attribute:Fac

Zwracane przez węzły wartości skalarne można szybko sprawdzić, podłączając je bezpośrednio do koloru shadera materiału. W tym przypadku podłączyłem wyjście Attribute:Fac do wejścia Color shadera Diffuse (Rysunek 10.21.4a,b). Gdy w węźle Attribute jest wpisana nazwa (Name) Left, cała powierzchnia lewego sześcianu (tj. siatki zawierającej rozwinięcie Left) jest szara, a pozostałe sześciany — czarne (Rysunek 10.21.4c). Gdy zmienisz w węźle Attribute nazwę na Right, szary stanie się prawy sześcian (bo posiada rozwinięcie UV o tej samej nazwie). Pozostałe sześciany znów będą czarne (Rysunek 10.21.4d). Na tej podstawie można wnioskować, że:

Attribute: Fac dla siatki zawierającej żądane rozwinięcie UV zwraca wartość 0.5, a dla pozostałych — 0.0

Taka reguła pozwala nam zbudować odpowiedni zespół węzłów, który podstawi domyślne współrzędne UV dla każdej siatki bez mapy UV o żądanej nazwie[1]. Aby przekształcić wartości uzyskiwane z Attribute:Fac dla siatki posiadającej mapę UV z 0.5 na 1.0, używam węzła Math:Greater Then (Rysunek 10.21.5a):

Rysunek 10.21.5 Dodatkowe węzły, uzupełniające brakujące współrzędne tekstury wartościami domyślnymi

(Nie mnożę ich np. przez 2, bo nie jestem pewien, czy zwracana wartość to dokładnie 0.5. Używając porównania „> 0” mniej ryzykuję). Jako „przełącznika” współrzędnych tekstur użyłem węzła Color:Mix [2] (Cycles nie zawiera wyspecjalizowanego węzła do łączenia danych typu Vector). Współrzędne z wejścia Color1 będą użyte, gdy Attribute:Fac zwróci wartość = 0 (brak żądanej mapy UV). Powinny być wówczas użyte wartości domyślne, więc podłączyłem w to miejsce węzeł Texture Coordinate, który je dostarcza. Współrzędne z wejścia Color2 będą użyte, gdy siatka zawiera żądaną mapę (Mix:Fac = 1.0), stąd podłączyłem w to miejsce wyjście w węzła Attribute. Udało mi się w ten sposób uzyskać pożądany rezultat — sześciany, które poprzednio były czarne, teraz są pokryte teksturą (Rysunek 10.21.5b).

Tak pożyteczny zespół węzłów warto jest połączyć w grupę, by zwiększyć przejrzystość schematów materiałów. Przygotowałem taki węzeł, i nadałem mu nazwę UV Fallback (Rysunek 10.21.6):

Rysunek 10.21.6 Wykorzystanie grupy UV Fallback do uzupełniania brakujących współrzędnych tekstur

Użycie jest proste: obydwa wejścia należy podłączyć do węzła atrybutu, a wyjście — do współrzędnych tekstur. Grupy UV Fallback będę używał wszędzie tam, gdzie wykorzystuję alternatywne mapowania UV.

W Blenderze 2.7 dodano wyspecjalizownay węzeł wejściowy UV Map. Pozwala wygodniej wybierać jedną z dostępnych map UV. Zwraca to samo co węzeł Attribute, ale ma tylko jedno wyjście: Vector.

[1] (str. 514) Opieram się tu na „obserwacjach empirycznych”. Wartości, zwracane przez Attribute:Fac są udokumentowane jako „interpolowana wartość atrubutu”. Nadzieja w tym, że ten mechanizm nie zmieniał się od samego początku (od Blendera 2.62), więc może tak będzie dalej.

[2] (str. 514) To taki trick, który działa gdyż współrzędne UV mają taki sam zakres wartości co komponenty RGB barwy — od 0.0 do 1.0. W dodatku Cycles dokonuje „w locie” konwersji z U → R, V → G, i R → U, G → V — por. str. 391

10.22  Wykorzystanie współrzędnych tekstury (Texture Coordinate)

Dla każdego piksela renderowanej powierzchni można podać wiele alternatywnych współrzędnych tekstur. Każda z nich jest liczona inną metodą. W Cycles ich źródłem jest węzeł Texture Corrdinate, dodawany do schematu poleceniem Add→Input→Texture Coordinate (Rysunek 10.22.1):

Rysunek 10.22.1 Węzeł Texture Coordinate

Texture Coordinate jest węzłem wejściowym, podobnie jak węzły Geometry czy Light Path. Każde z jego wyjść udostępnia inny rodzaj współrzędnych tekstury. Niektóre z nich są używane dość rzadko: na przykład współrzędne aktualnego okna — Window — możesz wykorzystać do podstawienia za modelem jakiegoś zdjęcia (por. str. 479). Dopilnuj tylko, by obszar tego obrazu tła i okna renderu miał takie same proporcje wysokości i szerokości. Inaczej będzie na renderze zdeformowany! W podobnym celu możesz wykorzystać współrzędne aktualnego piksela wyrażone w lokalnym układzie współrzędnych kamery (Camera — por. str. 480). W praktyce nigdy nie potrzebowałem wykorzystywać mapowania Reflection — musisz z nim sam poeksperymentować. Te wszystkie trzy rodzaje współrzędnych wiążą obraz z globalnym układem współrzędnych sceny. Tekstura zamapowana za pomocą wyjść Window, Camera lub Reflection zmienia swoje położenia na obiekcie „podążając” za obserwatorem.

Pozostałe rodzaje mapowań wiążą obraz tekstury z układem współrzędnych obiektu.

Wyjście UV zwraca współrzędne domyślnej mapy UV, przypisanej do siatki (czyli tej, która jest oznaczona jako „dla renderowania” — por. str. 512). Pamiętaj jednak, że najpierw sam je musisz stworzyć. W Blenderze siatki nie posiadają żadnego „domyślnego” rozwinięcia.

Aby pokazać działanie pozostałych mapowań: Generated, Object i Normal, posłużę się prostą teksturą pasków pochylonych pod kątem 45º. (Jest to domyślny efekt działania tekstury proceduralnej Wave). Rysunek 10.22.2 przedstawia schemat testowego materiału i obraz, który tworzy na płaskiej powierzchni:

Rysunek 10.22.2 Tekstura, której użyjemy w przykładach: Wave

Ja widać, tekstura Wave jest wstawiona z domyślnymi parametrami: wzorem Bands i skalą (Scale) = 2.

Aby wyznaczyć współrzędne Generated, Blender tworzy robocze „pudełko” obejmujące całą siatkę i zorientowane tak jak lokalny układ współrzędnych obiektu. Niezależnie od proporcji uzyskanego w ten sposób prostopadłościanu, współrzędne w każdym z kierunków zmieniają się w zakresie od 0.0 do 1.0 (Rysunek 10.22.3):

Rysunek 10.22.3 Mapowanie Generated

W efekcie gdy obiekt ma podłużny kształt, obraz tekstury nałożony w trybie Generated ulega rozciągnięciu.

Aby zachować proporcje obrazu, użyj lokalnych współrzędnych obiektu — czyli danych z wyjścia Object (Rysunek 10.22.4):

Rysunek 10.22.4 Mapowanie Object

W tym trybie cały obraz tekstury ma domyślny rozmiar 1x1 jednostki Blendera. Oczywiście, możesz zmienić jego wielkość za pomocą dodatkowego węzła Mapping (por. str. 464). Jeżeli powierzchnia obiektu jest większa od obrazu — Blender powieli go (tak jak pola na szachownicy).

Wreszcie mapowanie wykorzystujące aktualny kierunek prostopadły do powierzchni: Normal (Rysunek 10.22.5):

Rysunek 10.22.5 Mapowanie Normal

Wykorzystanie tych współrzędnych do nałożenia tekstury pasków na domyślny sześcian nie tworzy żadnego szczególnego efektu — każda ze ścian ma jednolitą barwę. Dlaczego? Bo każdy piksel tych ścian ma taki sam kierunek wektora normalnego (to tryb Shade Flat — por. str. 427). Stąd na każdą z nich jest nałożony pojedynczy piksel obrazu tekstury!

Rysunek 10.22.6 pokazuje, co się stanie gdy siatkę cieniowaną w trybie Shade Flat zaczniesz zwiększać liczbę ścian tak, by każda była pochylona pod innym kątem (np. za pomocą modyfikatora Subdivision Surface):

Rysunek 10.22.6 Mapowanie pasków w trybie Normal (dla Shade Flat)

Po lewej widzimy zwykły sześcian przed podziałem — każda z jego ścian ma jednolity kolor (Rysunek 10.22.6a). Gdy zwiększymy liczbę podziałów do 2 (Rysunek 10.22.6b), każdy z podstawowych trójkątów na jaki Blender dzieli tę siatkę ma nadal stały kolor. Barwy sąsiednich ścian różnią się między sobą. Po kolejnych podziałach zaczniesz dostrzegać na wygładzonej powierzchni siatki wzór pasków (Rysunek 10.22.6c).

Ten wzór jest od razu widoczny, nawet dla sześcianu, gdy kierunki normalne do siatki są interpolowane pomiędzy wierzchołkami w trybie Shade Smooth (Rysunek 10.22.7a)[1]:

Rysunek 10.22.7 Mapowanie obrazu pasków w trybie Normal (dla Shade Smooth)

Dla większej liczby ścian dla obydwu trybów wygładzania — Shade Flat i Shade Smooth uzyskujemy bardzo podobny obraz (por. Rysunek 10.22.7b i Rysunek 10.22.6c).

[1] (str. 517) Więcej informacji o przedstawionych trybach wygładzania i wektorach normalnych — patrz str. 427.

10.23  Wykorzystanie spektrum barw (Color Ramp)

Węzeł Color Ramp zwraca dla podanych wartości współczynnika Fac (0.0...1.0) odpowiedni kolor ze swojego paska spektrum barw. Możesz go dodać do schematu poleceniem Add→Convertor→Color Ramp (Rysunek 10.23.1):

Rysunek 10.23.1 Węzeł Color Ramp

Ten efekt możesz wykorzystać do modyfikacji tekstur proceduralnych — na przykład zmiany domyślnej barwy tekstury pasków (Wave: Rysunek 10.23.2):

Rysunek 10.23.2 Zmiana barwy tekstury pasków za pomocą węzła Color Ramp

Aby zwiększyć szerokość pasków na obiekcie, złap (LPM) za czerwony węzeł paska barw i przesuń go w prawo (Rysunek 10.23.3):

Rysunek 10.23.3 Zmiana szerokości pasków poprzez zmianę położenia węzła barwy

Aby uzyskać ostrą granicę pasków, możesz zmienić funkcję interpolującą na Constant (Rysunek 10.23.4):

Rysunek 10.23.4 Uzyskanie ostrej granicy pasków poprzez zmianę interpolacji braw (na Constant)

Przyciskiem Add („+”) możesz dodać do paska kolejny punk węzłowy. Automatycznie po dodaniu węzeł staje się aktywny. Możesz np. zmienić jego barwę na niebieską, aby dodać do wzoru kolejny pasek (Rysunek 10.23.5):

Rysunek 10.23.5 Dodanie do paska kolejnego węzła

Węzeł aktywny, dla którego barwę wyświetla kontrolka powyżej, możesz wybrać kliknięciem LPM. Aby usunąć węzeł aktywny, użyj przycisku Delete („-”).

Color Ramp zawiera także drobne udogodnienie: przycisk inwersji barw, odwracający kolejność kolorów na pasku (Rysunek 10.23.6):

Rysunek 10.23.6 Inwersja paska barw

10.24  Węzły Curves

Rysunek 10.24.1 Mapowanie wartości wg krzywej

Węzły z krzywymi służą do przekształcenia wartości wejściowych według jakiejś określonej reguły (matematycy nazwaliby ją funkcją). Działanie takiej krzywej ilustruje Rysunek 10.24.1.

Wartości wejściowe są zaznaczane na osi poziomej (X). W tym przykładzie jest to wartość 0.7. Takiej wartości X odpowiada na przedstawionej krzywej wartość Y = 0.55. To rezultat, który zwraca węzeł. Krzywe mapują wartości od 0 do 1, i ich rezultat leży w tym samym zakresie.

W Blenderze węzły krzywych można spotkać w każdym kontekście: tekstur (RGB Curves) , kompozycji (RGB Curves), a w materiałach Cycles są nawet dwa (RGB Curves i Vector Curves). Co ciekawe, każdy z nich służy do modyfikacji wartości „wektorowej”: współrzędnych wektorów normalnych (Vector Curves) czy barwy (RGB Curves). Rysunek 10.24.2 przedstawia węzeł RGB Curves z edytora materiałów Cycles (dodany poleceniem Add→Color→RGB Curves):

Rysunek 10.24.2 Węzeł RGB Curve

Krzywa w środku węzła to krzywa Beziera. Domyślnie to linia prosta, rozciągnięta pomiędzy punktem początkowym i końcowym. Kliknij w jej środek, aby dodać kolejny punkt, i przesuń go, aby uzyskać wygięcie. Menu, które można rozwinąć po kliknięciu w ikonę , zawiera kilka dalszych opcji dla punktów krzywej (Rysunek 10.24.3):

Rysunek 10.24.3 Menu węzła RGB Curve

Rysunek 10.24.4 Węzeł RGB Curve w stanie neutralnym

Każdy nowy węzeł Curve dodany do schematu jest neutralny: ma krzywą ustawioną na proste kopiowanie obrazu wejściowego w wyjściowy. To linia prosta, od punktu (0,0) do punktu (1,1) (Rysunek 10.24.4).

Gdy przesuniesz początek tej linii nieco wyżej — rozjaśnisz najciemniejsze miejsca obrazu (tak jak standardowa funkcja Lighten — por. Rysunek 10.24.5a). Gdy skierujesz taką linie z punktu (0,1) do (1,0) — uzyskasz rewers barw (Invert, Rysunek 10.24.5b). Innym efektem jest zmniejszenie kontrastu obrazu. Można to robić na wiele sposobów — Rysunek 10.24.5c) przedstawia jeden z nich (to nieliniowe zmniejszenie kontrastu).

Wreszcie czasami możesz potrzebować wyostrzenia krawędzi rozmytych barw. Możesz wtedy przestawić wewnętrzne wierzchołki w tryb Vector Handle (wybierz to polecenie z menu — por. Rysunek 10.24.3), a potem ustaw je tak, jak pokazuje to Rysunek 10.24.5d).

Rysunek 10.24.5 Przykłady typowych przekształceń obrazu wejściowego

Rysunek 10.24.6 Przykład modyfikacji komponentu Red

Przedstawione powyżej przykłady wykorzystywały krzywą Composite, przekształcając obrazy monochromatyczne. Oczywiście, możesz wykorzystać węzeł RGB Curves do koloryzacji. W tym celu należy zmienić krzywe poszczególnych kanałów R, G, B.

Rysunek 10.24.6 przedstawia przykład modyfikacji kanału barwy czerwonej (Red). Im bardziej krzywa oddala się od przekątnej obszaru, tym silniejszy jest uzyskany efekt. Zwiekszenie intensywności komponentu R zabarwia obraz wynikowy na czerwono. Zmniejszenie intensywności tego składnika tworzy obszar błękitu.

Podobne efekty można uzyskiwać także za pomocą węzła spektrum barw (Color Ramp — por. str. 518). Jednak węzeł Curve, choć czasem trudniejszy w obsłudze, pozwala uzyskać bardziej złożone transformacje.

Rozdział 11.  Blender — edytor UV (UV/Image Editor)

Edytor UV jest specjalnym narzędziem, przeznaczonym do przypisywania przestrzennym wierzchołkom siatki położenia na płaskiej powierzchni tekstury. Nazwa pochodzi od nazw parametrycznych współrzędnych teksturowania (UV). Edytor UV przydaje się wyłącznie dla tych siatek, na które tekstury są nakładane z wykorzystaniem tzw. “mapowania UV” (np. wykorzystują w Cycles wyjście UV z węzła Texture Coordinate).

Drugim trybem pracy edytora jest modyfikacja rastrowego obrazu tekstury (Image Painting). Zestaw narzędzi, dostępnych do tego celu w Blenderze, nie dorównuje wyspecjalizowanym edytorom obrazów, jak GIMP. Tym niemniej jest wystarczający do wykonania jakichś mniejszych czy większych poprawek (por. str. 548).

11.1  Pojęcia podstawowe

Obrazy rastrowe w grafice komputerowej są zazwyczaj prostokątne (preferowane są kwadratowe). Gdy taki kwadrat (Rysunek 11.1.1b) chcesz nałożyć na, powiedzmy, kulę (Rysunek 11.1.1a), deformacja obrazu jest nieunikniona (Rysunek 11.1.1c):

Rysunek 11.1.1 Nakładanie prostokątnej tekstury na kulę

A czy można zobaczyć, gdzie na obrazie tekstury znajdują się ściany siatki kuli, zamapowane tak, jak pokazuje to Rysunek 11.1.1c)? Oczywiście! Przedstawia je Rysunek 11.1.2:

Rysunek 11.1.2 Przypisanie ścian do powierzchni tekstury — rozwinięcie w przestrzeni UV.

Do powierzchni tekstury zostały przypisany układ współrzędnych. Jego osie, dla odróżnienia od współrzędnych wierzchołków w przestrzeni, otrzymały nazwy U (pozioma) i V (pionowa) . Zazwyczaj przyjmuje się, że każda z tych współrzędnych ma wartość 0 w lewym, dolnym narożniku obrazu. Na krańcu tekstury U lub V przyjmują wartość = 1.0 (por. Rysunek 11.1.2). (Czasami podaje się je także w innych jednostkach — pikselach obrazu). Dwuwymiarowa przestrzeń, w której jest rozciągnięta tekstura, nosi nazwę przestrzeni UV. Rozwinięcie ścian powierzchni siatki w tej przestrzeni nazywa się rozwinięciem UV. W naszym przykładzie topologia rozwiniętych ścian siatki nie ulega zmianie, za wyjątkiem krawędzi „szwów” (por. Rysunek 11.1.2).

Typowym zagadnieniem, z którym się będziesz musiał zmierzyć, jest takie ułożenie ścian siatki w przestrzeni UV, by nałożony na model obraz tekstury był jak najmniej zdeformowany. W Blenderze służy do tego specjalne okno edytora UV (UV Editor) . Pozwala rozwinąć, a następnie zmieniać położenia ścian siatki w przestrzeni tekstury. Rysunek 11.1.3 przedstawia rezultat użycia: poprawione rozwinięcie siatki, którą pokazywał Rysunek 11.1.2. Większość jej obszaru została przekształcona w prostokąt. Pozwoliło to zachować regularny układ prostokątów obrazu i ich kątów na większości powierzchni kuli, oraz ciągłość wzoru na „szwie”:

Rysunek 11.1.3 Przykład innego rozłożenia ścian na teksturze

Rozwinięcia UV w Blenderze mogą nie zachowywać topologii oryginalnej siatki. Świadczy o tym już sam fakt istnienia „szwu”, wzdłuż którego siatka z przykładu została „rozcięta” i rozwinięta. W istocie w Blenderze każda ściana przechowuje „swoje” współrzędne wierzchołków UV, które mogą być zupełnie różne od ścian z którymi sąsiaduje w przestrzeni okna 3D View (Rysunek 11.1.4, por. także str. 528):

Rysunek 11.1.4 Rozwinięcie UV w Blenderze traktuje każdą ścianę jako osobną całość

Blender domyślnie utrzymuje topologiczną ciągłość siatki, automatycznie włączając do selekcji wszystkie wierzchołki UV o tych samych współrzędnych. Rysunek 11.1.4 pokazuje jednak, że ten tryb można wyłączyć. Czasami takie efekty się przydają.

Siatka kuli w układzie „południki — równoleżniki” (jak w naszym przykładzie), jest powierzchnią, na którą nie można nałożyć kwadratowej tekstury bez jakiejś deformacji. Można się tylko starać, by odkształcenia obrazu były niewielkie (w końcu nad podobnym zagadnieniem biedziły się pokolenia kartografów). Większość powierzchni, z którymi będziesz miał do czynienia, nie jest aż tak wymagająca. Edytor UV i trochę dobrych pomysłów na rozwinięcie pozwala Ci uniknąć wyraźnych deformacji obrazu.

11.2  Wprowadzenie do UV/Image Editor

Edytor to odrębny rodzaj okna — UV/Image Editor — które można wybrać z listy z lewej strony nagłówka (Rysunek 11.2.1):

Rysunek 11.2.1 Przejście do edytora UV/obrazu (UV/Image Editor) — edycji siatki w przestrzeni UV

Aby efektywnie pracować z rozwinięciem UV, Blender musi być w trybie Edit Mode. Okno Edytora UV jest ściśle powiązane z edycją siatki w oknie widoku 3D. (Obydwa modyfikują różne właściwości wierzchołków i ścian tej samej siatki.) Dlatego warto zawczasu ustawić obydwa okna obok siebie (jak to pokazuje Rysunek 11.2.1).

Okno UV/Image Editor ma dwa tryby pracy: edycji rozwinięcia UV (View) i malowania po obrazie (Paint). Do zmiany trybu służy lista rozwijalna w nagłówku okna. Rysunek 11.2.2 przedstawia nagłówek trybu Paint:

Rysunek 11.2.2 Nagłówek UV/Image Editor (aktywny tryb malowania — Paint)

Gdy przełączysz się w tryb View — w nagłówku pojawi się mnóstwo kontrolek związanych z edycją UV (Rysunek 11.2.3):

Rysunek 11.2.3 Kontrolki nagłówka UV/Image Editor (tryb edycji UV — View)

Zwróć szczególną uwagę na kontrolkę , pokazaną na obrazie nagłówka. Za jej pomocą możesz przełączyć się na tryb pracy z pojedynczymi ścianami rozwinięcia. (Więcej na ten temat znajdziesz na str. 528). Niezależnie od trybu pracy, w tle okna zawsze jest widoczny wybrany w nagłówku obraz rastrowy.

Konwencje i klawisze skrótu, obowiązujące w edytorze UV, są bardzo zbliżone do tych, którymi posługujesz się w oknie 3D View. Tak jak w tamtej przestrzeni istnieje kursor 3D (3D Cursor — por. 378), tak tu znajdziesz jego dwuwymiarowy odpowiednik. Te same kombinacje klawiszy powodują selekcję, zmianę widoku, czy podstawowe operacje edycji (przesunięcie, obrót, zmianę skali).

Z kolei w trybie malowania (Paint) praca w UV/Image Editor przypomina trochę pracę w GIMP (Rysunek 11.2.4):

Rysunek 11.2.4 Praca w UV/Image Editor w trybie „malowania”

Różnorodne przybory malarskie znajdziesz tu w przyborniku (T), w zakładce Tools. Niestety, obraz nie ma tu warstw, jak w Gimpie. Jeżeli jednak włączysz w oknie 3D View tryb Texture Paint i w zakładce Slots przybornika (T) wskażesz ten sam obraz co w oknie UV/Image Editor, zobaczysz go na modelu (Rysunek 11.2.4). Co więcej w trybie Texture Paint możesz także malować bezpośrednio po powierzchni trójwymiarowego modelu (Rysunek 11.2.5):

Rysunek 11.2.5 Malowanie bezpośrednio na powierzchni modelu (tryb Texture Paint)

11.3  Zaznaczanie elementów siatki

W edytorze UV możesz używać do selekcji tych samych metod i skrótów klawiatury, co w oknie 3D View, w trybie edycji. Dokładnie takie samo działanie uzyskasz, gdy włączysz w nagłówku okna UV/Image Editor tryb „synchronicznej selekcji” (Rysunek 11.3.1):

Rysunek 11.3.1 Selekcja w trybie “synchronizacji” (z widokiem 3D View)

W tym trybie obowiązuje zasada dokładnej równoważności — gdy coś zaznaczysz w edytorze UV, staje się także zaznaczone w oknie 3D View, i odwrotnie. Nagłówek UV/Image Editor zawiera takie same opcje wyboru wierzchołków lub ścian, jakie są dostępne w oknie 3D View w Edit Mode (Rysunek 11.3.1). Także wszystkie skróty służące do selekcji — np. Alt - PPM — działają w UV/Image Editor tak samo, jak w oknie 3D View.

Gdy wyłączysz tryb synchronizacji — w edytorze UV widzisz (i możesz manipulować) wyłącznie ścianami, które są zaznaczone na siatce w oknie 3D View (Rysunek 11.3.2):

Rysunek 11.3.2 Selekcja w trybie bez “synchronizacji”

Jeżeli chcesz przez cały czas widzieć rozwinięcie wszystkich ścian siatki, niezależnie od aktualnej selekcji — włącz tryb synchronizacji z 3D View.

Wewnętrznie Blender przechowuje oddzielnie współrzędne UV każdej ściany. Oznacza to, że jednemu wierzchołkowi siatki XYZ może odpowiadać tyle punktów w przestrzeniu UV, ile ścian się w nim łączy (najczęściej dwie, trzy, lub cztery — Rysunek 11.3.3):

Rysunek 11.3.3 Koncepcyjny schemat ścian siatki w rozwinięciu UV — każda ma własne współrzędne

Zazwyczaj, gdy wskażesz jeden z wierzchołków UV, metoda wybrana na liście Sticky Selection Mode (Rysunek 11.3.2) powoduje automatyczne zaznaczenie („zlepienie”) pozostałych wierzchołków, leżących w tym samym miejscu. Możesz także wyłączyć ten tryb (Sticky Selection Mode:Disabled) . Blender umożliwia wtedy dowolną zmianę topologii (wygodniej się wówczas przełączyć na zaznaczenie ścian) (Rysunek 11.3.4):

Rysunek 11.3.4 „Zlepianie” rozwinięcia UV wyłączone (Disabled) — można manipulować oddzielnymi ścianami

Rysunek 11.3.5 i Rysunek 11.3.6 pokazują dwa dostępne tryb „zlepiania” wierzchołków UV — Shared Location i Shared Vertex. Zazwyczaj w czasie pracy będziesz używał trybu Shared Location:

Rysunek 11.3.5 „Zlepianie” wskazanych wierzchołków UV w trybie Shared Location — efekt taki, jak gdybyś zawsze wybierał małym obszarem prostokątnym

Rysunek 11.3.6 „Zlepianie” wskazanych wierzchołków UV w trybie Shared Vertex — automatycznie zaznacza wszystkie punkty UV, związane z tym samym punktem na siatce (XYZ).

Gdy synchronizacja selekcji jest wyłączona, obok ikon zaznaczania ścian lub wierzchołków, w nagłówku okna pojawia się trzecia możliwość: UV Island (Rysunek 11.3.7):

Rysunek 11.3.7 Szybkie zaznaczanie całych fragmentów siatki w trybie wyboru UV Island.

Przy włączonym UV Island jedno kliknięcie PPM zaznacza wszystkie ściany, które w sposób bezpośredni lub pośredni są połączone z miejscem wskazanym przez kursor. Ten tryb jest przydatny np. do szybkiego zaznaczania i przesuwania drobnych fragmentów siatki.

11.4  Kursor 2D

Kursor 2D (2D Cursor) pełni w edytorze UV analogiczną rolę do kursora 3D w oknie 3D View (por. str. 378). I tam, i tu, wyznacza „aktualną pozycję”, która jest używana jako punkt odniesienia podczas transformacji siatki (obrotu, zmiany skali).

Położenie kursora 2D jest oznaczane niewielkim krzyżem, otoczonym czerwono-białym rombem (Rysunek 11.4.1):

Rysunek 11.4.1 Kursor 2D w oknie UV

Kliknięcie LPM można traktować jako pierwszą, przybliżoną metodę wskazania położenia kursora. Z oczywistych przyczyn nie jest specjalnie dokładnie. W edytorze UV nie ma możliwości „dosunięcia” kursora do najbliższego węzła siatki pomocniczej (chociaż sama siatka jest widoczna). Gdy naciśniesz Shift-S (ten skrót nie ma w oknie UV/Image Editor odpowiednika w menu), przekonasz się że lista możliwości jest tu uboższa (Rysunek 11.4.2a):

Rysunek 11.4.2 Dosunięcie kursora do zaznaczonego wierzchołka

W edytorze UV kursor 2D można dosuwać (Snap) tylko do wybranych wierzchołków (Cursor to Selected) lub najbliższego piksela tekstury (Cursorto Pixels). Rysunek 11.4.2 przedstawia przykład użycia polecenia Snap:Cursor to Selected. Kursor został dosunięty do zaznaczonego wierzchołka. Mówiąc szczerze, tej funkcji używam częściej od pozostałych.

W UV/Image Editor istnieje także możliwość dokładnego wpisania współrzędnych kursora. Służy do tego panel Display z przybornika Properties. Gdy otworzysz przybornik (np. klawiszem N), przewiń jego zawartość, aby zobaczyć zawartość panelu Display (Rysunek 11.4.3):

Rysunek 11.4.3 Ustalanie położenia kursora 2D w panelu Display

Współrzędne kursora 2D można tu odczytać lub zmienić w polu Cursor Location. Trochę niekonsekwentnie, autorzy tego panelu podają nazwę współrzędnej poziomej jako X (to U), a pionowej — Y (to V). Obydwie wartości, jakie pokazuje Rysunek 11.4.3, są wyrażone w pikselach. Aby się przełączyć na klasyczny zakres współrzędnych UV — 0.0...1.0 (por. str. 523) — wystarczy włączyć opcję Coordinates:Normalized.

11.5  Przesunięcie (Translate)

Zaznacz wierzchołki, krawędzie lub ściany, które chcesz przesunąć (Rysunek 11.5.1):

Rysunek 11.5.1 Zaznaczenie przesuwanych ścian

Następnie naciśnij G (UVs→Transfrom→Translate). Przełączysz się w ten sposób w tryb przesuwania. Każde przesunięcie myszy będzie powodować przemieszczenie zaznaczonych wierzchołków. Dokonywane zmiany w kształcie siatki są pokazywane na bieżąco we wszystkich oknach Blendera (Rysunek 11.5.2):

Rysunek 11.5.2 Przesuwanie grupy wierzchołków

W nagłówku aktywnego okna jest wyświetlane aktualne przesunięcie. Aby zatwierdzić nowe położenie (zakończyć przesunięcie), należy kliknąć LPM. Aby zrezygnować z operacji, możesz w każdej chwili nacisnąć Esc .

Podczas przesuwania możesz dodatkowo trzymać wciśnięty klawisz Ctrl. Spowoduje to skokową zmianę odległości (np. co 0.1 jednostki). Jeżeli będziesz trzymał wciśnięty klawisz Shift — przesunięcia na ekranie “wyhamują”, pozwalając na dokładniejsze ustalenie pozycji. Wreszcie kombinacja obydwu — Shift-Ctrl — umożliwia skokowe przesuwanie położenia o niewielkie odległości (np. co 0.01 jednostki). Jeżeli w trakcie przesuwania naciśniesz X lub Y — ograniczysz swój ruch tylko do translacji wzdłuż jednej z tych osi.

11.6  Obrót

Zaznacz grupę wierzchołków, które chcesz obrócić, oraz ustal środek transformacji (Pivot) (Rysunek 11.6.1). Praktycznie stosuję jeden z dwóch rodzajów środka: Bounding Box Center albo Cursor 2D. W tym przypadku, środkiem obrotu będzie Cursor 2D. Możesz go ustawić z klawiatury — naciśnij . (kropka):

Rysunek 11.6.1 Zaznaczenie wierzchołków

Naciśnij R (UVs→Transfrom→Rotate). Przełączysz się w ten sposób w tryb obrotu. Na rysunku pojawi się kreskowana linia od kursora myszy do środka transformacji. Każde przesunięcie myszy będzie powodować obrót zaznaczonych wierzchołków — proporcjonalnie do zmiany kąta kreskowanej linii. Dokonywane zmiany w kształcie siatki są pokazywane na bieżąco (Rysunek 11.6.2):

Rysunek 11.6.2 Obrót grupy wierzchołków

W nagłówku okna UV/Image Editor jest wyświetlany aktualny kąt obrotu. Aby zatwierdzić nowe położenie wierzchołków (zakończyć transformację), należy kliknąć LPM. Aby zrezygnować z operacji, możesz w każdej chwili nacisnąć Esc .

Podczas obrotu możesz trzymać wciśnięty klawisz Ctrl. Spowoduje to skokową zmianę proporcji (co 5º). Jeżeli będziesz trzymał wciśnięty klawisz Shift — zmiana obrót na ekranie “wyhamuje”, pozwalając na dokładniejsze ustalenie. Wreszcie kombinacja obydwu — Shift-Ctrl — umożliwia skokową zmianę obrotu o niewielkie kąty (np. co 0.5º).

11.7  Skalowanie

Zaznacz grupę wierzchołków, które chcesz powiększyć/pomniejszyć, oraz ustal środek transformacji (z listy Pivot — Rysunek 11.7.1). Lista pozwala wskazać trzy rodzaje „środków”: Bounding Box Center, Median Point oraz 2D Cursor. Median Point to wypadkowy środek wszystkich zaznaczonych wierzchołków. (Leży w ich “środku ciężkości”). Zacznijmy od przypadku, gdy środkiem skalowania jest właśnie Median Point. (Możesz go ustawić z klawiatury — Shift-,):

Rysunek 11.7.1 Zaznaczenie wierzchołków

Naciśnij S (UVs→Transfrom→Scale). Przełączysz się w ten sposób w tryb skalowania. Na rysunku pojawi się kreskowana linia od kursora myszy do środka transformacji. Każde przesunięcie myszy będzie powodować zmianę skali zaznaczonych wierzchołków — proporcjonalnie do zmiany długości kreskowanej linii. Dokonywane zmiany w kształcie siatki są pokazywane na bieżąco (Rysunek 11.7.2):

Rysunek 11.7.2 Powiększanie grupy wierzchołków

W nagłówku okna UV/Image Editor jest wyświetlana aktualna zmiana skali wzdłuż każdej osi. Aby zatwierdzić nowe położenie wierzchołków (zakończyć transformację), należy kliknąć LPM. Aby zrezygnować z operacji, możesz w każdej chwili nacisnąć Esc .

Podczas zmiany skali możesz dodatkowo trzymać wciśnięty klawisz Ctrl. Spowoduje to skokową zmianę proporcji (np. co 0.1). Jeżeli będziesz trzymał wciśnięty klawisz Shift — zmiana skali na ekranie “wyhamuje”, pozwalając na dokładniejsze ustalenie. Wreszcie kombinacja obydwu — Shift-Ctrl — umożliwia skokową zmianę skali o niewielkie wartości (np. co 0.01).

Środkiem skalowania może być także kursor 2D. Przełącz typ punktu odniesienia (Pivot) na 2D Cursor (skrót tej opcji na klawiaturze to .) (Rysunek 11.7.3):

Rysunek 11.7.3 Zmiana skali względem kursora 2D

Jeżeli w trakcie przesuwania naciśniesz X lub Y — ograniczysz zmianę skali do jednej z tych osi. W takim przypadku żaden rozmiar w kierunku poprzecznym nie ulegnie zmianie. Zobacz sam: naciśnij klawisz S, aby rozpocząć nową operację zmiany skali, a następnie naciśnij klawisz Y. Trzymając przez cały czas wciśnięty klawisz Ctrl (aby uzyskać dokładną zmianę skali) możesz np. uzyskać efekt odbicia w poziomie (Rysunek 11.7.4):

Rysunek 11.7.4 Zmiana skali względem kursora 2D (i wzdłuż jednej osi — Y)

Pokazaną powyżej zmianę skali wzdłuż jednej osi można także stosować jako sposób na dokładne i szybkie “spłaszczenie” grupy wierzchołków.

11.8  Przypinanie (Pin) i rozwijanie (Unwrap)

Do efektywnego przekształcania siatek UV będziesz używał dwóch poleceń, które wydają mi się nierozłączne jak... chyba jak młotek i gwoździe. Dlatego zdecydowałem się opisać je w tej samej sekcji. Pierwszym z nich jest przypinanie (Pin) wierzchołków siatki do określonych punktów UV. Sprawa jest bardzo prosta — zaznaczasz wybrane wierzchołki i naciskasz P (UVs→Pin, Rysunek 11.8.1):

Rysunek 11.8.1 Przypinanie punktów (Pin)

Po co przypinamy wierzchołki? Aby sterować rozwinięciem siatki. Punkty „przypięte” nie będą nigdy zmieniane przez jakikolwiek „automat”. W przypadku punktów nie przypiętych — może być różnie. Sprawdź to sam: obróć górną część zaznaczonych wierzchołków tak, jak to pokazuje Rysunek 11.8.2a:

Rysunek 11.8.2 Wywoływanie powtórnego rozwinięcia siatki (Unwrap)

Następnie zaznacz całą siatkę i naciśnij E (UVs→Unwrap). Rezultat pokazuje Rysunek 11.8.2b. Widzisz? Przemieszczenie „przyszpilonych” wierzchołków pociągnęło za sobą resztę siatki! Na drugim, dolnym obszarze, gdzie pozostawiliśmy je „w spokoju”, nie nastąpiły żadne zmiany. Przed wywołaniem polecenia Unwrap trzeba było zaznaczyć na siatce (w oknie 3D View!) obszar, który ma ulec zmianie. W przykładzie, który pokazuje Rysunek 11.8.2, zaznaczyliśmy po prostu całą siatkę. Oczywiście, może to być mniejszy fragment[1].

Pomyśl, ile pracy wymagałoby takie uzyskanie takiego płynnego wygięcia siatki, jakie pokazuje Rysunek 11.8.2b, gdybyś spróbował tradycyjnie przesuwać lub obracać grupy wierzchołków! Najwięcej czasu poświęciłbyś właśnie na uzyskanie płynnego przejścia, pomiędzy tymi punktami, które przemieściłeś bardziej, a tymi, które przemieściłeś mniej. A tutaj — wystarczy wybrać jakiś rząd kluczowych wierzchołków, a reszta dopasowuje się sama!

Rysunek 11.8.3 Włączenie dynamicznego rozwijania siatki

Aby było jeszcze łatwiej, twórcy Blendera umieścili w menu UVs przełącznik Live Unwrap (Rysunek 11.8.3). Gdy jest włączony, program dokonuje dynamicznego rozwinięcia siatki, gdy tylko przemieścisz jakikolwiek „przyszpilony” wierzchołek.

Aby zobaczyć, jak to działa: włącz ten tryb w menu. Na potrzeby tego przykładu zaznacz w oknie 3D View całą siatkę, i wyłącz w oknie edytora UV tryb synchronizacji selekcji (por. Rysunek 11.8.3).

Zaznacz teraz dolną część „przyszpilonej” krawędzi, i zacznij ją obracać (Rysunek 11.8.4):

Rysunek 11.8.4 Dynamiczne rozwijanie siatki w trakcie przemieszczania punktów (Live Unwrap)

Dzięki Live Unwrap możesz lepiej „wyczuć”, jak zachowuje się rozwinięcie siatki. Oczywiście, zetkniesz się na pewno z bardzo złożonymi transformacjami, w których tryb „dynamiczny” tylko by przeszkadzał. Wtedy zawsze możesz go wyłączyć, i korzystać z prostego polecenia Unwrap (E).

Aby usunąć znacznik „przypięcia” z zaznaczonych wierzchołków, naciśnij Alt-P (UVs→Unpin).

Polecenie UVs→Unwrap (E) i opcja UVs→Live Unwrap nie działają, gdy włączyłeś synchronizację selekcji z widokiem 3D View.

[1] (str. 536) Nie będąc pewnym, czy masz włączony tryb synchronizacji selekcji z oknem 3D View, czy nie, zaproponowałem zaznaczenie obszaru, który spowoduje ten sam rezultat w obydwu przypadkach. Zwróć uwagę, że w trybie bez synchronizacji dla polecenia Unwrap obowiązuje prosta zasada: przekształcane są tylko te wierzchołki, które widzisz w oknie edytora UV. (Bo widzisz w nim tylko to, co jest zaznaczone w oknie 3D View — por. str. 527, Rysunek 11.3.2)

11.9  Podstawienie (przypisanie) obrazu

Oprócz rozwinięcia siatki, UV/Image Editor umożliwia edycję obrazu rastrowego. Zresztą — nie trzeba go od razu edytować. Częstym zastosowaniem jest po prostu podstawienie zawartości jakiegoś pliku pod rozwinięcie siatki w UV, wyłącznie w celach referencyjnych. (UV/Image Editor wyświetla jednocześnie i rozwinięcie siatki, i obraz, więc można jedno z drugim porównać).

Najpierw zaznacz całą siatkę w oknie 3D View. (Obraz jest przypisywany do zaznaczonych ścian siatki — gdy ich nie zaznaczysz, nic się nie stanie). Najprostszą drogą podstawienia obrazu jest wybranie jednego z tych, które są już używane w tym pliku Blendera. Służy do tego lista w nagłówku okna (Rysunek 11.9.1):

Rysunek 11.9.1 Wybór obrazu rastrowego z listy

Jeżeli wybierzesz jakiś obraz, którego boki nie są równe (nie jest kwadratem), przygotuj się na małe zaskoczenie (Rysunek 11.9.2):

Rysunek 11.9.2 Rezultat podstawienia obrazu, który nie jest kwadratowy

Rozwinięcie UV siatki ulega zawsze rozciągnięciu, odpowiedniemu do proporcji boków obrazu. Dzieje się tak dlatego, że współrzędne UV wierzchołków są zawsze wartościami względnymi (0..1), jak to pokazuje Rysunek 11.9.1 i Rysunek 11.9.2. Ich pozycja na ekranie jest wyznaczana na podstawie rozmiarów obrazu tła!

Gdy usuniesz (odłączysz) taki prostokątny obraz z tła (, por. Rysunek 11.9.2), rozwinięcie siatki natychmiast wraca do właściwych proporcji (jak to pokazuje Rysunek 11.9.3a). Czy teraz już rozumiesz, dlaczego obrazy wszystkich tekstury są kwadratami?

Do UV/Image Editor możesz załadować jakikolwiek plik z obrazem rastrowym. Służy do tego polecenie Image→Open Image. Można tu także utworzyć nowy, pusty obraz — na przykład po to, by za chwilę coś na nim namalować (por. str. 526, Rysunek 11.2.4). Służy do tego polecenie Image→New Image. (Alt-N) albo przycisk New w nagłówku (Rysunek 11.9.3a):

Rysunek 11.9.3 Utworzenie nowego obrazu i przypisanie go do ścian siatki

W oknie dialogowym New Image ustal, jaką nazwę będzie nosił obraz (Rysunek 11.9.3b). Możesz tu także zmienić jego rozmiar (w pikselach) — w polach Width i Height. Z listy Generated Type możesz wybrać jedną z kilku opcji. Dla opcji Blank nowy obraz będzie wypełniony jednolitą barwą, Color (por. Rysunek 11.9.3b). Jeżeli jednak włączysz opcję UV Grid, ta informacja jest ignorowana. Wybór UV Grid powoduje wygenerowanie wzoru z kwadratów i krzyżyków, przypominającego szachownicę (Rysunek 11.9.3c). To narzędzie pomocnicze, przeznaczone do wyszukiwania deformacji obrazu nałożonego na siatkę.Opcja Color działa podobnie (to inny wzór).

Blender przypisuje ładowany/tworzony obraz rastrowy do tych ścian siatki, które są w tym momencie zaznaczone w do UV/Image Editor.

O co chodzi z tym „przypisaniem”? Otwórz obok okno 3D View, przełącz na chwilę renderer na BlenderRenderer i tryb wyświetlania na Textured, a zobaczysz o co chodzi (Rysunek 11.9.4):

Rysunek 11.9.4 Podgląd w oknie 3D View obrazu nałożonego na siatkę w edytorze UV

Tryb wyświetlania Textured, gdy aktualnym silnikiem renderującym jest Blender Render, zawsze pokazuje obraz przypisany do ścian siatki (tzn. przypisanych w UV/Image Editor).

Czasami specyfika trybu wyświetlania Textured może przeszkadzać w pracy z zawartością okna 3D View. Popatrz na Rysunek 11.9.5a):

Rysunek 11.9.5 Porównanie dwóch metod wyświetlania obrazu nałożonego na siatkę

Siatki, które nie zostały przypisane w UV/Image Editor do żadnego obrazu, są w trybie Textured rysowane bez żadnych cieni, jednolitym kolorem białym. To utrudnia pełną ocenę ich kształtu w przestrzeni. Z kolei na siatkach które są pokryte przypisanym obrazem potrafią się pojawić głębokie cienie (Rysunek 11.9.5a). Takie cienie utrudniają np. wyszukiwanie deformacji testowej „szachownicy” na siatce.

Na szczęście w Blenderze jest dostępna alternatywna metoda wyświetlania obrazów tekstur na siatkach. Ustaw tryb wyświetlania zawartości 3D View na Solid. Następnie w przyborniku Properties (N) znajdź panel Display i włącz na niej opcję Textured Solid (Rysunek 11.9.5b). W tym trybie siatki bez obrazu są normalnie cieniowane. Nie występuje także problem z głębokimi cieniami na powierzchniach z obrazem.

Jeżeli przeszkadza Ci sposób wyświetlania w trybie Textured, zawsze możesz spróbować użyć zamiast niego opcji Display:Textured Solid.

Wszystko, co podano powyżej, dotyczy pracy z Blender Renderer. Gdy aktywnym rendererem jest Cycles, na model jest nakładany obraz z aktualnie zaznaczonego na schemacie materiału węzła tekstury (Rysunek 11.9.6):

Rysunek 11.9.6 Cycles: wybór obrazu, wyświetlanego na modelu

11.10  Wyrównywanie (Align)

Wyrównanie oznacza w edytorze UV ustawienie wskazanych wierzchołków pionowo (Align Y) lub poziomo (Align X). Ten sam efekt możesz osiągnąć zmieniając skalę zaznaczonych wierzchołków wzdłuż jednej z osi do 0. Align X/Y jest właściwie „skrótem” takiej operacji.

Zaznacz jakąś linię wierzchołków, które chcesz wyrównać (Rysunek 11.10.1a). Następnie naciśnij W (lub UVs→Weld/Align), aby otworzyć menu Weld/Align. Z menu wybierz Align X (bo wierzchołki mają leżeć na linii pionowej). Rezultat przedstawia Rysunek 11.10.1b:

Rysunek 11.10.1 Wyrównywanie linii wierzchołków.

Każde z poleceń Align X/Y zmienia tylko jedną ze współrzędnych wierzchołków — tę, którą ma w nazwie. Współrzędne Y (V) punktów, które pokazuje Rysunek 11.10.1, nie uległy żadnej zmianie.

11.11  Zapisanie rozwinięcia UV do pliku

Obraz rozwinięcia UV można zapisać do pliku (rastrowego: *.png, lub wektorowego: *.svg lub *.eps). Na początek proponuję wykorzystywać domyślną opcję — zapis do pliku rastrowego. Wywołaj polecenie UVs→Export UV Layout — jak pokazuje to Rysunek 11.11.1a):

Rysunek 11.11.1 Zapisanie rozwinięcia UV do pliku (rastrowego).

Spowoduje to przełączenie okna Blendera w okno wyboru pliku. W tym oknie odszukaj po lewej stronie u dołu panel parametrów tego polecenia (Export UVLayout — Rysunek 11.11.1b). Można tu ustalić rozmiar obrazu (pola size — wyrażone w pikselach). (Najlepiej jest zawsze eksportować obraz kwadratowy). Można tu także określić nieprzejrzystość ścian rozwinięcia (Fill Opacity). Po wpisaniu nazwy i naciśnięciu przycisku Export UV Layout na dysku pojawi się zapisany plik z obrazem. Możesz go otworzyć w dowolnym programie — choćby w Gimpie (Rysunek 11.11.1c). Wszystkie ściany na tym obrazie będą wypełnione barwą materiału, do którego są przypisane. Wszystkie linie będą czarne, o szerokości 1 px.

Rysunek 11.11.2 Włączenie dodatku Export to SVG.

W polu Format panelu Export UV Layout można także wybrać zapis do postaci wektorowej (pliku SVG — czyli formatu który wykorzystuje Inkscape). To cenna możliwość, pozwalająca przygotować obrazy rozwinięć wielu siatek w sposób bardzo dokładny, w stosunkowo niewielkich plikach.

Jednak w standardowym poleceniu brakowało mi pewnych opcji. Dlatego na potrzeby naszego projektu przygotowałem specjalny komponent, służący wyłącznie do eksportu rozwinięć siatki do pliku SVG. Znajduje się w pliku source\scripts\addons\io_mesh_uv_svg.py (aby zainstalować — por. str. 383). Możesz go włączyć w oknie User Preferences:Addons (Rysunek 11.11.2).

Jedną z funkcji, której brakowało mi w standardowym poleceniu Export UV Layout, była możliwość eksportu siatek wielu obiektów jednocześnie. Jest to o tyle dziwne, że edytorze UV/Image, po włączeniu opcji View→Draw Other Objects, Blender wyświetla ich rozwinięcia (Rysunek 11.11.3):

Rysunek 11.11.3 Podgląd rozwinięcia wielu siatek naraz.

Zaimplementowałem więc tę funkcję w moim dodatku. Po włączeniu możesz go wywołać poleceniem UVs→Export to SVG (Rysunek 11.11.4a):

Rysunek 11.11.4 Polecenie Export to SVG.

Podobnie jak w przypadku standardowego polecenia eksportu, ekran Blendera przełączy się w standardowe okno wyboru plików. W tym samym miejscu, co poprzednio, znajdziesz panel Export to SVG, z parametrami polecenia. Zwróć uwagę, że tym razem jest tych opcji więcej. Abyś nie musiał ich za każdym razem ustawiać, program zawsze domyślnie zaproponuje parametry użyte podczas poprzedniego wywołania tego polecenia.

Przy zapisie rozwinięć siatki do pliku SVG proponuję używać takich ustawień, jakie pokazuje Rysunek 11.11.4b). Jeżeli włączysz opcję From All Objects, do pliku SVG zapisane zostaną rozwinięcia aktywnych map UV ze wszystkich zaznaczonych w oknie 3D View obiektów. (Gdy ta opcja jest wyłączona, zapisywane są tylko ściany edytowanej siatki).

W czasie pracy nad siatką będziemy w ten sposób tworzyć wiele różnych plików, które następnie złożymy w jeden rysunek. Aby nie pogubić się w ich nazwach, możesz włączyć opcję Use Object Name. Sprawa barwy ścian i linii to oczywiście kwestia gustu. Natomiast koniecznie zaznacz opcję Broder Around Image ( Rysunek 11.11.4b). Dlaczego? Ponieważ tylko dzięki tej ramce będziesz mógł w Inkscape szybko i dokładnie złożyć obrazy rozwinięć siatki wyeksportowane z Blendera! Zaraz to zresztą pokażę.

Dla takich ustawień, jakie pokazuje Rysunek 11.11.4b), we wskazanym katalogu na dysku powstanie plik o nazwie B_300_Fuselage_UVTex.svg. Włączona opcja Export to SVG:Use Object Name spowodowała, że nazwą pliku stała się nazwa kadłuba (B.300.Fuselage) z podkreśleniami w miejscu kropek. Czasami siatki mogą mieć kilka alternatywnych rozwinięć (map) UV. Aby je odróżnić, drugą częścią nazwy jest nazwa aktywnego rozwinięcia UV (w tym przypadku — UVTex). Rysunek 11.11.5 przedstawia ten plik otwarty za pomocą Inkscape:

Rysunek 11.11.5 Rezultat eksportu (podgląd w Inkscape).

Wyeksportowane obrazy rozwinięcia UV są niezbędne do przygotowania tekstur modelu. Podstawą do tworzenia tekstur jest rysunek „technicznych” nierówności — krawędzi paneli, nitów, śrub — przygotowany w Inkscape. Jako „podkładkę” pod ten rysunek użyjemy rozwinięć UV, które gromadzimy w pomocniczym pliku uv.svg. Stworzony przez Blender plik wczytaj do rysunku zbiorczego uv.svg (File→Import — str. 285) (Rysunek 11.11.6):

Rysunek 11.11.6 Obraz po wczytaniu do Inkscape.

Zawartość importowanego pliku jest w Inkscape jedną grupą, składającą się z kwadratowej ramki i grup z rozwinięciami siatek. Długość boku ramki jest taka, jak zadeklarowany rozmiar obrazu (2048). Stąd, aby umieścić dodawane rozwinięcia dokładnie we właściwym miejscu rysunku zbiorczego, wpisz we współrzędne X i Y obiektu wartości (0, 0) (por. Rysunek 11.11.6). Potem rozdziel tę grupę (Object→Ungroup, albo Shift-Ctrl-G), abyś w razie czego mógł kopiować i przełączać pomiędzy warstwami rozwinięcia pojedynczych siatek. Jej ramka jest już niepotrzebna, możesz ją usunąć.

Rozwinięcia SVG zawierają bardzo dużo ścian, i Inkscape dość wolno odświeża kompletny rysunek uv.svg. Właśnie z powodu wydajności programu jako „podkładkę” do rysowania tekstur w pliku skin.svg proponuję wykorzystać rastrowy obraz (uv.png) o dużej rozdzielczości (4096x4096 px), wyeksportowany z uv.svg.

11.12  Tworzenie nowego obrazu

Aby stworzyć nowy obraz rastrowy w UV/Image Editor, wywołaj polecenie Image→New Image (Alt-N, Rysunek 11.12.1a):

Rysunek 11.12.1 Wywołanie polecenia

To polecenie otwiera okno dialogowe, w którym możesz wpisać podstawowe właściwości nowego obrazu: nazwę (Name) , rozmiar w pikselach (Width, Height) , kolor wypełnienia (Color — Rysunek 11.12.1b). Jako Generated Type wybierz opcję Blank. Gdy naciśniesz przycisk OK, zobaczysz w edytorze nowy obraz (Rysunek 11.12.2):

Rysunek 11.12.2 Nowy obraz

Zwróć uwagę na gwiazdkę w nazwie menu: Image* (Rysunek 11.12.2). W ten sposób Blender sygnalizuje, że obraz trzeba zapiać na dysk. (Bezpośrednio po stworzeniu, obraz istnieje tylko w pliku Blendera. Zawsze pamiętaj o jego zapisaniu!)

Dwie pozostałe opcje Generated Type — UV Grid i Color — tworzą specjalny obraz testowej siatki, przydatnej do sprawdzania rozwinięć UV lub testowych renderów.

11.13  Zapisanie nowego obrazu

Jeżeli chcesz po raz pierwszy zapisać nowo stworzony obraz, lub stworzyć kopię istniejącego pliku, wybierz polecenie Image→Save As Image (F3, Rysunek 11.13.1a):

Rysunek 11.13.1 Wywołanie polecenia Save As Image i jego opcje

Na ekranie Blendera pojawi się okno wyboru pliku. Zwróć uwagę na jego najniższą panel: to parametry polecenia Save As Image (Rysunek 11.13.1b). Możesz tam wybrać format zapisu pliku, tryb barwy, a także poziom kompresji. Dla plików PNG nie zapomnij ustawić kompresji (Save As Image:Compression) na poziomie 100%, bo tylko wtedy Blender zapisze na dysku odpowiednio mały plik!

Dla plików w formacie JPG stosuje się zazwyczaj kompresję na poziomie 80 – 95% (patrz str. 221).

Po naciśnięciu przycisku Save As Image, obraz zostanie zapisany na dysku do pliku o wskazanej nazwie (Rysunek 11.13.2a):

Rysunek 11.13.2 Rezultat wywołania polecenia Save As Image

Jednocześnie w menu Image okna UV/Image Editor dostępne stanie się polecenie Save Image (Alt-S, Rysunek 11.13.2b). Od tej pory możesz go używać, gdy będziesz chciał zapisać dokonane w edytorze zmiany do pliku obrazu na dysku.

Gdy plik obrazu został zmieniony, Blender sygnalizuje to małą gwiazdką (*) w nazwie menu Image. Taki plik warto zapisać na dysku poleceniem Save Image.

11.14  Bezpośrednie malowanie po powierzchni modelu (tryb Texture Paint)

Malowanie po powierzchni modelu pokażę na przykładzie obrazu zabrudzeń (dla tekstur odbić i koloru).

Zaznacz w oknie 3D View obiekt, który chcesz „pomalować”, a potem ustaw odpowiednią projekcję i przełącz je w tryb Texture Paint. Jeżeli siatka aktywnego obiektu ma już rozwinięcie UV oraz przypisany materiał Cycles, zobaczysz na powierzchni obiektu obraz z węzła tekstury wybranej w Node Editor (Rysunek 11.14.1).

Rysunek 11.14.1 Przestawienie okna 3D View w tryb malowania

W trybie Texture Paint kursor staje się okrągłym kółkiem „pędzla” (Brush). Model najwygodniej jest malować w dwóch oknach (Rysunek 11.14.2). W 3D View widzisz obraz na modelu, a w UV/Image — ten sam obraz na płaszczyźnie. Aby przełączyć UV/Image Editor w tryb malowania wybierz z listy w nagłówku okna opcję Paint:

Rysunek 11.14.2 Przestawienie okna UV/Image Editor w tryb malowania

Aby ułatwić malowanie w UV/Image Editor, Blender wyświetla na powierzchni obrazu rozwinięcie UV siatki aktywnego obiektu (Rysunek 11.14.2). W trybie Paint nie możesz go zmieniać. W tym trybie okna przybornika (Toolshelf — T) w widoku 3D View oraz w edytorze UV/Image są niemal identyczne. Przybornik 3D View odróżnia się dodatkową zakładką Slots, w której możesz szybko przełączać się pomiędzy teksturami materiału.

Jeżeli chcesz namalować coś na obrazie nie związanym z żadnym materiałem — po uruchomieniu trybu Texture Paint w zakładce Slots przełącz Painting Mode z Material na Image, i wybierz odpowiedni obraz (por. str. 526, 551).

W Blenderze możesz zdefiniować wiele różnych „pędzli”. Ich właściwości (rozmiar, barwę, tryb pracy, itp.) ustawiasz w oknie przybornika. Znajduje się tam także lista, z której można wybierać pędzle (Rysunek 11.14.3):

Rysunek 11.14.3 Malowanie po powierzchni samolotu

W obydwu edytorach kursor zaczyna malować, gdy trzymasz wciśnięty LPM. W działaniu to przypomina trochę aerograf. Parametr Radius określa rozmiar pędzla, Strength: intensywność, a Blend — tryb „mieszania” barwy pędzla z obrazem (na tej liście znajdziesz takie same funkcje co w GIMP).

Aby wymazać jakiś fragment rysunku, należy zamalować go kolorem tła. W poprzednich wersjach Blendera potrzebne były do tego dwa pędzle (brushes): w „kolorze pierwszoplanowym” i „kolorze tła”. Od wersji 2.7 mamy dwie barwy w jednym pędzlu, przełączane prostym naciśnięciem klawisza X (Rysunek 11.14.4a):

Rysunek 11.14.4 Szczegóły kontrolki pędzli

U góry panelu Brush znajduje się kontrolka wyboru pędzla. Kliknij w nią, by rozwinąć listę z dostępnymi pędzlami (Rysunek 11.14.4b). Kontrolka pędzla posiada wszystkie typowe przyciski bloku danych Blendera, służące do zmiany nazwy, tworzenia nowego obiektu (poprzez skopiowanie bieżącego), lub jego usunięcie (odłączenie). W oknie Blendera tylko jeden pędzel jest aktywny. Aby uniknąć usunięcia tego bloku danych podczas zapisu pliku Blendera, warto włączyć jego flagę F (Fake user — por. str. 571).

Zamiana kolorów tła i pierwszoplanowego przydaje się do drobnych poprawek. Ciągłe przestawianie innych parametrów narzędzia byłoby zbyt uciążliwe, stąd nadal warto definiować odrębne pędzle.

Szczegóły dotyczące „pociągnięcia” pędzla można ustawiać w panelu Paint Stroke. Sposób nakładania nowej barwy na obraz wybierasz z listy Stroke Method. Oprócz metod intuicyjnych, takich jak „aerograf” (Airbrush) czy linia (Line), znajdziesz tu kilka innych, takich jak Dot (maluje kolejną kropkę w stałych odstępach czasu) czy Space (maluje kolejne kropki w stałej odległości, określanej przez parametr Spacing — por. Rysunek 11.14.5a):

Rysunek 11.14.5 Panel Stroke — rysowanie w trybie Space

Opcja Smooth Stroke pozwala “ciagnąć” linię „jak psa na smyczy” (Rysunek 11.14.5b). W ten sposób powstają gładsze odcinki. Linie proste można rysować tak, jak to pokazuje Rysunek 11.14.6:

Rysunek 11.14.6 Panel Stroke — rysowanie w trybie Line

Oprócz zwykłego trybu „rysowania” (Draw) pędzel Blendera można także zmienić w innego rodzaju narzędzia. Służą do tego opcje Brush→Image Paint Tool. Rysunek 11.14.7 przedstawia definicję i działanie narzędzia do rozmazywania (Smear):

Rysunek 11.14.7 Zmiana typu „narzędzia malarskiego” — na przykładzie rozmazywania (Smear)

Domyślnie w trybie Texture Paint Blender wyświetla edytowany obraz tylko na powierzchni aktywnego obiektu. Gdy obraz do zamalowania pokrywa wiele obiektów, najlepiej jest widzieć go w całości. W tym celu przełącz na czas malowania silnik renderujący na Blender Renderer, i włącz w panelu Shading właściwości widoku (Property Shelf — N) opcję Textured Solid (Rysunek 11.14.8):

Rysunek 11.14.8 Przygotowanie do malowania obrazu rozpostartego na wielu obiektach

W tym trybie Blender wyświetla obraz przypisany do siatek wszystkich obiektów. W przypadku naszego modelu to obraz Test. Nie jest używany w żadnym materiale, więc aby po nim malować przełącz tryb operacji Texture Paint (lista Painting Mode w zakładce Slots) w tryb Image i jako Canvas Image wskaż Test (Rysunek 11.14.8). Zastąp zawartość tego obrazu (Image→ Replace Image w UV/Image Editor) plikiem, który wykorzystujesz w materiale. Po zakończeniu malowania zapiszesz go na dysku i załadujesz (poleceniem Image→Reload) do dopowiedniego węzła materiału Cycles.

W oknie 3D View możesz malować tylko po powierzchni aktywnego obiektu. W takim modelu jak nasz ta zasada nieco utrudnia pracę. Przyjrzyj się chociażby fragmentowi modelu, poprzez który ma biec smuga sadzy, pokazywana przez Rysunek 11.14.9. W tym miejscu łączą się siatki trzech obiektów: środka i tyłu kadłuba (3) oraz okapotowania silnika (1, 2):

Rysunek 11.14.9 Malowanie po powierzchni kilku obiektów

Aby wybrać inny obiekt w trybie Texture Paint, tryb Paint Mask musi być wyłączony (Rysunek 11.14.9). (To ustawienie jest indywidualnie przypisane do każdego obiektu). W wyniku jakiegoś przeoczenia twórców, gdy po raz pierwszy wybierzesz jakiś obiekt, Blender przełącza się z powrotem w tryb Object Mode. To dość denerwujące, szczególnie gdy masz dużo obiektów do pomalowania.

Aby się tak nie męczyć, napisałem prosty skrypt, który po wyborze obiektu automatycznie przełącza Blendera w tryb Texture Paint. Nosi nazwę Select Paint Target. Znajdziesz go wśród dodatków do tej książki (por. str. 20, plik source\scripts\addons\paint_select_object.py). Zainstaluj go i włącz (Rysunek 11.14.10):

Rysunek 11.14.10 Włączenie wyboru obiektu w trybie Texture Paint

Korzystanie z dodatku Select Paint Target jest bardzo intuicyjne. Wystarczy kliknąć PPM podczas malowania w jakiś inny obiekt, a natychmiast stanie się on obiektem aktywnym (Rysunek 11.14.11):

Rysunek 11.14.11 Zmiana aktywnego obiektu w trybie Texture Paint

Posługując się takim przełącznikiem można szybko namalować odpowiednią smugę (Rysunek 11.14.12):

Rysunek 11.14.12 Rezultat pracy na trzech fragmentach siatek

Zarysu śladu dymu lub spalin warto po narysowaniu „rozmyć”. W tym celu sklonuj obecny pędzel w nowe narzędzie i zmień tryb działania pędzla na Soften (z menu Brush→Image Paint Tool — Rysunek 11.14.13):

Rysunek 11.14.13 Zmiana trybu malowania (na Soften)

W panelu Curve możesz ustawić rozkład intensywności narzędzia wzdłuż promienia. Domyślnie pędzel ma łagodne krawędzie, tak jak pokazuje to Rysunek 11.14.14a). W trybie Soften lepiej się sprawdza jednorodny rozkład intensywności. Ustaw go w panelu Curve tak jak to pokazuje Rysunek 11.14.14b). Dodatkowo możesz także zwiększyć rozmiar pędzla (Brush:Radius — por. str. 549, Rysunek 11.14.3). W wyniku jakiegoś błędu narzędzie Soften nie działa w oknie 3D View, ale możesz go użyć w w UV/Image Editor. Wystarczy w nim parę razy pociągnąć po naszych plamach, aby je rozmyć (Rysunek 11.14.14b):

Rysunek 11.14.14 Przełączenie krzywej intensywności narzędzia Soften na wartość stałą

By nie zmieniać co chwila tych wszystkich ustawień, warto zachować narzędzie Soften, obok Smear, jako kolejny „pędzel” (por. Rysunek 11.14.7).

W trybie malowania dostępne są także polecenia Undo (Ctrl-Z) i Redo (Shift-Ctrl-Z). Działają tu tak jak w GIMP — Undo usuwa ostatnie pociągnięcia pędzla, a Redo je przywraca.

W tej sekcji nie omówimy dalszych paneli z parametrami malowania, bo po prostu jest ich bardzo dużo. Zresztą pozostałych nie używałem podczas tworzenia tego modelu.

Tryb Texture Paint przydaje się także do korygowania plam kamuflażu. Pokażę to na przykładzie zielonych plam, pokrywających górne i boczne powierzchnie samolotu z AVG (Rysunek 11.14.15):

Rysunek 11.14.15 Przygotowanie w GIMP kopii warstwy z kamuflażem dla Blendera (pomocniczy plik camouflage.png)

Przygotowałem w GIMP obraz kamuflażu samolotu. Poszczególne elementy barwne są umieszczone na różnych warstwach (Rysunek 11.14.15a). Na jednej z nich, o nazwie Color-Green.Camouflage, namalowałem plamy, jakie pokrywały górne i boczne powierzchnie maszyny (Rysunek 11.14.15b). Na pewno granice tych plam będą przesunięte wzdłuż któregoś ze szwów modelu. Aby wykryć i poprawić takie miejsca, kopiuję zawartość tej warstwy do odrębnego pliku (camouflage.png).

Uzyskany z GIMP obraz rastrowy podstawiam w Blenderze (poleceniem Image→Replace) pod nazwę Test (Rysunek 11.14.16). W ten sposób pojawi się natychmiast na całej powierzchni samolotu (bo do tego obrazu są przypisane wszystkie siatki modelu — por. str. 126, a także str. 539):

Rysunek 11.14.16 Przygotowanie obrazu plam kamuflażu w Blenderze

W widoku 3D View włączyłem tryb Texture Paint i przełączyłem wyświetlanie w tryb Textured Solid (w przyborniku Properties:Display). Blender maluje kolorem białym przejrzyste obaszary na aktywnym obiekcie, a czarnym — przejrzyste obszary na obiektach nieaktywnych. Jak pokazuje to Rysunek 11.14.16, kombinacja czarnego tła i ciemnozielonych plam kamuflażu nie jest zbyt kontrastowa. Na szczęście szybko można temu zaradzić.

Włącz dodatek Select Paint Target (por. str. 552, Rysunek 11.14.10). Od tej chwili, w każdym obiekcie który klikniesz PPM przeźroczyste tło zmienia się z czarnego na białe (Rysunek 11.14.17). Tak już zostanie — dopóki nie zamkniesz tego pliku Blendera:

Rysunek 11.14.17 Przełączenie tła na białe

Czasami tekstura na wybranym obiekcie może wyglądać dziwnie (Rysunek 11.14.18a). Na szczęście, aby to skorygować wystarczy dwa razy nacisnąć klawisz Tab (Rysunek 11.14.18b,c):

Rysunek 11.14.18 Typowe problemy z mapowaniem obrazu i metoda ich korekty

Barwę podstawowego pędzla odczytaj w GIMP (por. str. 254) i skopiuj do schowka zawartość HTML notation (Rysunek 11.14.19a). Potem wklej ją w okno wyboru barwy Blendera (w trybie Hex — Rysunek 11.14.19b):

Rysunek 11.14.19 Ustalenie barwy pędzla podstawowego (Green)

Aby malować przejrzyste tło, zdefiniuj kolejny pędzel o nazwie Clear. Ustaw jego funkcję (Brush:Blend) na Erase Alpha, a intensywność Strength na 1.0 (Rysunek 11.14.20a). Jako Stroke Method wybierz Airbrush (Rysunek 11.14.20b). Plamy kamuflażu na P-40 były malowane za pomocą szablonów i miały ostre krawędzie. Dlatego w panelu Curve ustaw stałą intensywność wzdłuż promienia narzędzia (Rysunek 11.14.20c):

Rysunek 11.14.20 Ustawienia pędzla do malowania tła (Clear)

Gdy obejrzysz model w widoku 3D View, znajdziesz w nim różne nieprawidłowości (Rysunek 11.14.21):

Rysunek 11.14.21 Przykładowy defekt plam kamuflażu

Rysunek 11.14.21 pokazuje nieciągłość kamuflażu wzdłuż wewnętrznej krawędzi lotki. Ten błąd skorygujemy w oknie 3D View, usuwając nadmiar zielonej plamy za pomocą pędzla Clear (Rysunek 11.14.22):

Rysunek 11.14.22 Usuwanie nadmiaru plamy z obrazu tekstury

Pędzla Green potrzebujemy, by zamalować „ząbki” na skrzydle przy krawędzi lotki (Rysunek 11.14.23):

Rysunek 11.14.23 Poprawianie „ząbków” na krawędzi wnęki lotki

Przejrzyj w ten sposób wszelkie zakamarki modelu. W zależności od sytuacji, pewne plamy ogranicz zamalowując je przejrzystym tłem, inne uzupełnij kolorem zielonym.

Wszystkie zmiany, które naniosłeś w obrazie camouflage.png w Blenderze nie są jeszcze zapisane. Warto je co jakiś czas „utrwalić”. Służy do tego polecenie Image→Save Image (por. str. 547).

Gdy już uzgodniłeś cały kamuflaż i zapisałeś jego uaktualniony obraz na dysku, pora wczytać rezultaty z powrotem do GIMP. Załaduj plik camouflage.png jako nową warstwę. Najpierw usuńmy z Color-GreenCamouflage nadmiary plam. Wczytaj do rysunku GIMP plik z dysku (poleceniem File→Open As Layers). Zostanie wczytany jako nowa warstwa, o nazwie camouflage.png. Umieść ją powyżej Color-GreenCamouflage(Rysunek 11.14.24):

Rysunek 11.14.24 Wstawienie zmodyfikowanego pliku camouflage.png do obrazu GIMP

Następnie usuń oryginalną warstwę Color-GreenCamouflage, a jej nazwę nadaj nowemu obrazowi plam.

Zwróć uwagę, że dużym ułatwieniem w przygotowaniu kamuflażu jest zastosowanie na warstwie Colors-GreenCamouflage plam o jednolitej barwie.

Rozdział 12.  Blender — pozostałe

Tu umieściłem wszystkie polecenia Blendera, które nie pasują do pozostałych rozdziałów. Co prawda połowa jego sekcji jest poświęcona schematom kompozycji i ich węzłom, ale było ich zbyt mało by poświęcić im odrębny rozdział.

12.1  Zdefiniowanie nowego materiału (dla Blender Renderer)

W tym przykładzie poznasz stworzenie najprostszego z możliwych materiałów. Nazwiemy go Artifical i będzie miał kolor czerwony. Materiału Artifical będziemy używać do wszystkich obiektów pomocniczych, które nie mają się pojawić na ostatecznym obrazie. (Intensywny kolor czerwony pozwoli nam je łatwiej dostrzec w Object Mode). Tej barwy potrzebujemy już na etapie modelowania, więc wprowadzam go jako materiał domyślnego silnika renderującego Blendera (Blender Renderer, znany także jako Blender Internal). Wszystkie pozostałe materiały tego modelu będę już tworzył dla alternatywnego renderera: Cycles (por. str. 433).

Zacznijmy od sytuacji wyjściowej: wybraliśmy aktywny obiekt (B.310.T.Cowling — Rysunek 12.1.1a). Jest to obiekt pomocniczy, który nie ma się pojawić na jakimkolwiek renderingu. W oknie Properties wybierz zestaw Material, i naciśnij przycisk New (Rysunek 12.1.1b):

Rysunek 12.1.1 Obiekt (a właściwie — siatka) bez przypisanego materiału

W rezultacie Blender stworzył nowy materiał (o domyślnej nazwie Material) i przypisał go do siatki aktywnego obiektu. W zestawie Material zaroiło się od paneli (Rysunek 12.1.2a):

Rysunek 12.1.2 Zmiana nazwy nowego materiału

Najlepiej od razu zmienić temu materiałowi nazwę — w tym przypadku na Artifical (Rysunek 12.1.2b).

W konfiguracji, jaką wybraliśmy (por. Rysunek 7.4.3, str. 368 — okno User Preferences, przełącznik Link Materials To:) materiał jest przypisany do siatki, a nie do obiektu. Stąd obok nazwy materiału widzisz wybrany tryb Data (por. Rysunek 12.1.2b). To skrót od Object Data. Blender umożliwia przypisanie różnym fragmentom pojedynczej siatki różnych materiałów, które wybiera się z listy umieszczonej ponad nazwą. (Szczegółowy opis wykorzystania wielu materiałów w jednej siatce znajdziesz na str. 414).

Wróćmy jednak do naszego materiału Artifical. Aby zmienić jego kolor na czerwony, rozwiń kontrolkę barw klikając na pole w panelu Diffuse (Rysunek 12.1.3):

Rysunek 12.1.3 Zmiana barwy materiału

Rysunek 12.1.4 Efekt przypisania materiału — zmiana barwy obiektu na czerwoną

(Szczegóły posługiwania się tą kontrolką znajdziesz na str. 386). Aby uzyskać jaskrawą czerwień, zmniejsz w niej wartości G i B do 0.0, a R zwiększ do 1.0 (Rysunek 12.1.3a). Zwróć uwagę, że okienko w panelu Preview (Rysunek 12.1.3b) na bieżąco reaguje na każdą zmianę, jaką wykonasz w kontrolce. W rezultacie nasz obiekt w oknie 3D View będzie wyświetlany właśnie w tym kolorze (Rysunek 12.1.4)

Rysunek 12.1.5 Przypisanie istniejącego materiału

Raz utworzony materiał można przypisać wielu obiektom/siatkom. Służy do tego lista rozwijalna (zestawie Material — Rysunek 12.1.5). W Blenderze możesz także przypisać materiał wielu obiektom naraz. O tym, jak to zrobić, możesz przeczytać na str. 414.

Gdy zmienisz jakikolwiek parametr takiego wspólnego materiału, ta zmiana natychmiast będzie widoczna na wszystkich siatkach/obiektach, które go używają. Na przykład, popatrz na Rysunek 4.9.7 ze str. 187. Wszystkie żebra skrzydła używają tam tej samej siatki, więc w wyniku dodania do materiału nowej tekstury, na wszystkich pojawiły się otwory.

12.2  Wygładzanie linii obrazu

Podczas renderowania rezultatu, Blender musi przeliczyć uzyskane barwne obszary na konkretne piksele ostatecznego obrazu. Aby model na obrazie wyglądał jak najlepiej, wszystkie jego krawędzie są wygładzane. Steruje tym kontrolka z panelu Render:Film (Rysunek 12.2.1a). Domyślnie linie są wygładzane metodą Gaussa (Gaussian), filtrem o rozmiarze Width = 1.5 piksela (Rysunek 12.2.2a). Aby się przekonać, jak wyglądałby niewygładzony rezultat renderu, możesz maksymalnie zmniejszyć szerokość Film:Width. Co prawda wpisać zera się tam nie da, ale wartość 0.01 jest już wystarczająca. Wszystkie linie ukośne na obrazie są narysowane jako “schodki” poszczególnych pikseli (Rysunek 12.2.1c). To nie wygląda dobrze, nawet przy większej rozdzielczości (Rysunek 12.2.1b):

Rysunek 12.2.1 Próba pierwsza: zupełny brak wygładzania linii obrazu (Width = 0.0)

Porównajmy to z domyślnym filtrem wygładzania: Gaussian, Width = 1.5 (Rysunek 12.2.2):

Rysunek 12.2.2 Domyślne wygładzenie linii Blendera (Width = 1.5)

Ten rezultat wydaje się wyglądać poprawnie. Gdy rozwiniesz listę filtrów w panelu Render:Film, znajdziesz tam oprócz Gaussian jeszcze drugi typ filtru: Box. Nie używam go jednak, gdyż nie można mu regulować szerokości, tak jak filtrowi Gaussian. Efekty, które daj filtr Box są takie same, jakie pokazuje Rysunek 12.2.2.

A co by się stało, gdybyśmy zwiększyli wartość Width filtru Gaussian? Rysunek 12.2.3 pokazuje efekt uzyskany dla szerokości = 3.0:

Rysunek 12.2.3 Wzmocnione wygładzenie linii Blendera (Width = 3.0)

Choć krawędzie stały się jeszcze gładsze, to całość zaczyna wyglądać na nieco rozmytą. To niedobrze, bo takie rozmycie nie jest realistyczne. Raczej należy się wystrzegać „szerokich” filtrów wygładzania, chyba że wiesz dokładnie, co zamierzasz osiągnąć.

W praktyce dla pewnych ujęć i powiększeń będziesz potrzebował czasami nieznacznie zwiększyć szerokość filtra. Chodzi tu jednak o stosunkowo niewielkie poprawki — na tyle duże, by nie było widać granic pikseli, a na tyle małe by uniknąć efektu „rozmycia”. Tak właśnie zrobiłem na przykładzie, który jest przedstawiony przez Rysunek 12.2.4 i Rysunek 12.2.5:

Rysunek 12.2.4 Krawędzie przy Gaussian:Width = 1.5

Rysunek 12.2.5 Krawędzie przy Gaussian:Width = 2.0

Rysunek 12.2.4a) pokazuje (w skali 1:1) fragment niewielkiego obrazu. Jest wygładzony standardowym filtrem (Width = 1.5). Takie wygładzenie okazało się jednak w tym przypadku niewystarczające. Na cienkich liniach krawędzi pokryw silnika granice pikseli są dość wyraźne i kontrastowe (Rysunek 12.2.4b). Ten efekt uległ złagodzeniu, gdy zwiększyłem szerokość filtru do Width = 2.0 (Rysunek 12.2.5).

12.3  Linie pomocnicze (Grease Pencil)

Czasami pojawia się potrzeba szybkiego naszkicowania na ekranie jakiejś linii pomocniczej. W Blenderze służy do funkcja Grease Pencil. Jej nazwa pochodzi od miękkich ołówków lub kredek świecowych, którymi w latach 90-tych animatorzy 3D rysowali na szklanych ekranach monitorów różne pomocnicze linie. Grease Pencil przydaje się do zaznaczania wielu różnych rzeczy — na przykład do przeniesienia zarysu kolein z fotografii tła na podstawioną pod nim płaszczyznę „gruntu” (Rysunek 12.3.1):

Rysunek 12.3.1 Wykorzystanie linii pomocniczych do stworzenia tekstury kolein

W tym przypadku nie zależy nam specjalnie na dużej dokładności linii — uzyskany obraz kolein wykorzystamy jako teksturę w modyfikatorze Displace. Kształt kolein i tak ma być rozmyty. Do takich i podobnych zdań Grease Pencil nadaje się najlepiej.

Pokażę to na przykładzie malowania obrazu zabrudzeń. Użyję tu pomocniczych linii do zaznaczenia położenia jednego z jego źródeł: karabinów skrzydłowych. Zacznijmy od ustawiania parametrów narzędzia. Otwórz przybornik (Property Shelf — N) i w panelu Grease Pencil naciśnij przycisk New Layer (Rysunek 12.3.2a):

Rysunek 12.3.2 Grease Pencil — ustawienie parametrów aktualnej warstwy

W efekcie w panelu Grease Pencil pojawi się wiele nowych kontrolek (Rysunek 12.3.2b). Co właściwie się dzieje po naciśnięciu przycisku New Layer? Tak jak w Inkscape czy GIMP, Grease Pencil rysuje swoje linie na warstwach. Ten przycisk stworzył pierwszą z nich, o domyślnej nazwie GP_Layer. W nagłówku panelu możesz także zmienić nazwę warstwy, wyłączyć jej widoczność (ikona „oka”, po lewej), czy, w ostateczności, usunąć (ikona „X” po prawej). Grease Pencil przechowuje w takich warstwach to, co naszkicujesz.

Z każdą warstwą Grease Pencil (GP) jest związany jeden rodzaj linii. W panelu warstwy określasz barwę kreski, jej nieprzejrzystość ( Opacity), oraz szerokość (Thickness). Dla GP_Layer wybierz jakiś kontrastowy kolor linii — na przykład czerwony. Oprócz tego ustaw tryb Drawing Settings:Surface (Rysunek 12.3.2b). W tym trybie linie będą rysowane na powierzchni modelu.

Gdy ustawiłeś już parametry pracy, zamknij okno właściwości 3D View (N), a otwórz jego przybornik (T). U dołu panelu Object Tools znajdziesz zakładkę Grease Pencil. Dostępne są w niej cztery tryby rysowania. Wybierz z nich tryb Draw (Rysunek 12.3.3a, b):

Rysunek 12.3.3 Grease Pencil — przejście w tryb rysowania

Naciśnięcie przycisku Draw przełącza Blendera w tryb rysowania linii pomocniczych. W pasku stanu pojawia się wówczas wskazówka, jak malować i jak wyjść z tego trybu (Rysunek 12.3.3c).

Zgodnie z tą podpowiedzią, przeciągnij po rysunku myszką z wciśniętym LPM, rysując linię pomocniczą (Rysunek 12.3.4a):

Rysunek 12.3.4 Grease Pencil — rysowanie

Grease Pencil traktuje to jako szkicowanie, i odpowiednio „często” zapamiętuje kolejne pozycje kursora jako nowe wierzchołki linii. Gdy tylko zwolnisz przycisk myszki, Blender uzna że rysowanie w trybie Grease Pencil jest zakończone, i wyjdzie z tego trybu pracy. Obejrzyj rezultaty tego rysowania, obracając model. Przy okazji przekonasz się, jak działa opcja Surface: linia „leży” na powierzchni płata (Rysunek 12.3.4b).

Do usuwania narysowanych kresek służy drugi przycisk z przybornika: Grase Pencil: Erase (Rysunek 12.3.5a). Gdy go wciśniesz, kursor zmienia się w „krzyżyk” (Rysunek 12.3.5b). Przesuwając myszkę z wciśniętym LPM wymazujesz narysowane wcześniej linie.

Rysunek 12.3.5 Grease Pencil — usuwanie linii

Jeżeli chciałbyś narysować pojedynczy odcinek linii prostej, użyj polecenia Grease Pencil: Line. Z kolei polecenie Poly pozwala rysować wielolinię, złożoną z linii prostych.

Podobnie jak w przypadku warstw GIMP czy Inkscape, warstwy Grease Pencil można chować i wyświetlać (Rysunek 12.3.6):

Rysunek 12.3.6 Grease Pencil — wyłączanie widoczności warstwy

Do tej pory wykorzystywaliśmy obraz tekstury nierówności, by zaznaczyć na modelu za pomocą Grease Pencil położenie luf karabinów maszynowych. Teraz, gdy już te linie mamy, podstawmy w to miejsce obraz zabrudzeń, na który należy nanieść odpowiednie okopcenia za lufami (Rysunek 12.3.7):

Rysunek 12.3.7 Podmiana obrazu tekstury

Czasami, gdy wybierzesz inny obiekt, linie pomocnicze mogą być początkowo niewidoczne (Rysunek 12.3.8):

Rysunek 12.3.8 Włączenie warstw Grease Pencil dla drugiego skrzydła

W takim przypadku włącz je, wybierając z listy w panelu Grease Pencil odpowiedni blok danych.

Rysunek 12.3.9 Malowanie okopceń za lufami karabinów

Potem możesz się już przełączyć w tryb Texture Paint (por. str. 548) i namalować odpowiednie plamy (Rysunek 12.3.9). Dzięki odpowiednim liniom pomocniczym możesz widzieć dokładnie, gdzie umieścić źródło śladów sadzy, oraz w jakim kierunku należy rozpraszać te zabrudzenia.

Dodatki

Czytając wcześniejsze rozdziały, zapewne przekonałeś już się, że uwielbiam umieszczać u dołu strony przypisy z dodatkowymi informacjami. Ta część książki to właściwie wybór takich “uwag na marginesie”, które w trakcie pisania urosły do rozmiaru całej sekcji ☺.

Jak w każdym dodatku, są to informacje, z których nie musisz korzystać, aby stworzyć e-model samolotu. Czasami jednak mogą się przydać, by coś wyjaśnić lub ułatwić. Mam jednak nadzieję, że znajdziesz tu rozwinięcie wielu zagadnień, które świadomie skracałem w głównym tekście książki.

Rozdział 13.  Dodatkowe wyjaśnienia

W tym rozdziale umieściłem informacje “dla dociekliwych”. Znajdują się tu szczegółowe wyjaśnienia wybranych zagadnień, nad którymi nie chciałem się rozwodzić w części głównej. (Aby nie zbaczać z tematu).

13.1  Struktura danych modelu i sceny w Blenderze

Zapewne wiele razy, podczas pracy z Blenderem, mignęło Ci przed oczami tajemnicze słowo “datablock” (“blok danych”). Pojawia się w różnych miejscach i znaczeniach. Gdy zrozumiesz, czym w istocie jest dla Blendera “blok danych”, zrozumiesz także zasady, rządzące elementami rysunku (pliku). Pozwoli Ci to poprawnie przewidywać zachowanie programu, i bardzo ułatwi pracę[1].

Każdy model, który stworzyłeś w Blenderze, złożony jest z obiektów (Object) . Obiekt możesz traktować jak doskonale przejrzyste “pudełko”: ma określony rozmiar, środek (punkt odniesienia), położenie, obrót, skalę. Obiekt “sam z siebie” nie ma żadnego kształtu. Kształt określa siatka (Mesh) . Siatka właśnie jest pewnym rodzajem “bloku danych” (datablock). Zawiera złożone informacje o wierzchołkach, krawędziach, ścianach powłoki, która ma być rysowana na ekranie. Zazwyczaj każdy obiekt ma przypisaną “własną” siatkę[2] (Rysunek 13.1.1):

Rysunek 13.1.1 Obiekt i jego siatka

Czasami ten sam blok danych — siatka — może być użyta przez kilka różnych obiektów. Przykładem takiej sytuacji jest śmigło modelu P-40 (Rysunek 13.1.2).

To śmigło składa się z trzech identycznych łopat. Rysunek 13.1.2 przy każdym z tych obiektów pokazuje kontekst, wyświetlany w oknie Properties. Dwie nazwy, które są na nim widoczne, to odpowiednio:

- poprzedzona ikoną : nazwa obiektu;

- poprzedzona ikoną : nazwa siatki;

Poprzedzająca je ikona symbolizuje aktywną scenę, w której znajduje się obiekt. Nazwa aktywnej sceny nie jest tu wyświetlana, bo zazwyczaj widać ją przez cały czas u góry ekranu, w nagłówku okna Info.

Przyjrzyj się dokładnie opisom, wyświetlanym przez konteksty, które pokazuje Rysunek 13.1.2, a stwierdzisz, że każda z łopat jest obiektem o nazwie wyróżnionej środkową literą. (B.010.A.Blade, B.010.B.Blade, B.010.C.Blade). Zwróć także uwagę, że każdy z tych obiektów używa tej samej siatki — B.010.Blade. Gdy zmodyfikujesz kształt siatki w którymkolwiek z nich — zmienisz kształt wszystkich trzech łopat.

Rysunek 13.1.2 Łopaty śmigła — przykład jednej siatki współdzielonej przez trzy obiekty

Przypisanie bloku danych — w tym przypadku siatki do obiektu — jest na panelach Blendera obsługiwane przez typowy zestaw kontrolek (Rysunek 13.1.3) :

Rysunek 13.1.3 Kontrolki, zarządzające przypisanym blokiem danych

Poniżej opisu kontekstu zestawu Object Data wyświetlana jest nazwa siatki, aktualnie przypisanej do obiektu. Aby ją zmienić, należy wybrać inną z listy rozwijalnej, otwieranej przyciskiem po lewej. Jeżeli wybierzesz w tym miejscu siatkę o innym kształcie — zmieni się kształt obiektu.

Po prawej stronie nazwy bloku danych umieszczony jest licznik “użycia” (referencji). Siatka B.010.Blade jest przypisana do trzech obiektów, stąd na ilustracji widoczna jest liczba 3. Kiedy klikniesz w ten przycisk — Blender utworzy duplikat aktualnej siatki. Duplikat nosi taką samą nazwę jak pierwowzór, z dodatkową końcówką “.001”. Duplikat zastępuje oryginalną siatkę, przypisaną do obiektu.

Licznik referencji (“użycia”) bloku danych jest w Blenderze niezwykle ważny. Gdy siatka nie jest “użyta” przez żaden obiekt — jej licznik spada do zera. Wszelkie bloki danych o liczniku równym zero są pomijane przy zapisie pliku na dysk. Kołpak śmigła w naszym przykładzie — B.005.Hub — miał własną siatkę, o identycznej nazwie: B.005.Hub. Gdy usuniemy ten obiekt (Delete), siatka B.005.Hub nadal będzie istnieć, ale jej licznik “użycia” spadnie do zera.

Taki nie używany blok danych Blender oznacza na liście literą “O” (Rysunek 13.1.4) :

Rysunek 13.1.4 Siatka usuniętego kołpaka śmigła

Wszystkie bloki danych, które nie są wykorzystywane (“osierocone”), Blender pomija przy zapisie na dysk. Są w ten sposób, z opóźnieniem, usuwane z pliku.

Mimo wszystko, jeżeli tego chcesz, możesz uchronić siatkę B.005.Hub, przed “czystką” podczas zapisu. Trick polega na włączeniu przełącznik F (Fake user) przed usunięciem obiektu, który zawiera ten blok danych (Rysunek 13.1.5):

Rysunek 13.1.5 Zabezpieczenie bloku danych przed usunięciem — “Fałszywe” (Fake) użycie

Włączenie F powoduje zwiększenie licznika “użycia” o 1. (Oczywiście, zawsze możesz go z powrotem wyłączyć). Dzięki przełącznikowi F, licznik użycia bloku danych zawsze jest > 0.

Blok danych z atrybutem F nigdy nie będzie usunięty z pliku Blendera. (Nawet wtedy, gdy nie jest użyty przez jakikolwiek obiekt, jego licznik użycia jest = 1).

Blokiem danych w Blenderze jest praktycznie wszystko, z czym pracujesz tworząc scenę. W szczególności są to takie typowe elementy, jak:

- siatki (meshes — o nich już mówiliśmy): nadają obiektom kształt. Zawierają także inne szczegóły, m.in. współrzędne mapowania tekstury dla każdego wierzchołka;

- kamery (cameras): pomocniczy rodzaj obiektu, definiujący projekcję. Używany podczas renderowania;

- lampy (lamps): źródła światła, używane podczas renderowania

- obiekty ( objects): to „obudowa”, której zawartość (określana jako Object Data) jest referencją do jednego z bloków danych wyliczonych powyżej;

- materiał(y) (materials), przypisane do siatek: nadają powierzchniom podstawową barwę, oraz określają inne ich parametry, takie jak przejrzystość, połyskliwość, itp.;

- tekstury (textures), przypisane do materiałów: wzbogacają jednolitą barwę materiału elementy w innych kolorach, zabrudzenia. Pozwalają także uzyskać efekt drobnych nierówności;

- obrazy (images), przypisane do tekstur: zawierają obraz, wykorzystywany przez teksturę;

Prezentowany wcześniej model kołpaka śmigła składa się z czterech obiektów: kołpaka śmigła (B.005.Hub) i trzech łopat (B.010.x.Blade) (Rysunek 13.1.6a). Łopaty są przypisane (relacją parent) do kołpaka (Rysunek 13.1.6b):

Rysunek 13.1.6 Śmigło i jego struktura (w oknie Outliner)

Kołpak ma przypisany materiał B.005.Hub (nadający mu żółty kolor). Łopaty wykorzystują materiał B.010.Steel, który ma przypisaną teksturę B.010.Dirt. Tekstura B.010.Dirt korzysta z obrazu B.010.Blade, nakładając na łopatę żółte końcówki i zabrudzenia. Rysunek 13.1.7 przedstawia to na tzw. schemacie Oops:

Rysunek 13.1.7 Inny sposób przedstawienia struktury modelu śmigła (schemat Oops z Blendera 2.49)

Schemat Oops był dostępny w Blenderze 2.4, w wersji 2.5 z niego zrezygnowano. Pozostawiłem go tutaj, gdyż dobrze obrazuje strukturę pliku Blendera. Każdy prostokąt, który na nim widzisz, to jakiś blok danych. Każda z linii oznacza pojedyncze zwiększenie licznika bloku danych, z którego wychodzi. Na przykład: tekstura B.010.Dirt jest używana tylko raz. Jeżeli usuniesz ją z materiału B.010.Steel, zostanie pominięta przy najbliższym zapisaniu pliku. “Osierocony” zostanie wówczas używany przez tę teksturę obraz B.010.Blade. Ten obraz zostanie pominięty przy kolejnym zapisie. (Stąd uwaga praktyczna: czasami trzeba dwa — trzy razy zapisać, zamknąć i otworzyć plik, by wszelkie niepotrzebne “śmieci” zostały z niego usunięte).

W prawym górnym narożniku schematu (Rysunek 13.1.7) widać trzy obrazy, które nie są “powiązane” z niczym. Dlaczego nie zostały usunięte? Ponieważ są to tła poszczególnych widoków 3D: rysunki samolotu w rzucie z góry, lewej i przodu. Każdy z nich ma w istocie licznik użycia = 1, bo jest przypisany do konkretnego okna 3D View (jako Background Image). Schemat Oops nie pokazywał wszelkich połączeń w pliku Blendera, obrazował tylko strukturę sceny. Np. innym rodzajem bloku danych są teksty, które można przeglądać w oknie Text Editor. To także bloki danych “używane” przez plik, a nie konkretną scenę.

Rysunek 13.1.7 pokazuje, że obiekty — B.005.Hub, B.010.x.Blade, a także Lamp i Camera — są także blokami danych. Ich “użytkownikiem”, dzięki któremu mają przypisane “użycia”, jest scena.

Rysunek 13.1.8 demonstruje strukturę pliku Blendera, w którym utworzyłem drugą scenę (por. str. 381) — nazwałem ją Spares.

Rysunek 13.1.8 Dwie oddzielne sceny w jednym pliku

Scena — to brzmi dumnie. W tym przypadku jednak to tylko nowa, pusta przestrzeń, w której umieściłem drugi raz kołpak śmigła[3]. Popatrz na schemat Oops (Rysunek 13.1.8) — obiektowi B.005.Hub przybyła jeszcze jedna linia, czyli jeszcze jedno “użycie”. Jeżeli teraz nawet usunę ten obiekt ze sceny Scene, to pozostanie w drugiej scenie — Spares. Zawsze mogę go stamtąd przywołać. W ten sposób można używać drugiej sceny jak “podręcznego składziku”. W przestrzeni Spares można przechowywać różne obiekty, które się jeszcze przydadzą, a których nie chcę widzieć w podstawowej scenie.

Obiekt, który jest użyty na wielu scenach, w każdej z nich ma to samo położenie, obrót, skalę. W końcu nic dziwnego — każda ze scen zawiera tylko odnośnik do jednego bloku danych, opisującego obiekt.

Rysunek 13.1.9 przedstawia strukturę pliku po usunięciu ze sceny Scene kołpaka śmigła (obiektu B.005.Hub). Usunięcie spowodowało zmniejszenie licznika użycia obiektu B.005.Hub o 1. Gdyby występował tylko na jednej scenie — zostałby pominięty przy najbliższym zapisie na dysk[4]. Tak się jednak nie stanie, gdyż B.005.Hub nadal występuje w drugiej scenie, i jego licznik jest nadal większy od 0.

Rysunek 13.1.9 Struktura pliku po usunięciu obiektu B.005.Hub ze sceny Scene

Plik Blendera może zawierać wiele scen. Te same elementy modelu może występować w każdej z nich. Można ich także użyć tylko w jednej ze scen.

Za pomocą scen można przechowywać w jednym pliku różne wersje samolotu. Części wspólne dla wszystkich wersji są wówczas współdzielone pomiędzy scenami. Części specyficzne — występują tylko w jednej scenie.

[1] (str. 569) "Datablock" należy do słów, którym udaje się czasami wymknąć z żargonu programistów. W istocie każdy większy program posiada swoje własne słownictwo. Składa się na nie określenia żargonowe, które twórcy używali tak często, że bezwiednie zaczęli umieszczać w komunikatach i objaśnieniach. Ci ludzie żyją z tymi słowami na co dzień, i zupełnie nie zauważają, że "zwykli" użytkownicy mogą ich nie rozumieć. Na przykład w AutoCAD-zie podobnym słowem było "entity", przeniesione żywcem z fachowej terminologii baz danych.

[2] (str. 569) Choć nie jest to regułą. W Blenderze istnieje specjalny rodzaj obiektu "pustego", który nie zawiera żadnej siatki. Można go utworzyć za pomocą polecenia Add→Empty. "Puste" obiekty używane są do wielu pomocniczych ról — oznaczania ważnego miejsca modelu, określania orientacji tekstur, itp.

[3] (str. 573) poleceniem Object→Make Links→To Scene

[4] (str. 573) Zauważ, że mimo usunięcia ze przestrzeni Scene, obiekt B.005.Hub pozostał obiektem nadrzędnym (parent) dla łopat śmigła (Rysunek 13.1.9). Dzięki temu ma trzy dodatkowe "użycia". To wygląda trochę na jakieś niedopatrzenie w Blenderze, gdyż w sytuacji jak na rysunku te powiązania nie działają poprawnie. (Gdy w przestrzeni Spares przesuniesz lub obrócisz B.005.Hub, nie spowoduje to żadnych zmian w położeniu łopat w przestrzeni Scene). W dodatku, gdyby B.005.Hub istniał tylko na scenie Scene, jego usunięcie usunęłoby także powiązania typu "parent" z łopatami. W efekcie zostałby "wyrugowany" z pliku, tak jak to opisałem.

13.2  Arytmetyka barw

Każdy z programów, wykorzystywanych w tej książce, używa barw wyrażonych poprzez intensywność trzech niezależnych składników (kanałów): czerwonego (R), zielonego (G) i niebieskiego (B). Taki model często określa się jako „RGB”, i jest niezwykle popularny w grafice komputerowej.

Intensywność każdego ze składników barwy jest wyrażona liczbą od 0.0 (brak) do 1.0 („najjaśniejszy”). Rysunek 13.2.1 pokazuje, jak z wartości R, G, B jest tworzona barwa:

Rysunek 13.2.1 Przykład zakodowania barwy za pomocą składników RGB — różne odcienie czerwieni

Czasami wraz z trójką R, G, B występuje czwarty składnik — nieprzejrzystość. Oznaczany jest jako „alfa” (A) i używany jako dodatkowy czynnik przy łączeniu barw. Steruje udziałem każdego ze składników. A = 1.0 oznacza kompletną nieprzejrzystość, A = 0.0 — zupełną przejrzystość.

Aby przyśpieszyć obliczenia i zmniejszyć ilość pamięci, potrzebnej do przechowywania obrazu, składniki R, G, B, A zapisuje się w obrazie jako 8-bitowe liczby całkowite (o wartościach od 0 do 255). W takim przypadku 255 odpowiada oryginalnej wartości 1.0. Z zapisu barw na liczbach całkowitych wziął się, występujący w GIMP i Inkscape, zwyczaj podawania intensywności składnika barwy w skali od 0 do 255.

We wszystkich programach, opisywanych w tej książce, pojawiają się nazwy operacji, przeprowadzanych na barwie (lub intensywności) pikseli: Add, Multiply, Substract, .... W przypadku Blendera może to być tryb łączenia dwóch obrazów w węźle Color:Mix (por. str. 158, Rysunek 4.6.22). W przypadku Gimpa to tryb Mode (str. 227), a w Inkscape — Blend Mode (str. 289, Rysunek 6.9.1). W przypadku programów 2D tryby te sterują nałożeniem obrazu z aktualnej warstwy na warstwy poprzednie (czyli sumę warstw leżących „poniżej”). Postaram się w tej sekcji wyjaśnić efekty każdego z tych trybów, gdyż czasami nie są intuicyjne.

Zacznijmy od zwykłego złożenia dwóch warstw — w Blenderze to nazywa się Mix, a w Gimpie i Inkscape — Normal. Rysunek 13.2.2 pokazuje przykład prostego nałożenia czerwonej, kompletnie nieprzejrzystej warstwy P, na niebieskie tło t. Rysunek 13.2.3 przedstawia tę samą sytuację, ale z częściową przejrzystością warstwy P. Jak programy obliczają kolor złożenia tych dwóch warstw (obszaru rezultatu — c)?

Rysunek 13.2.2 Złożenie podłoża t i warstwy P w trybie Mix/Normal. P zupełnie nieprzejrzysta

Rysunek 13.2.3 Złożenie podłoża t i warstwy P w trybie Mix/Normal. P o nieprzejrzystości = 0.4

Przyjrzyjmy się dokładniej przypadkowi, który pokazuje Rysunek 13.2.3. W metodzie Mix/Normal składniki R,G,B barwy wynikowej c są wyznaczane jako tzw. „średnia ważona” składników barw t i P. „Wagą” tej średniej jest nieprzejrzystość A warstwy leżącej „na wierzchu” — P [1]:

gdzie:

c — rezultat nałożenia barw (por. Rysunek 13.2.3);

t — barwa tła (por. Rysunek 13.2.3);

P — barwa warstwy nakładanej (por. Rysunek 13.2.3);

A — nieprzejrzystość (składnik Alfa) warstwy P;

Wyr 13.1 Wyznaczanie rezultatu „zwykłego” mieszania barw (operacja nazywana Mix lub Normal)

Jak „działa” Wyr 13.1? Podstawmy do niego takie wartości, jakie podaje Rysunek 13.2.3. Na niebieskie (R = 0, G = 0, B = 1) tło t została nałożona półprzejrzysta (A = 0.4) warstwa P, w kolorze czerwonym (R = 1, G = 0, B = 0). Komponenty R, G, B barwy c wyznaczamy, podstawiając do Wyr 13.1 odpowiednie komponenty barw t i P (Rysunek 13.2.4):

Rysunek 13.2.4 Wyznaczenie nałożenia barw warstwy t i P (A = 0.4 — por. Rysunek 13.2.3) w trybie Mix/Normal.

Rysunek 13.2.4 pokazuje, że każdy z komponentów barwy można traktować jako intensywność — czyli odcień szarości. Komponenty rezultatu c są wyznaczane niezależnie, poprzez podstawienie do odpowiedniego wzoru. Dlatego w dalszej części tej sekcji każdą z operacji na barwach omówię, przedstawiając jej ogólny wzór (taki, jak ten z Wyr 13.1), oraz rezultat — w postaci złożenia dwóch prostopadłych gradientów szarości (Rysunek 13.2.5a):

Rysunek 13.2.5 Sposób prezentacji wyników nałożenia dwóch warstw, z różnymi kierunkami gradientu szarości.

Rezultat nałożenia — z odpowiednim operatorem — warstwy P na t (Rysunek 13.2.5a) będę pokazywać na schematycznym kwadracie (Rysunek 13.2.5b). Możesz na nim zobaczyć wynik połączenia każdego odcienia szarości P z każdym odcieniem szarości tła t. Z góry i z lewej strony kwadratu są pokazane oryginalne kolory pikseli z warstw P i t. To jakby osie układu współrzędnych, z których możesz wybrać interesujący Cię odcień pikseli wejściowych. Na przecięciu prostopadłych do osi P i t widzisz barwę rezultatu operacji (por. Rysunek 13.2.5b).

Domyślną operację — Mix / Normal — już omówiliśmy. Rysunek 13.2.6 przedstawia operację dodawania:

Dodawanie:

gdzie:

c — rezultat nałożenia barw;

t — barwa tła;

P — barwa warstwy nakładanej;

A — nieprzejrzystość (składnik Alfa) warstwy P;

Clip: funkcja „obcinająca” do 1.0 wartości > 1.0.

Wyr 13.2 Dodawanie wartości pikseli (Add lub Addition)

Rysunek 13.2.6 Przykład dodawania pikseli

Dodawanie wartości pikseli rozjaśnia obraz. Charakterystyczne dla dodawania jest „obcinanie” rezultatu do 1.0. (Nie ma nic „bielszego od bieli”). Tę operację zapisaliśmy w Wyr 13.2 jako funkcję Clip. Rysunek 13.2.6 pokazuje efekt jej „załączenia” — pół testowego kwadratu jest białe. To obszar, gdzie suma składników barwy t i P była > 1.0.

A teraz odwrotność dodawania: — Substract. Rysunek 13.2.7 przedstawia rezultaty tej operacji:

Odejmowanie:

gdzie:

c — rezultat nałożenia barw;

t — barwa tła;

P — barwa warstwy nakładanej;

A — nieprzejrzystość (składnik Alfa) warstwy P;

Clip: funkcja „obcinająca” do 0.0 wartości < 0.0.

Wyr 13.3 Odejmowanie wartości pikseli (Substract lub Substraction)

Rysunek 13.2.7 Przykład odejmowania pikseli

Odejmowanie wartości pikseli ściemnia obraz. Charakterystyczne dla odejmowania jest „odrzucanie” rezultatów < 0. (Nie ma nic „czarniejszego od czerni”). Tę operację zapisaliśmy w Wyr 13.3 jako funkcję Clip. Rysunek 13.2.7 pokazuje efekt jej „załączenia” — pół testowego kwadratu jest całkowicie czarne. To obszar, gdzie różnica składników barwy t i P była < 0.

Kolejną typową operacją jest mnożenie — Multiply. Rysunek 13.2.8 przedstawia rezultaty tej operacji:

Mnożenie:

gdzie:

c — rezultat nałożenia barw;

t — barwa tła;

P — barwa warstwy nakładanej;

A — nieprzejrzystość (składnik Alfa) warstwy P;

Wyr 13.4 Mnożenie wartości pikseli (Multiply)

Rysunek 13.2.8 Przykład mnożenia pikseli

Mnożenie wartości pikseli ściemnia obraz (gdyż mnożysz przez wartości poniżej 1.0). W odróżnieniu od odejmowania, żadna część testowego kwadratu, który przedstawia Rysunek 13.2.7, nie jest czarna. To są obszary zabarwione na bardzo ciemny kolor szary.

Kolejną typową operacją jest dzielenie — Divide. Rysunek 13.2.9 przedstawia rezultaty tej operacji:

Dzielenie:

gdzie:

c — rezultat nałożenia barw;

t — barwa tła;

P — barwa warstwy nakładanej;

A — nieprzejrzystość (składnik Alfa) warstwy P;

Clip: funkcja „obcinająca” do 1.0 wartości > 1.0, w tym także nieskończoność (gdy AP = 0)

Wyr 13.5 Dzielenie wartości pikseli (Divide)

Rysunek 13.2.9 Przykład dzielenia pikseli

Dzielenie wartości pikseli rozjaśnia obraz (gdyż dzielisz przez wartości poniżej 1.0). Charakterystyczne dla dzielenia jest „obcinanie” rezultatu do 1.0. (W tym także nieskończoności, występującej dla A= 0 lub P = 0). Tę operację zapisaliśmy w Wyr 13.5 jako funkcję Clip. Rysunek 13.2.9 pokazuje efekt jej „załączenia” — pół testowego kwadratu jest białe. To obszar, gdzie suma składników barwy t i P była > 1.0. Zwróć uwagę, że rozkład szarości na przeciwległej połowie jest inny, niż w przypadku dodawania (por. Rysunek 13.2.6)

Kolejną typową operacją jest przyciemnienie — Darken. Rysunek 13.2.10 przedstawia rezultaty tej operacji:

Zaciemnienie:

gdzie:

c — rezultat nałożenia barw;

t — barwa tła;

P — barwa warstwy nakładanej;

A — nieprzejrzystość (składnik Alfa) warstwy P;

Min: funkcja, zwracająca wartość mniejszego z dwóch argumentów

Wyr 13.6 Ściemnianie wartości pikseli (Darken)

Rysunek 13.2.10 Przykład ściemniania pikseli

Ściemnianie obrazu jest operacją dość intuicyjną. Z każdej pary pikseli (jeden należy do tła, drugi — do nakładanej warstwy) wybiera ten ciemniejszy.

Operacją odwrotną do ściemnienia jest rozjaśnienie — Lighten. Rysunek 13.2.11 przedstawia rezultaty tej operacji:

Rozjaśnienie:

gdzie:

c — rezultat nałożenia barw;

t — barwa tła;

P — barwa warstwy nakładanej;

A — nieprzejrzystość (składnik Alfa) warstwy P;

Max: funkcja, zwracająca wartość większego z dwóch argumentów

Wyr 13.7 Rozjaśnianie wartości pikseli (Lighten)

Rysunek 13.2.11 Przykład rozjaśniania pikseli

Rozjaśnianie obrazu jest operacją dość intuicyjną. Z każdej pary pikseli (jeden należy do tła, drugi — do nakładanej warstwy) wybiera ten jaśniejszy.

Na listach rozwijalnych Blendera i Gimpa znajdziesz więcej operacji, niż omówiłem w tym dodatku. Mówiąc szczerze, nie miałem okazji ich do tej pory używać. Jeżeli jednak chciałbyś sprawdzić, jak każda z nich działa — możesz skorzystać z pliku optional\pixel_operations.xcf (por. str. 20). To obraz Gimpa, zawierający dwie warstwy, odpowiadające gradientom t i P. Wykorzystywałem go do wygenerowania ilustracji dla tej sekcji. Możesz go otworzyć i wybrać w Gimpie, z zakładki Layers jakiś inny tryb mieszania barw. Sam się wtedy przekonasz, jak działa.

[1] (str. 576) Uwaga: węzeł Color:Mix w Blenderze operuje wyłącznie na składnikach R,G,B, podłączanych do wejść Color1 i Color2. Przejrzystość A obrazu musisz uwzględnić w sposób „jawny”, podłączając ten kanał do gniazda Fac.

13.3  Określanie dokładnych barw samolotu

Jak przełożyć typowy opis barw samolotu — „górne powierzchnie w kolorze Olive Drab, dolne — Neutral Gray, wewnętrzne — Zinc Chromate ” — na konkretne wartości R, G, B, które można wpisać w konkretny program komputerowy?

Omówię to właśnie na przykładzie podanego powyżej, regulaminowego maglownia P-40 w USAAC[1]. Sprawa wydaje się prosta jak drut: znamy nazwy farb, więc wystarczy gdzieś znaleźć obraz ich próbek, zidentyfikować wartości komponentów R, G, B, i po sprawie. Regulamin to regulamin!

No właśnie — regulamin regulaminem, a w rzeczywistości nic nie jest takie oczywiste. Farby stosowane w latach 40-tch XXw. w lotnictwie to nie współczesne lakiery samochodowe! Z upływem czasu zmieniały barwę — na skutek długotrwałego działania promieni słonecznych, wilgoci, różnic temperatur występujących na różnych pułapach lotu. Zazwyczaj kolory blakły (Rysunek 13.3.1):

Rysunek 13.3.1 Zmiany odcienia Olive Drab w zależności od stopnia zużycia powierzchni.

Farby pochodziły od wielu dostawców (każdy producent samolotów miał ich prawdopodobnie paru). Po rozpoczęciu wojny przez USA wystąpiły braki komponentu stabilizującego barwę, opartego na kadmie. (Ten rzadki metal zawłaszczył przemysł ciężki do uszlachetniania pancerzy czołgów). Substytuty nie pozostały bez wpływu na jakość pokrycia samolotów. W szczególnych przypadkach na ich powierzchni mogły zajść dziwne reakcje chemiczne. Na przykład Olive Drab na wczesnych modelach P-38 „Lightning” z 14 FG, walczącej w Afryce Północnej, osiągnął po jakimś czasie odcień jaskrawej purpury!

Rysunek 13.3.2 Przyjęty w modelarstwie odcień, odpowiadający barwie Neutral Grey.

Dolne powierzchnie samolotu nie są prawie nigdy poddane działaniu promieni słonecznych, stąd nie ulegają tak intensywnemu wietrzeniu, jak powierzchnie górne. Rysunek 13.3.2 przedstawia kolor, który według modelarzy najlepiej odpowiada „eksploatacyjnemu” Neutral Gray.

Na tej ilustracji (Rysunek 13.3.2) specjalnie umieściłem go na tle „komputerowej” barwy szarej (50% czerni i 50% bieli). Widzisz, że ten kolor ma jakiś błękitnawy odcień? Gdybyś zasugerował się nazwą, na pewno użyłbyś prostej mieszanki bieli i czerni! Świat nazw barw, określonych regulaminami, pełen jest takich pułapek.

Swoją drogą — to była dość ciemna farba, jak na dolne powierzchnie. W pozostałych armiach używano do tego celu o wiele jaśniejszych odcieni (no, może poza Azure Blue RAF z Afryki Północnej).

A jaką właściwie miał barwę miała farba podkładowa Zinc Chromate ? Tu się zaczynają jeszcze większe kłopoty, bo to właściwie nie była farba w pełnym tego słowa znaczeniu, tylko dość rzadki i przejrzysty podkład, o właściwościach antykorozyjnych. Jego barwa zależała od barwy pomalowanego materiału: żółtozielona na białej kartce papieru, stawała się bardziej zielona na powierzchniach aluminiowych[2] (Rysunek 13.3.3a,b):

Rysunek 13.3.3 Barwy podkładów Zinc Chromate w zależności od zastosowanych dodatków i powierzchni.

Rysunek 13.3.4 Przepisowa barwa Interior Green.

„Surowy” Zinc Chromate nie nadawał się do pomalowania wnętrza kabiny — był zbyt jasny i, w pewnych sytuacjach, kontrastowy. Siły powietrzne zalecały używać do malowania takich miejsc Zinc Chromate zaciemnionego za pomocą czerni Lamp Black. Curtiss uprościł sobie malowanie, zamawiając u dostawcy gotową, zaciemnioną farbę. Używał jej jako podkładu oraz do zabezpieczenia wszelkich powierzchni wewnętrznych, nie tylko kabiny (chyba nakładał tam drugą warstwę?). Barwa ta była często określana jako Curtiss Green (Rysunek 13.3.3c). Różniła się nieco odcieniem od ostatecznie ustalonej regulaminem z 1943r barwy Interior Green (Rysunek 13.3.4), która także była po prostu zaczernionym Zinc Chromate — tyle, że w innej proporcji.

Skąd właściwie wziąłem przedstawione tu próbki kolorów? No cóż, w różnorodnych modelarskich opisach dość często jest podawany ekwiwalent barwy, wyrażony za pomocą symbolu z jednego z powszechnie używanych wzorców. Najczęściej chyba stosowany jest amerykański Federal Standard 595B, określany także skrótem FS. Na przykład na stronie http://www.fed-std-595.com/FS-595-Paint-Spec.html można znaleźć listę stosowanych w modelarstwie nazw farb, wraz z próbką koloru i wartościami RGB (Rysunek 13.3.5):

Rysunek 13.3.5 Fragment listy wybranych barw (tzw. „Fan Deck”) z serwisu www.fed-std-595.com.

Wartości R,G,B są w serwisie www.fed-std-595.com podawane w postaci szesnastkowej (heksadecymalnej). Wartość składnika R to pierwsze dwa znaki, określające liczbę od 0 do 255, wartość składnika G to dwa znaki środkowe, a B — dwa ostatnie. Gdy zmienisz każdą z tych liczb na dziesiętną, i podzielisz przez 255, uzyskasz wartości z zakresu 0..1, takie jak te używane do „arytmetyki barw” (por. str. 575). Zresztą — nie musisz się nawet tak wysilać, bo i w Inkscape, i w GIMP, i w Blenderze można wpisać wprost te heksadecymalne kody. Nazywa się to tam HTML notation, czy jakoś podobnie.

Serwis www.fed-std-595.com udostępnia za darmo tylko wybór najczęściej spotykanych wzorów barw. Aby uzyskać próbki dowolnego z istniejących symboli FS, skorzystaj z innego serwisu: http://colorserver.net (Rysunek 13.3.6):

Rysunek 13.3.6 Początkowy ekran serwisu colorserver.net.

Na ekranie początkowym możesz wpisać w pole FS Color jeden lub więcej (gdy chcesz zobaczyć próbki obok siebie) symboli FS. Po naciśnięciu przycisku Display color(s) zobaczysz rezultat (Rysunek 13.3.7):

Rysunek 13.3.7 Przykładowa próbka, zwrócona przez serwis colorserver.net.

Mówiąc szczerze, rozmyślnie umieściłem na ilustracji powyżej próbkę FS 34088 (typowy, najczęściej spotykany odcień Olive Drab). Porównaj odcień tę próbkę z próbką tego samego symbolu, przedstawioną przez serwis www.fed-std-595.com (Rysunek 13.3.5). Różnią się zdecydowanie! I która z tych próbek jest prawidłowa? W takich sytuacjach możesz „sprawdzić zeznania trzeciego świadka”, np. serwisu http://www.chassis-plans.com/paint_fed-std-595.html (myślnik występuje w oryginalnym adresie). Wydawałoby się, że powinna się tam znajdować kopia www.fed-std-595.com, bo strona wyraźnie mówi że skorzystała z tych zasobów. Ku mojemu zaskoczeniu, FS 34088 ma tam jasny odcień — taki jak ten pokazywany przez colorserver.net!

Zawsze warto sprawdzić próbkę barwy, odpowiadającą danemu symbolowi FS, w co najmniej dwóch źródłach. W przypadku różnicy — warto sprawdzić jeszcze w trzecim, i wybrać najbardziej prawdopodobny kolor. Dopóki można, kieruj się wiedzą historyczną. Gdy wszystko zawiedzie — zdaj się na wyczucie ☺.

Po wielu próbach odnoszę wrażenie, że na www.fed-std-595.com wiele barw jest ciemniejszych — wzorowali się na odcieniach widocznych w otwartej puszce ze świeżą farbą, czy jak? Serwisu colorserver.net też nie należy traktować jako wyroczni: zdarzają się im błędy. Na przykład barwa Interior Green (FS 34151) , podana przez każdy z tych trzech serwisów wygląda inaczej (Rysunek 13.3.8):

Rysunek 13.3.8 Próbka Interior Green, wg trzech różnych serwerów barw.

Ciekawe, prawda? Każda z próbek ma inny odcień. Wartości R,G,B, podane explicite przez www.fed-std-595.com i www.chassis-plans.com są potwierdzeniem, że to nie jest przypadek. Być może cały problem z odwzorowaniem cyfrowym polega na tym, że Federal Standard 595b jest oparty na zestawie fizycznych wzorników (można je kupić po 158 USD za komplet). Barwy, pokazywane w Internecie, mogły powstać poprzez skanowanie powierzchni tych wzorników. Wygląda na to, że każdy z użytych skanerów był nieco inaczej skalibrowany ☺. Próbka z www.chassis-plans.com jest najbardziej żółta. Znając „pochodzenie” Interior Green (zaczerniony Zinc Chromate) — można przypuszczać, że ta właśnie wersja (Rysunek 13.3.8c) jest najbliższa prawdy.

Jak na razie, w literaturze modelarskiej nikt nie podaje barw posługując się wprost wartościami R,G,B. Odniesienia do takich wzorców, jak barwy FS, traktuj jako pewne przybliżenia. Dla tego samego symbolu FS próbki barw, pokazywana przez różne serwisy internetowe, mogą się różnić!

Jedno z podanych tu źródeł — colorserver.net — pokazuje tylko próbki koloru, bez podawania wartości liczbowych R, G, B. Na szczęście nie jest to duże utrudnienie. Możesz załadować do GIMP „zrzut ekranu” z oknem przeglądarki. Potem w GIMP pobrać próbkę barwy za pomocą narzędzia Color Picker, i sprawdzić w oknie właściwości koloru wartości liczbowe jego komponentów (szczegóły — str. 253).

[1] (str. 580) Do 1942r. siły powietrzne armii USA nosiły nazwę USA Air Corps — USAAC. Dopiero potem zmieniono je na USA Air Force (USAAF).

[2] (str. 581) W budownictwie i przemyśle stalowym lokalne odmiany Zinc Chromate nadal są stosowane (oczywiście, pod różnymi nazwami). Prawdopodobnie widziałeś nie raz stalowe elementy konstrukcji, pokryte czerwonawą, matową farbą. To właśnie Zinc Chromate, z dodatkiem czerwonego tlenku żelaza. O ile się nie mylę, taki podkład nazywany jest w Polsce „minią”.

13.4  Odbicie światła przez materiały (IOR i współczynnik Fresnela)

Kiedy światło pada na przejrzystą powierzchnię (np. warstwy szkła) jego kierunek ulega zmianie. Jednocześnie pewna jego część ulega odbiciu. Schemat tego zjawiska przedstawia Rysunek 13.4.1. Padający na powierzchnię szkła pod kątem θi promień ri ulega rozszczepieniu. Część rt (zazwyczaj większa) przenika przez szkło pod mniejszym kątem (θt ), a część rr ulega odbiciu pod takim samym kątem jak kąt padania (θi = θr ).

Rysunek 13.4.1 Załamanie światła w szkle: schemat

Rysunek 13.4.2 Załamanie światła w szkle: przykład

Używając w Cycles materiału imitującego szkło (por. str. 492) możesz taki efekt uzyskać także na renderze. Rysunek 13.4.2 przedstawia rezultat załamania światła przez owiewkę kabiny: podwójny obraz końcówki płata. Jednocześnie w innym miejscu tej osłony pojawia się jasne pasmo światła słońca — to z kolei efekt odbicia części jego promieni od powierzchni obiektu.

Zmiana kierunku światła na granicy dwóch ośrodków nazywana jest refrakcją. Fizycy są w stanie określić dla każdego materiału tzw. współczynnik refrakcji (ang. index of refraction — IOR). Ta bezwymiarowa wartość pozwala określić o ile zmieni się kierunek światła:

Rysunek 13.4.3 Zmiana kierunku światła w zależności od wartości IOR materiału

Wartość IOR określa, ile razy materiał spowalnia światło w stosunku do prędkości światła w próżni (c). Zależy od długości (czyli barwy!) padającego światła, choć nie są to duże zmiany. Za to dla fal o zupełnie innych długościach — promieni Roentgena lub sygnałów radaru — IOR materiału może być zupełnie inny.

Współczynnik IOR powietrza jest praktycznie równy 1.0. Współczynniki IOR dla typowych przejrzystych materiałów, które możesz napotkać w modelach samolotów, wynoszą:

- Szkło organiczne (plexiglas): 1.55;

- Szkło zwykłe: dla różnej brawy światła widzialnego od 1.45 do 1.52 (to niewielka różnica, którą można zaniedbać w naszych zastosowaniach);

A ile światła odbija się od powierzchni szkła (por. Rysunek 13.4.1, promień rr )? To także zależy od kąta, pod którym pada promień (Rysunek 13.4.4):

Rysunek 13.4.4 Udział ilości światła odbijanego przez gładką powierzchnię szkła w zależności od kąta padania promieni

Z pomiarów wynika, że szkło odbija 4% światła padającego pod kątem prostym (θi = 0º — por. Rysunek 13.4.1). Dla większych kątów padania światła zaczyna mieć wpływ jego polaryzacja. (To kierunek oscylacji fali elektromagnetycznej, jaką jest światło). Np. szkło jest idealnie przejrzyste dla promieni spolaryzowanych w kierunku równoległym (p) do jego powierzchni, padających pod kątem 57º (tzw. kąt Brewstera).

Rysunek 13.4.5 przedstawia, jak ta zależność ilości odbitego światła od kąta pochylenia powierzchni szkła przekłada się na wygląd modelu:

Rysunek 13.4.5 Odbicie światła przez szybę (model)

Żyjący na przełomie XVIII i XIX francuski inżynier Augustine Fresnel opracował wyrażenie matematyczne które pozwala obliczyć udział światła odbijanego przez gładką powierzchnię. Uzyskana krzywa zależy od współczynnika refrakcji (IOR) materiału. Dla IOR = 1 zawsze jest równa 0. Rysunek 13.4.6 przedstawia przebieg krzywych Fresnela dla różnych wartości współczynników refrakcji:

Rysunek 13.4.6 Współczynnik Fresnela dla materiałów nie przewodzących elektryczności (IOR > 1)

To właśnie te wartości zwracają w Blenderze węzły Fresnel i Layer Weight:Fresnel (por. str. 449). Linia łącząca współczynniki Fresnela dla IOR = 1.5 odpowiada dokładnie rezultatom pomiarów dla szkła oświetlonego światłem niespolaryzowanym (por. Rysunek 13.4.6 i Rysunek 13.4.4). Największy współczynnik IOR spośród występujących w naszym otoczeniu związków chemicznych ma krzem: 4.24. Na wykresie umieściłem jednak także linie odpowiadające dużo wyższym wartościom współczynnika refrakcji. Traktując krzywe Fresnela jak każdą inną funkcję matematyczną, jest to dopuszczalne (por. rezultat użycia przy mieszaniu barw — por. str. 450, Rysunek 10.5.9c). Na razie zwróć uwagę, że dla każdego IOR > 5 współczynniki Fresnela osiąga minimum dla kątów padania pomiędzy 70º a 90º. Wartość tego minimum zmierza do 0.5 dla coraz większych współczynników refrakcji. Praktycznie osiąga go dla IOR = 20 i to już nie ulega zmianie. Potem można obserwować tylko przesuwanie kąta padania, przy którym to minimum występuje, w kierunku 90º. (Jak pokazuje Rysunek 13.4.6, dla IOR = 100 współczynnik Fresnela osiąga najmniejsza wartość dla światła padającego pod kątem 89.4º).

Czy wiesz, że współczynnik Fresnela opisuje odbijanie światła nie tylko dla materiałów przejrzystych, ale także nieprzejrzystych? Wszystko zależy tylko od tego, jak gładka jest oświetlona powierzchnia (Rysunek 13.4.7):

Rysunek 13.4.7 Odbicie światła przez powierzchnie przejrzyste i nieprzejrzyste o identycznej gładkości

Współczynnik Fresnela opisuje ilość światła odbijanego przez każdą gładką powierzchnię — zarówno przejrzystą, jak i nieprzejrzystą

Dzieje się tak, gdyż współczynnik refrakcji opisuje załamanie na granicy ośrodka nie tylko światła, a wszelkich fal elektromagnetycznych. Dla ciał nieprzejrzystych może zostać obliczony z ich tzw. przenikalności elektrycznej (ang. electric permittivity). Wartości IOR dla różnych materiałów możesz łatwo znaleźć w Internecie.

Udział odbitego światła dla promieni padających prostopadle na gładką powierzchnię dielektryka (szkła, plastiku, i temu podobnych izolatorów), gdy otoczenie wypełnia powietrze, można obliczyć ze wzoru:

Wyr 13.8 Odbita ilość prostopadłego światła (θi = 0)

Gdzie:

F_0 — współczynnik Fresnela (dla θi = 0º);

IOR — współczynnik refrakcji materiału;

Założenie: IOR otoczenia jest = 1.

Dla wszystkich powierzchni i niezbyt dużych kątów padania (θi = 0º..45º) możesz traktować tę wartość jako stałą. Ten wzór pozwala oszacować dla danego IOR „połyskliwość” większej części widocznej powierzchni materiału.

Ze związku IOR z przewodnictwem elektrycznym ośrodka wynika fakt, że wszystkie materiały nie przewodzące elektryczności (dielektryki) mają IOR >= 1.0. Z tego samego powodu metale, jako przewodniki, odbijają światło w zupełnie inny sposób. Weźmy na przykład takie aluminium (Rysunek 13.4.8):

Rysunek 13.4.8 Udział ilości światła odbijanego przez gładką powierzchnię aluminium w zależności od kąta padania promieni

Wzory na współczynnik Fresnela dla metali (przewodników) są inne. Współczynnik refrakcji jest w nich tzw. liczbą zespoloną. Wartość IOR metalu pełni w nim rolę tzw. części rzeczywistej. Z częścią urojoną (☺) liczby zespolonej jest tu związany dodatkowy współczynnik absorpcji. Dlatego nie bądź zdziwiony, gdy w podawanych w Internecie tabelach IOR znajdziesz dla srebra wartość = 0.189. To wcale nie znaczy, że światło mknie w srebrze pięć razy szybciej niż w próżni. To po prostu tylko jedna z dwóch części współczynnika refrakcji srebra — w połączeniu ze współczynnikiem absorpcji staje się fizycznie poprawna.

Krzywe współczynnika odbijania światła dla różnych materiałów znajdziesz np. na stronie refractiveindex.info. Aby uzyskać taki „dokładny fizycznie” materiał w Cycles, wystarczy zastosować węzeł RGB Curves (jego opis znajdziesz na str. 520). (Pomysł na takie zastosowanie węzła krzywej pochodzi z prezentacji Kamila „mookie” Kuklo, zamieszczonej w sierpniu 2014 w popularnym serwisie Blender Nation).

Rysunek 13.4.9 przedstawia schemat testowego materiału powierzchni samolotu. To typowe dla Cycles połączenia shaderów: matowego (Diffuse BSDF) i połyskliwego (Glossy BSDF — odbija światło w 100%). Udział połyskliwego shadera jest uzależniony od kąta nachylenia ścian modelu do kamery (θi ). Wartość tego nachylenia (a dokładniej: odwrotność funkcji cos( θi )) dostarcza wyjście Facing węzła Layer Weight. Ta informacja jest zamieniana przez krzywą węzła RGB Curves w udział shadera Glossy BSDF:

Rysunek 13.4.9 Schemat testowego materiału („dielektryk”)

Rysunek 13.4.10 Szczegóły węzła z krzywą

Rysunek 13.4.10 przedstawia szczegóły węzła krzywej. W Cycles nie ma węzła wejściowego który by zwracał kąt pochylenia ściany. Dlatego do wejścia RGB Curve musiałem podłączyć współczynnik Facing (gdy Blend =0.5, dla większych katów θi jest niemal liniowy). Tym mniemniej skala pozioma tego wykresu jest nieliniowa. Jako prostą regułę dla tej skali zapamiętaj, że w połowie obszaru przypada wartość dla θi = 60º.

W związku z tym że obydwa shadery materiału są bardzo gładkie (ich Roughness = 0.01), to dla krzywej odbicia szkła (jak ze str. 586) uzyskamy coś, co wygląda jak połyskliwa porcelana (Rysunek 13.4.11):

Rysunek 13.4.11 Powierzchnia modelu dla materiału „dielektryka”

A teraz spróbujmy zmienić tę „porcelanę” w aluminium. Rysunek 13.4.12 przedstawia ten sam materiał co poprzednio (por. Rysunek 13.4.9). Jedyną różnicą jest zmodyfikowana krzywa odbicia. Teraz wygląda tak jak krzywa odbicia światła przez aluminium, pokazana na str. 587 (Rysunek 13.4.8).

Rysunek 13.4.12 Testowy materiał „aluminium”

Taka zmiana węzła krzywej powoduje zmianę wyglądu modelu (Rysunek 13.4.13). Teraz zamiast efektu „ceramiki” powierzchnia samolotu wygląda jak wypolerowany dural. Aby takie powłoki wyglądały jak w świecie rzeczywistym, musi się w nich odbijać się zniekształcony obraz otoczenia. (Musisz to otoczenie wcześniej przygotować — chociażby tak, jak jest to opisane na str. 491):

Rysunek 13.4.13 Powierzchnia modelu dla materiału „aluminium”

Ustawianie za każdym razem krzywej odbić materiału może być kłopotliwie. Czy nie można uzyskać w jakiś przybliżony sposób taką powierzchnię metalu jak na ilustracji powyżej? Spróbujemy użyć w tym celu wyspecjalizowanego węzła Fresnel. Ten węzeł, oraz Layer Weight:Fresnel, zwracają tylko wartości współczynników dla dielektryków (IOR musi być > 1) — czyli takie, jakie pokazuje na str. 586 Rysunek 13.4.6.

Przybliżmy charakterystykę aluminium za pomocą krzywej Fresnela o nierealnie wysokim IOR: 50 (Rysunek 13.4.14a, b). W efekcie uzyskasz efekt całkiem „metaliczny” (Rysunek 13.4.14c):

Rysunek 13.4.14 Przybliżenie charakterystyki aluminium krzywą Fresnala o wysokiej wartości IOR

A teraz sprawdźmy najprostsze połączenie 92% shadera „lustrzanego” i 8% matowego (Rysunek 13.4.15a, b):

Rysunek 13.4.15 Przybliżenie charakterystyki aluminium linią prostą

Czy widzisz jakąś różnicę pomiędzy renderami pokazywanymi przez Rysunek 13.4.15c) i Rysunek 13.4.14c)? Bo ja nie widzę żadnej! Wydaje się więc, że różnice krzywych odbić dla kątów > 75º są tu bez znaczenia.

Metaliczną powierzchnię można w Cycles uzyskać poprzez złożenie dwóch shaderów: matowego i połyskliwego. Udział tych komponentów uzależnij od węzła Fresnel o wyokim IOR (> 20) lub nawet ustaw na stałą proporcję (wartość pomiędzy 0.85 a 0.95).

Wiedza o tym, jak odbija się światło od powierzchni na pewno przyda Ci się przy komponowaniu materiałów. Jednak nie licz na to, że przygotowanie „poprawnej fizycznie” powierzchni w oparciu o kilka podstawowych współczynników jest gwarancją realistycznego wygląd na renderze. Widać to chociażby po przymiarkach do uzyskania wypolerowanego aluminium, które wykonałem przed chwilą. Bez odpowiedniego otoczenia ten samolot wcale nie wyglądałoby jak z duralu!

Filmy, książki i czasopisma przyzwyczaiły nas do widzenia świata poprzez zdjęcia. Ostateczny wygląd takiego utrwalonego obrazu zależy jednak od wielu rożnych czynników. Jednym z nich jest chociażby polaryzacja światła (Rysunek 13.4.16):

Rysunek 13.4.16 Świat w obiektywnie kamery wygląda inaczej (ilustracja: wikipedia.org)

Oko ludzkie nie rozróżnia czegoś takiego, jak polaryzacji promieni światła. „Widzą” je jednak obiektywy naszych kamer. Renderując nasz model często chcemy osiągnąć coś, co nazywamy „fotorealizmem” — czyli obraz, którego nie da się odróżnić od fotografii[1]. A światła spolaryzowanego, które może mieć wpływ na wygląd zdjęcia, jest wokół mnóstwo[2]. Przykładem w skali makro jest choćby nieboskłon. Rozproszone światło nieba jest spolaryzowane, co w znaczący sposób może zmienić jego obraz na zdjęciach (por. Rysunek 13.4.16). Różne obszary nieba mają różną polaryzację, i w dodatku zmienia się ona wraz z ruchem słońca. Orientacja samolotu względem nieba może np. znacząco zmienić na fotografii przejrzystość szyby (por. Rysunek 13.4.4), czy połyskliwość lakieru. Dlatego w doborze barw i wszelkich innych współczynników materiałów nie traktuj wartości fizycznych jak wyroczni. Rzeczywistość jest o wiele bardziej złożona. Aby ją jak najwiarygodniej odtworzyć na obrazie, musisz się czasami zdać na własne wyczucie.

[1] (str. 591) Czy zastanawiałeś się kiedyś, dlaczego na większości ilustracji samolotów w locie łopaty śmigła są rozmyte, ale zajmują tylko jakiś ograniczony kąt wirującej tarczy? U wielu autorów to podświadoma próba odtworzenia efektu, który można uzyskać tylko na fotografii. Każde śmigło lotnicze kręci się na tyle szybko, że dla ludzkiego oka tworzy jednorodne, niemal przejrzyste koło.

[2] (str. 591) Kierunek polaryzacji światła zmienia się przy każdym odbiciu. Np. odbicie promieni od gładkiej powierzchni metalu zmienia ich polaryzację na bardziej jednorodną.

Skorowidz

Aby znaleźć w książce jakieś słowo lub wyrażenie możesz użyć narzędzia wyszukiwania wbudowanego w czytnik, którego używasz. Jednak ta metoda może nie być zbyt efektywna w przypadku pojęć koncepcyjnych. (O wiele łatwiej znaleźć takie wyrażenie w skorowidzu drukowanej książki, niż poszukując go poprzez powiązane polecenia lub słowa kluczowe). Co więcej, niektóre aplikacje do czytania publikacji elektronicznych w formacie EPUB na komputerach PC w ogóle nie umożliwiają wyszukiwania w całej książce. Dlatego zdecydowałem się włączyć do tej publikacji skorowidz z wersji "stronicowanej" (PDF). Wystarczy kliknąć na jeden z numerów stron po prawej stronie hasła, by przejść do odpowiedniego fragmentu książki.

Po prawej stronie nagłówka każdego hasła umieściłem skroty do pozostałych nagłówków. Użyj ich, aby nie przewijać zbyt wielu stron przechodząc np. od litery Z do C.

Nazwy poleceń, skróty klawiatury, podane w skorowidzu, dotyczą Blendera, o ile w haśle nie jest zaznaczone inaczej: „(GIMP)”, „(Inkscape)”.

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

.

. (kropka)

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

2

2D Cursor
jako punkt odniesienia 533 534 535

w oknie UV/Image Editor 530

wpisywanie współrzędnych 531

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

3

3D Cursor
panel z przybornika Properties 379

w oknie 3D View 378

wpisywanie współrzędnych 379

3D View
problemy z wyświetlaniem tekstury 555

tryb Texture Paint 526

zmiana obrazu po wysunięciu przybornika 372

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

A

A
składnik barwy (nieprzejrzystość) 575

Active Camera
polecenie z menu View 402

polecenie z menu View, przykład zastosowania w Blenderze 22

Active Node
panel z przybornika Properties 393

Add
sposób nakładania barw 577

Add Constraint (with Target)
polecenie z menu Object 408

Add Lamp
polecenie z menu Add 400

Add Layer
Above current
opcja z okna Add Layer (Inkscape) 53

polecenie z menu Layer (Inkscape) 53 290

Add Modifier
polecenie z panelu Modifiers 411

polecenie z zestawu Modifiers 399

Add stop
przycisk z okna Gradient editor (Inkscape) 329

Add Tab
polecenie z menu przybornika (GIMP) 215

Add to Selection
polecenie z menu kontekstowego Channels (GIMP) 245

Add-Ons
sekcja okna User Preferences 370 383

Addition
sposób nakładania barw 577

addon
Export to SVG 542

aerator
narzędzie malarskie w GIMP 262

Airbrush
polecenie z menu Tools (GIMP) 262

Align Active Camera
polecenie z menu View 27

Align View to Selected
polecenie z menu View 96 405 413

Align X
polecenie z menu UVs 541

Align Y
polecenie z menu UVs 541

Alpha to Selection
polecenie z menu Layer (GIMP) 242

aluminium
charakterystyka odbicia światła 587

odtwarzanie charakterystyki odbicia światła w Cycles 590

Anchor Layer
polecenie z menu Layer (GIMP) 247 248 250 252

Angle
pole z zakładki Rotate (Inkscape) 323

Angle Based
opcja polecenia Unwrap 417

Apply
przycisk z panelu Modifiers 411

przycisk z panelu Transform (Inkscape) 323

Assign
przycisk z zestawu Material 416

atrefakt
w widoku perspektywicznym (okno 3D View) 403

Attribute
Fac
współczynnik 513

Name
nazwa mapy UV 513

węzeł wejściowy (Cycles) 163 178 513

Auto Save Temporary Files
przełącznik z sekcji File 376

autozapis
ustawienia 371 376

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

B

B
składnik barwy 575

Background
shader 459 469 479

Strength
dobór do jasności modelu 47 48 49

intensywność shadera 469

Background Image
typ obrazu wejściowego dla filtra (Inkscape) 338

barwa
dokładność odwzorowania 482

linii (Inkscape) 298

materiału 435

przykład łączenia (mieszania) 576

składniki 482

średnia ważona 576

barwy
tekstura,wymagania 129

Blend
efekt filtra obrazu (Inkscape) 348

komponent filtra (Inkscape) 339

Normal, parametr (Inkscape) 348

uaktualnianie obrazów rastrowych (Texture Paint) 549 556

Blend mode
tryb nakładania warstw (Inkscape) 95

Blender
rozszerzenia funkcjonalności 370 383

Blender Internal
silnik renderujący Blendera 25

blok danych
linii pomocniczych 565

blokowanie
zmian na warstwie (Inkscape) 289

Blur Radius
parametr z menu Gaussian Blur (GIMP) 261

blur.png
obraz drugorzędnej tekstury nierówności 65

pomocniczy plik drugorzędnej mapy nierówności 82

blur.xcf
obraz drugorzędnej tekstury nierówności (GIMP) 65

Bookmarks
panel okna File Browser 362

bounce
odbicie śledzonego promienia 453

Bounces
kontrolka w panelu Integrator zestawu Render 453

max. liczba śledzonych odbić (Cycles) 453

Bounding Box Center
jako punkt odniesienia 533

Box
filtr wygładzania 561

Bristles
rodzaj pędzla (GIMP) 266

Brush
Angle
przypisanie do obrotu kółka myszki (GIMP) 259

skróty (GIMP) 260

użycie (GIMP) 258

kształt do malowania plam (GIMP) 258

Size
przypisanie do obrotu kółka myszki (GIMP) 259

skróty (GIMP) 260

użycie (GIMP) 258

zakładka przybornika (Texture Painting) 549

Brushes
odświeżenie zawartośi (GIMP) 257

zakładka (GIMP) 236

zakładka formy narzędzia (GIMP) 234 255 256

Bucket Fill
polecenie z menu Tools (GIMP) 162

By Color
polecenie z menu Select (GIMP) 161 193 239

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

C

Camera
polecenie z menu Add 401

polecenie z menu Add, przykład zastosowania w Blenderze 22

Canvas Image
obraz do malowania (Texture Paint) 526

wybór obrazu do pomalowania (Texture Paint) 551

Canvas size
polecenie z menu Image (GIMP) 226

Cap
przełącznik z panelu Fill and Stroke (Inkscape) 319

Cap Ends
parametr polecenia Add Cylinder 398

Cascading Blur
filtr — złożenie kilku rozmyć Gaussa (Inkscape) 142

Catmulla-Clarka
powierzchne podziałowe 399

Caustics
opcja z panelu Light Paths zestawu Render 490 502

Change Foreground Color
okno edycji aktualnej barwy (GIMP) 234 254

Channel to Selection
polecenie z menu kontekstowego Channels (GIMP) 245

Channels
zakładka przybornika (GIMP) 245

chwyt
powietrza, rozwiniecie UV 112 113

chłodnica
wnętrze, rozwinięcie w UV 125

cienie
sterowanie intensywnością za pomocą tekstury 191 199

cień
przykład sterowania przejrzystością 39 455 493

sterowanie rozproszeniem granicy 29

uproszczony efekt dla szkła 39 493

Clamp
dobór max. jasności promieni 497

opcja z panelu Sampling 497

Clamp Direct
opcja z panelu Sampling 497

Clamp Indirect
opcja z panelu Sampling 497

Clear Constraints
polecenie z menu Object 409

Clear Seam
polecenie z menu Edge Specials 421

polecenie z menu Mesh 102 421

Clear Sharp
polecenie z menu Mesh 429

Clear Track
polecenie z menu Object 27

usunięcie ograniczeń Track To, Locked Track 409

Clear Track and Keep Transform
opcja przy usunięciu ograniczenia 409

Clipping
End
parametr kamery 22

Start
parametr kamery 22

Clone
polecenie z menu Edit (Inkscape) 318

przykład użycia (Inkscape) 78

Color
kontrolka z panelu World
Surface 26

Mix
przykład zastosowania 67

pole z panelu Material
Surface 434

polecenie z menu Add 67

reprezentacja operacji na barwach 67

UV, mapowanie dla tekstur barwy 130 160

color button
wybór barwy 386

Color Management
opcja z panelu Render
Shading 24 388

panel z zestawu Scene 387

Color Matrix
efekt filtra obrazu (Inkscape) 350

filtr — zmiana wszystkich kolorów obiektu 143

Color Picker
narzędzie z menu Tools (GIMP) 254

Color quantization
metoda wektoryzacji bitmap (Inkscape) 355

Color Ramp
Add
dodanie węzła 519

Delete
usuwanie węzła 519

interpolacja barw
Constant 519

inwersja paska barw 519

pasek barw
dodanie węzła 519

inwersja 519

usuwanie węzła 519

wybór aktywnego węzła 519

węzły 518

polecenie z menu Convertor 518

węzeł spektrum barw 518

Color space
ustalanie dla nowego obrazu (GIMP) 255

color.png
obraz dla tekstury barwy 163 196

col_intensity.png
pomocnicza tekstura sterująca intensywnością cieni 191 199

Composite
Default parametr (Inkscape) 351

efekt filtra obrazu (Inkscape) 346 347 351

K1 parametr (Inkscape) 347

K2 parametr (Inkscape) 347

K3 parametr (Inkscape) 347

K4 parametr (Inkscape) 347

Compression level
opcja eksportu obrazu PNG (GMP) 221

concrete.jpg
obraz powierzchni betonu (do wykorzystania w teksturach) 165

config
folder konfiguracji Blendera 374

Configure Input Controller
przypisane funkcje (GIMP) 259

Conformal
metoda rozwijania siatki w UV 102

opcja polecenia Unwrap 417

Copy Material
polecenie z zestawu Material 415

Copy Material to Others
polecenie z zestawu Material 414

Copy Settings
opcja z menu New Scene 385

Create a New Image
opcje nowego obrazu (GIMP) 255

Crop to Selection
polecenie z menu Tools (GIMP) 222

Cursor Depth
opcja z okna User Preferences 380

wpływ na kursor 3D 380

Cursor to Selected
polecenie z menu Snap 378

Cursor to Selection
polecenie w oknie UV/Image Editor 530

Curtiss Green
fraba podkładowa używana w zakładach Curtiss 581

Curve
panel przybornika (Texture Painting) 553

panel z przybornika (Texture Paint) 553 556

Cycles
efekt załamanie promieni w szkle 584

modyfikacja materiału 435

Cycles Renderer
alternatywny silnik renderujący Blendera 25

Cylinder
polecenie z menu Add 398

czcionka
True Type (Inkscape) 352

USAAF Serial Stencil (Inkscape) 353

USAAF Stencil (Inkscape) 352

czcionki ekranu
ustawienia 371

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

D

Darken
sposób nakładania barw 579

Dashes
menu z panelu Fill and Stroke (Inkscape) 319

Data
opcja panelu z zestawu Material 407

datablock
licznik użycia 570

nie używane 571

przykłady 572

w rysunku Blendera 569

zabezpieczone 571

zestaw kontrolek 570

Decals
alternatywna mapa UV, przeznaczna na oznaczenia samolotu 161

UV, mapa na oznaczenia 130 175 193

decals.png
dopasowanie intensywności do podstawowej tekstury barwy 198

obraz znaków rozpoznawczych i tekstów eksploatacyjnych 177 197

decals.svg
czcionki True Type USAAF 179

dodanie oznaczeń taktycznych 179

rysunek znaków rozpoznawczych i tekstów eksploatacyjnych 177 197

Default
opcja z menu View (Inkscape) 278

układ ekranu 381

Default Value
pole z panelu Interface 442

wartość domyślna parametru grupy 442

deformacja
rozwinięcia UV, poprawianie 74

Delete Brushe
polecenie z menu kontekstowego Brush (GIMP) 257

Delete Current Layer
polecenie z menu Layer (Inkscape) 291

Delete Layer
polecenie z menu Layer (GIMP) 233

Description
pole z okna Export Image as Brush (GIMP) 256

Deselect
polecenie z menu Edit (Inkscape) 292

dielektryk
przykładowa charakterystyka odbicia światła 585

współczynniki Fresnela dla 586

Difference
polecenie z menu Path (Inkscape) 179

Diffuse
panel z zestawu Material 560

Diffuse BSDF
Color
parametr 435

Roughness
parametr 435

shader 35 435

Displacement Map
efekt filtra obrazu (Inkscape) 347 349

Scale, parametr (Inkscape) 347

Display
panel z panelu Properties 531

Display Device
opcja z panelu Scene
Color Management 387

Divide
sposób nakładania barw 578

Division
sposób nakładania barw 578

Document Properties
okno (Inkscape) 284

polecenie z menu File (Inkscape) 52

dodanie
modyfikatora (siatki) 411

dodatki (add-ons)
instalacja 375 383

ustawienia aktywnych 370

usuwanie 384

dodawanie
nowego materiału (BI) 559

nowego materiału (Cycles) 433

nowego obrazu 539

nowego układu ekranu 382

nowej sceny 385

nowej tekstury rastrowej (Image Texture) 466

nowej warstwy (GIMP) 232

nowej warstwy (Inkscape) 290

zakładki w przyborniku GIMP 215

Draw
rodzaj pędzla (edycja obrazów rastrowych) 551

Draw Other Objects
opcja z menu View 79 543

Duplicate
polecenie z menu Edit (Inkscape) 318

przycisk w panelu Fill and Stroke (Inkscape) 328

przykład użycia (Inkscape) 78

Duplicate Layer
polecenie z menu Layer (GIMP) 64

duplikat
materiału 52

dural
wykorzystanie shadera (grupy) Gloss Paint 500

Dynamic Spacebar Menu
programowe rozszerzenie Blendera (add-on) 370

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

E

Edge Split
modyfikator siatki 431

Edges
podręczne menu edycji siatki 421

submenu menu Mesh 429

Edit
przycisk w panelu Fill and Stroke (Inkscape) 328

Edit Group
polecenie z menu Node 441

Editing
sekcja okna User Preferences 368

edycja
elipsy (Inkscape) 309

linii (Inkscape) 300

linii krzywych (Inkscape) 301

prostokąta (Inkscape) 307

punktów (tryb) (Inkscape) 300 301 326

tekstu (Inkscape) 316

wzoru gradientu (Inkscape) 328

zmiana obiektów w grupie (Inkscape) 325

edytor
obrazu, okno 522

UV, okno 522

UV, opis okna UV/Image Editor 525

edytor UV
opcje automatycznego zaznaczania wierzchołków 525

efekt
Blend (Inkscape) 339

dodawanie do filtra (Inkscape) 337

Gaussian Blur (Inkscape) 337

Gaussian Blur — porównanie z GIMP (Inkscape) 338

przesuwanie po liście komponentów filtra (Inkscape) 340

przełączanie źródła (Inkscape) 338

przykład złożenia rozmyć obrazu (Inkscape) 339

rodzaje obrazów wejściowych (Inkscape) 338

rozmycie Gaussa (Inkscape) 348

rozproszone obiekty (Inkscape) 347 349

składnik filtra (Inkscape) 337

usuwanie z listy komponentów filtra (Inkscape) 340

zmniejszanie grubości (Inkscape) 345

złożenie dwóch obrazów (Inkscape) 346 347 348 351

łączenie rezultatów innych efektów (Inkscape) 339

’barwny’ szum (Inkscape) 346 349

’spłaszczenie kontrastów’ (Inkscape) 350

efekty
odpryski (złuszczenia) farby (GIMP) 266

odpryski i przetarcia farby (GIMP) 266

przetarcia – problem w zbliżeniach 272

przetarcia — obwódki z barwy podkładowej 274

przetarcia — ulepszone rozwiązanie 272 273 274

rozmycie obrazu (GIMP) 261

rysy wzdłuż zdejmowanych paneli (GIMP) 271

wykorzystanie tekstury do podziału materiałów 272 273

zabrudzenia, ślady dymu (GIMP) 262

effects
patrz efekt (komponent filtra) (Inkscape) 337

ekran
przełączenie na inny układ 381

stworzenie nowego układu 382

układ
Default 381

UV Editing 381

układ okien dla rozwinięcia UV 96

układ okien, zarządzanie 381

usunięcie jednego z układów 382

zmiana nazwy układu 382

eksport
automatyczne nazwy dla plików SVG z rozwinięciami UV 543 544

ramka wokół rysunków SVG z rozwinięciami UV 543

rozwinięcia UV siatki do pliku SVG 542

rozwinięcia UV siatki, do pliku 542

rozwinięcia UV siatki, do pliku SVG 543

rozwinięć UV wielu siatek do pliku SVG 543

rysunku do pliku rastrowego (Inkscape) 287

złożenie rozwinięć UV w jednym pliku SVG 544

elipsa
edycja (Inkscape) 309

rysowanie (Inkscape) 308

Emulate Numpad
przełącznik z sekcji User Preferences
Input 369

Enter group
polecenie z menu kontekstowego (Inkscape) 325

Environment Texture
a modelowanie siatki sfery otoczenia 471

brak ostrości obrazu 470

Color
automatyczna korekta gamma barw obrazu 469

piksele tekstury 469

mapowanie obrazu 468

Non-Color Data
oryginalne intensywności obrazu 469

panorama otoczenia sceny 468

podgląd na scenie 463

polecenie z menu Add 468

porównanie z Image Texture 468

przykładowe wykorzystanie 469

Vector
współrzędne tekstury 469

węzeł (obraz rastrowy) 468

złożenie dwóch obrazów 44 484

Erase Alpha
tryb malowania (Texture Paint) 556

Eraser
polecenie z menu Tools (GIMP) 236 242 243 264

Export As
polecenie z menu File (GIMP) 220 256

Export Bitmap
polecenie z menu File (Inkscape) 54 287

Export Image
okno (GIMP) 220

Export Image as Brush
okno dialogowe (GIMP) 256

Export to SVG
All UVs
eksport wszystkich ścian rozwinięcia UV 543

Border Around Image
ramka wokół pliku z rozwinięciami UV 543

dodatek, włączenie 542

From All Objects
eksport wielu rozwinięć UV naraz 543

panel z parametrami zapisu rozwinięcia UV 543

polecenie z menu UVs 79 80

Use Object Name
automatyczny tworzenie nazwy pliku SVG 543

Export UV Layout
Fill Opacity
przejrzystość ścian rozwinięcia UV 542

Format
format zapisu obrazu rozwinięcia UV 542

panel z parametrami zapisu rozwinięcia UV 542

polecenie z menu UVs 542

size
rozmiar obrazu rozwinięcia UV 542

Exposure
kontrolka z panelu Render
Film 29

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

F

Face
opcja z panelu Mesh Display 425

Fake user
bloku danych 571

Federal Standard 595B
wzorce barw 581

File
sekcja okna User Preferences 371 376

File Browser
okno 362 376 383

fill
wypełnienie obrysu (Inkscape) 298

Fill and Stroke
panel (Inkscape) 298 326

Fill Paint
typ obrazu wejściowego dla filtra (Inkscape) 338

Film
panel z zestawu Render 561

Filter Editor
lista efektów (Inkscape) 337

polecenie z menu Filters (Inkscape) 142 336

przesuwanie komponentu po liście efektów filtra (Inkscape) 340

przełączenie wejścia do komponentu (Inkscape) 338

przycisk Add Effect (Inkscape) 337

przycisk New (Inkscape) 336

rodzaje obrazów źródłowych (Inkscape) 338

usuwanie filtra (Inkscape) 340

usuwanie komponentu z listy efektów filtra (Inkscape) 340

zmiana nazwy filtra (Inkscape) 337

Filters
menu rozwijalne efektów specjalnych (Inkscape) 142

filtr
efekt barwnego ‘szumu’ (Inkscape) 346 349

efekt rozmycia (Inkscape) 337

efekt rozmycia Gaussa (Inkscape) 348

efekt rozproszenia obiektów (Inkscape) 347 349

efekt zmniejszania grubości (Inkscape) 345

efekt złożenia dwóch obrazów (Inkscape) 346 347 348 351

efekt ‘spłaszczenia kontrastów’ (Inkscape) 350

Gaussian Blur — porównanie z GIMP (Inkscape) 338

komponenty (efekty) (Inkscape) 337

przełączanie źródła komponentu (Inkscape) 338

przykład zmiany szerokości 562

przykład złożonego rozmycia obrazu (Inkscape) 339

rodzaje obrazów wejściowych (Inkscape) 338

Rounded (Inkscape) 343

Smooth Edges (Inkscape) 343

stworzenie nowego (Inkscape) 336

szerokość wygładzania 29 561

usuwanie komponentu z listy (Inkscape) 340

usuwanie z rysunku (Inkscape) 340

w sekcji Add-Ons okna User Preferences 384

wstawienie nowego komponentu (efektu) (Inkscape) 337

wybielenie wszystkich kolorów obiektu (Inkscape) 143

wygładzania obrazu 561

zmiana miejsca komponentu na liście (Inkscape) 340

zmiana nazwy (Inkscape) 337

złożenie kilku rozmyć Gaussa (Inkscape) 142

łączenie efektów (Inkscape) 339

’spłaszczenie’ kolorów obiektu (Inkscape) 151 152

’zabrudzenie’ linii rysunku (Inkscape) 149

filtry
edytor efektów rastrowych (Inkscape) 142

menu Filters (Inkscape) 336

wprowadzenie do (Inkscape) 336

Flatten Image
polecenie z menu Image (GIMP) 221

Flip Normals
polecenie z menu Mesh 426

polecenie z menu Mesh – przykład użycia 38

Float
polecenie z menu Select (GIMP) 247 248 249 251

Focal Length
parametr kamery 22

pole panelu z zestawu Object Data 402

Folders
Brushes
zakładka w oknie preferencji (GIMP) 256

Foreground Color
kolor pierwszoplanowy (GIMP) 254

Fractal Noise
typ turbulencji (Inkscape) 346

Frame
sposób łączenia węzłów 392

Free Select
polecenie z menu Tools (GIMP) 238

Fresnel
IOR
parametr węzła 450

modyfikacja kierunku normalnych 451

Normal
wejście węzła 451

porównanie rezultatu z LayerWeight
Fresnel 450

przykład wykorzystania węzła 494 499

użycie współczynników dielektryka do symulacji metali 590

wartości dla wysokich wartości IOR 450

wartość współczynnika dla światła prostopadłego (wzór) 587

współczynnik odbicia światła 586

węzeł wejściowy (Cycles) 449

zwracane wartości 450

Full Copy
opcja z menu New Scene 385

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

G

G
składnik barwy 575

Galaxy
rodzaj pędzla (GIMP, zakładka Brushes) 264

gamma
korekcja wyświetlanych kolorów 24 387

Gauss
metoda rozmycia obrazu (GIMP) 261

Gaussian
filtr wygładzania 561

Gaussian Blur
Blur radius
parametr w oknie Gaussian Blur (GIMP) 64

efekt filtra obrazu (Inkscape) 348

komponent filtra (Inkscape) 337

polecenie z menu Filters (GIMP) 64 261

różnice w porównaniu z GIMP (Inkscape) 338

Geometry
Backfacing
orientacja renderowanej ściany 456

Normal
normalna w renderowanym punkcie 456

polecenie z menu Input 456

Position
współrzędne renderowanego punktu 456

Tangent
styczna w renderowanym punkcie 456

True Incoming
kierunek promienia w renderowany punkcie 456

True Normal
normalna do ściany w renderowanym punkcie 456

węzeł wejściowy 464

węzeł wejściowy (Cycles) 456

GIMP
scalenie okien programu 212

zmiana języka programu 211

Glass BSDF
efekt załamania promieni światła 584

IOR
parametr 492

problemy ze światłem równoległym (Sun) 39

Roughness
parametr 492

shader 492

Gloss Paint
Diffuse
dobór jasności otoczenia 47 48 49

przykład ustawień 36

wpływ na powierzchnie połyskliwe 501

wpływ na powierzchnie półmatowe 502

zależność od barwy Specular 503

dla powierzchni o wysokim połysku 36

dla powierzchnii półmatowych 36

polecenie z menu Add 445

przykłady zastosowania 500

Reflectivity
analiza wpływu na powierzchnię 504

dla powierzchni połyskliwych 501

Roughness
analiza wpływu na powierzchnię 505 506

dla powierzchni matowych 502

przykład ustawień 36 171

rezultat zwiększenia 171

związek z odblaskiem słońca 501

shader 445

shader (grupa) 35

Specular
selektywne zastosowanie tekstury 182

wpływ intensywności 36 200

wpływ na powierzchnie połyskliwe 501

wpływ na powierzchnie półmatowe 502

zależność od barwy Diffuse 503

zastosowanie tekstury 181

sterowanie barwą odbijanego światła 36 200

użycie dla powierzchni zewnętrznych 36 38

zanikanie barw na podświetlonych, matowych powierzchniach 180

zmodyfikowana zawartość 507

Glossy
Beckmann
algorytm obliczania połysków 439

CGX
algorytm obliczania połysków 439

Roughness
parametr shadera BSDF 436

Glossy BSDF
shader 35 436 494

wpływ orientacji ścian 456

godła
w postaci wektorowej (Inkscape) 354

gondola podwozia
obraz poszycia 133

poprawki siatki 134

gradient
aktualny wzór (Inkscape) 328

dodawnie węzła do wzorca (Inkscape) 329

edycja kształtu (Inkscape) 326

edycja wzoru (Inkscape) 328

ponowne użycie wzoru (Inkscape) 328

położenie węzła we wzorcu (Inkscape) 329

skopiowanie wzoru (Inkscape) 328

tryb powtarzania (Inkscape) 327

wybór wzoru (Inkscape) 328

wypełnienie kołowe (Inkscape) 329

wypełnienie liniowe (Inkscape) 326

zmiana geometrii (Inkscape) 326

Gradient editor
okno edycji wzoru gradientu (Inkscape) 328

Gradient Texture
Color
piksele tekstury 472

Diagonal
kształt gradientu 472

Easing
kształt gradientu 472

Fac
wartości tekstury 472

Linear
kształt gradientu 472

polecenie z menu Texture 472

przykład wykorzystania 44

Quadratic
kształt gradientu 472

Quadratic sphere
kształt gradientu 473

Radial
kształt gradientu 473

Spehrical
kształt gradientu 473

stosowanie w charakterze współczynnika łączenia obrazów 44 484

tekstura proceduralna 472

użycie do podziału otoczenia sceny 473

Vector
współrzędne tekstury 472

węzeł tekstury 472

Gray
filtr — ‘spłaszczenie’ kolorów obiektu (Inkscape) 151

Grayscale
polecenie z menu Image (GIMP) 230

typ przestrzeni barw (GIMP) 255

Grease Pencil
Drawing Settings
wybór powierzchni 564

linie pomocnicze 563

New Layer
przycisk 563

Opacity
przełącznik 564

panel przybornika Properties 563

parametry linii 564

przykład zastosowania 155

przypisywanie do obiektu 565

rozpoczęcie rysowania 563

sterowanie widocznością 565

Thickness
przełącznik 564

Group
polecenie z menu Object (Inkscape) 325

przykład użycia (Inkscape) 78

Group Input
wiele instancji węzła (przykład) 443 444

węzeł (wejścia do grupy węzłów) 440 441

Group Output
węzeł (wyjścia z grupy węzłów) 440 441

Grow
polecenie z menu Select (GIMP) 161 240

Grow Selection
okno dialogowe (GIMP) 240

grubość
linii (Inkscape) 298

grupa
dodawanie wierzchołków siatki do 419

Gloss Paint 35

Plexiglas 39

połączenie obiektów (Inkscape) 325

wierzchołków siatki 419

wierzchołków siatki, nazwa 419

węzły wejściowe 440

węzły wyjściowe 440

węzłów 440
definiowanie wejść 441

domyślna wartość parametru 442

edycja 441

otwieranie i zamykanie definicji 441

podział wejść 443 444

sposób wyświetlania schematu 444

usuwanie wejść 442

wielokrotne użycie pojedynczego wejścia 442

zakres wartości parametru 442

zmiana nazwy 441

zmiana nazwy wejścia/wyjścia 443

właściwości 442

zmiana wewnętrznych obiektów (Inkscape) 325

grupa warstw
przykład zastosowania (GIMP) 229

tworzenie (GIMP) 228

guides
linie (Inkscape) 295

linie pomocnicze (Inkscape) 295

gumka
narzędzie w GIMP 236 242 243 264

gładki
węzeł (Inkscape) 302

główne
okno (GIMP) 214

okno (Inkscape) 282

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

H

H
odcień koloru 386

Hard edge
zaznaczanie krawędzi pędzla (GIMP) 265 267 269

Hardness
rodzaj pędzla (GIMP, zakładka Brushes) 262 263 264

HDR
format zapisu obrazów panoramicznych 482

HDR(I)
pliki obrazu 468

HDRI
obrazy otoczenia wysokiej jakości 482

Hex
tryb wyboru koloru 387 555

Hide Selected
polecenie z menu Object 404

holes.png
obraz otworów technicznych 184

HSV
tryb wyboru koloru 386

HTML notation
heksadecymalna reprezentacja barwy 387 582

pole okna Change Color (GIMP) 254 555

Hue Saturation Value
Saturation
zmiana nasycenia barwy 167

Value
wpływ intensywności barwy na cienie 190

zmiana intensywności barwy 164 198

węzeł konwersji (Cycles) 164

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

I

Image Paint
tryb pracy w oknie UV/Image Editor 548

Image Paint Tool
wybór typu narzędzia (Texture Paint) 550 553

Image Painting
przełącznik w oknie UV/Image Editor 522

Image Properties
polecenie (Inkscape) 286

Image Texture
Alpha
przykład zastosowania 178

Color
piksele tekstury 466 479

Linear
korekta barw obrazu 466

Open
przycisk 466

polecenie z menu Add 466

polecenie z menu Texture 54

porównanie z Environment Texture 468

sRGB
korekta barw obrazu 466

tekstura (z obrazu rastrowego) 466

Vector
domyślne mapowanie 54

współrzędne tekstury 466

wykorzystanie w tle renderu 42 479 488

wykorzystanie współrzędnych Object 55

węzeł tekstury 466

Import
polecenie z menu File (Inkscape) 53 285

Info
typ okna 362

Inkscape
wersja 64-bitowa 279

zmiana barw okien programu 279

zmiana języka programu 277

zmiana układu pasków narzędzi 278

Input
sekcja okna User Preferences 369

submenu menu Add (Node Editor) 438

Input Devices
Active Controllers
zakładka w oknie preferencji (GIMP) 258

Input Controllers
zakładka w oknie preferencji (GIMP) 258

Inputs
lista z panelu Interface 442

instalacja
dodatków 375 383

Install Add-On
przycisk okna File Browser 383

przycisk z sekcji Add-Ons okna User Preferences 383

intensywność
składnika barwy 575

Interface
panel z przybornika Properties 442

sekcja okna User Preferences 368

Interior Green
barwa wnętrza kabin samolotów USAAF 581 583

Intersect with Selection
polecenie z menu kontekstowego Channels (GIMP) 245

Inverse
polecenie z menu Select 420

Invert
węzeł pomoczniczy 59

IOR
> 20 dla symulacji powierzchni metalicznych 590

a współczynnik Fresnela 586

dla materiałów nieprzejrzystych 587

wartości dla metali 587

wartości dla różnych grup materiałów 451

współczynnik refrakcji materiału 584

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

J

Join in new Frame
polecenie z menu Node 392

język
przełączanie (GIMP) 211

przełączanie (Inkscape) 277

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

K

kadrowanie
obrazu 222

kadłub
kołpak śmigła
obraz poszycia 132

maska silnika
obraz poszycia 132

obraz poszycia 131

UV, chwyt powietrza 112

UV, dopasowanie siatek 114

UV, druga, symetryczna połowa 107 114

UV, kołpak śmigła 117

UV, maska silnika 112

UV, nanoszenie szwów 107 108

UV, oprofilowanie skrzydła 118

UV, oszklenie kabiny 120

UV, osłona chwytu powietrza 113

UV, osłona chłodnic 112 176

UV, osłony karabinów 113

UV, powierzchnie wewnętrzne 123

UV, pozycja na obrazie 111

UV, ramki kabiny 121

UV, rozwinięcie ogona 106

UV, weryfikacja 109

UV, wnętrze chłodnicy 125

UV, łopata śmigła 117

kamera
dostosowanie parametrów 22

elementy podglądu w oknie 3D View 402

ogniskowa 22 402

podgląd projekcji w oknie 3D View 402

przełączanie na aktywną 22

przełączanie na inną 27

przykład zastosowania w Blenderze 22

skopiowanie aktualnej projekcji z okna 3D View 27

użycie obiektu jako celu (focus) 23

warstwa dla 373

zasięg 22 403 403

kamuflaż
analiza na podstawie zdjęcia 195

naniesienie barwnych zabrudzeń 168

naniesienie ogólnego ‘wyblaknięcia’ 169

naniesienie plam 194

naniesienie przetarć i odprysków farby 166 196

naniesienie zacieków 196

nałożenie barwnego ‘szumu’ 165

nałożenie barwy podstawowej 162 193 194

sprawdzanie układu plam 195

sterowanie intensywnością przetarć i odprysków farby 167

tekstura barwy 196

tekstura odbicia (rozpraszania) światła 196

wykorzystanie shadera (grupy) Gloss Paint 502

kanał

katalog
z konfiguracją Blendera 374

kaustyka
dla światła kierunkowego Sun 492

wyłączanie efektu 455 490 492

włączanie efektu 502

klapa
rozwinięcie w UV 124

skrzydłowa, rozwinięcie w UV 120

wnęka, rozwinięcie w UV 124

klawiatura
laptopa 369

numeryczna 369

kolejność
elementów listy 396

zmiana dla obiektów (Inkscape) 294 294

kolor
heksadecymalne wartości R,G,B 387 555 581

inetnsywność (V) 386

intensywność, składnika barwy 575

kontrolka w Blenderze 386

korekcja gamma 24 387

materiału 434 560

nasycenie (S) 386

nieprzejrzystość, składnik barwy 575

odcienie podkładu (‘primer’) 581

odcień (H) 386

odniesienia do Federal Standard 595B 581

odwzorowanie barw samolotu 580

opcja Color Management 24 388

opcja sRGB 387

pierwszoplanowy (GIMP) 254

problemy ze wzorcami 582

składniki barwy 575

sposób zapisu 575

ustalanie dla nowego obrazu w UV/Image Editor 539

ustalanie wartości HSV 386

ustalanie wartości RGB 386

wpływ intensywności barwy na cienie 190

wybór ‘poprzez przykład’ 386

wzorce barw 581

wzorce barw w internecie 581

zmiana aktualnego (GIMP) 234

zmiana intensywności barwy 164 198

zmiana na wskazany(GIMP) 254 254

zmiana nasycenia barwy 167

zmiana trybu (GIMP) 230 234 241

zmiany w wyniku eksploatacji 580

kolory
włączenie (GIMP) 230 234 241

kontrolka
do ustalania zakresu (GIMP) 218

kopiowanie
obiektu (Inkscape) 318

wzoru gradientu (Inkscape) 328

krawędzie
ostre, automatyczna korekta normalnych 428

ostre, korygowanie kierunku normalnych 428 429 431

ostre, max. kąt automatycznej korekty 428

ostre, minimalizowanie zaburzeń kierunku normalnych 430 430

ostre, wybiórcza korekta normalnych 429

ostre, zaburzenia interpolacji normalnych 428

zastosowanie flagi Sharp 429

krawędź
oznaczanie jako szwu UV 421

szwy UV, widoczność 421

ustawienie bieżącego widoku równolegle lub prostopadle 413

kreskowanie
linii (Inkscape) 298 320 321

krzywa
odwzorowanie łuku (Inkscape) 304

styczne do (Inkscape) 301 302

tekst, deformacja (Inkscape) 317

z tekstem — zmiany (Inkscape) 317

krzywe barw
krzywa Blue 521

krzywa Composite 521

krzywa Green 521

krzywa Red 521

opis RGB Curves 520

kursor
2D 530

3D 378

sceny 378

tekstury 530

w trybie Texture Paint w oknie 3D View 548

wpływ opcji Cursor Depth 380

Kursor to Pixels
polecenie w oknie UV/Image Editor 530

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

L

lakier
wykorzystanie shadera (grupy) Gloss Paint 501

Lamp
polecenie z menu Add, przykład zastosowania w Blenderze 22

Sun
wpływ intensywności światła na materiał 164

zmiana typu źródła światła 23

lampa
warstwa dla 373

laptop
klawiatura 369

Layer to Image Size
polecenie z menu Layer (GIMP) 226

Layer Weight
Blend
sterowanie wartością wyjść 438 447 588

Facing
zwracane wartości 448 588

Fresnel
zwracane wartości 449 586

modyfikacja kierunku normalnych 451

Normal
wejście węzła 451

użycie w efekcie połysku 439

węzeł wejściowy (Cycles) 35 438 447 588

Layers
Mode
tryb łączenia obrazów na warstwach (GIMP) 64

polecenie z menu Layer (Inkscape) 289

zakładka (GIMP) 227

zakładka okna głównego (GIMP) 230

zakładka sterowania warstwami (GIMP) 215

Lens
Clipping End
pole panelu z zestawu Object Data 403

Clipping Start
pole panelu z zestawu Object Data 403

panel z kontekstu Object Data 402

licznik użycia
bloku danych Blendera 570

Light Gray
filtr — ‘spłaszczenie’ kolorów obiektu (Inkscape) 152

Light Path
Is Camera Ray
identyfikacja pikseli tła 454

przykład zastosowania 45 488

Is Diffuse Ray
identyfikacja pikseli odbicia rozproszonego 454

Is Glossy Ray
identyfikacja pikseli odbicia kierunkowego 454

Is Reflection Ray
identyfikacja pikseli pochodzących z odbicia promieni 454

przykład zastosowania 454

Is Shadow Ray
identyfikacja pikseli cienia 454

przykład zastosowania 455 493

Is Singular Ray
identyfikacja pikseli bezpośredniego odbicia promieni ze źródła światła 454

Is Transmission Ray
identyfikacja pikseli powierzchni przejrzystej 454

przykład zastosowania 45 490

przykład zastosowania 45

węzeł wejściowy (Cycles) 453

Lighten
sposób nakładania barw 579

Lines
rodzaj pędzla (GIMP) 269

lines.png
pomocniczy plik z liniami szwów poszycia 166 169

linia
pomocnicza 563
barwa 564

nieprzejrzystość 564

parametry 564

ponowne włączanie 565

rozpoczęcie rysowania 563

rysowanie 564

szerokość 564

ukrywanie 565

usuwanie 564

wybór powierzchni 564

wybór trybu rysowania 564

linie
barwa (Inkscape) 298

dodawanie węzła (Inkscape) 303

edycja (Inkscape) 300 301

grubość — zmiana (Inkscape) 298

kreskowane (Inkscape) 298 320 321

kropkowa (Inkscape) 56 319

krzywe (Inkscape) 301

obrys (‘stroke’ - Inkscape) 298

obrysy zamknięte (Inkscape) 297

podziału poszycia, na mapie nierówności 128

pomocnicze (GIMP) 223

pomocnicze (Inkscape) 295

proste (GIMP) 235

proste (Inkscape) 297 300

rysowanie prostych (Inkscape) 297

styczne do krzywej (Inkscape) 301 302

usuwanie węzła (Inkscape) 303

zamykanie obrysu (Inkscape) 297

Link Material
opcja panelu z zestawu Material 407

Link Object Data
opcja z menu New Scene 385

Link Objects
opcja z menu New Scene 385

lista
kontrolka w Blenderze 395

menu kontekstowe elementów 396

wyszukiwanie (filtr) 395

z okna Properties
menu kontekstowe 396

szczegóły obsługi 395

wyszukiwanie (filtr) 395

zmiana nazwy elementu 395

zmiana uporządkowania 396

zmiana nazwy elementu 395

zmiana uporządkowania elementu 396

Live Unwrap
opcja z menu UVs 71 537

Location
sekcja z panelu Properties
3D Cursor 379

Lock Tab to Dock
opcja z menu paneli (GIMP) 216

lotka
rozwinięcie w UV 119

wnęka, ‘odwijanie’ w UV 99

Lower to Bottom
polecenie z menu Object (Inkscape) 294

lustrzane odbicie
siatki 411

LZW
metoda kompresji obrazu TIFF (GIMP) 221

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

Ł

łuk
odwzorowanie krzywą (Inkscape) 304

rysowanie (Inkscape) 309

łącze
materiału
aktywne 415

dodanie nowego do siatki 415

usunięcie z siatki 415

ze ścianami siatki 415

łączenie
barw, przykład 576

węzłów 389 389

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

M

Main Mouse Wheel
przypisane funkcje (GIMP) 258

Make Links
polecenie z menu Object 415

Make Track
menu ograniczeń obiektu 23

menu podręczne 408

malowanie
przejrzystym tłem (Texture Paint) 556

wybranych ścian siatki (Texture Paint) 551

mapa
UV
różne rozwinięcia tej samej siatki 130

mapa normalnych
rodzaj tekstury 506

mapowanie
cylindryczne panoramy 483

UV
aktywne 424

domyślne dla renderowania 424

ikona domyślnego 424

różne rozwinięcia tej samej siatki 423

stworzenie 423

usunięcie 423

zmiana nazwy 423

Mapping
Location
przesunięcie o zadany wektor 55 464 471 474

Normal
tryb działania węzła 465

Point
tryb działania węzła 465

polecenie z menu Add 464

przykład zastosowania węzła 480

Rotation
obrót o zadany wektor 470

obrót panoramy otoczenia 470

obrót wokół wskazanej osi 474

Scale
sterowanie rozmiarem 485

zmiana skali 55

zmiana skali w zadanym kierunku 464

Texture
tryb działania węzła 465

transformacja współrzędnych 55 464 470 473

Vector
tryb działania węzła 465

węzeł pomocniczy 55 464 470 473

Mark Seam
polecenie z menu Edges 421

polecenie z menu Mesh 421

polecenie z menu UVs 422

zaznaczanie linii podziału ścian siatki 100

Mark Sharp
polecenie z menu Mesh 429

Material
polecenie z menu Object 415

problemy z wyświetlaniem schematu w panelu 390

wyświetlanie w panelu kontrolek węzłów Cycles 390

zestaw paneli okna Properties 414

Material Output
Displacement
odwzorowanie nierówności powierzchni 59

końcowy węzeł definicji materiału 437

material slot
łącze materiału 415

materiał
barwa 435

barwa w trybie Solid (View 3D) 33

ciemne, półmatowe powierzchnie 503

cienie na powierzchniach matowych 502

definiowanie za pomocą węzłów 437

dla powierzchni o wysokim połysku 36

dla powierzchni półmatowych 36

dodanie nowego łącza do siatki 415

dodanie połysku 435

duraluminium 500

dwie wersje dla powierzchni wewnętrznych 189

edycja w Node Editor 437

farba półmatowa 502

indeks materiału siatki 32

matowy 435
zastosowanie podstawowej tekstury barwy 163

zastosowanie pomocniczej mapy odbić jako tekstury barwy 158

odbicie otoczenia 482

podstawowe powłoki samolotu 31

powierzchni a dobór jasności otoczenia 47 48 49

powierzchnia z połyskiem 35

połyskliwy 436
zastosowanie pomocniczej mapy odbić jako tekstury barwy 156

połyskliwy lakier 501

przypisanie do fragmentu siatki 415

przypisanie do obiektu 407

przypisanie do siatki 407 414

przypisanie do wielu siatek 414 415

przypisanie podstawowych tekstur 69

przypisanie różnych do indywidualnych ścian 416

przypisywanie 31

shader Diffuse BSDF 35

shader Glossy BSDF 35

shader Mix 35

shader Plexiglas 39

shadery (wyjaśnienie pojęcia) 35

skopiowanie przypisania 415

sterowanie barwą odbijanego światła 36 200

sterowanie dowolnym parametrem za pomocą tekstury 190

sterowanie odblaskami na powierzchniach matowych 200

sterowanie przejrzystością (otwory) 186

stworzenie duplikatu 52

szkło 39 492

szorstki 435 436

uproszczenie schematu za pomocą grupy 206

usunięcie łącza z siatki 415

utworzenie nowego (BI) 559

utworzenie nowego (Cycles) 433

uwagi o mapowaniu tekstury otworów (przejrzystości) 186

użycie danych Layer Weight 35

wielokrotne przypisanie do siatki 32

wklejenie przypisania 415

wprowadzenie 31

węzeł rezultatu 437

zachowanie spójności w różnych ustawieniach za pomocą grup 189

zastosowanie tekstury otworów (przejrzystości) 184 186

zastosowanie tekstury otworów, efekty uboczne 188

zastosowanie tekstury ‘szumu’ jako tekstury odbić 187

zastosowanie węzła Layer Weight 439

zmiana barwy 434 560

zmiana nazwy 433 559

łącze aktywne na liście Material 415

łącze ze ścianami siatki 415

łączenie shaderów 437

Math
Maximum
przykład zastosowania 490

Multiply
sterowanie intensywnością tekstury 59 67

polecenie z menu Add 490

reprezentacja operacji matematycznej 490

Max
pole z panelu Interface 442

zakres wartości parametru grupy 442

Median Point
jako punkt odniesienia 534

menu
kontekstowe
elementów listy 396

przybornika (GIMP) 215

Tools (GIMP) 218

Mesh
w Blenderze 569

Mesh Display
panel paska właściwości 425 426

panel z przybornika Properties 421

Seams
opcja wyświetlania 421

Mesh Options
Edge Select Mode
lista rozwijalna 421

panel z przybornika Tool Shelf 421

Tag Seam
tryb oznaczania szwów siatki 421

metal
przykładowa charakterystyka odbicia światła 587

mieszanie
barw, przykład 576

Min
pole z panelu Interface 442

zakres wartości parametru grupy 442

Mirror
Merge Limit
automatyczne scalanie wierzchołków 412

modyfikator siatki 411

Mix
Color1
barwa wejściowa 489

Color2
barwa wejściowa 489

Fac
parametr 484 489

sterowanie udziałem łączonych barw 484 489

polecenie z menu Add 44 484

sposób nakładania barw 575 576

węzeł do łączenia kolorów 489

węzeł do łączenia kolorów (obrazów) 44 484

Mix Shader
Factor
udział łączonych shaderów 437

połączenie efektu shaderów 437

przykład wykorzystania 447

shader 35

Mode
sposób nakładania barw 575

Moderate
ograniczenia w zastosowaniu węzła 88

pomocniczy węzeł (grupy) 508

przykład użycia 68

sterowanie intensywnością tekstury (monochromatycznej) 67

Modifiers
sekcja okna Properties 399 411

modyfikator
dodadnie 411

Subdivision Surface 399

’utrwalenie’ 411

modyfikatory
utworzenie 399 411

Morphology
efekt filtra obrazu (Inkscape) 345 345

Erode, parametr (Inkscape) 345

Radius, parametr (Inkscape) 345

Move
polecenie z menu Tools (GIMP) 248

Move Selection to Layer Above
polecenie z menu Layer (Inkscape) 324

Move Selection to Layer Below
polecenie z menu Layer (Inkscape) 324

Move to Layer
polecenie z menu Object 406

Muegrave Texture
węzeł tekstury 477

Multiplication
sposób nakładania barw 578

Multiply
sposób nakładania barw 578

tryb nakładania warstw (Inkscape) 95

tryb łączenia obrazów na warstwach (GIMP) 64

Musgrave Texture
fBM
typ tekstury 477

Hetero Terrain
typ tekstury 478

Hibrid Multifractal
typ tekstury 478

Multifractal
typ tekstury 478

polecenie z menu Texture 477

Rigged Multifractal
typ tekstury 478

tekstura proceduralna 477

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

N

nadir
wyjaśnienie pojęcia 463

nagłówek
okna UV/Image Editor, w trybie malowania 525

narzędzia
miękki pędzel (GIMP) 262

nieregularna plama (GIMP) 264

pośredni pędzel (GIMP) 263

pędzel (GIMP) 234

twardy pędzel (GIMP) 264

tworzenie nowego pędzla (GIMP) 255

wybór kształtu (GIMP) 236

wybór rozmiaru (GIMP) 236

zakładka opcji (GIMP) 236

nazwa
grupy wierzchołków siatki 419

ustalanie dla nowego obrazu w UV/Image Editor 539

zmiana dla materiału 433 559

zmiana dla sceny 385

zmiana dla układu ekranu 382

zmiana dla warstwy (GIMP) 228

zmiana dla warstwy (Inkscape) 289

nazwy
system określania 458

Neutral Gray
kolor kamuflażu w USAAF 580

New
opcja z menu New Scene 385

polecenie z menu File 367 374

polecenie z menu File (GIMP) 255

przycisk z zestawu Material 414 433 559

New Group
polecenie z menu Node 440

New Image
Color
barwa nowego obrazu (UV/Image Editor) 539

kolor wypełnienia nowego obrazu 546

Generated Type
rodzaj nowego obrazu 539 546

Height
wysokość nowego obrazu 546

wysokość nowego obrazu (UV/Image Editor) 539

Name
nazwa nowego obrazu 546

okno dialogowe polecenia z UV/Image Editor 539

okno dialogowe tworzenia nowego obrazu 546

polecenie z menu Image 546

polecenie z menu Image (UV/Image Editor) 539

UV Test Grid
opcja generowania nowego obrazu (UV/Image Editor) 539

Width
szerokość nowego obrazu 546

szerokość nowego obrazu (UV/Image Editor) 539

New Layer
polecenie z menu Layer (GIMP) 65 232 241

New Layer Group
polecenie z menu Layer (GIMP) 228

New Scene
opcje tworzenia nowej sceny 385

New View
polecenie z menu View (GIMP) 217

nie używane
bloki danych 571

nieprzejrzystość
warstwy (Inkscape) 56

nierówności
tekstura, odwzorowanie 60

tekstura, wymagania 129

nity
edycja szwu 57

odwzorowanie na teksturze 56 60

odwzorowanie za ciągu tekstu (Inkscape) 56

odwzorowanie za pomocą linii kropkowej (Inkscape) 56 319

problemy z dużą ilością tekstu (Inkscape) 57

rozłożenie wzdłuż krzywej 57

rysowanie, na mapie nierówności 129

sposób odwzorowania 60 331

z łebem wpuszczanym 61 330

z łebem wypukłym 59 330

No Caustics
opcja z panelu Integrator zestawu Render 455 492

Node Editor
definiowanie materiału 437

kopiowanie i wklejanie węzłów 392

okno 389

powiększanie zawartości 390

przesuwanie zawartości 390

tryb pracy 392

węzły 389 391

Noise Texture
Color
piksele tekstury 475

Detail
szczegółowość szumu 476

Distortion
zaburzenia szumu 476

Fac
wartości tekstury 475

polecenie z menu Texture 475

przykład zastosowania 187

Scale
rozmiar szumu 475

tekstura proceduralna 475

Vector
współrzędne tekstury 475

węzeł tekstury 475

None
polecenie z menu Select (GIMP) 237 238

Normal
sposób nakładania barw 575 576

tryb łączenia obrazów na warstwach (GIMP) 64

węzeł wejściowy shaderów 506

Normal Size
kontrolka z panelu Mesh Display 425

Normalized Coordinates
opcja z panelu Display (UV/Image Editor) 531

normalne
automatyczna korekta dla ostrych krawędzi 428

do ściany siatki 425 456

korekta dla wybranych krawędzi 429

korygowanie kierunku dla ostrych krawędzi 428 429 431

max. kąt automatycznej korekty 428

minimalizowanie zaburzeń kierunku na ostrych krawędziach 430

minimalizowanie zaburzeń za pomocą dodatkowych ścian siatki 430

przeliczenie ‘do wewnątrz’ 426

przeliczenie ‘na zewnątrz’ 425

przełączenie kierunku na przeciwny 426

rozmiar wyświetlanych 425

w wierzchołku siatki 426

wizualizacja kierunku 425 426

wpływ na siatkę 425 427 427

wpływ zwrotu wektora na render 37 38 456

zaburzenia interpolacji przy ostrych krawędziach 428

zastosowanie flagi Sharp 429

Normals
Angle
graniczny kąt dla Auto Smooth 27 428 429

Auto Smooth
automatyczne wykrywanie ostrych krawędzi 27 428

panel z zestawu Object Data 428

panel z zestwu Object Data 27

nor_blur.png
obraz drugorzędnej mapy nierówności 82 144

zastosowanie drugorzędnej mapy nierówności 83

zastosowanie w materiale B.Skin.Camuflage 145

nor_blur.xcf
obraz drugorzędnej tekstury nierówności (GIMP) 82

nor_details.png
linie podziału poszycia 128

obraz podstawowej mapy nierówności 81 141

obrazy rozwinięć UV jako referencja 128

pokrywy i zaślepki otworów 128

powierzchnie płócienne 135

weryfikacja na modelu 129

zastosowanie podstawowej mapy nierówności 83

zastosowanie w materiale B.Skin.Camuflage 145

śruby i nity 129

nowe
warstwa (GIMP) 241

nowy
shader 440

numeryczna
klawiatura (emulacja) 369

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

O

obiekt
dokładna transformacja (Inkscape) 323

dopasowanie tekstury 55

dopasowanie widoku do lokalnego układu współrzędnych 405

interaktywna zmiana parametrów 398 399

kolejność wewnątrz warstwy (Inkscape) 294

ograniczenia (constraints) 408

powielenie (Inkscape) 318

położenie i rozmiar w Inkscape 296

połączenie w grupę (Inkscape) 325

problemy z ujemną skalą 176

przesunięcie (Inkscape) 310

przesuń na spód (Inkscape) 294

przesuń na wierzch (Inkscape) 294

przypisanie materiału 31

ramka selekcji (Inkscape) 311

ukrywanie 404 404

utworzenie (walca) 398

utworzenie w aktualnym widoku 368

użycie jako celu (focus) dla kamery 23

wybór obszarem (Inkscape) 292

wybór pojedynczy (Inkscape) 292

wybór wielokrotny (Inkscape) 292

wypełnienie — zmiana (Inkscape) 299 326

wyłączenie wypełnienia (Inkscape) 299

zmiana kolejności (Inkscape) 294 294

zmiana obrotu (Inkscape) 313

zmiana przekoszenia (Inkscape) 314

zmiana skali (Inkscape) 312

zmiana warstwy 406

zmiana warstwy (Inkscape) 324

zmiana wewnątrz grupy (Inkscape) 325

Object
opcja panelu z zestawu Material 407

w Blenderze 569

Object Data
UV Maps, usunięcie mapowania 423

UV Maps, utworzenie nowego rozwinięcia 423

Object to Path
polecenie z menu Path (Inkscape) 179

Object Tools
Draw
tryb rysowania linii pomocniczych 564

Erase
tryb usuwania linii pomocniczych 564

Grease Pencil
sekcja 564

Line
tryb rysowania linii pomocniczych 565

panel przybornika Tools 564

Poly
tryb rysowania linii pomocniczych 565

obraz
automatyczne generowanie nazwy pliku z rozwinięciami UV 543 544

brak ostrości panoramy 470

dla tekstur materiału powierzchni zewnętrznych 140

do testowania rozwinięcia UV 539

dodanie tekstów 179

dokładność odwzorowania barw 482

domyślne parametry eksportu (GIMP) 221

edytor, tryb Paint 525

efekt zastosowania mapy nierówności 147

efekt zastosowania podstawowej mapy odbić 153

efekt zastosowania pomocniczej mapy odbić 156

eksport do pliku (Inkscape) 287

eksport do postaci rastrowej (Inkscape) 54

eksport rozwinięcia UV do pliku SVG 79 80 542

format zapisu panoram wysokiej jakości 482

format zapisu rozwinięcia UV 542

integracja z modelem — przykład 49

integracja z modelem — uwagi 47

jako tekstura w Cycles 54

JPEG, poziom kompresji (GIMP) 221

kadrowanie 222

kompozycja drugorzędnej mapy nierówności 82 144

kompozycja mapy odbić światła 85 86

kompozycja obrazu otworów technicznych 184

kompozycja obrazu wgłębień 343

kompozycja panoramy dolnej półsfery 483

kompozycja podstawowej mapy nierówności 81 141

kompozycja podstawowej mapy odbić 152

kompozycja rozwinięć siatek dla jednej tekstury 79

kopiowanie z ekranu (GIMP) 253

malowanie bezpośrednio po modelu (w 3D View) 549 549 557 557

malowanie bezpośrednio po powierzchni modelu 155

mapowanie panoramy 468 471

masowa zmiana w rozwinieciach UV 195 554

nakładanie jednej tekstury na drugą 178 511

nanoszenie nieregularnych zabrudzeń 155

nazwa pliku (Inkscape) 286

nieprzejrzystość warstw (GIMP) 65

nierówności poszycia samolotu 59 330

nierówności, rozmyty 63 82

nowy, ustalanie nazwy 546

nowy, ustalanie rozmiaru 546

nowy, ustalanie typu 539 546

nowy, ustalanie wypełnienia 546

obrót (GIMP) 247

obrót panoramy 470 487

odwzorowanie nitów poszycia 56

odwzorowanie łbów śrub na teksturze 77

otoczenia wysokiej jakości (HDRI) 482

otworów w poszyciu 184

otwórz (rastrowy w Inkscape) 285

otwórz jako warstwę (GIMP) 230

panorama nieba 44

panorama otoczenia 41

panorama, rozwinięcie cylindryczne 483

parametry nowego w UV/Image Editor 539

parametry zapisu rozwinięcia UV 542

plik na tło renderingu 42 479 488

pliki HDR(I) 468

PNG, poziom kompresji (GIMP) 221

podstawianie jako tła sceny 42 479 482 488

pomocnicza mapa odbić (zabrudzeń) 154

pomocnicze kontrolki (GIMP) 217

porównanie rozwinięcia UV z 73

poszycia, cienie wzdłuż linii nitów 137

poszycia, rysowanie linii podziału 128

poszycia, rysowanie pokryw i zaślepek 128

poszycia, rysowanie śrub i nitów 129

poszycia, sprawdzanie na podglądzie renderu 136

poszycia, sprzeczne wymagania 129

poszycia, szczegóły gondoli podwozia 133

poszycia, szczegóły kadłuba 131

poszycia, szczegóły kołpaka śmigła 132

poszycia, szczegóły maski silnika 132

poszycia, szczegóły płata 133

poszycia, szczegóły płóciennej powierzchni 135

poszycia, szczegóły usterzenia 135

poszycia, weryfikacja na modelu 129

poszycia, wykorzystanie obrazów rozwinięć UV 128

promień rozmycia 64

przekoszenie (GIMP) 249

przenoszenie zmian z Blendera do GIMP 557

przesunięcie (GIMP) 248

przesunięcie panoramy 471

przetarć i odprysków farby 166

przygotowanie komponentów tekstur 140

przykład kamuflażu 160 193

przykład wygładzania linii 562

ramka wokół obrazu z rozwinięciami UV 543

rastrowy w Inkscape 286

rastrowy, aktualizacja w Blenderze 467

rastrowy, ograniczenia w teksturach 84

rastrowy, podgląd tekstury 467

rastrowy, powiązanie z teksturą 467

rastrowy, stworzenie nowego 546

rastrowy, zapisanie 547

rozjaśnienie 508

rozmycie (gaussowskie) 64

rozwinięcie wszystkich siatek w UV 125

rysowanie łączenia blach 53

skalowanie (GIMP) 251

sprawdzenie obrazu tekstury 88

sterowanie zakresem intensywności 509 510

sterujący intensywnością barwy 190

stworzenie pomocniczej mapa odbić 154

szybkie nałożenie na model 554

tekstury nierówności powierzchni 142

TIFF, metoda kompresji (GIMP) 221

tryb łączenia warstw (GIMP) 64

tworzenie na podstawie rozwninięcia UV 77

tworzenie stosu tekstur 511

tła za oszkleniem kabiny 490

tła, dopasowanie oświetlenia sceny 42 46

tła, problemy z mapowaniem Window 43

ustalanie barwy nowego w UV/Image Editor 539

ustalanie nazwy nowego w UV/Image Editor 539

ustalanie rozmiarów nowego w UV/Image Editor 539

usunięcie przejrzystych obszarów (GIMP) 221

usuwanie części (GIMP) 236 242

usuwanie z okna UV/Image Editor 539

utworzenie w oknie UV/Image Editor 539

uzyskanie negatywu 59

wektorowy z bitmapy (Inkscape) 354 356

wektorowy, z rozwinięciem UV 544

wiele różnych widoków (GIMP) 217

wpływ proporcji na rozwnięcie UV siatki 538

wpływ zwiększania szorstkości powierzchni 89 90

wybór z listy w UV/Image Editor 538

wygładzanie 561

wykorzystane w otoczeniu hybrydowym 44

wykorzystanie czcionek USAAF 179

wykorzystanie panoramy 469

wykorzystanie w teksturze 466

zagłębienia poszycia pod liniami nitów 63

zapisanie rozwinięcia UV do pliku 542

zapisanie rozwinięć UV wielu siatek naraz 543

zastosowanie mapy odbić światła 87 90

zastosowanie mapy szorstkości powierzchni 89

zastosowanie podstawowej mapy nierówności 145

zastosowanie podstawowej mapy odbić 152

zastosowanie podstawowej tekstury barwy 163

zastosowanie pomocniczej mapy nierówności 145

zastosowanie pomocniczej mapy odbić 154

zastosowanie pomocniczej mapy odbić jako tekstury barwy 156 158

zastosowanie proceduralnego ‘szumu’ jako tekstury odbić 187

zastosowanie tekstury otworów (przejrzystości) 184 186

załadowanie do okna UV/Image Editor 539

zmiana obiektu do pomalowania (Texture Paint) 549 557

zmiana odcienia 489

zmiana rozmiaru (GIMP) 226

zmiana rozmiaru (Inkscape) 284

znaków rozpoznawczych i tekstów 177 197

złożenie 44 484

złożenie rozwinięć UV w jednym pliku SVG 544

obrót
dopasowanie obszaru obrazu (GIMP) 246

niepożądane obcinanie obrazu (GIMP) 246

obiektu (Inksacpe) 313

obrazu (GIMP) 247

oś (GIMP) 247

oś (Inkscape) 311

wierzchołków (UV, siatki) 533

wokół selekcji 368

odbicie
przykład sterowania kolorem 454

odtworzenie
pliku Blendera 364

odzyskanie
pliku Blendera po awarii programu 364

odzyskiwanie
danych (bo błędzie programu) 376

Ofset
kontrolka z okna Gradient editor (Inkscape) 329

ogniskowa
kamery 22 402

ogon
kadłuba, pozycja na ogólnym obrazie UV 111

kadłuba, rozwinięcie w UV 106 107 109

ograniczenie
Track To 408

usunięcie 409

okapotowanie
silnika, rozwiniecie UV 112

okna
scalenie (GIMP) 212

okno
dla wielu obrazów (GIMP) 217

domyślny układ ekranu 373

edytora węzłów 389

główne (GIMP) 214

główne (Inkscape) 282

Info 362

obszar obrazu (GIMP) 217

przybornik właściwości (Properties) 372 393 442

przybornik z narzędziami (Tool Shelf) 372

Set Image Canvas Size (GIMP) 226

ustawienia barw 370

ustawień Blendera 367 383

zapisanie 366

zapisywania obrazu (GIMP) 220

zarządzanie (GIMP) 216

zmiana układu 381 381

okrąg
rysowanie (Inkscape) 308

Olive Drab
kolor kamuflażu w USAAF 580

Opacity
kontrolka z panelu Layers (Inkscape) 289

kontrolka z zakładki Layers (GIMP) 227

kontrolka, przykład zastosowania (Inkscape) 141 142

nieprzejrzystość (GIMP) 230

nieprzejrzystość, warstw (GIMP) 65

opcje podglądu transformacji (GIMP) 249 251

przejrzystość pędzla (GIMP) 265

warstwa, nieprzejrzystość (Inkscape) 56

Opaque Surface
Normal
parametr wejściowy 507

shader (grupa) 507

opcje
zmiana w GIMP 256 258

Open
polecenie z menu File 362 367

polecenie z menu File (GIMP) 219

polecenie z menu File (Inkscape) 283

Open as Layers
polecenie z menu File (GIMP) 230

Open Blender File
przycisk okna File Browser 363

Open Image
polecenie z menu Image (UV/Image Editor) 539

Open Recent
polecenie z menu File 364

ostry
węzeł (Inkscape) 302

osłona
chlodnic, rozwiniecie UV 112 176

karabinów, rozwiniecie UV 113

silnika, rozwinięcie w UV 114

otwarcie
obrazu w GIMP 219

obrazu w Inkscape 283

pliku Blendera 362 364

otwory
wrażenie grubości powłoki na krawędzi 185

wykorzystanie shadera Transparent BSDF 184

wykorzystanie tekstur przejrzystości 185

Outputs
lista z panelu Interface 442

Overwrite
polecenie z menu File (GIMP) 220

owiewka
kabiny, rozwinięcie w UV 120

skrzydła, rozwinięcie w UV 118

oś
obrotu 533

obrotu (GIMP) 247

obrotu (Inksacpe) 311

przekoszenia (Inksacpe) 311

przesuwanie 532

skalowania 534 535

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

P

Paint
tryb UV/Image Editor 525

Paint Mask
malowanie wybranych ścian siatki 551

Paint Stroke
geometria pędzla (Texture Paint) 550

Paintbrush
polecenie z menu Tools (GIMP) 234 243 263

Painting Mode
sposób wyboru obrazu (Texture Painting) 526 548

paleta
narzędzi (GIMP) 215

Pan
polecenie w Node Editor 390

panele dialogowe
blokowanie przesunięć (GIMP) 216

zarządzanie (GIMP) 216

panorama
a otoczenie hybrydowe 46

brak ostrości 470

dolnej półsfery 483

mapowanie obrazu w Cycles 468

nieba 44

obniżenie horyzontu 486

obrazy otoczenia wysokiej jakości 482

obrót 470 487

otoczenia sceny 41 468 482

otoczenia, dobór do jasności modelu 47 48 49

podgląd 463

przesunięcie 471

przykład wykorzystania 469

rozwinięcie cylindryczne 483

siatka wokół sceny 471

Sky Texture 41 459

za oszkleniem kabiny 490

zastosowanie plików HDR(I) 468

złożenie dwóch obrazów 44 484

parametr
grupy węzłów 442

zakres wartości 442

pasek barw
interpolacja barw 519

opis węzła Color Ramp 518

węzły 518 519

paski narzędzi
zmiana układu (Inkscape) 278

Paste Material
polecenie z zestawu Material 415

Pencil
polecenie z menu Tools (GIMP) 266

Pin
polecenie z menu UVs 71 536

Pivot
lista w oknie UV/Image Editor 533 534

Plexiglas
Glass
kolor podstawowy 495

Reflectivity
sterowanie przejrzystością 495 499

shader (grupa) 39 495

Specular
kolor połysku 495

plik
lista ostatnich 364

odtworzenie ostatnio otwartego 364

taktyka zapisywania 365

plik Blendera
struktura 571

plik startowy
Blendera 367 374

plik ustawień
Blendera 374

pliki tymczasowe
zapisywanie roboczych 376

podgląd
renderu w oknie 3D View 26

podmiana
węzła 445

podwozie
owiewki, rozwinięcie w UV 117

wnęka, rozwinięcie w UV 124

pokrywy
otworów w poszyciu, na mapie nierówności 128

polaryzacja
światła 585 591 591

polecenia
ustawienia skrótów do 369

pomocnicze
linie (GIMP) 223

linie (Inkscape) 295

poprawki
rezultatu wektoryzacji (Inkscape) 356

Posterize
polecenie z menu Color (GIMP) 354

poszycie
dynamiczne wgłębienia na powierzchniach krytych płótnem 343

gradient nierówności dla powierzchni krytych płótnem 342

odwzorowanie nitów 60 331

odwzorowanie powierzchni krytych płótnem 341

odwzorowanie szwu ‘na zakładkę’ 61 136 332 333

odwzorowanie śrub na teksturze 335

problem połączenia szwów ‘na zakładkę’ 334

łączenie ‘na styk’ 330

łączenie ‘na zakładkę’ 330

powierzchnia
podziałowa — poziom 399

powierzchnie
wewnętrzne, kadłuba, rozwinięcie w UV 123

powiększanie
widoku (GIMP) 224

widoku (Inkscape) 288

zawartości okna 390

poziom
podziału powierzchni 399

położenie
określanie dla obiektu Inkscape 296

połyski
algorytm Beckmann 439

algorytm CGX 439

połyskliwy
materiał 436

połączenie
węzłów, problem z widocznością 393

węzłów, sterowanie kształtem 394

Preferences
okno opcji (GIMP) 211

okno opcji (Inkscape) 277

polecenie z menu Edit (GIMP) 256 258

Preview
kontrolka z panelu Render
Sampling 25

Project From View
opcja z menu UV Mapping 418

polecenie z menu Mesh 72 96

przykład użycia polecenia z menu Mesh 78

projekcja
atrefakty w perspektywie (okno 3D View) 403

przełączenie na widok z kamery 402

Properties
kontrolka listy 395

przybornik właściwości 372 393 442

wyświetlanie kontrolek węzłów w panelu okna 390

prostokąt
edycja (Inkscape) 307

rysowanie (Inkscape) 306

zaokrąglenia narożników (Inkscape) 307

przejrzystość
warstw (GIMP) 65 230

zmiana dla warstwy (GIMP) 227

zmiana dla warstwy (Inkscape) 289

przekoszenie
obiektu (Inksacpe) 314

obrazu (GIMP) 249

oś (Inkscape) 311

przesunięcie
obiektu (Inkscape) 310

obrazu (GIMP) 248

osi obrotu (GIMP) 247

osi obrotu (Inkscape) 311

osi przekoszenia (Inkscape) 311

widoku (GIMP) 224

widoku (Inkscape) 288

wierzchołków (siatki w UV) 532

wzdłuż osi 532

przesuwanie
węzła 390

zawartości okna 390

przetrzeń barw
ustalenie dla nowego rysunku (GIMP) 255

przełączanie
konfiguracji Blendera 375

przybornik
blokowanie przesunięć paneli (GIMP) 216

ikon narzędzi (GIMP) 214

ikon narzędzi (Inkscape) 282

menu (GIMP) 215

nakładany na edytor 372

okno (GIMP) 215

zmiana rozmiaru obrazu w edytorze po wysunięciu 372

przycisk
wyboru koloru 386

przypinanie
siatki, UV 536

technika pracy w UV/Image Editor 537

przypisanie
istniejącego materiału materiału do obiektu 407

nowego materiału materiału do siatki 407

punkt pomocniczy
przesunięcie (Node Editor) 394

usunięcie (Node Editor) 394

wstawienie (Node Editor) 394

punktów
tryb edycji (Inkscape) 300 301 326

Put on Path
polecenie z menu Text (Inkscape) 57 317

pędzel
Bristles (GIMP) 266

definiowanie nowego (GIMP) 255

foldery z definicjami (GIMP) 256

intensywność (GIMP) 262

kluczowe parametry narzędzia (GIMP) 258

kontrast na krawędzi efektu (GIMP) 265 267 269

Lines (GIMP) 269

nadanie nazwy (GIMP) 256

narzędzie (GIMP) 234 243

odświeżenie palety (GIMP) 257

profil inensywności 553

przejrzystość efektu (GIMP) 265

rozmiar (GIMP) 262

Scratches (GIMP) 269

tryb Draw 551

tryb Smear 550

tryb Soften 553 553

usuwanie z programu (GIMP) 257

płócienne
pokrycie, gradient nierówności 342

pokrycie, sposób odwzorowania 341

pokrycie, wgłębienia dynamiczne 343

poszycie, obraz nierówności 135

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

Q

Quality
parametr eksportu obrazu JPEG (GMP) 221

Quick Mask
edycja obszaru zaznaczenia (GIMP) 243

tryb pracy (GIMP) 243

zachowanie obszaru zaznaczenia (GIMP) 245

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

R

R
składnik barwy 575

Radius
rozmiar pędzla (Texture Paint) 553

wybór rozmiaru pędzla (Texture Paint) 549

Raise to Top
polecenie z menu Object (Inkscape) 294

ramka
dodawanie węzła 393

etykieta 393

przesuwanie 392

selekcji (Inkscape) 311

tworzenie 392

usuwanie 393

wyjęcie węzła 393

właściwości 393

łącząca węzły 392

ramki
kabiny, rozwinięcie w UV 121

Range From Min
pomocniczy węzeł (grupy) 510

przykład zastosowania węzła 89 171

Range To Max
pomocniczy węzeł (grupy) 509

przykład zastosowaniu węzła 88

rastrowy
obraz w Inkscape 286

Rate
intensywność pokrywania kolorem (GIMP) 262

raytracing
ogólna zasada działania 453

Recalculate Inside
polecenie z menu Mesh 426

Recalculate Outside
polecenie z menu Mesh 425

polecenie z menu Mesh – przykład użycia 37

Recent
panel okna File Browser 362

Recover Auto Save
polecenie z menu File 376

Recover Last Session
polecenie z menu File 364

Rectangle Select
polecenie z menu Tools (GIMP) 222 237

Redo
przy malowaniu obrazów rastrowych 553

ref
obraz odbicia światła (od Reflectivity) 85

ref.png
obraz mapy odbić światła 86 86

zastosowanie do sterowania szorstkością (Roughness) powierzchni 89

zastosowanie do sterowania wartością Reflectivity 87 90

ref.xcf
plik z kompozycją mapy odbić światła (GIMP) 86

reference.png
poprawianie w trakcie pracy 104

rysunek referencyjny rozwinięcia UV 95

układ,modyfikacja 115

referencje
do pliku obrazu (Inkscape) 286

refrakcja
załamanie promieni w szkle 584

Refresh Brushes
polecenie z menu kontekstowego Brush (GIMP) 257

ref_details.png
efekt zastosowania jako podstawowej mapy odbić 153

obraz podstawowej mapy odbić 152

zastosowanie w materiale B.Skin.Camuflage 152

ref_dirt.png
efekt pomocnicza mapa odbić (zabrudzeń) 154

efekt zastosowania 156

malowanie śladów spalin 155

pomocnicza tekstura odbić 196

stworzenie obrazu 154

zastosowanie jako tekstury barwy 156 158

zastosowanie w materiale B.Skin.Camuflage 154

Region Overlap
przełącznik z sekcji User Preferences
System 372

Relations
panel zestawu Object 406

Reload Image
polecenie z menu Image 467

Remove
przycisk z panelu dodatku (Add-On) 384

Remove from Frame
polecenie z menu Node 393

Rename Layer
polecenie z menu Layer (Inkscape) 53

render
artefakt
czarne obszary na szkle 428

na dwustronnych ścian siatki 38

nieprawidłowa orientacja ścian siatki 37 38 456

przebarwienia gładkich powierzchni 26

błędne odbicia od tła w trybie Window 43

Cycles
podgląd w oknie 3D View 26

rozjaśnianie tła sceny 26

ustalanie liczby próbek 25 26

dobór intensywności świateł kierunkowych i otaczających 28

dobór jasności otoczenia 47 48 49

dopasowanie oświetlenia do obrazu tła 42 46

hybrydowe otoczenie sceny 44 46

integracja modelu z tłem — przykład 49

integracja modelu z tłem — uwagi 47

intensywność światła kierunkowego (‘słońca’) 28

intensywność światła otaczającego 28

jednolita barwa otoczenia 41

korekty
niepoprawne cienie 27

zbyt wyraźne krawędzie 28

max. dopuszczalna jasność promienia 497

obraz panoramy otoczenia 41

odrzucanie zbyt jasnych promieni 497

podstawowa kompozycja sceny 49

problemy ze szkłem 494 497 498

proceduralna panorama otoczenia 41

przejrzyste odbicia 498

rozjaśnianie obrazu poprzez ‘czas ekspozycji’ 29

sterowanie rozmyciem cieni 29

wybór ‘silnika renderującego’ 25

zasada tworzenia obrazu 453

załamanie promieni w szkle 584

Render
kontrolka z panelu Render
Sampling 25

parametr z panelu Render
Integrator 26

Render Image
polecenie z menu Render 24

Rendered
tryb rysowania 26

renderer
biased
na przykładzie Blender Internal 25

unbiased
na przykładzie Cycles 25

rendering
warstwa kamer i lamp 373

renderowanie
zapisanie rezultatu 366

Repeat
direct
powtarzanie gradientu (tryb Inkscape) 327

reflected
powtarzanie gradientu (tryb Inkscape) 327

Replace
polecenie z menu Image 103 554

Reset
polecenie z menu Mesh (UV Unwrap) 96 97

rezygnacja
z polecenia 532 533 534

RGB
polecenie z menu Image (GIMP) 230 234 241

tryb wyboru koloru 386

RGB Curves
polecenie z menu Color 520

typ krzywej
Blue 521

Composite 521

Green 521

Red 521

węzeł spektrum barw 520 588

RGB to BW
węzeł konwertujący 391

RGBColor
typ przestrzeni barw (GIMP) 255

rivets.png
pomocniczy plik mapy odbić światła 86

Rotate
linie pomocnicze (GIMP) 246

opcje narzędzia (GIMP) 246

polecenie z menu Tools (GIMP) 247

polecenie z menu UVs 533

zakładka panelu Transform (Inkscape) 323

Rotate Around Selection
przełącznik z sekcji User Preferences
Interface 368

Rough and Erode
filtr — ‘zabrudzenie’ linii rysunku (Inkscape) 149

rozmazywanie
narzędzie malarskie w GIMP 264

rozmiar
określanie dla obiektu Inkscape 296

ustalanie dla nowego obrazu w UV/Image Editor 539

zmiana dla obrazu (GIMP) 226

zmiana dla rysunku (Inkscape) 284

zmiana dla warstawy (GIMP) 226

rozmycie
metodą Gaussa (GIMP) 261

obrazu (gaussowskie) 64

promień rozmycia obrazu 64

rozwinięcie
alternatywne, wartości domyślne 163 178 514

dynamiczne, siatki, w UV/Image Editor 537

siatki, metodą Unwrap 70

siatki, w oknie UV/Image Editor 536

technika pracy w UV/Image Editor 537

UV, alternatywne 129 163 178 423 512 513

UV, chwyt powietrza 112

UV, dopasowanie rysunku referencyjnego 104

UV, dopasowanie siatek 114

UV, kadłub 106

UV, kadłub - nanoszenie szwów 107 108

UV, kadłub — pozycja na obrazie 111

UV, klapa skrzydła 120 124

UV, kołpak śmigła 117

UV, lotka 119

UV, maska silnika 112

UV, metody dla siatki 417 418

UV, oprofilowanie skrzydła 118

UV, oszklenie kabiny 120

UV, osłona chwytu powietrza 113

UV, osłona chłodnic 112 176

UV, osłony karabinów 113

UV, owiewki podwozia 117

UV, pominięte ściany 96 97

UV, poprawianie deformacji 74

UV, porównanie z planami 73

UV, powierzchnie wewnętrzne 123

UV, problemy z ujemną skalą obiektu 176

UV, prostowanie 74

UV, przygotowanie rysunku referencyjnego 95

UV, ramki kabiny 121

UV, rzut płaski siatki 72

UV, siatki skrzydła 97

UV, siatki, zapisanie obrazu 75

UV, skrzydła 175

UV, statecznik pionowy 122 123

UV, statecznik poziomy 123

UV, ster kierunku 122

UV, ster wysokości 123

UV, symetryczna połowa kadłuba 107 114

UV, tunel chwytu powietrza 112

UV, weryfikacja 109

UV, wnęka klapy skrzydła 124

UV, wnęka podwozia głównego 124

UV, wnętrze chłodnicy 125

UV, wszystkich siatek 125

UV, wykorzystanie w Inkscape 77

UV, zaznaczanie szwu 421

UV, zaznaczenie w UV/Image Editor 422

UV, zmiany w rysunku 104

UV, łopata śmigła 117

UV, ‘odwijanie’ pionowych ścian 98

UV, ‘odwijanie’ wnęki lotki 99

rysowanie
elipsy (Inkscape) 308

krzywych (Inkscape) 304

linii (GIMP) 235

linii (Inkscape) 297

linii pomocniczych 564

obrysów zamkniętych (Inkscape) 297

obszaru wyboru (GIMP) 241 243

okręgu (Inkscape) 308

pomocniczych linii na ekranie 563

prostokąta (Inkscape) 306

prostych (GIMP) 235

selekcji (GIMP) 242

tekstu (Inkscape) 315 352

wybór trybu dla linii pomocniczych 564

łuku (Inkscape) 309

rysunek
referencyjny dla rozwinięcia UV 95

szczegółów poszycia - plan warstw 60

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

S

S
nasycenie koloru 386

Samples
zespół kontrolek z panelu Render
Sampling 25

Sampling
panel z kontekstu Render 497

panel zestawu Render (Cycles) 25

Save
polecenie z menu File 365

polecenie z menu File (Inkscape) 54

Save a Copy
polecenie z menu File (GIMP) 65

Save As
polecenie z menu File 365

polecenie z menu File (GIMP) 220

Save As Image
Compression
poziom kompresji pliku z obrazem 547

panel parametrów polecenia 547

polecenie z menu Image 366 547

Save Defaults
przycisk z okna eksportu obrazu (GMP) 221

Save Image
polecenie z menu Image 547

Save Screenshot
zapisanie obrazu ekranu 366

Save Startup File
polecenie z menu File 367 374

Save to Channel
polecenie z menu Select (GIMP) 245

Save to Channels
polecenie z menu Select (GIMP) 162

Save User Settings
przycisk z okna User Preferences 367 374

Save UV Layout
przykład zastosowania 75

Scale
linie pomocnicze (GIMP) 251

opcje narzędzia (GIMP) 251

polecenie z menu Image (GIMP) 354

polecenie z menu Tools (GIMP) 251

polecenie z menu UVs 534

rozmiar pędzla (GIMP) 262

scena
dobór jasności otoczenia 47 48 49

dopasowanie oświetlenia do obrazu tła 42 46

dopasowanie położenia ‘słońca’ 459

integracja modelu z tłem — przykład 49

integracja modelu z tłem — uwagi 47

jednolita barwa otoczenia 41

kompozycja otoczenia 44 46

obniżenie horyzontu panoramy otoczenia 486

obraz panoramy na siatce 471

obraz tła za oszkleniem kabiny 490

opcje tworzenia 385

otoczenie 459 469 479

otoczenie hybrydowe 44 46

panorama dolnej półsfery 483

panorama otoczenia 41 468 482

panorama Sky Texture 41 459

podgląd otoczenia 463

podstawy kompozycji 49

problemy z obrazem mapowanym w trybie Window 43

shader Background 459 469 479

tło obrazu 42 479 482 488

usuwanie 385

utworzenie nowej 385

użycie Gradient Texture do podziału otoczenia sceny 473 485

wstawienie zdjęcia tła 42

wyróżnienie powierzchni przejrzystych 490

zarządzanie 385

zastosowanie węzła Geometry 464

zastosowanie węzła Mapping 55 464 470 473 480

zastosowanie węzła Texture Coordinate 55 470 473

zmiana nazwy 385

zmiana odcienia panoramy otoczenia 489

zróżnicowanie oświetlenia modelu i obrazu tła 45 45 45 488

Scene
pojęcie w Blenderze 573

schemat barw
przełączanie (Inkscape) 279

Scratches
rodzaj pędzla (GIMP) 269

Screen layout
kontrolka z nagłówka okna Info 381

Screen Shot
polecenie z menu File (GIMP) 253

screws.png
kompozycja z podstawową teksturą barwy 172

pomocniczy plik mapy odbić światła 86

pomocniczy plik tekstury barwy 171

scripts
folder konfiguracji Blendera 374

Seam
linia podziału ścian do rozwinięcia w UV 100

siatka, szwy rozwinięcia UV 421

sekcja
Modifiers 399 411

Select Paint Target
dodatek do Blendera 552 555

Select Window
okno dialogowe kopiowania ekranu (GIMP) 253

selekcji
ramka (Inkscape) 311

Set
polecenie z okna XML Editor (Inkscape) 320

Set Active Object as Camera
polecenie z menu View 27 401

Set Image Canvas Size
okno (GIMP) 226

Settings
panel z zestawu Material 434

Shade Flat
tryb cieniowania siatki 427

Shade Smooth
tryb cieniowania siatki 425 427

shader
definiowanie nowego 440

Diffuse BSDF 35 435

Glossy BSDF 35 436

Mix Shader 35 437

przejrzyste odbicia 498

wyjaśnienie pojęcia 35

łączenie w Mix Shader 437

Shader
submenu menu Add (Node Editor) 437

shadows.png
pomocniczy plik mapy odbić światła 85

Shared location
UV, tryb selekcj 528

Shared vertex
UV, tryb selekcji 528

Sharp
oznaczanie ostrych krawędzi 429

Shear
linie pomocnicze (GIMP) 249

opcje narzędzia (GIMP) 249

polecenie z menu Tools (GIMP) 249

Show Hidden
polecenie z menu Object 404

Show preview image
opcje narzędzia (GIMP) 249 251

Show preview in image window
opcja eksportu obrazu JPEG (GMP) 221

Shrink
polecenie z menu Select (GIMP) 240

siatka
aktywne łącze materiału 415

alternatywne rozwinięcia UV 130 423

cienie przy ostrych krawędziach 428

czego unikać w rozwinięciu UV 70

dodadnie modyfikatora 411

dodanie nowego łącza materiału 415

edytor współrzędnych UV 524

efektywna praca w UV/Image Editor 71

eksport rozwinięć UV wielu siatek 543

grupy wierzchołków 96 419

interpolacja kierunków normalnych 427 427

lustrzane odbicie 411

metody rozwinięcia w UV 417 418

nałożenie tekstury 523

obraz do testowania deformacji rozwinięcia UV 539

opcje rozwinięcia Unwrap 417

oznaczanie ostrych krawędzi 429

parametry zapisu rozwinięcia UV do obrazu 542

poprawianie zbyt podkreślonych krawędzi 28

poprawianie ‘cieni’ wzdłuż ostrych krawędzi 27

problem ze ścianami dwustronnymi 38 456

prostowanie rozwinięcia UV 74

przeliczenie kierunku normalnych ‘do wewnątrz’ 426

przeliczenie kierunku normalnych ‘na zewnątrz’ 425

przypisanie do materiału 414

przypisanie indywidualnych ścian do różnych materiałów 416

przypisanie materiału 31

przypisanie wielu materiałów 32 415

przypisanie wielu siatek do jednego materiału 414 415

przypisywanie do wspólnego obrazu 101 103

rozwijanie, dynamiczne, w UV/Image Editor 537

rozwinięcie na powierzchni tekstury (UV) 523

rozwinięcie w UV 70 417 418

skok do 378

skopiowanie przypisania do materiału 415

szwy UV, widoczność 421

technika pracy w UV/Image Editor 537

testowanie deformacji płata w UV 101

topologia rozwinięcia UV 524

ustawienie bieżącego widoku w płaszczyźnie krawędzi 413

ustawienie bieżącego widoku w płaszczyźnie ściany 413

usunięcie łącza materiału 415

utworzenie walca 398

UV
mapowanie aktywne 424

mapowanie domyślne dla renderowania 424

UV, automatyczne łączenie ścian 100

UV, dopasowanie rozwinięcia do miejsca na obrazie 79

UV, eksport rozwinięcia do pliku SVG 79 80

UV, poprawianie deformacji 74

UV, prostowanie żeber skrzydła 103

UV, przypinanie 536

UV, rozwijanie etapami 72

UV, rozwijanie w oknie UV/Image Editor 536

UV, rzutowanie na 72

UV, wybór wierzchołka 527

wklejenie przypisania do materiału 415

wpływ kierunków normalnych 425

wpływ orientacji ścian 456

wpływ proporcji na rozwnięcie UV 538

wyświetlenie normalnych 425 426

zapisanie obrazu rozwinięcia UV 75

zapisanie rozwinięcia UV do zewnętrznego pliku 542

zaznaczanie nazwanej grupy wierzchołków 419

zaznaczanie szwów rozwinięcia UV 421 422

zmiana kierunku normalnych na przeciwny 37 426

łącze materiału 415

’utrwalenie’ modyfikatora 411

siatki
powierzchnie podziałowe a rozwinięcia UV 102

Simple Blur
filtr — proste rozmycie Gaussa (Inkscape) 148

Single-Window Mode
opcja menu Windows (GIMP) 218

opcja z menu Windows (GIMP) 212

Size
kontrolka z panelu Object Data
Lamp 29

skalowanie
obiektu (Inksacpe) 312

obrazu (GIMP) 251

wierzchołków (siatki UV) 534

wzdłuż osi 535

skin.svg
Bkg-Grey
warstwa z szarym tłem 81 81

Bkg-White
warstwa z białym tłem 82 85

Bumps
warstwa z zagłębieniami 82 85 131 131 136 141 142 149

Contours
warstwa z zaciemnień na krawędziach poszycia 85 137 142 149

Cover
warstwa z pokrywami i zaślepkami otworów 128 131 136 141 143 149

Fabric
warstwa szczegółów powierzchni krytych płótnem 141

warstwa ze statycznymi szczegółami płóciennego poszycia 135 136

Fabric Bumps
warstwa ze dynamicznymi szczegółami płóciennego poszycia 135 136

wgłębienia w powierzchniach krytych płótnem 343

grupowanie
zawartości warstw 140

Holes
warstwa otworów w poszyciu 136 141 184

Lines
warstwa z liniami lub krawędziami paneli 60

warstwa z liniami podziału poszycia 62 85 128 131 149

Overlay
warstwa z pozostałymi panelami poszycia 62

warstwa z ‘najwyższymi’ elementami poszycia 81 128 129 131 141

Panel V/H
warstwy z krawędziami paneli poszycia 62 81 141

Result
Nor-Blur 141 142 143

Nor-Details 141

Ref-Blur 148

Ref-Grunge 148 149

Ref-Other 148 150

Result*
warstwy z gotowym obrazem tekstur 142

Rivets
warstwa z nitami 60 81 82 85 128 131 138 141 142 148

Screws
warstwa ze śrubami 81 82 128 131 131 141

Shadows
warstwa z cieniami pod liniami nitów 63 137 138 142 148

warstwa z wgłębieniami pod nitami 82 85

stworzenie rysunku powierzchni zewnętrzych 95

wzorzec tekstur 140

skin.xcf
plik z obrazami tekstury barwy i odbić 155 161 193

skok
do węzła siatki 378

do zaznaczonego wierzchołka 530

skrypty
Blendera 370 383

skrzydło
alternatywne rozwinięcie UV 175

gondola podwozia
obraz poszycia 133

poprawki siatki 134

obraz poszycia 133

pokrywa podwozia
obraz poszycia 133

poprawki siatki 134

rozwinięcie siatki w UV 97

UV, klapa 120

UV, klapa skrzydła 124

UV, lotka 119

UV, owiewka podwozia 117

UV, prostowanie krawędzi żeber 103

UV, wnęka klapy skrzydła 124

UV, wnęka podwozia głównego 124

UV, ’odwijanie’ wnęki lotki 99

ściany, pominięte w rozwninięciu UV 97

’odwijanie’ pionowych ścian w rozwinięciu UV 98

Sky Texture
Ground Albedo
intensywność odbić z ‘ziemi’ 461

Hosek/Wilkie
tryb pracy 461

obraz otoczenia 459

polecenie z menu Add 459

Preetham
tryb pracy 459

sterowanie położeniem ‘słońca’ 459

sterowanie zamgleniem 460

Turbidity
parametr 460

węzeł tekstury 459

składnik
barwy 482

Slots
zakładka przybornika (Texture Painting) 526 548

Smear
narzędzie malarskie (Texture Paint) 550

Smooth Shade
efekt uboczny na ostrych krawędziach 27 427 428

Smooth Stroke
wybór wygładzania linii (Texture Paint) 550

Smudge
polecenie z menu Tools (GIMP) 264

Snap
menu rozwijalne w oknie UV/Image Editor 530

polecenie z menu Object 378

Soften
narzędzie malarskie (Texture Paint) 553 553

problemy w 3D View 553

Softness
sterowanie rozmyciem połysku 495

sonda
deformacja obrazu odbitego na powierzchni kuli 463

do podglądu otoczenia 462 463

Source Graphic
typ obrazu wejściowego dla filtra (Inkscape) 338

sRGB
tryb konwersji barw 387

Stack Image
Alpha
wejście (na nieprzejrzystość ‘górnego’ obrazu) 511

Background
wejście (na ‘dolny’ obraz) 511

budowanie stosu tekstur 511

Color
wejście (na ‘górny’ obraz) 511

Opacity
intensywnością efektu 511

przykład zastosowania 180 183

pomocniczy węzeł (grupy) 511

przykład zastosowania 178

Standard Deviation
parametr efektu Gaussian Blur (Inkscape) 338 348

startup.blend
ustawienia Blendera 367 374

statecznik
pionowy, rozwinięcie w UV 122 123

poziomy
obraz poszycia 135

poziomy, rozwinięcie w UV 123

ster
wysokości, rozwinięcie w UV 123

ster kierunku
rozwinięcie w UV 122

stery
obraz poszycia 135

rysowanie, na mapie nierówności 135

Sticky Selection Mode
Disabled
tryb selekcji UV 528

lista w nagłówku okna. 528

stop
węzeł gradientu (Inkscape) 328

Stop Color
sekcja z okna Gradient editor (Inkscape) 328

Strength
kontrolka z panelu Object Data
Nodes 28

kontrolka z panelu World
Surface 28

zmiana intensywności pędzla (Texture Paint) 549 556

stroke
linia obrysu (Inkscape) 298

Stroke Method
wybór sposobu malowania (Texture Paint) 550 556

Stroke Paint
typ obrazu wejściowego dla filtra (Inkscape) 338

stroke-dasharray
atrybut w pliku SVG 56 320

struktura
pliku Blendera 571

stworzenie
klapek trymera 185

styczne
do krzywej (Inkscape) 301 302

style
atrybut w pliku SVG 320

Subdivide UVs
opcja modyfikatora Subdivision Surface 102

Subdivision Surface
modyfikator 399

Subdivisions
Render
w modyfikatorze Subsurf 399

View
w modyfikatorze Subsurf 399

Substract
sposób nakładania barw 577

Substract from Selection
polecenie z menu kontekstowego Channels (GIMP) 245

polecenie z menu kontekstowego zakładki Channels (GIMP) 162

Substraction
sposób nakładania barw 577

Sun
utworzenie źródła światła 400

Surface
panel z zestawu Material 434

Surface Output
Displacement
wejście dla tekstury nierówności 186 186

Opacity
wejście dla tekstury otworów 186

przykład zastosowania 186

Surface
wejście na shader 186

węzeł wyjściowy (grupa) 186

SVG
podgląd struktury (Inkscape) 320

symetryczny
węzeł (Inkscape) 301

System
panel okna File Browser 362

sekcja okna User Preferences 371 372

system
nazewnictwa 458

szarości
odcienie (GIMP) 230

szew
poszycia, odwzorowanie na teksturze 61 136 332 333

poszycia, problem z odwzorowaniem na teksturze 334

szkło
charakterystyka odbicia światła 585

dodanie połyskliwości 39

efekt ‘świetlików’ 494 497

odbicia otoczenia 498

połysk na powierzchni 494 499

połączenie shaderów Glass i Glossy 494

połączenie shaderów Transparent i Glossy 499

problemy z odbiciem otoczenia 498

problemy z renderem 494 497

przejrzyste odbicia otoczenia 498

wykorzystanie Glass BSDF 39 492

wykorzystanie shadera Glossy BSDF 494

wykorzystanie shadera Transparent BSDF 493

wykorzystanie współczynnika Fresnela 494 499

szorstkość
materiału 435 436

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

Ś

ściana
kierunek normalny do 425 456

ustawienie widoku równolegle do 413

śmigło
kołpak, rozwinięcie w UV 117

łopata, rozwinięcie w UV 117

średnia ważona
sposób nakładania barw 576

środek
2D Cursor 533 534

Bounding Box Center 533

Median Point 534

śruby
odwzorowanie na teksturze 77 335

podkreślenie na teksturze barwy 171 172

rysowanie, na mapie nierówności 129

światło
charakterystyka odbicia od aluminium 587

charakterystyka odbicia od szkła 585

dobór intensywności 28

dobór intensywności otoczenia 47 48 49

dopasowanie do obrazu tła 42 46

kompensata zanikania barw na matowych powierzchniach 181 182

kompensowanie oświetlenia tekstury 164

odbicie od gładkiej powierzchni 584

otaczające
sterowanie intensywnością 28

otoczenia o jednolitej barwie 41

polaryzacja 585 591 591

przykład zastosowania w Blenderze 22

Sun
sterowanie intensywnością 28

sterowanie rozproszeniem cieni 29

ustawienia jak w pochmurny dzień 28

ustawienia jak w słoneczny dzień 29

utworzenie światła typu Sun 400

wpływ intensywnego światła na teksturę 164

współczynnik Fresnela 586

współczynnik refrakcji (IOR) 584

współczynnik refrakcji dla materiałów nieprzejrzystych 587

współczynnik refrakcji dla metali 587

wykorzystanie panoramy otoczenia 41

wykorzystanie Sky Texture 41

zanikanie barw na podświetlonych, matowych powierzchniach 180

załamanie promieni na renderowany obrazie 584

załamanie promieni w szkle 584

zmiana typu 23

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

T

Tablica znaków
program narzędziowy (Inkscape) 352

tekst
czcionki USAAF Stencil (Inkscape) 179

edycja (Inkscape) 316

napisy na samolocie (Inkscape) 353

przekształcenie na ścieżkę (Path) (Inkscape) 179

rysowanie (Inkscape) 315 352

uzyskanie przerw na szablonach (Inkscape) 179

wzdłuż krzywej (Inkscape) 317

wzdłuż krzywej — zmiany (Inkscape) 317

tekstura
aktualizacja obrazu 467

barwy
analiza na podstawie zdjęcia 195

kamuflażu AVG 196

naniesienie ogólnego ‘wyblaknięcia’ 169

naniesienie przetarć i odprysków farby 166 196

naniesienie zabrudzeń 168

nałożenie koloru podstawowego 162 193 194

nałożenie ‘szumu’ 165

plamy kamuflażu 194

podkreślenie śrub 171 172

sprawdzanie plam kamuflażu 195

sterowanie intensywnością przetarć i odprysków farby 167

brak ostrości obrazu 470

czego unikać w rozwinięciu UV siatki 70

deformacja krawędzi panelu 110

deformacja na grzbiecie samolotu 110

deformacja wzdłuż szwów — rozwiązanie 131

domyślne mapowanie w Cycles 54

dopasowanie do obiektu 55

dopasowanie rysunku referencyjnego 104

dołączanie do schematu 466

dynamiczne wgłębienia na powierzchniach krytych płótnem 343

edycja szwów nitów 57

efekt zastosowania map nierówności 147

efekt zastosowania podstawowej mapy odbić 153

efekt zastosowania pomocniczej mapy odbić 156

efektywna praca z siatką w UV/Image Editor 71

gradient nierówności dla powierzchni krytych płótnem 342

jak źródło współczynnika łączenia obrazów 44 484

kompensowanie silnego oświetlenia 164

kompozycja drugorzędnej mapy nierówności 82 144

kompozycja mapy odbić światła 85 86

kompozycja panoramy dolnej półsfery 483

kompozycja podstawowej mapy nierówności 81 141

kompozycja podstawowej mapy odbić 152

kompozycja proceduralnych ‘szumów’ (przykład) 478

kompozycja rozwinięć siatek w jednym obrazie 79

korekta barw obrazu 466 469

korekta gamma 466

krawędzi natarcia — układ 102

kształt gradientu 472

malowanie bezpośrednio po modelu (w 3D View) 549 557

malowanie na powierzchni modelu 155

malowanie obrazu bezpośrednio na modelu 548

mapa normalnych 506

mapowanie 479

mapowanie obrazu panoramy 468 471

mapowanie panoramy otoczenia 483

mapowanie płaskie 52

mapowanie UV 70

modulacja barwy Specular 181

modyfikacja tekstury Waves 518

nakładanie jednej na drugą 178 511

nakładanie na model 52

narysowanie nierówności poszycia 330

nałożenie na model 523

nieregularnych zabrudzeń 155

nierówności 59

nierówności na krawędzi otworu 185

nierówności, zagłębienia poszycia pod liniami nitów 63

nierówności, zasada działania 60

niezależne sterowanie intensywnością 68

obraz drugorzędnej tekstury nierówności 63 82

obraz nierówności powierzchni 142

odbicia
kamuflażu AVG 196

naniesienie zacieków 196

odwzorowanie nierówności poszycia 59

odwzorowanie nitów 60 60 331

odwzorowanie nitów poszycia 56

odwzorowanie powierzchni krytych płótnem 341

odwzorowanie szwu ‘na zakładkę’ 61 136 332 333

odwzorowanie łbów śrub 77

odwzorowanie śrub na poszyciu 335

ograniczanie intensywności węzłem Range From Min 89

ograniczanie intensywności węzłem Range To Max 88

ograniczenia obrazów rastrowych 84

ograniczenia zastosowania węzła Moderate 88

opcje zapisania do obrazu (Inkscape) 54

optymalne wymiary obrazu 287

panorama nieba 44

piksele tekstury 466 472 475

pliki HDR(I) 468

podgląd obrazu 467

podstawowe przypisania do materiału 69

pomocnicza mapa odbić (zabrudzeń) 154

poszycia
cienie wzdłuż linii nitów 137

otwory 184

rysowanie linii podziału 128

rysowanie pokryw i zaślepek 128

rysowanie płóciennej powierzchni 135

rysowanie śrub i nitów 129

sprawdzanie na podglądzie renderu 136

sprzeczne wymagania 129

szczegóły gondoli podwozia 133

szczegóły kadłuba 131

szczegóły kołpaka śmigła 132

szczegóły maski silnika 132

szczegóły płat 133

szczegóły usterzenia 135

weryfikacja na modelu 129

wykorzystanie obrazów rozwinięć UV 128

powiązanie z plikiem obrazu 467

problem łączenia szwów ‘na zakładkę’ 334

problemy z wyświetlaniem w oknie 3D View 555

proceduralna
Sky Texture 459

przenoszenie zmian z Blendera do GIMP 557

przykład wykorzystania panoramy 469

przypisanie współrzednych UV do siatki 524

rozjaśnianie ciemnych miejsc 508

rozwijanie UV siatki płata 103

rozwinięcie siatki w UV 417 418

rysowanie łączenia blach 53

selektywna modulacja barwy Specular 182

sprawdzanie obrazu 554

sprawdzanie przypisanego obrazu 88

sterowanie dowolnym parametrem materiału 190

sterowanie głębokością 59 67

sterowanie intensywnością 59 67

sterowanie intensywnością barwy 190

sterowanie intensywnością cieni 191 199

sterowanie zakresem intensywności 509 510

stworzenie pomocniczej mapy odbić 154

tworzenie stosu tekstur 511

tło obrazu 54

utworzenie nowej (rastrowej) 466

UV, rozwinięcie siatki 523

uwagi o mapowanie tekstury otworów (przejrzystości) 186

uzgodnienie położenia siatek na obrazie 131

użycie alternatywnego mapowania UV (Color) 161

użycie alternatywnego mapowania UV (Decals) 178

użycie gradientu do podziału otoczenia sceny 473 485

wartości gradientu 472

wartości ‘szumu’ 475

Waves – ostre krawędzie pasków 519

Waves – zmiana wzoru pasków 519

wielokrotne używanie tego samego obrazu 466

wpływ intensywnego oświetlenia na barwę 164

wpływ intensywności barwy na cienie 190

wpływ mapy szorstkości powierzchni 89 90

wpływ trybu cieniowania na współrzędne Normal 517

wpływ trybu Shade Flat na współrzędne Normal 517

wpływ trybu Shade Smooth na współrzędne Normal 517

współrzędne 479

współrzędne a kamera 480

współrzędne Generated 516

współrzędne Normal 516 517

współrzędne Object 516

współrzędne okna renderu 42 479 488

współrzędne tekstury 466 472 475

współrzędne UV 515

wyjaśnienie pojęcia 52

wykorzystanie węzła Image Texture 54

wyspecjalizowany węzeł do sterowania intensywnością 67

wyświetlanie w oknie 3D View 539 551 554

wyświetlanie w oknie 3D View (metoda alternatywna) 540

węzeł (gradientu) 472

węzeł (losowe ‘komórki’) 476

węzeł (losowy szum) 475

węzeł (panoramy otoczenia) 41 468

węzeł (pliku rastrowego) 466

węzeł (złożony szum) 477

zakrzywione szwy nitów 57

zanikanie barw na podświetlonych, matowych powierzchniach 180

zastosowanie mapy odbić światła 87 90

zastosowanie mapy szorstkości powierzchni 89

zastosowanie podstawowej mapy nierówności 145

zastosowanie podstawowej mapy odbić 152

zastosowanie podstawowej tekstury barwy 163

zastosowanie pomocniczej mapy nierówności 145

zastosowanie pomocniczej mapy odbić 154

zastosowanie pomocniczej mapy odbić jako tekstury barwy 156 158

zastosowanie proceduralnego ‘szumu’ jako tekstury odbić 187

zastosowanie tekstury otworów (przejrzystości) 184 186

zastosowanie tekstury otworów, efekty uboczne 188

zmiana intensywności barwy 164 198

zmiana nasycenia barwy 167

zmiana obiektu do pomalowania (Texture Paint) 549 557

zmiana odcienia obrazu 489

zmiana znaku 59

znaków rozpoznawczych i tekstów 177 197

zwiększenie intensywności węzłem Range From Min 171

złożenie dwóch obrazów 44 484

Test
obraz przypisany wszystkim siatkom 101 103

Texture Coordinate
Camera
problem z odbiciem obrazu otoczenia 481

współrzędne aktywnej kamery 480

Generated
przykład zastosowania 187

współrzędne tekstury 187 516

Normal
współrzędne tekstury 516 517

Object
współrzędne mapowania tekstury 55

współrzędne tekstury 516

polecenie z menu Input 515

UV
współrzędne tekstury 515

zastosowanie do mapowania tekstur 83

Window
problem z odbiciem obrazu otoczenia 43 480 481 490

współrzędne okna renderu 42 479 488

węzeł wejściowy 55 470 473 479 515

Texture Paint
kursor myszy 548

malowanie wielu obiektów 551

przykład zastosowania trybu okna View 3D 154

tryb pracy okna 3D View 526

tryb pracy w oknie 3D View 548 554

typy narzędzi malarskich 550 553

wybór aktywnego obiektu 551 552

Textured
tryb wyświetlania w oknie 3D View 539

tryb wyświetlania — mankamenty 540

Textured Solid
opcja z panelu Display (przybornik Properties) 540

tryb wyświetlania tekstur w oknie 3D View 551 554

Themes
sekcja okna User Preferences 370

Timer
interwał autozapisywania, z sekcji File 376

To Scene
polecenie z menu Object 385

Toggle Quick Mask
polecenie z menu Select (GIMP) 161 243 268

Tool Shelf
przybornik z narzędziami 372

Tools
menu (GIMP) 218

Trace Bitmap
polecenie z menu Path (Inkscape) 355

Track To
opis ograniczenia 408

przykład użycia ograniczenia 23

Target Z
podążanie za orientacją ‘celu’ 408

usunięcie ograniczenia 409

Track To Constraint
utworzenie ograniczenia 408

Transform
panel (Inkscape) 323

polecenie z menu Object (Inkscape) 312 313 314 323

transformacja
obiektu (Inksacpe) 323

rezygnacja (z polecenia) 532 533 534

zatwierdzenie (GIMP) 247 248 250 252

transformacje
podgląd rezultatu (GIMP) 249 251

Translate
polecenie z menu UVs 532

Transparent BSDF
shader 184 493

Triple Buffer
opcja Window Draw Method (User Preferences
System) 372

True Type
czionki (Inkscape) 352

USAAF Serial Stencil (Inkscape) 353

USAAF Stencil (Inkscape) 352

tryb rysowania
okna widoku 26

trymer
modelowanie klapek 185

tunel
chwytu powietrza, rozwinięcie UV 112

Turbulence
Base Frequency, parametr (Inkscape) 346

efekt filtra obrazu (Inkscape) 346 349

Octaves, parametr (Inkscape) 346

Seed, parametr (Inkscape) 346

Type, parametr (Inkscape) 346

tworzenie
węzła 390

typ
automatyczna konwersja dla węzłów 391

węzła 391

tło
obrazu tekstury 54

wstawienie zdjęcia w tło renderingu 42

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

U

udział
shaderów 437

ukrywanie
obiektów 404 404

zawartości warstwy (GIMP) 228

zawartości warstwy (Inkscape) 289

Undo
polecenie z menu Edit (GIMP) 235 236

przy malowaniu obrazów rastrowych 553

Ungroup
polecenie z menu Object (Inkscape) 325

Unpin
polecenie z menu UVs 537

Unwrap
opcja z menu UV Mapping 417

parametry polecenia 417

polecenie z menu Mesh 70 70 417

polecenie z menu UVs 71 73 536

urządzenia wejściowe
przypisanie funkcji (GIMP) 258 259

USAAF Serial Stencil
czcionka True Type (Inkscape) 353

USAAF Stencil
czcionka True Type (Inkscape) 352

Use Nodes
przycisk z panelu Object Data
Nodes 27

przycisk z panelu World
Surface 27

User Preferences
okno 367 380 383

sekcja Add-Ons 370

sekcja Editing 368

sekcja File 371 376

sekcja Input 369

sekcja Interface 368

sekcja System 371 372

sekcja Themes 370

userpref.blend
ustawienia Blendera 374

ustawienia
Add-Ons 370

aktywnych dodatków (add-ons) 370

autozapis 371 376

barw okna 370

Blendera dla tej książki 375

czcionek ekranu 371

domyślnego układu ekranu 373

Editing 368

File 371

folder config 374

folder scripts 374

Input 369

Interface 368

nadpisanie istniejących 375

plik startowy 367 374

plik startup.blend 367 374

plik userpref.blend 374

plik z konfiguracją programu 374

położenie katalogu 374

przełączanie 375

skrótów klawiatury 369

System 371 372

Themes 370

zapisywanie 367 374 375

usterzenie
UV, statecznik pionowy 122 123

UV, statecznik poziomy 123

UV, ster kierunku 122

UV, ster wysokości 123

usuwanie
aktualnej sceny 385

dodatków 384

linii pomocniczych 564

ograniczenia 409

ramki 393

układu ekranu 382

warstwy (GIMP) 233

warstwy (Inkscape) 291

węzłów 390

z obrazu w GIMP 236 242

utworzenie
nowego materiału (BI) 559

nowego materiału (Cycles) 433

nowego obrazu w GIMP 255

nowej sceny 385

nowej tekstury rastrowej (Image Texture) 466

powiązania obiektu i materiału 407

powiązania siatki i materiału 407

UV
a wygładzanie modyfikatorem Subsurf 102

alternatywne, rozwinięcia tej samej siatki 129 163 178 423 512 513

edytor siatki 524

edytor, nagłówek 525

edytor, opis okna UV/Image Editor 525

edytor, tryb View 525

eksport rozwinięcia siatki do pliku SVG 79 80

eksport rozwinięć UV wielu siatek naraz 543

eksport wszystkich ścian rozwinięcia UV 543

kadłub
chwyt powietrza 112 113

deformacja wzdłuż krawędzi panelu 110

deformacja wzdłuż szwów 110

dopasowanie siatek 114

kołpak śmigła 117

ogon i okolice kabiny 106 107 111

okapotowanie silnika 112 114

oprofilowanie skrzydła 118

osłona chłodnic 112 176

osłony karabinów 113

owiewka kabiny 120

powierzchnie wewnętrzne 123

ramki kabiny 121

szwy na ogonie 108

weryfikacja 109

wnętrze chłodnicy 125

łopta śmigła 117

linia podziału ścian siatki 100

mapowanie tekstur 70

mapowanie tekstury otworów (uwagi) 186

mapowanie, aktywne 424

mapowanie, domyślne dla renderowania 424

mapowanie, kontrolka przełącznika 424

mapowanie, usunięcie 423

mapowanie, utworzenie nowego 423

mapowanie, zmiana nazwy 423

obraz
całości 125

szybka zmiana dla wszystkich siatek 554

otwór
krawędzie 98

podgląd rozwinięć UV wielu siatek (w UV/Image Editor) 543

problemy z rozwinięciem siatki obiektu o ujemnej skali 176

przestrzeń tekstury 523

rozwinięcie krawędzi natarcia płata 102

rysunek referencyjny rozwinięcia 95

skrzydło
klapy 120 124

krawędź natarcia 100

lotka 119

owiewki podwozia 117

prostowanie krawędzi żeber 103

rozwijanie 96

rozwinięcie dla oznaczeń 175

testowanie deformacji obrazu 101

wnęka klapy 124

wnęka podwozia 124

tekstura
deformacja wzdłuż szwów 131

topologia rozwinięcia siatki 524

usterzenie
statecznik pionowy 122 123

statecznik poziomy 123

ster kierunku 122

ster wysokości 123

użycie alternatywnego mapowania (Color) 161

użycie alternatywnego mapowania (Decals) 178

wartości domyślne dla alternatywnego rozwinięcia 163 178 514

wnęka
lotki 99

współrzędne dla obrazów prostokątnych 538

współrzędne rozwinięcia siatki 523

wykorzystanie rozwinięć jako referencji 128

wyświetlanie wielu rozwinięć jednocześnie 79

złożenie rozwinięć UV w jednym pliku SVG 544

ściany
automatyczne łączenie 100

zapomniane 97

UV Editing
układ ekranu 381

UV Fallback
pomocniczy węzeł (grupy) 514

przykład zastosowania 163 178

UV Island
tryb selekcji rozwinięcia siatk 529

UV Maps
alternatywne rozwinięcia UV 130 423

dodanie nowego rozwinięcia siatki 423

panel z zestawu Object Data 423

UV Test Grid
przykład użycia 74

UV Unwrap
polecenie z menu Mesh 418

UV-Base
warstwa z domyślnymi rozwinięciami UV siatek z Blendera (Inkscape) 160

UV-Color
warstwa z rozwinięciami UV siatek z Blendera (Inkscape) 160 193

uv-color.png
pomocniczy obraz rozwinięcia UV 161

UV-Decals
mapa z rozwinięciami UV siatek z Blendera (Inkscape) 175

warstwa z rozwinięciami UV siatek z Blendera (Inkscape) 161 177 193

UV-UVTex
warstwa z rozwinięciami UV siatek z Blendera (Inkscape) 160

uv.svg
plik ze złożeniem wszystkich rozwinięć UV 544

pomocniczy plik z rozwinięciami UV siatek z Blendera 160 177

zbiorczy plik z rozwinięciami UV 80

UV/Image Editor
metody efektywej pracy 71 72

okno 527

okno Blendera 525

parametry nowego obrazu 539

podgląd wielu rozwinięć UV naraz 543

szybka metoda zmiany podstawionego obrazu 195

usuwanie obrazu 539

utworzenie nowego obrazu 539

wpływ proporcji obrazu na rozwinięcie UV 538

wybór obrazu z listy 538

wykorzystanie okna 417 418

wyświetlanie wielu siatek jednocześnie 79

zapisanie rozwinięcia UV do zewnętrznego pliku 542

zaznaczanie szwów rozwinięcia siatki 422

załadowanie obrazu z dysku 539

UVMapping
opcje polecenia Unwrap 417 418

UVTex
UV, mapa domyślna 130

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

V

V
intensywność koloru 386

Vector
mapowanie 55 464 470 473

źródło danych 55 464 470 473

Vector Curves
węzeł modyfikujący kierunek normalnych 520

Vertex Groups
Assign
przycisk na panelu 419

Deselect.
przycisk na panelu 420

panel z zestawu Object Data (siatki) 419

Select
przycisk na panelu 419

[+]
przycisk na panelu 419

Vertices
parametr polecenia Add Cylinder 398

View
(New Objects Align to) opcja z sekcji User Preferences
Editing 368

panel z przybornika Properties 379

tryb UV/Image Editor 525

Viewport Color
pole z panelu Material
Settings 434

Voronoi Texture
Cells
typ tekstury 477

Intensity
typ tekstury 476

polecenie z menu Texture 476

Scale
rozmiar ‘komórek’ 476

tekstura proceduralna 476

węzeł tekstury 476

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

W

walec
interaktywna zmiana parametrów 398 399

parametry domyślne 398

utworzenie 398

warstwa
a kolejność obiektów (Inkscape) 294

blokowanie (Inkscape) 289

dodanie (GIMP) 241

kamer i lamp 373

linii pomocniczych 565

nieprzejrzystość (GIMP) 65

nowa (GIMP) 232

nowa (Inkscape) 290

osadzenie wyboru (GIMP) 247 248 250 252

otwórz obraz w nowej (GIMP) 230

przejrzystość (GIMP) 230

przypisanie obiektów 406

tryb łączenia z resztą obrazu (GIMP) 64

ukrywanie (GIMP) 228

ukrywanie (Inkscape) 289

układ dla odwzorowania poszycia (Inkscape) 60

usuwanie (GIMP) 233

usuwanie (Inkscape) 291

zarządzanie (GIMP) 227 230

zarządzanie (Inkscape) 289

zastosowanie grup (GIMP) 229

zmiana dla obiektów (Inkscape) 324

zmiana nazwy (GIMP) 228

zmiana nazwy (Inkscape) 289

zmiana przejrzystości (GIMP) 227

zmiana przejrzystości (Inkscape) 289

zmiana rozmiaru (GIMP) 226

łączenie w grupę (GIMP) 228

Wave Texture
modyfikacja tekstury 518

ostre krawędzie pasków 519

zmiana wzoru pasków 519

wczytanie
obrazu rastrowego (Inkscape) 285

wektory
sterowanie kierunkiem 55 464 470 473

wektoryzacja
nanoszenie poprawek (Inkscape) 356

obrazów rastrowych (Inkscape) 354

omówienie rezultatów (Inkscape) 356

Weld/Align
polecenia z menu UVs, przykład użycia 74

polecenie z menu UVs 103

submenu z menu UVs 541

White
filtr — wybielenie wszystkich kolorów obiektu (Inkscape) 143

widoczność
linii pomocniczych 565

widok
powiększanie (GIMP) 224

powiększanie (Inkscape) 288

przesuwanie (GIMP) 224

przesuwanie (Inkscape) 288

wizualizacja normalnych 425

wyrówanie do obiektu 405

Width
kontrolka z panelu Film 29 561

wielokrotność
obiektu (Inkscape) 318

wierzchołek
automatyczne zaznaczanie w edytorze UV 525

kierunek normalny do 426

obrót UV 533

przesunięcie, UV 532

UV, wybór 527

wyrównanie linii, UV 541

zaznaczanie wg nazwanej grupy 419

zmiana skali (UV) 534

wierzchołki
UV, pominięte w rozwinięciu 96 97

UV, zaznaczanie zasłoniętych krawędzi 99

UV, ‘odwijanie’ pionowych ścian 98

UV, ‘zlepianie’ podczas selekcji 528

łączenie w grupy 96 419

Window Draw Method
opcje z sekcji User Preferences
System 372

WinSnap
Grab
przycisk kopiowania ekranu (GIMP) 253

okno dialogowe kopiowania ekranu (GIMP) 253

wpisywanie
współrzędnych kursora 379

wskazanie
koloru na ekranie 386

wybór
aktywnego obiektu w trybie Texture Paint 551 552

jednoczesny XYZ/UV 527

metody łączenia obszarów (GIMP) 245

narysowanym obszarem (GIMP) 242

obszarem dowolnym (GIMP) 238

obszarem prostokątnym (GIMP) 222 237

obszarem prostokątnym (Inkscape) 292

osadzenie w warstwie (GIMP) 247 248 250 252

pojedynczego obiektu (Inkscape) 292

pomniejszenie obszaru (GIMP) 240

powiększenie obszaru (GIMP) 240

rysowanie obszaru (GIMP) 241 243

scian/wierzchołków UV 527

skok do 378 530

UV, zasłoniętych krawędzi 99

wg barwy (GIMP) 239

wielu obiektów (Inkscape) 292

wierzchołka UV (siatki) 527

wierzchołków, po nazwie grupy 96

wyłączenie (GIMP) 237 238

wyłączenie (Inkscape) 292

węzłów 390

zachowanie aktualnego obszaru (GIMP) 245

’zlepianie’ ścian razem 528

wycofywanie
zmian (GIMP) 235 236

wydajność
problemy ze złożonymi filtrami (Inkscape) 151

wymiary
tekstury 287

wypełnienie
obiektu (Inkscape) 298 299 326

wyrównanie
wierzchołków (siatki w UV) 541

wyszukiwanie
elementów na liście 395

wyłączenie
wypełnienia (Inkscape) 299

wypełnienia gradientem (Inkscape) 326

węzeł
dodawanie (Inkscape) 303

Gloss Paint 35

gładki (Inkscape) 302

ostry (Inkscape) 302

Plexiglas 39

pozycja we wzorcu gradientu (Inkscape) 329

symetryczny (Inkscape) 301

usuwanie (Inkscape) 303

wstawienie do wzorca gradientu (Inkscape) 329

zmiana barwy w gradiencie (Inkscape) 328

węzły
Attribute (wejściowy) 163 178 513

automatyczna konwersja typów 391

Color 67

Color Ramp 518

definiowanie nowego 440

definiowanie wejść grupy 441

dodawanie do ramki 393

dodawanie nowych 390

dołączanie do Image Texture 466

edycja grupy 441

edytor 389

Environment Texture 468

Geometry 464

Geometry (Cycles) 456

Gradient Texture 472

grupowanie 440

Hue Saturation Value (konwersji) 164

Image Texture 466

Invert (pomocniczy) 59

kolor wejść i wyjść 391

komentarze do schematu 393

kopiowanie i wklejanie 392

Layer Weight 35 438 447 588

Light Path (Cycles) 453

Mapping 55 464 470 473

Math 490

Mix 44 484 489

Moderate (grupa) 67 508

Musgrave Texture 477

nawigacja po schematach grup (‘drzew węzłów’) 441

nazwa grupy węzłów 441

Noise Texture 475

podmiana 445

podstawy obsługi 389

podział wejść grupy 443 444

problem z zasłoniętym połączeniem 393

problemy z wyświetlaniem w panelu 390

przesuwanie 390

Range From Min (grupa) 510

Range To Max (grupa) 509

rezultat (materiał) 437

RGB Curves 520 588

schemat materiału (Cycles) 435

shader Background 459 469 479

shader Diffuse BSDF 35 435

shader Glass BSDF 492

shader Glossy BSDF 35 436 494

shader Mix 35

shader Transparent BSDF 184 493

Sky Texture 459

Stack Image (grupa) 178 511

sterowanie kształtem połączeń 394

stworzenie nowej ramki 392

Surface Output (grupa) 186

Texture Coordinate 55 470 473 479 515

usuwanie 390

usuwanie wejść grupy 442

UV Fallback (grupa) 163 178 514

Vector Curves 520

Voronoi Texture 476

wejścia 389 391

wejściowe grupy 440

wielokrotne użycie wejścia grupy 442

wprowadzenie 389

wybór 390

wyjęcie z ramki 393

wyjścia 389 391

wyjściowe grupy 440

wykorzystanie ramek 392

wykorzystanie shadera Gloss Paint 500

wyświetlanie schematu grupy 444

wyświetlanie w panelu zestawu Material 390

właściwości 393 442

włączenie trybu dla źródła światła 27 27

zastosowanie grup w bardzo podobnych materiałach 189

zastosowanie grup w podobnych materiałach 206

zmiana nazwy wejścia grupy 443

zmiana tryb pracy 392

łączenie 389 389

łączenie za pomocą ramki 392

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

X

X.Curtiss Green
pomocnicza grupa węzłów 189

X.Textured Skin
pomocnicza grupa węzłów 206

XML Editor
polecenie z menu Edit (Inkscape) 56 320

. 2 3 A B C D E F G H I J K L Ł M N O P Q R S Ś T U V W X Z

Z

zabrudzenia
nanoszenie na powierzchnię 155

zaokrąglenie
narożników prostokąta (Inkscape) 307

zapisanie
definicji pędzla GIMP 256

obrazu rastrowego 547

okna Blendera 366

pliku Blendera 365

plików tymczasowych 376

ustawień Blendera 367

wyniku renderowania 366

zapisywanie
konfiguracji 367 374 375

obrazu (GIMP) 220

stanu pracy 365

zarządzanie
scenami 385

układem okien na ekranie 381

warstwami (GIMP) 227 230

warstwami (Inkscape) 289

zasięg
kamery 22 403 403

zastąpienie
konfiguracji Blendera 375

zatwierdzenie
transformacji (GIMP) 247 248 250 252

zaznaczanie
nazwanej grupy wierzchołków 419

zenit
wyjaśnienie pojęcia 463

Zinc Chromate
fraba podkładowa używana w samolotach z USA 580 581

zmiana
obrotu obiektu (Inkscape) 313

przekoszenia obiektu (Inkscape) 314

skali obiektu (Inkscape) 312

współrzędnych obiektu (Inkscape) 323

węzłów gradientu (Inkscape) 328

zmiana nazwy
elementu listy 395

zmiany
wycofywanie 235 236

Zoom
polecenie w Node Editor 390

Słownik

GPL, licencja — General Public Licence, udostępniająca produkt za darmo wszystkim odbiorcom. Licencja ta jest sformułowana w ten sposób, aby uniemożliwić komercyjne rozpowszechnianie produktu.

heksadecymalna, notacja liczb — sposób notacji liczb, oparty na kolejnych potęgach liczby 16, a nie 10 (zapis decymalny). Liczby od 1 do 16 są w nim zapisywane jako: 0,1,..9,A,B,C,D,E,F. W zapisie heksadecymalnym (szesnastkowym) „12” = 1*16 + 2, czyli decymalnie 18. Podobnie liczba 4F to 4*16 + 15 = 79 decymalnie. Zapis szesnastkowy jest szeroko stosowany przy tworzeniu oprogramowania.

materiał — to w Blenderze zestaw cech, używanych przy nanoszeniu obiektu na ostateczny obraz (renderowaniu). Cechy materiału to: barwa, połyskliwość, tekstura, i dziesiątki innych parametrów. Z materiałem może być związanych wiele tekstur (nierówności, barwy), zmieniających “ogólne” właściwości materiału dla pojedynczych pikseli renderowanego obrazu.

nadir — punkt położony na powierzchni nieba po przeciwnej stronie niż zenit. (W normalnych warunkach nadir jest zasłonięty przez Ziemię.)

rastrowy, obraz — popularna metoda reprezentacji, polegająca na zapisie obrazu jako zbioru kolorowych lub czarno-białych punktów (pikseli). Tak jest np. wyświetlany obraz na ekran telewizyjnym, monitorze komputera. Wadą reprezentacji rastrowej jest pogorszenie jakości obrazu w dużych powiększeniach — gdy zaczynają być wyraźnie widoczne pojedyncze piksele. Zaletą jest stosunkowo prosty algorytm wyświetlania zawartości. Istnieje wiele różnorodnych sposobów zapisu (formatów) przechowywania obrazów rastrowych w plikach. Najpopularniejsze to *.jpg, *.png, *.bmp, *.tif.

renderowanie (ang. rendering) — w tej książce oznacza tworzenie ostatecznego obrazu (lub sekwencji obrazów — animacji) przygotowanej wcześniej trójwymiarowej sceny. W pierwszych wersjach Autodesk 3D Studio (początek lat 90-tych XX wieku) było przetłumaczone na polski jako powlekanie, ale ta nazwa się nie przyjęła.

shader (ang.) — model matematyczny, stosowany do wyznaczania sposobu odbicia światła przez powierzchnię. W Cycles shadery są reprezentowane przez pojedyncze węzły lub grupy węzłów.

shear (ang.) — przekoszenie (określane także jako “ścinanie”). Transformacja obrazu w GIMP. Przekształca kształt prostokąta w rąb (przeciwległe boki zachowują równoległość).

tekstura — obraz (zazwyczaj rastrowy), nakładany na trójwymiarową powierzchnię. Stosowany w grafice komputerowej do “urealniania” obiektów (nieregularności barw, napisy, itp.). Zastosowanie tekstur wykracza poza odwzorowanie barw — są stosowane także do zamodelowania drobnych nierówności powierzchni obiektów (tzw. bump maps).

True Type — sposób zapisu wzorów czcionek, wykorzystywanych w grafice komputerowej. Metoda opracowany w latach osiemdziesiątych przez Adobe. Czcionki True Type opisują kształt znaków w sposób wektorowy — za pomocą wypełnionych obszarów, ograniczonych za pomocą linii łamanych i krzywych Beziera. Dzięki temu wyglądają poprawnie na wydruku i na ekranie — nawet w dużym powiększeniu.

wektorowy, obraz — metoda reprezentacji, polegająca na zapisie obrazu jako zbioru kolorowych linii i obszarów. Każdy element obrazu ma określone współrzędne i kształt (prosta, łuk, koło, krzywa Beziera, ...). W ten sposób są zapisywane stworzone na komputerze rysunki techniczne. Zaletą reprezentacji wektorowej jest zachowanie dokładności przy dowolnym powiększeniu. Wadą jest złożony algorytm wyświetlania (gdyż oznacza przekształcenie na postać rastrową). Jednym ze sposobów zapisu danych wektorowych jest format *.svg, stosowany m.in. przez Inkscape.

wireframe (pol.: siatka?) — oznacza sposób reprezentacji modelu w którym nie rysowane są żadne ściany, tylko krawędzie łączące poszczególne wierzchołki. Jest ich zazwyczaj dużo i są cienkimi liniami. Stąd obrazowo w literaturze anglojęzycznej taka reprezentacja jest nazywana “drucianą siatką” czyli “wireframe”.

Bibliografia

Publikacje

1. Ton Roosendaal, Stefano Selleri, Blender 2.3 — Oficjalny podręcznik, Helion, 2005.

2. Kamil Kuklo, Jarosław Kolmaga, Blender — Kompedium, Helion, 2007.

3. Marek Ryś, Curtiss P-40 cz.1, AJ Press, 2000 (“Monografie Lotnicze”, nr 64).

4. Zbigniew Kolacha, Marek Ryś, Curtiss P-40 cz.2, AJ Press, 2000 (“Monografie Lotnicze”, nr 65).

5. Krzysztof Janowicz, Curtiss P-40 cz.3, AJ Press, 2000 (“Monografie Lotnicze”, nr 66).

6. Krzysztof Janowicz, Leszek A. Wieliczko, Curtiss P-40 vol.1, Kagero, 2007.

7. Krzysztof Janowicz, Curtiss P-40 vol.2, Kagero, 2009.

8. Leszek A. Wieliczko, Tom Żmuda, Curtiss P-40D/E, Kagero, 2008.

9. Francis H. Dean, America's Hundred Thousand — The US Production Fighter Aircraft of World War II, Shiffer Military History, 1997.

10. Francis H. Dean, Dan Hagedorn Curtiss Fighter Aircraft — A Photographic History 1917-1948, Shiffer Military History, 2007.

11. Ernest R. McDowell, Curtiss P-40 in action, Squadron/Signal Publications, 1976.

12. Paweł Sembart, Kittyhawk I/IA, ROSSAGRAPH, 2006 (Model Detail Photo Monograph nr 14).

13. Anis Elbeid, Daniel Laureult, P-40 Curtiss From 1939 to 1945, Histoire & Collections, 2002.

14. Brett Green, Modelling the P-40, Osprey Publishing, 2005 (Osprey Modelling nr 15).

15. Władysław Niestoj, Profile modeli latających, Wydawnictwo Komunikacji i Łączności, 1980.

16. Estman N. Jacobs, Kenneth E. Ward, Robert M. Pinkerton, The Characteristics of 78 related airfoil sections…, NACA report nr 460, 1937.

17. Jerzy Bukowski, Wiesław Łucjanek, Napęd śmigłowy — teoria i konstrukcja, Wydawnictwo MON, 1986

18. Denis Zorin et all, Subdivision for Modeling and Animation, SIGGRAPH 2000 Course Notes, 2000

19. Gerald Farin, Curves and Surfaces for CAGD, Academic Press, 1997

20. Justin Peatross, Michael Ware, Physics of Light and Optics, Brigham Young University, 2011

Internet

1. http://www.p40warhawk.com

2. http://www.blender.org

3. http://www.gimp.org

4. http://www.inkscape.org

5. http://www.python.org

6. http://www.simmerpaintshop.com

7. http://www.freewebs.com/p40-tomahawk/ — Hume Bates, Long Nose Hawks, (artykuł), dostępny w wersji PDF pod adresem http://downloads.hyperscale.com/longnosehawks_download.html (opublikowany w lipcu 2008)

8. http://www.ipmsstockholm.org, m.in. Martin Waligorski: Interior Colours of US Aircraft, 1941-45 (opublikowany w lutym 2004).

9. http://www.ratomodeling.com — artykuł o malowaniu P-40 z AVG.

10. http://wiki.blender.org — dokumentacja funkcji Blendera, i nie tylko!

11. http://www.graphics.cornell.edu/~westin/misc/fresnel.html — opis efektu Fresnela