Dodatek YWarstwa · CGPoziom · głębiejEXT OF · R.5, R.6, R.7, R.3
Dodatek Y / Głębiej
Tak to robi Blender: Sky Texture i suwak Sun Elevation
Co naprawdę liczy Sky Texture, skąd w niej suwak Turbidity i dlaczego zmiana kąta Słońca przelicza kolor całego nieba.
Ten dodatek jest lekki z założenia. Nie ma tu ani jednego wzoru i nie trzeba umieć obsługiwać Blendera, żeby go przeczytać. Chodzi o jedno: pokazać, że program graficzny liczy dokładnie to, o czym była mowa w Rozdziałach 3 i 5–7 — i że jego suwaki mają nazwy zjawisk, które już znamy.
Punkt wyjścia · dwa sposoby na niebo
Obrazek nieba albo model nieba
Program do grafiki trójwymiarowej musi skądś wziąć światło, które pada na scenę. Ma dwie drogi.
Zdjęcie nieba. Panorama zrobiona aparatem, rozpięta na kuli wokół sceny. Wygląda idealnie, bo jest prawdziwa. Ale jest jednym konkretnym niebem z jednej konkretnej chwili: nie da się w niej przesunąć Słońca, zmienić pory dnia ani dołożyć mgły. Chcąc inne niebo, trzeba mieć inne zdjęcie.
Model nieba. Zamiast obrazka — przepis. Program dostaje kierunek na Słońce i kilka liczb opisujących powietrze, a barwę każdego punktu nieba wylicza. Tak działa węzeł Sky Texture w Blenderze i jego odpowiedniki w innych programach.
Drugie podejście jest droższe obliczeniowo i nigdy nie będzie tak przekonujące jak dobra fotografia. Ma jednak własność, której fotografia mieć nie może: jeden suwak zmienia porę dnia, a wszystko inne dostosowuje się samo. Barwa nieba, kolor światła słonecznego, długość i barwa cieni, poświata na horyzoncie. Bo to nie są cztery ustawienia — to cztery skutki jednej przyczyny.
Dokładnie o to samo chodziło w Rozdziale 5, gdy przesuwaliśmy suwak wysokości Słońca w widgecie i całe niebo szło za nim.
Co liczy Sky Texture
Program robi to samo, co Rozdział 5, tylko dla każdego piksela
Kiedy renderer patrzy w niebo, wysyła promień w górę i pyta: jaka jest barwa w tym kierunku? Przepis, którym odpowiada, jest tym samym rozumowaniem, które przeszliśmy w Rozdziale 5.
Cztery kroki, które wykonuje program dla jednego kierunku
1. Ile powietrza po drodze. Idąc od oka w wybranym kierunku, sumuje gęstość powietrza. W górę — mało. Ku horyzontowi — kilkadziesiąt razy więcej.
2. Ile światła się tu rozproszyło. W każdym punkcie tej drogi sprawdza, ile światła słonecznego w ogóle dociera, i jaka jego część odbija się akurat w stronę oka.
3. Podział na barwy. Cząsteczki powietrza rozpraszają błękit dużo silniej niż czerwień — to rozpraszanie Rayleigha z Rozdziałów 3 i 5. Pyły i kropelki rozpraszają wszystkie barwy podobnie, głównie do przodu — to rozpraszanie Mie z Rozdziału 3.
4. Ile ubyło po drodze. To, co się rozproszyło ku nam, po drodze też częściowo ucieka na boki. Przy niskim Słońcu ubytek błękitu jest tak duży, że zostaje sama czerwień — czyli zachód z Rozdziału 6.
To nie jest uproszczony opis czegoś innego. To jest, co do struktury, ten sam rachunek, który wykonuje widget 3D w Rozdziale 5, a różnica polega na liczbie punktów pomiarowych i dokładności danych o atmosferze. Czerwony zachód nie jest w tym modelu wpisany — wychodzi z kroków 3 i 4, tak jak wychodzi na niebie.
Warto zatrzymać się przy jednej konsekwencji. W modelu nieba nikt nie zapisał reguły „przy niskim Słońcu niebo ma być pomarańczowe”. Zapisano tylko, jak zachowuje się światło w powietrzu. Pomarańcz pojawia się sam, jako wynik — i to jest test, czy model opisuje mechanizm, czy tylko odtwarza wygląd.
Suwaki · i co za nimi stoi
Sun Elevation, Turbidity, Dust, Ozone
Węzeł Sky Texture w trybie Nishita ma kilka suwaków. Każdy odpowiada czemuś, co w tej książce ma już swój rozdział.
Suwak → zjawisko → gdzie o tym było
Sun Elevation — wysokość Słońca nad horyzontem. Steruje długością drogi światła przez atmosferę. R.6
Sun Rotation — azymut, czyli z której strony świeci. Sam w sobie nie zmienia barwy nieba, tylko obraca całą scenę światła. R.7
Altitude — wysokość obserwatora. Wyżej znaczy mniej powietrza nad głową: niebo ciemnieje i staje się bardziej granatowe. R.1, R.5
Air — gęstość cząsteczek powietrza, czyli siła rozpraszania Rayleigha. Podkręcony daje niebo gęściej niebieskie. R.5
Dust — ilość aerozoli: pyłu, soli morskiej, spalin. To rozpraszanie Mie. Podkręcony wybiela niebo i tworzy jasną obwódkę wokół Słońca. Prawdziwy pył bywa jeszcze zabarwiony pochłanianiem, jak rdza w pyle saharyjskim, która zjada błękit (
Rozdział 3).
R.3, R.6
Ozone — warstwa ozonu, pochłaniająca część światła w słabym paśmie Chappuis, z maksimum w pomarańczu (
Rozdział 3,
Dodatek F). Odpowiada za to, że niebo zenitalne pozostaje niebieskie także w głębokim zmierzchu.
R.3, R.7
Suwak Dust jest tym, którego najczęściej brakuje w renderach wyglądających „za czysto”. Prawdziwe niebo nad miastem prawie nigdy nie jest tak nasycone jak domyślne ustawienie. Podniesienie Dust psuje kolor w sposób, w jaki psuje go rzeczywistość — i dlatego dodaje wiarygodności.
Starsze tryby tego samego węzła — Preetham i Hosek/Wilkie — nie liczą atmosfery krok po kroku. Są dopasowanymi formułami: ktoś policzył setki nieb dokładną metodą, a potem znalazł prostą funkcję dającą podobny wynik szybciej. Działa to znakomicie dla Słońca nad horyzontem, ale poniżej pewnej wysokości przestaje, bo nie ma za sobą mechanizmu — tylko dopasowanie do przykładów. To dlatego Nishita jako jedyny z trzech potrafi pokazać niebo, gdy Słońce jest już pod horyzontem.
Różnica jest pouczająca poza grafiką. Model dopasowany do przykładów jest szybki i doskonały w zakresie, który widział. Model oparty na mechanizmie bywa wolniejszy, ale rozsądnie zachowuje się także tam, gdzie nikt go nie sprawdzał.
Praktyka · trzy rzeczy, które warto wiedzieć
Czego uczy zabawa tym suwakiem
Kolor światła słonecznego nie jest osobnym ustawieniem. W renderze z modelem nieba nie ustawia się „ciepłego światła zachodu”. Ustawia się niską pozycję Słońca, a ciepła barwa pojawia się sama, bo światło przechodzi przez więcej powietrza. Ustawianie jej ręcznie jest częstym błędem — i zwykle widać go po tym, że cienie mają barwę niepasującą do nieba.
Cienie na zewnątrz nie są czarne, tylko niebieskie. W cień nie dociera bezpośrednie Słońce, ale dociera światło rozproszone przez całe niebo — a ono jest niebieskie. Model nieba daje ten efekt za darmo, bo niebo jest w nim źródłem światła, nie tłem. To najprostszy sprawdzian, czy render zewnętrzny został oświetlony niebem, czy tylko jedną lampą.
Południe jest trudniejsze niż zachód. Zachód wybacza wiele — jest kolorowy i wszyscy pamiętają go z przesadą. Południe ma niebo o wąskim zakresie barw i twarde, krótkie cienie, więc każdy błąd w proporcjach widać od razu. W grafice, tak jak w fotografii, godziny okołopołudniowe są najmniej wybaczające.
Eksperyment na dziesięć minut
Scena: płaszczyzna, sześcian, Sky Texture jako tło świata
Przesunąć Sun Elevation od 60° do −4°, renderując co 10°
Patrzeć nie na niebo, tylko na cień sześcianu
Cień przechodzi od krótkiego i chłodnoszarego do długiego i wyraźnie niebieskiego, podczas gdy oświetlona ściana robi się pomarańczowa. Rozjazd barwy między światłem a cieniem jest tym większy, im niżej Słońce — bo światło bezpośrednie traci błękit, a światło z nieba składa się prawie wyłącznie z niego. To ta sama obserwacja, którą w Rozdziale 7 robiliśmy patrząc na śnieg w cieniu budynku.