126 7 63MB
Polish Pages 489 Year 2013
Spis treci Podzikowania ................................................................................................. 11 O autorze .......................................................................................................... 13 Wprowadzenie ................................................................................................. 15
CZ I
ZGBIANIE BLENDERA 3D ............................................................. 21 Rozdzia 1. Konfigurowanie rodowiska pracy ........................................... 23 Ustawianie opcji Blendera ............................................................................................. 23 Preferencje uytkownika ..................................................................................24 Inne opcje ..........................................................................................................37 Usprawnianie metod pracy ............................................................................................ 37 Sterowanie widokiem .......................................................................................37 Grupowanie i zaznaczanie ...............................................................................38 Manipulowanie obiektami ...............................................................................43 Nadanie za interfejsem Blendera ............................................................................. 46 Spodziewane zmiany ........................................................................................47 Nowy kod zdarze w wersji 2.5 ........................................................................47 Ewolucja interfejsu ...........................................................................................48 Podsumowanie ................................................................................................................. 52 Rozdzia 2. Rze bienie i tworzenie nowej topologii obiektu ..................... 53 Rzebienie w Blenderze ................................................................................................. 53 Modelowanie w wielopoziomowej rozdzielczoci ............................................54 Rzebienie gowy dziecka .................................................................................58 Funkcja Retopo ............................................................................................................... 81 Wypalanie mapy normalnych ........................................................................................ 90 Podsumowanie ................................................................................................................. 96 Rozdzia 3. Zwikszanie realizmu scen za pomoc odpowiednich tekstur i materiaów ....................... 97 Tworzenie tekstur UV przy uyciu Blendera i GIMP-a ............................................. 97 Tekstury i ich mapowanie ................................................................................98 Mapowanie UV .................................................................................................98 Teksturowanie komina lokomotywy ..............................................................100
6 ~SPIS TRECI
Wygadzanie szwów przez wypalanie tekstur ............................................................ 114 Osiganie realizmu dzi ki w zom materiaowym .................................................. 125 Podsumowanie ............................................................................................................... 134 Rozdzia 4. Komponowanie wideoklipów przy uyciu wzów ................. 135 Tworzenie maski green screen za pomoc w zów .................................................. 135 Nagrania wideo typu green screen ................................................................136 Praca z w zami kompozycyjnymi .................................................................136 Maskowanie niepodanych elementów .................................................................... 144 Animowanie maski elementów niepodanych ............................................152 Stosowanie warstw renderingu i w zów .......................................................156 Maskowanie niepodanych elementów postaci ..........................................160 Grupowanie w zów ........................................................................................163 Nakadki alfa i premultiplikacja ...................................................................165 Usuwanie zabarwie i czyszczenie wideoklipu ......................................................... 168 Manipulowanie kanaami koloru ...................................................................168 Wykaczanie maski ........................................................................................170 Wyczanie w zów .........................................................................................173 Pog bianie wiedzy o komponowaniu ............................................................173 Podsumowanie ............................................................................................................... 173 Rozdzia 5. Edytor wideo (VSE) .................................................................. 175 Obsuga edytora sekwencji wideo ............................................................................... 175 Importowanie filmów i sekwencji obrazów ...................................................178 Ustalanie szybkoci odtwarzania ...................................................................180 Manipulowanie ciekami sekwencji wideo ..................................................182 Edytowanie dwi ku .......................................................................................185 Obsuga znaczników .......................................................................................188 Inne tryby wywietlania w VSE ......................................................................189 Tworzenie przej i komponowanie w VSE ............................................................... 191 Nakadki alfa ...................................................................................................191 Zanikania i przejcia ......................................................................................192 Zanikanie do czerni ........................................................................................195 Transformacje .................................................................................................196 Inne efekty ......................................................................................................197 Korzystanie z moduów dodatkowych ...........................................................197 Metacieki .....................................................................................................199 Trójwymiarowe sceny Blendera w VSE ..................................................................... 199 Dodawanie napisów do sekwencji wideo .......................................................199 Dodawanie kompozycji scen ..........................................................................205 Renderowanie sekwencji ................................................................................205 Podsumowanie ............................................................................................................... 207
SPIS TRECI~ 7
CZ II ZGBIANIE PYTHONA .................................................................. 209 Rozdzia 6. Python dla niecierpliwych ........................................................ 211 Wprowadzenie do Pythona .......................................................................................... 211 Czym jest Python? ..........................................................................................211 Dlaczego Python? ............................................................................................213 Inne róda wiedzy ..........................................................................................214 rodowisko programistyczne Pythona ........................................................................ 216 Pozyskiwanie Pythona ....................................................................................217 Uywanie wiersza polece .............................................................................217 Posugiwanie si edytorem IDLE ..................................................................219 Uruchamianie skryptów .................................................................................219 Uywanie Pythona w rodowisku Blendera ..................................................220 Skadnia j zyka Python ................................................................................................ 221 Typy i struktury danych .................................................................................221 Sterowanie przebiegiem programu ...............................................................227 Funkcje ............................................................................................................228 Klasy i programowanie zorientowane obiektowo .........................................230 Polecenie dir() ................................................................................................231 Moduy .............................................................................................................231 Podsumowanie ............................................................................................................... 232 Rozdzia 7. Skrypty Pythona w Blenderze .................................................. 233 Edytowanie i uruchamianie skryptów w Blenderze ................................................. 233 Edytor tekstu w Blenderze .............................................................................233 Formatowanie skryptów i stosowanie szablonów .........................................235 Okno skryptów ................................................................................................236 Wprowadzenie do API Blendera ................................................................................. 237 Tworzenie skryptu interaktywnego ............................................................................ 239 Manipulowanie siatkami, obiektami i krzywymi IPO ..................................239 Budowanie interfejsu .....................................................................................249 Skadanie wszystkiego w cao .....................................................................257 Podsumowanie ............................................................................................................... 258 Rozdzia 8. W o wielu gowach, czyli inne zastosowania Pythona w Blenderze ....................... 261 Usprawnianie Blendera za pomoc Pythona ............................................................ 261 Sterowniki pythonowe .................................................................................................. 262 W zy pythonowe .......................................................................................................... 265 Wi zy pythonowe .......................................................................................................... 270 cza skryptowe i cza typu space handler .............................................................. 278 Wykonywanie skryptów „w locie” za pomoc czy skryptowych ................278 Interaktywno w oknie widokowym .............................................................283 Podsumowanie ............................................................................................................... 290
8 ~SPIS TRECI
CZ III ZGBIANIE BLENDEROWEGO SILNIKA GIER ........................ 293 Rozdzia 9. Przygotowywanie scen dla silnika gier ................................... 295 Przygotowywanie elementów sceny dla silnika gier ................................................. 295 Modelowanie prostej postaci .........................................................................296 Malowanie tekstury ........................................................................................304 Rigowanie i animowanie postaci ...................................................................308 Przygotowanie rodowiska gry .................................................................................... 318 Tworzenie prostego skyboksu ........................................................................318 Tworzenie prostego labiryntu ........................................................................326 Cig dalszy poznawania rodowiska BGE ................................................................. 332 Umieszczanie obiektów w wiecie gry ...........................................................332 Ustawianie opcji materiau ............................................................................334 Owietlenie w silniku gier ..............................................................................335 Malowanie efektów wietlnych ......................................................................336 Podsumowanie ............................................................................................................... 337 Rozdzia 10. Uruchamianie silnika gier ..................................................... 339 Posugiwanie si blokami logicznymi ......................................................................... 339 Wprowadzenie do systemu bloków logicznych .............................................340 Ustawianie kamery .........................................................................................349 Waciwoci, komunikaty i stany ................................................................................ 350 Wprowadzanie do gry zych charakterów .....................................................350 Zbieranie skarbów i gromadzenie punktów ..................................................356 Tworzenie efektów specjalnych za pomoc tekstur ................................................. 360 Tworzenie tekstu dynamicznego ...................................................................360 Tworzenie animowanych tekstur ..................................................................364 Praca z dwi kiem w BGE ........................................................................................... 369 Podsumowanie ............................................................................................................... 371 Rozdzia 11. czenie potgi Pythona z moliwociami silnika gier ............373 Od bloków logicznych do Pythona .............................................................................. 373 Sterowanie postaci za pomoc Pythona ......................................................374 Pot ga Pythona na usugach BGE .............................................................................. 378 Tworzenie maszyny teleportacyjnej przy uyciu Pythona ...........................378 Tworzenie ekranu logowania .........................................................................383 Obsuga okien widokowych ............................................................................391 Obsuga dwi ku przy uyciu Pythona ..........................................................394 Inne róda wiedzy ........................................................................................................ 397 Podsumowanie ............................................................................................................... 398
DODATKI ............................................................................................ 399 Dodatek A Rozwi zania ................................................................................ 401 Rozdzia 1. Konfigurowanie rodowiska pracy........................................................... 401 Rozdzia 2. Rzebienie i tworzenie nowej topologii obiektu .................................... 402
SPIS TRECI~ 9
Rozdzia 3. Zwi kszanie realizmu scen za pomoc odpowiednich tekstur i materiaów................................................................................................ 404 Rozdzia 4. Komponowanie wideoklipów przy uyciu w zów ................................. 405 Rozdzia 5. Edytor wideo (VSE)................................................................................... 406 Rozdzia 6. Python dla niecierpliwych......................................................................... 407 Rozdzia 7. Skrypty Pythona w Blenderze .................................................................. 408 Rozdzia 8. W o wielu gowach, czyli inne zastosowania Pythona w Blenderze ................................................................................................ 409 Rozdzia 9. Przygotowywanie scen dla silnika gier.................................................... 411 Rozdzia 10. Uruchamianie silnika gier...................................................................... 411 Rozdzia 11. czenie pot gi Pythona z moliwociami silnika gier ...................... 413 Dodatek B Hierarchie moduów i klas pythonowego API Blendera ............415 Hierarchia moduów...................................................................................................... 415 Hierarchia klas............................................................................................................... 417 Dodatek C Ewolucja interfejsu uytkownika programu Blender ............ 421 Ewolucja interfejsu Blendera ....................................................................................... 421 Analiza..............................................................................................................422 Zalety................................................................................................................423 Wady.................................................................................................................427 Cele projektowe ...............................................................................................430 Waciwoci ......................................................................................................431 Narz dzia .........................................................................................................437 Zaleno od kontekstu ...................................................................................439 Edycja wielu obiektów .....................................................................................441 Informacje zwrotne .........................................................................................441 Metoda „przecignij i upu ” .........................................................................442 Projekt graficzny..............................................................................................442 Podsumowanie .................................................................................................445 Dodatek D Informacje o pycie do czonej do ksi ki ............................. 447 Zawarto pyty CD ....................................................................................................... 447 Pliki do rozdziaów...........................................................................................447 Program Blender 2.48 .....................................................................................447 Program GIMP ................................................................................................448 Wymagania systemowe ................................................................................................. 448 Korzystanie z CD ........................................................................................................... 448 Rozwizywanie problemów........................................................................................... 449 Skorowidz ....................................................................................................... 451
10 ~SPIS TRECI
Podzikowania Przede wszystkim chc podzi kowa Tonowi Roosendaalowi i pozostaym twórcom Blendera za ich ci k prac i zaangaowanie. Ci ludzie wykonuj naprawd wan robot i zasuguj na szczere wyrazy wdzi cznoci ze strony wszystkich uytkowników tego programu. Zamierzaem wymieni wi cej nazwisk, ale nie wiedziaem, na którym skoczy . Pena lista twórców Blendera wraz z ich dokonaniami znajduje si na stronie internetowej http://wiki.blender.org/index.php/List_of_Contributors. Z tego grona musz jednak wyróni Nathana Letwory’ego (jesterKing), który okaza si niezwykle kompetentnym redaktorem technicznym niniejszej ksiki. W pracy nad ksik pomagao mi równie wielu innych twórców i uytkowników — za t pomoc i wsparcie dzi kuj caej spoecznoci Blendera. Nie jestem w stanie wymieni wszystkich uczestników forum BlenderArtist.org, których dokonania, komentarze i instruktae pozwoliy mi lepiej pozna Blendera, ale szczególnie jestem wdzi czny tym, którzy pomogli mi, gdy zaczem pisa o blenderowym silniku gier — na tym polu nie czuem si wtedy zbyt pewnie. Chc podzi kowa zwaszcza uczestnikom forum BlenderArtist.org, wród których byli Social, Mmph!, Blendenzo i inni. Zawsze ochoczo odpowiadali na moje pytania i udzielali cennych wskazówek, dzi ki czemu mogem przebrn przez — chwilami trudne do opanowania — funkcje programu. Wiele zawdzi czam równie Dolfowi Veenvlietowi (macouno) i Campbellowi Bartonowi (ideasman_42), dzi ki którym znacznie pog biem swoj wiedz na temat API Pythona w Blenderze. W trakcie pisania tej ksiki cz sto korzystaem ze stron internetowych, instruktay, wtków dyskusyjnych i innych róde, których autorami s czonkowie spoecznoci Blendera. Dzi kuj wi c wszystkim, którzy t drog dziel si swoj wiedz i dowiadczeniem. Podzi kowania nale si te Bartowi Veldhuizenowi i jego wspópracownikom z BlenderNation.com, a take Roelowi Spruitowi i wszystkim moderatorom oraz administratorom z BlenderArtist.org za ich prac i zaangaowanie na rzecz caej spoecznoci Blendera. Ksika nie powstaaby bez wielkiego wysiku ze strony redaktorów i moich przyjació z wydawnictwa Sybex/Wiley, którym skadam serdeczne podzi kowania. Dzi kuj Mariann Barsolo, Pete’owi Gaughanowi, Kathryn Duggan, Rachel Gunn, Kelly Trent i tym wszystkim, którzy przyczynili si do wydania i promocji mojej ksiki. Dzi kuj moim kolegom i studentom z Tsuda College za cige wspieranie i zach canie mnie do pracy nad ksik o Blenderze. Jak zwykle jestem wdzi czny mojej onie Yuce za to, e musiaa sama zajmowa
si dzieckiem, gdy ja sp dzaem dugie godziny nad ksik!
12 ~ WPROWADZENIE
WPROWADZENIE ~ 13
O autorze Tony Mullen jest wykadowc, animatorem, niezalenym twórc filmowym i pisarzem mieszkajcym w Tokio. W przeszoci pracowa jako rysownik gazetowy, grafik komputerowy, programista i badacz systemów przetwarzania j zyków naturalnych. Od kiedy odkry Blendera, zajmuje si niemal wycznie grafik i animacj komputerow. Interesuje si take technikami animacji poklatkowej. Jest animatorem i wspóreyserem krótkometraowego filmu Gustav Braüstache and the Auto-Debilitator oraz innych niezalenych produkcji filmowych. Naley do aktywnych czonków spoecznoci Blendera, jest jednym z zaoycieli Blender Foundation’s Trainer Certification Review Board. Jest autorem ksiek Introducing Character Animation witch Blender (Sybex, 2007) i Bounce, Tumble and Splash!: Simulating the Physical World with Blender 3D (Sybex, 2008), a take wielu artykuów na temat Blendera zamieszczanych w japoskim czasopimie „Mac People”.
14 ~ WPROWADZENIE
WPROWADZENIE ~ 15
Wprowadzenie Ostatnie lata przyniosy wiele zmian w samym Blenderze i wokó niego. Poczwszy od roku 2006, cigle ronie liczba ksiek i kursów szkoleniowych na pytach DVD wydawanych przez due i mae firmy wydawnicze. Autorzy tych publikacji opisuj techniki animacyjne, metody wizualizacji obiektów architektonicznych, symulowanie zjawisk fizycznych i inne zastosowania tego programu. Jego kod równie zosta znacznie zmieniony. Dzi ki pracy programistów z caego wiata po 2005 roku Blender zwi kszy swoj obj to niemal dwukrotnie, a przecie jest rozwijany od wczesnych lat 90. Kolejnym wanym etapem b dzie zapewne ukoczenie trwajcych obecnie prac nad przekodowaniem systemu zdarze. Motorem tego post pu jest wci poszerzajca si baza uytkowników. Z Blendera korzystaj powszechnie studenci, hobbyci, artyci, naukowcy i zawodowi graficy komputerowi, a liczba uytkowników w tych i innych grupach ronie kadego dnia. W wiecie oprogramowania do grafiki trójwymiarowej zdominowanym przez kilka rozbudowanych i drogich aplikacji Blender zaistnia jako alternatywne rozwizanie dla tych, którzy potrzebuj dobrego darmowego i otwartego programu. Spoeczno
Blendera jest bardzo aktywna i w miar jak jej dziaania nabieraj coraz wi kszego rozmachu, Blender staje si dojrzaym programem — jest coraz bardziej stabilny, zwi ksza swoj funkcjonalno i udost pnia coraz wi cej wiedzy na swój temat. Ta ksika równie jest produktem poszerzania si bazy uytkowników. Jeszcze kilka lat temu liczba uytkowników o rednim lub wysokim stopniu zaawansowania bya na tyle maa, e wydawanie ksiek takich jak ta byo nieuzasadnione ekonomicznie. Ci nieliczni, którzy osign li wysoki stopie wtajemniczenia, zdobywali wiedz przez analizowanie kodu, ledzenie zmian w kolejnych wersjach programu, wymienianie dowiadcze na forach dyskusyjnych i mudne eksperymentowanie. Dzisiaj takich uytkowników jest znacznie wi cej i to z myl o nich postanowiem napisa ksik , o jakiej pionierzy Blendera mogli tylko marzy . Nie jest to zatem ksika dla pocztkujcych, lecz dla tych, którzy zdoali ju pozna Blendera w stopniu przynajmniej podstawowym.
Kto powinien przeczyta t ksi k Aby lektura tej ksiki daa Ci peni korzyci, musisz ju wiedzie , jak pewne rzeczy robi si w Blenderze. Powiniene umie post powa z siatkami wieloktów, definiowa
kluczowe klatki animacji i modyfikowa krzywe IPO. W pewnych obszarach Twoje umiej tnoci mog by due. Moesz by na przykad ekspertem w dziedzinie modelowania lub mistrzem w tworzeniu tekstur i materiaów. Moesz umie tworzy pi kne, fotorealistyczne sceny i renderowa je z zadziwiajc jakoci. Moesz take mie
opanowan sztuk animowania postaci.
16 ~ WPROWADZENIE
Jeli jeste przeci tnym uytkownikiem Blendera, o wielu funkcjach wiesz niewiele albo nawet nie wiesz nic. Zapewne ju dawno przestae docieka znaczenia niektórych przycisków, a moe przestae ledzi rozwój programu i teraz czujesz si przytoczony mnogoci nowych funkcji. Niektóre z tych funkcji mog Ci si wydawa zbyt trudne i skomplikowane, albo po prostu nie dostrzegasz moliwoci ich wykorzystania w tym, co robisz. Mam nadziej , e ta ksika przyczyni si w jakim stopniu do zmiany takiego stanu rzeczy. Mówic krótko, ta ksika jest dla tych uytkowników Blendera, którzy chc poszerzy
i pog bi swoj wiedz na temat programu. Zgodnie z tytuem to ksika dla ludzi chccych pozna Blendera dog bnie. Jeli s funkcje, nad którymi si zastanawiae, ale ich nie zbadae do koca, lub takie, którymi tylko si pobawie, ale tak naprawd nigdy ich nie opanowae, ta ksika jest dla Ciebie.
Czego dowiesz si z tej ksi ki Ksika jest prób objanienia tych elementów i funkcji Blendera, które jeszcze w adnej publikacji nie zostay dokadnie opisane. Zawiera take pewne informacje na temat metod pracy z tym programem, dzi ki czemu rednio zaawansowany uytkownik b dzie móg pracowa efektywniej i uzyskiwa lepsze rezultaty. Blender oferuje naprawd duo funkcji, a do tej pory tylko cz z nich zostaa naleycie objaniona w ksikach i materiaach szkoleniowych. Tematyka ksiki jest dosy szeroka. Najbardziej zrónicowana jest cz pierwsza, poniewa zawiera rozdziay powi cone rozmaitym funkcjom programu. Cz druga koncentruje si na zagadnieniach zwizanych z tworzeniem skryptów w j zyku Python, a cz trzecia jest w caoci powi cona silnikowi gier w Blenderze. Przyst pujc do pisania tej ksiki, zaoyem, e Czytelnik b dzie dysponowa podstawow wiedz z zakresu obsugi Blendera, ale niekoniecznie musi zna Pythona lub wiedzie cokolwiek o silniku gier. Po przestudiowaniu caej ksiki Twoje umiej tnoci w obu tych obszarach osign stopie zaawansowany, a na wiele znanych Ci ju funkcji spojrzysz z zupenie innej perspektywy.
Jak korzysta z ksi ki Ukad rozdziaów w cz ci pierwszej jest w pewnym sensie logiczny, chocia nie s one ze sob powizane w aden szczególny sposób. Jako uytkownik co najmniej rednio zaawansowany nie powiniene mie problemów z czytaniem ich w dowolnej kolejnoci. Pozostae dwie cz ci s bardziej usystematyzowane, daj bowiem pene wprowadzenie do omawianych zagadnie. W cz ci drugiej znajdziesz wprowadzenie do Pythona, aby w dalszej kolejnoci przej do pisania skryptów w tym j zyku — od najprostszych a po bardzo wyspecjalizowane. Niezb dne informacje s tu podawane stopniowo, a wi c opuszcza moesz tylko te fragmenty, co do których masz pewno , e informacje tam zawarte s ju Ci doskonale znane. Podobnie cz trzecia rozpoczyna si od opisu sposobu przygotowywania elementów gry pod ktem uycia ich wraz z silnikiem, a koczy si omówieniem stosunkowo zoonego zagadnienia, jakim jest zastosowanie skryptów Pythona w rodowisku silnika gier.
WPROWADZENIE ~ 17
Kilka sów o wersjach programu Terminarz ukazywania si kolejnych wersji oprogramowania typu open source nie jest ograniczony wzgl dami marketingowymi i w sposób nieunikniony pojawiaj si one szybciej (co jest cudowne) ni ksiki na ich temat. Dowiadczeni uytkownicy Blendera wiedz o tym doskonale i wiedz te, e solidne opanowanie jednej wersji uatwia poznawanie nast pnych. Ta ksika zostaa napisana tak, aby bya zgodna z Blenderem w wersji 2.48. Jak zwykle w takich sytuacjach obowizuje zasada: jeli chcesz uzyskiwa przewidywalne rezultaty wicze opisanych w ksice, uywaj waciwej wersji programu. Oczywicie szczerze zach cam Ci do si gania po nowsze wersje Blendera i uwane ledzenie zachodzcych w nim zmian, bo dzi ki temu Twoja wiedza b dzie wci aktualna i b dziesz móg w peni korzysta z nowych funkcji i usprawnie. Po prostu nie zapominaj, e Blender jest czym, co cigle si rozwija. Nawet teraz, gdy czytasz te sowa, Blender wzbogaca si o nowe i fascynujce funkcje, z którymi b dziesz móg si zapozna , gdy tylko ukae si jego nowa, oficjalna lub nieoficjalna wersja. Jeli chcesz nady za tymi wszystkimi nowociami, radz Ci: czytaj szybko!
Tematyka ksi ki Jak ju wspominaem, ksika skada si z trzech cz ci. Pierwsza zawiera pi rozdziaów, w których omawiam ogólne zagadnienia zwizane z obsug Blendera. Kady rozdzia powi cony jest innemu aspektowi programu. Cz druga zawiera peny opis tworzenia skryptów wcznie z przyst pn prezentacj j zyka Python. W cz ci trzeciej znajdziesz wyczerpujcy opis silnika gier Blendera (BGE — Blender Game Engine). Zobaczysz tam take, jak mona sterowa tym silnikiem za pomoc skryptów. Szczegóowa zawarto
poszczególnych rozdziaów przedstawia si nast pujco: Cz I. Zg bianie Blendera 3D Rozdzia 1. „Konfigurowanie rodowiska pracy”. Ten rozdzia zawiera wskazówki na temat rónych sposobów ustalania parametrów dziaania Blendera i stosowania rozmaitych metod pracy. S tu take informacje o zmianach, jakich naley oczekiwa w nast pnych wydaniach programu. Rozdzia 2. „Rzebienie i tworzenie nowej topologii obiektu”. Tutaj znajdziesz szczegóowy opis narz dzi rzebiarskich i nauczysz si uywa ich w poczeniu z funkcj Retopo oraz wypalaniem map normalnych, aby tworzy szczegóowe modele o niezbyt wygórowanej liczbie wieloktów. Rozdzia 3. „Zwi kszanie realizmu scen za pomoc odpowiednich tekstur i materiaów”. Celem tego rozdziau jest pokazanie Ci nowych technik teksturowania obiektów. Dowiesz si , jak za pomoc GIMP-a i Blendera mona tworzy bezszwowe tekstury o jakoci wr cz fotograficznej. Nauczysz si take tworzenia realistycznych materiaów przy uyciu systemu w zów. Rozdzia 4. „Komponowanie wideoklipów przy uyciu w zów”. Ten rozdzia odkryje przed Tob kolejne moliwoci systemu w zów. Tym razem b dzie to komponowanie
18 ~ WPROWADZENIE
materiaów wideo, wcznie z tworzeniem masek green screen i korygowaniem kolorystyki tych materiaów. Nauczysz si równie uywa krzywych i haczyków do rotoskopowego maskowania niepodanych elementów. Rozdzia 5. „Edytor wideo (VSE)”. Ten rozdzia stanowi swego rodzaju podsumowanie cz ci pierwszej, bo pokazuje, jak naley nabyt do tej pory wiedz wykorzysta
do obsugi uniwersalnego narz dzia, jakim jest edytor wideo. Nauczysz si edytowa
cieki wizyjne i dwi kowe, tworzy efektowne przejcia i nakadki oraz czy
system w zów z edytorem wideo w jeden pot ny system nieliniowej edycji wideo. Cz II. Zg bianie Pythona Rozdzia 6. „Python dla niecierpliwych”. Ten rozdzia zawiera wprowadzenie do programowania w j zyku Python. Zosta napisany przy zaoeniu, e Czytelnik nie ma adnego dowiadczenia w programowaniu. Znajdziesz tu wszystkie podstawowe informacje niezb dne do zrozumienia nast pnych rozdziaów. Rozdzia 7. „Skrypty Pythona w Blenderze”. Tutaj dowiesz si , co ma wspólnego Python z Blenderem. Nauczysz si uywa tego j zyka do automatyzowania zada wykonywanych w Blenderze i zaznajomisz si z pythonowym API Blendera, co pozwoli Ci na samodzielne wyszukiwanie informacji niezb dnych do zaprogramowania okrelonych funkcji. Rozdzia 8. „W o wielu gowach, czyli inne zastosowania Pythona w Blenderze”. Skrypty nie s jedyn forma zwizków Pythona z Blenderem. Na podstawie tego rozdziau nauczysz si pisa wasne sterowniki pythonowe (PyDrivers), tworzy
niestandardowe w zy (PyNodes) i definiowa wi zy (PyConstraints). Dowiesz si take, jak mona uruchamia skrypty za pomoc czy skryptowych i tworzy interaktywne elementy interfejsu w oknie widokowym za pomoc skryptów typu space handler. Cz III. Zg bianie blenderowego silnika gier Rozdzia 9. „Przygotowywanie scen dla silnika gier”. W tym rozdziale przygotujesz sceneri prostej gry i wymodelujesz posta gównego bohatera. Przygotujesz take wypalon tekstur , któr b dzie mona zastosowa w silniku gier oraz utworzysz sekwencj animacji ruchów postaci. Rozdzia 10. „Uruchamianie silnika gier”. Tutaj znajdziesz przykady tego, co mona zrobi w BGE: sterowania postaciami i obiektami za pomoc bloków logicznych, konstruowania zoonych systemów interakcyjnych przy uyciu waciwoci i stanów oraz tworzenia tekstów dynamicznych, animowanych tekstur i efektów dwi kowych. Rozdzia 11. „czenie pot gi Pythona z moliwociami silnika gier”. Ten rozdzia czy kilka wtków, ale na wyszym poziomie zaawansowania. Zobaczysz, e przy uyciu Pythona mona tworzy logik gry o wiele bardziej wyrafinowan ni za pomoc systemu bloków logicznych. Python pozwala tworzy rzeczy, których innymi sposobami nie daoby si zrobi , a przekonasz si o tym, wykonujc maszyn teleportacyjn i ekran logowania. Nauczysz si programowa obsug wielu kamer i wielu okien widokowych. Poznasz te metody programowego sterowania dwi kiem.
WPROWADZENIE ~ 19
Aby zapewni wi ksz czytelno rysunków ilustrujcych omawiane zagadnienia, cz z nich zostaa powtórzona w 24-stronicowej kolorowej wkadce w rodku ksiki. Z kolei na kocu ksiki w jednym z dodatków zamieszczono list klas i moduów pythonowego API Blendera 2.48.
Zawarto CD Pyta doczona do ksiki zawiera instalatory Blendera 2.48 dla systemów Windows i Macintosh oraz tarball dla Linuksa i innych odmian Uniksa. Znajdziesz tam równie wiele plików .blend z materiaami do wicze.
Kontakt z autorem Jeli w trakcie lektury ksiki b dziesz mia jakie wtpliwoci i pytania lub b dziesz chcia podzieli si wasnymi przemyleniami czy uwagami, zabierz gos na forum dyskusyjnym spoecznoci blenderowej pod adresem www.blenderartists.org/forum, na którym regularnie zabieram gos pod pseudonimem bugman_2000. Moesz równie kontaktowa si ze mn bezporednio, piszc na adres [email protected].
20 ~ WPROWADZENIE
Cz I
Zgbianie Blendera 3D
Rozdzia 1. Konfigurowanie rodowiska pracy Rozdzia 2. Rze bienie i tworzenie nowej topologii obiektu Rozdzia 3. Zwikszanie realizmu scen za pomoc odpowiednich tekstur i materiaów Rozdzia 4. Komponowanie wideoklipów przy uyciu wzów Rozdzia 5. Edytor wideo (VSE)
w
w
w
.e b
oo
k4
al
l.p
l
22 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
Rozdział l. Konfigurowanie środowiska pracy Liczba funkcji oferowanych przez Blendera jest tak duża, Że opanowanie ich wszystkich wydaje się zadaniem przekraczającym możliwości przeciętnego człowieka. Na widok okna przycisków nowicjusze zwykle doznają szoku. Ale nawet doświadczeni użytkownicy często mają wrażenie, Że wykorzystują tylko niewielki ułamek możliwości programu. I tak jest naprawdę. Na przykład większość użytkowników tyl �w niewielkim stopniu korzysta z tego, co Elender oferuje w zakresie konfiguracj��iska pracy, a są to nie tylko opcje dostępne w oknie User Pręforences (Ustawie uzy nika), ale także mniej znane techniki i skróty stosowane w normalnej pracy. fęc zgłębić te zagadnienia. Ponadto znajomość zasad, na jakich jest zbudow � erfejs programu, pozwoli w przyszłości szybciej zaadaptować się do wszel �h �ości, jakie się w nim pojawią. Z tego rozdziału dowiesz się, jak:
� � �V �
+ +
+
L� '� � �
wienia uzytkownika), ustawiać opcje w oknie User Pręforenc aznaczania, grupowania i manipulowania stosować mniej znane metody szy� elementami 3D, V ających z ciągłego rozwoju Blendera przez przygotować się do zmia zrozumienie zasad rządz�h jego nietypowym interfejsem.
�
�
stawianie.{!\? � lendera Jak już wspomn���wstępie, tę książkę napisałem z myślą o użytkownikach, którzy chcą rozwijać �umiejętności obsługi Blendera, czyli o tych, którzy już ten program U
znają, ale chcą o nim wiedzieć jeszcze więcej. A zatem niniejszy rozdział jest dla tych, którzy znają interfejs Blendera i wiedzą, jak się nim posługiwać, ale chcą go poznać jeszcze lepiej, aby móc poprawić efektywność swojej pracy -mówiąc krótko, chcą go poznać dogłębnie. Ten rozdział ma pomóc Ci w wyjściu poza standardową wiedzę na temat wykonywania określonych rzeczy w Blenderze i w gruntownym przeanalizowaniu sposobu, w jaki Ty je wykonujesz. Poznasz tutaj ustawienia, za pomocą których możesz ustalić własne Środowisko pracy. Poznasz też pewne triki i techniki działania, dzięki którym poszerzysz gamę możliwości przejścia z punktu A do punktu B na ścieżce realizacji swojego projektu. Ten rozdział ma dać Ci niezbędną wiedzę i przekonanie, Że Elenderowi można i należy "powiedzieć", jak określone rzeczy mają być wykonywane.
24
l ROZDZIAŁ l. KONFIGUROWANIE ŚRODOWISKA PRACY
Preferencje użytkownika Gdy jakikolwiek program chcemy dostosować do naszych potrzeb lub upodobań, wtedy zwykle zaczynamy szukać tzw. preferencji użytkownika. W Blenderze jest podobnie. Okno User Pręforences (Ustawienia ui:;ytkownika) jest "ukrytym" trzecim oknem w standardowej konfiguracji interfejsu pokazanej na rysunku 1.1. Pasek widoczny w górnej części ·wygląda jak typowy pasek menu znany z większości innych programów, ale tak naprawdę jest to nagłówek okna User Pręforences (Ustawienia ui:;ytkownika). Aby zobaczyć zawartość tego okna, należy kliknąć lewym przyciskiem myszy dolną krawędź wspomnianego paska i przeciągnąć ją w dół, tak jak na rysunku 1.2. Dolną część okna zajmuje siedem przycisków, z których każdy udostępnia inny zestaw opcji. RYSUNEK 1.1. Domyślna konfiguracja interfejsu Blendera
VIEW& C
Pierwszy pr si nazwęView & Controls (widok i kontrolki) i udostępnia ustawienia pokazane na rysunku 1.3. Pod nagłówkiem Displąy (wyświetl) znajduje się sześć przycisków, za pomocą których można włączać i ·wyłączać wyświetlanie określonych informacji w oknie 3D View (Widok 3D) i w całym interfejsie Blendera. Są to następujące przyciski: +
+
+
Tool Tips (etykiety narzędzi) włącza i wyłącza wyświetlanie etykiet informacyjnych po ustawieniu wskaźnika myszy na poszczególnych elementach interfejsu. Object Info (informacje o obiekcie) włącza i wyłącza wyświetlanie nazwy aktywnego obiektu. Nazwa ta jest widoczna w lewym dolnym rogu okna 3DView (Widok 3D). Global Scene (scena globalna) wymusza wyświetlanie aktywnej sceny we wszystkich ekranach.Jeśli ten przycisk jest włączony i w jednym z ekranów zmienisz scenę, zmiana ta wystąpi również w pozostałych ekranach. Przy wyłączonym przycisku każdy ekran wyświetla ciągle tę samą scenę nawet wtedy, gdy w innym ekranie scena została zmieniona na inną.
USTAWIANIE OPCJI BLENDERA l
25
RYSUNEK 1.2. Przesunięcie górnego paska w dół ujawnia zawartość o kna User Preferences (Ustawienia użytkownika)
RYSUNEK 1.3.
3D'hnoformllldgot:
Ustawienia preferencji View & Centrols (widok i kontrolki)
+
Large Cursors (duże kur
�
włącza wyświetlanie alternatywnych wskaźników myszy, jeśli takie s nsialowane w systemie. View Name (naz oku) wyświetla nazwtt widoku -Front (z przodu), Back ), Bottom (z dołu) , Right (z prawej), Lęfi (z lewej), Orthographic (z tyłu) , Top ( Ortografi ci_ .l Perspective (Perspektywistyczny) w lewym górnym rogu okna ·
+
·
�
, 3DView � 3D). +
-
Playback FPS (szybkość odtwarzania) podczas odtwarzania animacji wyświetla liczbtt klatek na sekundtt w lewym górnym rogu okna 3DView (Widok 3D).
Druga kolumna ustawień zawiera przyciski i pola edycyjne z właściwościami menu, przyborników (toolboxes) i paneli. l\!Iożna tutaj ustawić nastttpujące opcje: +
open on Mouse Over (rozwiń po wskazaniu myszą) włącza automatyczne rozwijanie menu po przytrzymaniu na nim wskaźnika myszy -klikanie nie jest wtedy potrzebne. Wartości liczbowe tego ustawienia określają, jak długo trzeba trzymać wskaźnik myszy, aby rozwinttło sitt menu główne (top level) i podrzttdne (sublevels).
+
Toolbox click-hołd delay (opóźnienie otwarcia przybornika). Te wartości określają czas, po jakim otworzy sitt przybornik, gdy klikniemy i przytrzymamy lewy (LMB) lub prawy (RMB) przycisk myszy. Do szybkiego otwierania przybornika używamy
klawisza spacji.
26
l ROZDZIAŁ l. KONFIGUROWANIE ŚRODOWISKA PRACY
+
+
Pin Floating Panels (zablokuj swobodne panele) sprawia, Że swobodne panele narzędzi, takie jak TranifOrm Properties (Proporrje1 tranifOrmarji), otwierają się zawsze w tym miejscu, w którym znajdowały się przed zamknięciem.Jeśli przycisk jest wyłączony, panele otwierają się tam, gdzie znajduje się wskaźnik myszy. Plain Menus (menu zwykłe) włącza tradycyjny, kolumnowy układ menu przybornika i zapobiega odwracaniu kolejności poleceń w menu, gdy jest ono rozwijane w górę, a nie w dół.
Następna kolumna to przyciski służące do sterowania trybem przyciągania elementów sceny do siatki i niektórymi aspektami nawigowania w przestrzeni 3D. Przyciski pełnią następujące funkcje: +
Grab/Move (Przenieś) włącza przyciąganie do siatki tych obiektów, które są
przesuwane. + + +
' � ;,rtóre są obracane. Scale (Skaluj) włącza przyciąganie do siatki tych � ek� które są skalowane.
Rotate ( Obróć) włącza przyciąganie do siatki tych obie
�anie i zbliżanie widoku
Auto Depth (automatyczna głębia) sprawia, Że
� �wierzchni obiektu leżącego �formacji widoku taki punkt W '-� Global Pivot (globalny środek tran��ji) powoduje, Że wybrany środek transformacji obowiązuje we ws �� oknach z widokiem 3D.Jeśli przycisk jest wyłączony, w każdym ��e być stosowany inny środek transformacji. Przyciski kolejnej kolumny sł��stalania metod nawigowania w przestrzeni 3D. przestrzeni 3D odbywa się względem pun wprost pod wskaźnikiem myszy. Przy każd jest ustalany automatycznie.
+
Za pomocą tych przycisków m� ustawić następujące opcje: +
+
+
+
+
u� � � � �"cl)
Continue (ciągle) a �iągłe zbliżanie lub oddalanie widoku, gdy wciśnięty jest środkowy '2._� myszy, a jej wskaźnik znajduje się w górnej lub dolnej połowie okna wego. O szybkości zbliżania bądź oddalania decyduje odległość limi dzielącej okno widokowe na póe. wskaźnik sprawia, Że zbliżenie jest realizowane przez ruch myszy w dół, Dolly (n a oddalanie przez ruch myszy w górę. Scale (Skaluj) sprawia, Że zbliżenie jest realizowane przez odsuwanie myszy od środka okna, a oddalanie -przez przesuwanie myszy ku środkowi okna. Trachhall (manipulator kulowy) sprawia, Że cały widok obraca się swobodnie we wszystkich kierunkach- przypomina to manipulowanie trackballem. Turntable (talerz obrotowy) sprawia, Że cały widok obraca się wokół trzech wzajemnie prostopadłych osi, przez co ruch nie jest tak płynny jak przy włączonej opcji Trackball.
1
Powinno być raczej
2
Ściślej chodzi tu o linię przechodzącą przez punkt, w który kliknęliśmy, i nachyloną pod kątem 45 stopni
Właściwości
w prawo i w dół- przyp.
tłum.
lub
Parametry - jJrzyjJ. tłum.
USTAWIANIE OPCJI BLENDERA~ 27
Auto Perspective (automatyczna perspektywa) powoduje automatyczne wczanie widoku perspektywicznego, gdy tylko wykonamy jakikolwiek obrót widoku Top (Górny), Front (Przedni) lub Side (Boczny). Oczywicie wczenie któregokolwiek z tych widoków powoduje powrót do trybu ortogonalnego. Around Selection (wokó zaznaczenia) sprawia, e widok obraca si wokó rodka masy (median point) zaznaczonych elementów.
Przyciski z pitej kolumny pozwalaj okreli pewne aspekty posugiwania si mysz i wywietlania miniaturowych osi w oknie widokowym. S to nast pujce przyciski:
Left Mouse (lewy przycisk myszy) wcza tryb zaznaczania za pomoc lewego przycisku myszy (LMB). Right Mouse (prawy przycisk myszy) wcza tryb zaznaczania za pomoc prawego przycisku myszy (RMB). Emulate 3 Button Mouse (emuluj trzeci przycisk myszy) umoliwia emulowanie rodkowego przycisku myszy (MMB) za pomoc kombinacji Alt+LMB. Paste on MMB (wklejaj rodkowym przyciskiem) umoliwia wklejanie zawartoci schowka przez klikanie rodkowym przyciskiem myszy. Dziaa w oknie edytora tekstu. Mini Axis (minio) steruje wywietlaniem miniaturowych osi w lewym dolnym rogu okna widokowego.
W kolejnej kolumnie znalazy si przyciski i pola edycyjne okrelajce funkcjonowanie rodkowego przycisku myszy, rolki myszy i klawiszy z numerycznej cz ci klawiatury. Za pomoc tych kontrolek mona ustawi nast pujce opcje:
Rotate View (obracaj widok) przypisuje rodkowemu przyciskowi myszy funkcj obracania widoku. Przesuwanie widoku jest wtedy realizowane przez kombinacj Shift+MMB. Pan View (przesuwaj widok) przypisuje rodkowemu przyciskowi myszy funkcj przesuwania widoku. Obracanie widoku jest wtedy realizowane przez kombinacj Shift+MMB. Invert Zoom (odwró zblianie) odwraca dziaanie rolki myszy uywanej do zbliania lub oddalania widoku sceny. Smooth View (pynne przejcie do innego widoku) pozwala ustali czas (w milisekundach) animowanego przejcia mi dzy widokami przeczanymi za pomoc klawiatury numerycznej. Rotation Angle (kt obrotu) pozwala ustali kt, o jaki zostanie obrócony widok po wcini ciu klawisza 2, 4, 6 lub 8 na klawiaturze numerycznej.
Ostatnia kolumna zawiera ustawienia parametrów manipulatora transformacji 3D (3D Transform Widget) i rednicy markera oznaczajcego rodek obiektu. S tu take ustawienia dla urzdze o szeciu stopniach swobody (6DOF), takich jak Space Navigator. Mona tu ustawi nast pujce parametry:
28 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
Size (rozmiar), Handle (uchwyt) i Hotspot (obszar aktywny) okrelaj cakowit wielko manipulatora 3D oraz wielko jego uchwytów i obszarów aktywnych (miejsc, których klikni cie jest równoznaczne z klikni ciem uchwytu). Object Center Size (rozmiar rodka obiektu) okrela rednic kuli symbolizujcej punkt rodkowy obiektu. ndPan i ndRot okrelaj szybko , z jak program reaguje na sygnay urzdzenia 6DOF.
PROPOZYCJE USTAWIE DLA SEKCJI VIEW & CONTROLS (WIDOK I KONTROLKI) Oczywiście każdy ma własne preferencje i dlatego opcje takie jak opisywane w tej części rozdziału w ogóle istnieją. Kilka z nich zasługuje na szczególną uwagę. Around Selection (wokół zaznaczenia) może znacznie ułatwić nawigowanie wokół zaznaczonych wierzchołków, szczególnie wtedy, gdy leżą one z dala od środka okna widokowego. Parametr Smooth View (płynne przejście do innego widoku) to wspaniały sposób na wizualizację przejścia od jednego widoku ortogonalnego do innego. Gdy na przykład prowadzisz lekcję z obsługi Blendera lub przygotowujesz film instruktażowy, możesz ustawić wartość tego parametru na 500 (pół sekundy), aby ułatwić widzom orientowanie się w tym, co aktualnie robisz. Dla tych, którzy lubią używać manipulatora transformacji, na pewno dużym ułatwieniem w pracy będzie zwiększenie rozmiarów obszaru aktywnego. Ludzie przyzwyczajeni do innych programów 3D często wolą używać trybu Turntable (talerz obrotowy), a nie Trackball (manipulator kulowy). Jednak ten drugi oferuje znacznie większą swobodę w ustawianiu widoku, a zatem warto się do niego przekonać. Podobnie jest z przyzwyczajeniem do używania głównie lewego przycisku myszy. Warto pohamować w sobie chęć zmiany trybu zaznaczania z Right Mouse (prawy przycisk myszy) na Left Mouse (lewy przycisk myszy), ponieważ wywoła to niepożądane efekty uboczne. Jednym z nich będzie niemożność zastąpienia środkowego przycisku myszy kombinacją Alt+LMB, a na to na pewno nie mogą pozwolić sobie użytkownicy myszy o dwóch przyciskach.
EDIT METHODS (METODY EDYCJI) Kontekst przycisku Edit Methods (metody edycji) jest pokazany na rysunku 1.4. RYSUNEK 1.4. Preferencje użytkownika dostępne po kliknięciu przycisku Edit Methods (metody edycji)
Wszystkie opcje zostay tu podzielone na nast pujce grupy:
Material Linked To (materia doczony do). Tutaj moesz wybra , czy materiay maj by doczane do obiektu, czy do jego bloku danych. To drugie jest ustawieniem domylnym. Add new objects (dodaj nowe obiekty). Za pomoc przycisków z tej grupy moesz wczy automatyczne przejcie do trybu edycji po utworzeniu nowego obiektu — przycisk Switch to Edit Mode (przejd do trybu edycji) — i automatyczne ustawienie
USTAWIANIE OPCJI BLENDERA~ 29
nowego obiektu zgodnie z kierunkiem widoku — przycisk Aligned to View (zgodnie z widokiem). Transform: Drag Immediately (transformuj: od razu przesuwaj). Wczenie tej opcji umoliwia zaznaczanie i przesuwanie elementów za pomoc jednego przycisku myszy. Jeli zaznaczysz obiekt prawym przyciskiem myszy i natychmiast przecigniesz kursor w inne pooenie, obiekt b dzie poda za kursorem, dopóki nie zwolnisz przycisku myszy. Przy wyczonej opcji wszystko odbywa si podobnie poza tym, e po zwolnieniu prawego przycisku myszy musisz jeszcze klikn lewym przyciskiem, aby zatwierdzi transformacj . Undo (cofnij). W tej grupie moesz ustawi maksymaln liczb operacji, które mona cofn , oraz ilo pami ci przeznaczon na ich zapami tanie. Za pomoc przycisku Global Undo (cofanie globalne) moesz wczy tryb, w którym moliwe jest cofanie kolejnych operacji edycyjnych nawet po opuszczeniu trybu edycji i ponownym przejciu do niego. W zwykym trybie cofania co takiego nie jest moliwe. Auto Keyframe (automatyczna klatka kluczowa). Opcje z tej grupy umoliwiaj automatyczne tworzenie klatek kluczowych dla okrelonych zestawów krzywych IPO. Dla danej klatki animacji tworzony jest klucz, gdy tylko jaka warto IPO ulegnie zmianie. Dzi ki temu zb dne staje si r czne tworzenie klatek kluczowych za pomoc klawisza I. Grease Pencil (kredka woskowa). Ta grupa zawiera ustawienia trybu rysowania linii za pomoc narz dzia Grease Pencil (kredka woskowa). Im mniejsze wartoci parametrów Euclidean Distance (odlego euklidesowa) i Manhatten Distance (odlego Manhattan), tym gadsze linie moemy rysowa . Duplicate with object (powiel z obiektem). Tutaj moesz wybra , które bloki danych maj by powielane, gdy powielasz obiekt za pomoc klawiszy Shift+D. Takie powielanie oznacza tworzenie nowych, niezalenych bloków danych. Bloki niepowielane wraz z obiektem staj si wspólne dla obu obiektów.
PROPOZYCJE USTAWIE DLA SEKCJI EDIT METHODS (METODY EDYCJI) Opcje z tej sekcji mają mniej „personalny” charakter niż te z sekcji View & Controls (widok i kontrolki). Przy ich ustawianiu należy kierować się raczej potrzebami niż upodobaniami. Jeśli zazwyczaj po dodaniu nowego obiektu przechodzisz natychmiast do jego modelowania, możesz swoją pracę przyspieszyć poprzez włączenie opcji Switch to Edit Mode (przejdź do trybu edycji) w grupie Add new objects (dodaj nowe obiekty). Zwiększenie wydajności możesz uzyskać także dzięki uaktywnieniu odpowiednich opcji z grupy Auto Keyframe (automatyczna klatka kluczowa), ale to wymaga biegłości w operowaniu elementami systemu IPO. Jeśli jesteś początkującym animatorem, lepiej pozostań przy ręcznym definiowaniu klatek kluczowych, dopóki w pełni nie opanujesz tego zagadnienia. Wśród opcji automatycznego kluczowania warto zwrócić uwagę na przycisk Needed (niezbędne), którego włączenie wymusza tworzenie klatek kluczowych tylko wtedy, gdy to jest konieczne. W grupie Duplicate with object (powiel z obiektem) oprócz domyślnie włączonych bloków danych możesz jeszcze włączyć blok Ipo, jeśli uznasz, że przypisywanie tych samych krzywych interpolacyjnych kopii i oryginałowi obiektu jest mało przydatne.
30 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
LANGUAGE & FONT (JZYK I CZCIONKA) Po klikni ciu przycisku Language & Font (j zyk i czcionka) okno preferencji przyjmuje posta tak jak na rysunku 1.5. Nie jest tajemnic, e internacjonalizacja Blendera nie nada za jego rozwojem. Jednym z powodów tego stanu rzeczy jest trudno w tworzeniu na bieco plików z tumaczeniami w rónych j zykach. Tumaczenia, podobnie jak wiele innych rzeczy w Blenderze, musz by umieszczane w kodzie i wraz z nim kompilowane do postaci pliku wykonywalnego. RYSUNEK 1.5. Preferencje użytkownika dostępne po kliknięciu przycisku Language & Font (język i czcionka)
Jednym z ustawie, jakie mona tutaj zmieni , jest rozmiar czcionki stosowanej do wywietlania etykiet przycisków i w menu. Aby to zrobi , kliknij przycisk International Fonts (czcionki mi dzynarodowe) i z rozwijanej listy Font Size (rozmiar czcionki) wybierz odpowiedni warto (patrz rysunek 1.6). RYSUNEK 1.6. Lista rozwijana Font Size (rozmiar czcionki)
Opcja Use Textured Fonts (uyj czcionek teksturowanych) moe powodowa
problemy z wywietlaniem nazw przycisków przez niektóre karty graficzne. Jeli zauwaysz, e niektóre przyciski nie maj nazw, wycz t opcj 3 (patrz rysunek 1.7). RYSUNEK 1.7. Wyłączona opcja Use Textured Fonts (użyj czcionek teksturowanych)
Z systemu czcionek mi dzynarodowych moesz skorzysta , jeli niezb dne czcionki masz zainstalowane w systemie. Na rysunku 1.8 moesz zobaczy , jak wyglda Blender po wybraniu j zyka japoskiego i japoskiej czcionki. Poytek z takiej zmiany j zyka i czcionki jest jednak niewielki. Po pierwsze, wi kszo dokumentacji i materiaów szkoleniowych jest pisana przy zaoeniu, e Blender jest w wersji angielskiej, a po drugie, tumaczenia Blendera na inne j zyki s bardzo niekompletne, co wida na rysunku 1.9.
3
Niekiedy zachodzi sytuacja odwrotna — aby napisy byy poprawnie wywietlone, trzeba t opcj wczy
— przyp. tum.
USTAWIANIE OPCJI BLENDERA~ 31
RYSUNEK 1.8. Blender w wersji japońskiej
RYSUNEK 1.9. Niekompletność przekładów Blendera
PROPOZYCJE USTAWIE DLA SEKCJI LANGUAGE & FONT (JZYK I CZCIONKA) Byłoby dobrze, gdyby ułatwiono tłumaczenie Blendera na inne języki, i miejmy nadzieję, że stanie się to przy okazji zapowiadanej modernizacji sytemu zderzeń. Jednak na razie wszystkie tłumaczenia są powierzchowne, niekompletne i nieaktualne. Jedynym rozsądnym wyjściem pozostaje więc korzystanie z wersji angielskiej.
THEMES (MOTYWY) Okno ustawie Themes (motywy), pokazane na rysunku 1.10, umoliwia tworzenie i wybieranie zestawów ustawie dotyczcych kolorystyki i ksztatu poszczególnych elementów interfejsu. Gotowy motyw moesz wybra z listy rozwijanej, a jeli chcesz utworzy nowy, kliknij przycisk Add (dodaj). Blender rozprowadzany jest z dwoma gotowymi motywami: Default (domylny) i Rounded (zaokrglony). Efekt wybrania tego drugiego moesz zobaczy na rysunku 1.11. Na rysunkach w tej ksice prezentowany jest motyw Rounded (zaokrglony) z niewielkimi modyfikacjami. W trybie tworzenia lub modyfikowania motywu dost pnych jest tak duo opcji, e nie sposób ich wszystkich tutaj opisa . Na szcz cie ich nazwy s do czytelne i atwo si domyli , o co chodzi. Kolory mona przypisywa niemal wszystkim elementom interfejsu, a niektórym (takim jak listy rozwijane i tymczasowo otwierane panele) mona przypisywa take róne stopnie przezroczystoci.
32 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
RYSUNEK 1.10. Okno preferencji użytkownika w trybie Themes (motywy)
RYSUNEK 1.11. Motyw Rounded (zaokrąglony)
Jeli dysponujesz prawidowo sformatowanym plikiem ikon Blendera, moesz take zmieni ich wygld, ale to wymaga odpowiednich przygotowa. Przede wszystkim trzeba w instalacyjnym folderze Blendera odszuka folder .blender i utworzy w nim nowy podfolder o nazwie icons. W systemach Mac OS X i Linux sprawa wyglda troch inaczej — w katalogu domowym (~/) trzeba utworzy katalog .blender i w nim podkatalog icons. Nast pnie w folderze icons umieszczamy pliki z alternatywnymi ikonami. Na koniec pozostaje wybra z rozwijanych list w drugiej kolumnie preferencji opcje UI and Buttons (UI i przyciski) i Icon File (plik ikon) oraz wskaza odpowiedni plik, tak jak na rysunku 1.12. RYSUNEK 1.12. Wybór pliku z ikonami
Ikony, z jakich korzystaem podczas pisania tej ksiki, pokazano na rysunku 1.13 i w kolorowej wkadce. Ich autorem jest uczestnik forum portalu BlenderArtist.org posugujcy si pseudonimem jendrzych. Peny zestaw tych ikon znajduje si na stronie internetowej http://blenderartist.org/forum/showthread.php?t=84971. Odpowiednie pliki znajduj si te na pycie doczonej do ksiki. Nie s to wprawdzie oficjalne ikony
USTAWIANIE OPCJI BLENDERA~ 33
RYSUNEK 1.13. Zestaw odmiennych ikon
Blendera 2.48, ale s adne i stosowane przez wielu uytkowników. Co wi cej, zostay ju zatwierdzone jako domylne dla wersji 2.5. Warto wi c — w ramach przygotowywania si do kolejnych wersji Blendera — zacz przyzwyczaja si do nich ju teraz. Na podstawie rysunku 1.14 (powtórzonym take w kolorowej wkadce) moesz porówna
ikony domylne z nowymi — pokazano tam nagówki wszystkich okien Blendera — i zorientowa si , która ikona odpowiada której. Moe to by szczególnie pomocne, jeli uywasz jeszcze innego zestawu ikon. W ksice, tam, gdzie mog rodzi si wtpliwoci, pokazywane s ikony w obu wersjach. RYSUNEK 1.14. Domyślne i alternatywne ikony w nagłówkach okien Blendera
34 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
Rozmaite motywy Blendera mona pobra z internetu. Wystarczy wpisa w Google haso Blender themes, aby uzyska adresy stron z odpowiednimi zasobami. Motywy mona pobiera w postaci plików .blend lub skryptów Pythona. W tym drugim przypadku po prostu otwórz skrypt w blenderowym edytorze tekstu i uruchom go za pomoc klawiszy Alt+P. PROPOZYCJE USTAWIE DLA SEKCJI THEMES (MOTYWY) Motywy to rzecz gustu; jednak nie bez powodu oba motywy obecne w standardowej instalacji są w przeważającym stopniu szare i stonowane. Motywy jasne i kolorowe mogą odwracać uwagę od tego, co istotne. Mogą też męczyć wzrok. Kontrast między poszczególnymi elementami interfejsu powinien być na tyle duży, aby były one wyraźnie rozróżnialne, ale należy uważć, bo duże powierzchnie białe lub jaskrawe są męczące dla oczu. Spośród wszystkich opcji motywu na szczególną uwagę zasługują te z menu 3D View (Widok 3D). Jeśli planujesz używać Blendera podczas wykładów lub do opracowywania filmów szkoleniowych, możesz zmienić rozmiary wyświetlania wierzchołków (opcja Vertex Size) i środków ścianek (opcja Face Dot Size).
AUTO SAVE (ZAPISYWANIE AUTOMATYCZNE) Kontekst przycisku Auto Save (zapisywanie automatyczne) jest pokazany na rysunku 1.15. Tutaj moesz ustawi opcje zwizane z funkcjami automatycznego zapisywania plików i tworzenia kopii bezpieczestwa. Za pomoc parametru Save Versions (zachowaj wersje) moesz okreli , jaka liczba ostatnio zapisanych wersji pliku ma by przechowywana. By
moe, zagldajc do folderu z plikami wygenerowanymi przez Blendera, zauwaye, e obok plików nazwa.blend istniej pliki nazwa.blend1. Otó przy domylnej wartoci parametru Save Versions (zachowaj wersje), która wynosi 1, Blender przechowuje dwie kopie dokumentu: biec i poprzedni. Jeli zwi kszysz t warto (i wciniesz Ctrl+U, aby zapisa nowe ustawienie), zobaczysz, e liczba numerowanych wersji dokumentu równie wzrosa. RYSUNEK 1.15. Ustawienia Auto Save (zapisywanie automatyczne)
Wczenie opcji Auto Save Temp Files (zapisuj automatycznie pliki tymczasowe) powoduje zapisywanie numerowanych plików tymczasowych w wyznaczonym folderze (domylnie jest nim /tmp, a zatem sprawd, czy taki folder istnieje w systemie, lub okrel miejsce, w którym tymczasowe pliki maj by zapisywane). W polu Minutes (minuty) moesz okreli cz stotliwo zapisywania tych plików. Przycisk Open Recent (otwórz ostatni) suy do otwierania ostatniego zapisanego pliku. Parametr Recent Files (ostatnie pliki) okrela liczb zapisanych uprzednio plików, których nazwy b d widoczne w menu File (Plik) po wybraniu polecenia Open Recent (otwórz ostatnie).
USTAWIANIE OPCJI BLENDERA~ 35
SYSTEM & OPENGL (SYSTEM I OPENGL) Ustawienia System & OpenGL (system i OpenGL), pokazane na rysunku 1.16, su do sterowania rozmaitymi aspektami wywietlania sceny lub animacji. RYSUNEK 1.16. Ustawienia System & OpenGL (system i OpenGL)
Istniej trzy wiata OpenGL, których mona uy do owietlenia obiektów w trybie Solid (Solidny). Domylnie aktywne s dwa sporód nich. Pierwsze, najmocniejsze, pada z lewej strony, a drugie, sabsze — z prawej. Trzecie, domylnie wyczone, owietla obiekty od dou z prawej strony, tak jak na rysunku 1.17. Kade z tych wiate mona wczy i wyczy . Mona take zmienia ich kolory i kierunek padania. To ostatnie realizujemy przez klikanie i przeciganie mysz po powierzchniach przykadowych kul. RYSUNEK 1.17. Scena 3D z włączonymi domyślnie dwoma światłami i ta sama scena z włączonym trzecim światłem OpenGL
36 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
Wró my jednak do pozostaych ustawie z grupy System & OpenGL (system i OpenGL), czyli do okna z rysunku 1.16. Wczenie przycisku Enabled by Default (uruchamiane domylnie) w sekcji Auto Run Python Scripts (uruchamiaj automatycznie skrypty Pythona) sprawi, e skrypty zawarte w plikach .blend b d uruchamiane automatycznie. W wielu przypadkach jest to wygodne, ale odradzam stosowanie tej opcji w sytuacjach, gdy pochodzenie plików jest nieznane. Przycisk Enable all codecs (wcz wszystkie kodeki) w sekcji Win Codecs (kodeki Windows) jest dost pny tylko w systemach Windows i umoliwia Blenderowi korzystanie podczas renderowania z wszystkich kodeków zainstalowanych w systemie. Z etykiety informacyjnej przypisanej do przycisku mona si dowiedzie , e ta wspópraca Blendera z kodekami nie jest gwarantowana — obsuga niektórych z nich jest w fazie eksperymentalnej. Przycisk ColorBand (pasek barw) w sekcji Color range for weight paint (zakres barw dla malowania wag) pozwala zmieni domylny zakres kolorów dla wag (od niebieskiego do czerwonego) na dowolny inny. Za pomoc przycisków z sekcji Audio mixing buffer (bufor miksowania dwi ku) mona wybra , jaka ilo pami ci ma by przeznaczona na miksowanie dwi ku. Wczenie przycisku Emulate Numpad (emuluj klawiatur numeryczn) pozwala na korzystanie z klawiszy numerycznych w gównej cz ci klawiatury zamiast z klawiszy w cz ci numerycznej. Pozostae opcje i wartoci ustawie System & OpenGL (system i OpenGL) umoliwiaj modyfikowanie parametrów systemu w celu poprawy jego wydajnoci. Moesz z nich korzysta , gdy systemowi zaczyna brakowa pami ci lub odwieanie widoku sceny przebiega zbyt wolno. Wyczenie przycisku Mipmaps (mipmapy) lub zwi kszenie wartoci Clip Alpha (przytnij przezroczysto ) moe znaczco przyspieszy dziaanie grafiki OpenGL, ale spowoduje obnienie jakoci wywietlanego obrazu.
FILE PATHS (CIE KI PLIKÓW) Nazwa ostatniego przycisku w oknie preferencji jest bardzo klarowna. Jego klikni cie nadaje oknu preferencji wygld taki jak na rysunku 1.18. Tutaj moesz okreli miejsca w systemie plików, które Blender b dzie otwiera w pierwszej kolejnoci, gdy wydasz mu polecenie wczytania lub zapisania pliku okrelonego rodzaju. Domylnie wi kszo
tych miejsc jest zapisana jako //, co dla Blendera oznacza biecy folder roboczy, czyli ten, z którego zosta uruchomiony. Jeli na przykad w systemie Windows uruchomie program za pomoc menu Start, b dzie to folder, w którym Blender zosta zainstalowany, ale jeli uruchomie go przez dwukrotne klikni cie pliku z dokumentem, b dzie to macierzysty folder tego pliku. Wczenie przycisku Relative Paths Default (domylne cieki wzgl dne) spowoduje, e cieki b d ustalane wzgl dem folderu roboczego. RYSUNEK 1.18. Ustawienia File Paths (ścieżki plików)
USPRAWNIANIE METOD PRACY~ 37
Inne opcje W caym interfejsie Blendera istnieje duo rozmaitych opcji i warto wynotowa sobie te, z których korzysta si najcz ciej, by po odpowiednim ustawieniu wszystkich zatwierdzi
je na stae przez wcini cie klawiszy Ctrl+U. Na przykad w nagówku okna 3D View (Widok 3D) znajduje si cz sto wczana opcja o nazwie Occlude background geometry (ukryj geometri ta). Sprawia ona, e w trybach innych ni Wireframe (Kontury) wierzchoki i cianki zasoni te przez inne obiekty staj si niewidoczne i niedost pne przy zaznaczaniu. Jeli do obracania, przesuwania i skalowania uywasz zwykle klawiszy R, G i S, prawdopodobnie b dziesz chcia wyczy wywietlanie manipulatorów transformacji. Równie ustawienia renderingu, takie jak format pliku wyjciowego i stopie kompresji, nale do cz sto uywanych i warto uczyni je domylnymi. ZAPISYWANIE ZMIAN Po ustawieniu wszystkich opcji zgodnie z własnymi potrzebami i upodobaniami nie zapomnij zapisać ich jako domyślne. Najszybciej zrobisz to za pomocą klawiszy Ctrl+U. Pamiętaj, że w tym momencie zapisywany jest aktualny stan programu, a zatem zanim wciśniesz te klawisze, upewnij się, czy wszystko jest ustawione prawidłowo. Obiekty, materiały, animacje i inne dane również są wtedy zapisywane w pliku .blend. Konfiguracja programu zapisywana jest w pliku .B.blend w folderze .blender. Jeśli utworzoną konfigurację zechcesz wykorzystać w innej instalacji Blendera, po prostu skopiuj do niej ten plik (również do folderu .blender). Aby aktualny motyw zapisać w formie skryptu, wybierz polecenie File/Export (Plik/Eksportuj) z opcją Save Current Theme (zapisz bieżący motyw). Powstanie skrypt, który będzie można uruchomić w innej instalacji Blendera i w ten sposób zaimportować motyw.
Usprawnianie metod pracy Skonfigurowanie i zapisanie opcji programu to dopiero pierwszy krok w kierunku optymalizacji pracy. W tym podrozdziale zaprezentuj szereg wskazówek i poka kilka trików, dzi ki którym b dziesz móg poprawi efektywno pracy, a na pewno pog bisz swoj znajomo Blendera.
Sterowanie widokiem Widok sceny mona zmienia za pomoc klawiszy i przez ustawianie parametrów wywietlania okrelonych elementów. Zapewne nie s Ci obce skróty klawiszowe do ustawiania widoku z przodu (1 na klawiaturze numerycznej), z boku (3 na klawiaturze numerycznej) i z góry (7 na klawiaturze numerycznej). Jeli poczysz je z klawiszem Ctrl, uzyskasz widoki przeciwne — Ctrl+1 da widok od tyu itd. Klawisz 5 na klawiaturze numerycznej przecza widok ortogonalny w perspektywiczny i na odwrót, a klawisze 2, 4, 6 i 8 obracaj scen o kt ustalony parametrem Rotation Angle (kt obrotu) ustawie View & Controls (widok i kontrolki) w oknie User Preferences (Ustawienia uytkownika). Klawisz kropki (.) na klawiaturze numerycznej ustawia widok tak, aby zaznaczony obiekt znalaz si dokadnie w rodku okna widokowego. Zblione dziaanie maj klawisze C i Home. Pierwszy przesuwa widok, tak aby w centrum znalaz si kursor 3D,
38 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
a drugi ustawia tam rodek ci koci wszystkich obiektów istniejcych w scenie. Uyteczna bywa te kombinacja Shift+C, która dziaa podobnie jak klawisz Home, ale dodatkowo przesuwa kursor 3D do punktu centralnego sceny. Klawisz ukonika (/) na klawiaturze numerycznej ukrywa obiekty, które nie s zaznaczone. Ponowne wcini cie tego klawisza przywraca widoczno wszystkich obiektów. Kombinacja Alt+B pozwala ograniczy widok do niewielkiego fragmentu sceny. Jeli wciniesz te klawisze, a nast pnie przecigniesz mysz, aby zaznaczy prostoktny obszar, widoczne pozostanie tylko to, co znalazo si wewntrz tego obszaru4, tak jak na rysunku 1.19. Wyci ty w ten sposób fragment sceny mona oglda ze wszystkich stron. Panel View Properties (parametry widoku), pokazany na rysunku 1.20, mona otworzy
za pomoc polecenia View/View Properties (Widok/Proporcje widoku) z menu nagówka okna 3D View (Widok 3D). W tym panelu moesz okreli parametry wywietlania siatki, wywietli lub ukry siatk oraz osie X, Y i Z. To samo moesz robi z tzw. Relationship Lines (linie powiza) — s to przerywane linie czce obiekty nadrz dne z podrz dnymi. Za pomoc przycisku Solid Tex (pena tekstura) moesz wcza i wycza wywietlanie tekstur w trybie Solid (Solidny), a za pomoc przycisku All Object Centers (rodki wszystkich obiektów) moesz wcza wywietlanie punktów rodkowych wszystkich obiektów lub tylko zaznaczonych. Przycisk Outline Selected (obrysuj zaznaczone) odpowiada za wyrónianie konturów obiektów zaznaczonych. W polu Lens (obiektyw) moesz ustawi dugo ogniskowej obiektywu dla widoku perspektywicznego, a w polach Clip Start (pocztek obcinania) i Clip End (koniec obcinania) moesz okreli pooenie paszczyzn obcinania (bliszej i dalszej). Panel umoliwia take precyzyjne ustawienie kursora 3D przez wpisanie jego wspórz dnych. W sekcji View Locking (blokowanie widoku) mona wpisa nazw obiektu (a take, jeli jest nim szkielet, nazw konkretnej koci), aby zmusi program do ledzenia ruchów tego obiektu i utrzymywania go w centrum okna widokowego. Moe to by uyteczne, gdy trzeba dokadnie ustawi animacj jakiego elementu poruszajcego si obiektu, na przykad palca poruszajcej si r ki.
Grupowanie i zaznaczanie Obiekty mona grupowa przez zaznaczanie ich i wybieranie odpowiedniej grupy (jeli wczeniej zostaa utworzona) z rozwijanej listy Add to Group (dodaj do grupy) w panelu Object and Links (obiekty i powizania) — panel ten jest dost pny w oknie przycisków po wczeniu przycisków kontekstowych Object (obiekt) i Object buttons (przyciski obiektu). Obiekty nalece do jednej grupy mona docza do innych plików .blend jednym ruchem — po prostu wystarczy doczy grup . Jeli utworzysz grup lamp, b dziesz móg dla materiaów wprowadzi ograniczenie, aby byy owietlane tylko przez lampy z tej grupy — wystarczy, e jej nazw wpiszesz w polu GR w panelu Shaders (Cieniowanie) ustawie materiau. Jeli chodzi o grupowe zaznaczanie obiektów, to mona stosowa rozmaite kryteria. Jeeli zaznaczysz jaki obiekt, a nast pnie wciniesz klawisze Shift+G, otworzy si menu pokazane na rysunku 1.21, które pozwoli Ci zaznaczy inne obiekty na podstawie ich powiza z obiektem zaznaczonym. 4
Przeciganie mysz naley rozpocz dopiero po zwolnieniu klawiszy — przyp. tum.
USPRAWNIANIE METOD PRACY~ 39
RYSUNEK 1.19. Przycinanie widoku przy użyciu klawiszy Alt+B
40 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
RYSUNEK 1.20. Panel View Properties (parametry widoku)
RYSUNEK 1.21. Menu Select Grouped (zaznacz według powiązań)
Innym kryterium zaznaczania grupowego mog by bloki danych przypisane do rónych obiektów. W tym przypadku trzeba wcisn klawisze Shift+L, aby otworzy menu takie jak na rysunku 1.22. RYSUNEK 1.22. Menu Select Linked (zaznacz według przypisań)
Wykorzystanie polece menu Select (Zaznacz) okna widokowego w trybie obiektowym pozwala zaznacza obiekty take wedug ich typu lub warstw, na których le. S tu take polecenia suce do zaznaczania losowo wybranych obiektów oraz do odwracania zaznacze ju istniejcych.
ZAZNACZANIE RAMK PROSTOKTN, OKRG I DOWOLN Wcini cie klawisza B wcza tryb zaznaczania ramk prostoktn. Wszystko, co znajdzie si cho by cz ciowo w obr bie ramki, zostanie zaznaczone. Jeli podczas tworzenia ramki przytrzymasz wcini ty klawisz Alt, usuniesz zaznaczenie obiektów ni obj tych. Dwukrotne wcini cie klawisza B wcza tryb zaznaczania ramk okrg. W tym trybie zaznaczane jest wszystko, co znajdzie si w obr bie okrgej ramki przesuwanej za pomoc myszy. Podobnie jak poprzednio klawisz Alt powoduje usuwanie zaznaczenia z elementów wskazywanych5. 5
Zaznaczanie ramk okrg przypomina zaznaczanie przez malowanie p dzlem i jest dost pne tylko w trybie edycji — przyp. tum.
USPRAWNIANIE METOD PRACY~ 41
Jeli podczas przecigania mysz z wcini tym lewym przyciskiem przytrzymasz wcini ty klawisz Ctrl, moesz utworzy ramk zaznaczenia o dowolnym ksztacie. Przypomina to znany z innych programów tryb Lasso i jest chyba najszybsz metod zaznaczania.
ZAZNACZANIE W TRYBIE EDYCJI Nieco sabiej znane s metody zaznaczania dost pne w trybie edycji siatek obiektów. Pierwsza opcja to wybór mi dzy zaznaczaniem wierzchoków, kraw dzi lub cianek. Wyboru tego dokonujemy za pomoc przycisków znajdujcych si w nagówku okna widokowego i pokazanych na rysunku 1.23 (w postaci standardowej i alternatywnej). Od lewej do prawej s to przyciski: Vertex select mode (tryb zaznaczania wierzchoków), Edge select mode (tryb zaznaczania kraw dzi) i Face select mode (tryb zaznaczania cianek) (ostatni przycisk suy do ukrywania elementów zasoni tych). Klikanie tych przycisków przy wcini tym klawiszu Shift pozwala wczy kilka trybów jednoczenie. RYSUNEK 1.23. Przyciski wyboru trybu zaznaczania
Zaznaczanie krawdzi, ptli i piercieni Wiele opcji zaznaczania jest dost pnych niezalenie od wybranego trybu. Te, które odnosz si do trybu zaznaczania kraw dzi, mona znale w menu rozwijanym po wcini ciu klawiszy Ctrl+E w trybie edycyjnym. Na przykad polecenie Region to Loop (obszar na p tl ) umoliwia zaznaczenie konturu (w tym przypadku sowo loop, czyli p tla, wydaje si niezbyt trafne) zaznaczonego wczeniej zestawu cianek, tak jak to pokazano na rysunku 1.24 (ten sam rysunek znajdziesz równie w kolorowej wkadce). Operacj odwrotn, czyli zaznaczenie zestawu cianek otoczonych zamkni t p tl zaznaczonych kraw dzi, umoliwia polecenie Loop to Region (p tla na obszar). RYSUNEK 1.24. Zaznaczanie konturu obszaru
42 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
Bardzo uyteczne s równie metody zaznaczania p tli i piercieni przy uyciu kombinacji klawiszy i klikni mysz. Jeli w trybie zaznaczania wierzchoków przytrzymasz wcini ty klawisz Alt i klikniesz wybran kraw d, program automatycznie zaznaczy wszystkie kraw dzie, które wraz z ni tworz zamkni t p tl . Z kolei kombinacja Ctrl+Alt+prawy przycisk myszy umoliwia zaznaczenie piercienia zoonego ze cianek prostopadych do wskazanej kraw dzi. Przykady takich zaznacze moesz zobaczy
na rysunku 1.25 (i w kolorowej wkadce). W trybie zaznaczania kraw dzi ostatnia metoda dziaa nieco inaczej: nie zaznacza cianek (patrz rysunek 1.26 i kolorowa wkadka). W trybie zaznaczania cianek obie metody daj ten sam rezultat, co wida na rysunku 1.27 (powtórzonym w kolorowej wkadce). RYSUNEK 1.25. Zaznaczanie pętli krawędzi i pierścienia ścianek w trybie zaznaczania wierzchołków
RYSUNEK 1.26. Zaznaczanie pętli krawędzi i pierścienia ścianek w trybie zaznaczania krawędzi
Do zaznaczania cigów kraw dzi przydatne bywa te polecenie o nazwie Select Vertex Path (zaznacz ciek wierzchoków) dost pne w menu Specials (Specjalne) rozwijanym przez wcini cie klawisza W, gdy wskanik myszy znajduje si w obr bie okna widokowego. Jeli przed wybraniem tego polecenia zaznaczye dwa wierzchoki, program zaznaczy kraw dzie tworzce najkrótsze poczenie mi dzy tymi wierzchokami.
USPRAWNIANIE METOD PRACY~ 43
RYSUNEK 1.27. Zaznaczanie pętli krawędzi i pierścienia ścianek w trybie zaznaczania ścianek
Zaznaczanie elementów podobnych Skrót Shift+G dziaa równie w trybie edycji i pozwala zaznacza elementy speniajce okrelone kryteria wzajemnego podobiestwa. W trybie zaznaczania wierzchoków skrót ten otwiera menu, z którego moemy wybra opcj zaznaczenia wszystkich wierzchoków, których kierunek normalnej pokrywa si z kierunkiem normalnej wierzchoka ju zaznaczonego, wierzchoków nalecych do tej samej grupy co wierzchoki ju zaznaczone lub wierzchoków skojarzonych z tak sam liczb cianek jak wierzchoek ju zaznaczony. W trybie zaznaczania kraw dzi skrót Shift+G pozwala zaznaczy wszystkie kraw dzie o dugociach takich samych jak dugoci (Length) kraw dzi ju zaznaczonych, o takich samych kierunkach (Direction) lub takiej samej liczbie przylegajcych cianek (Face users). Umoliwia równie zaznaczanie kraw dzi na szwach (Seam), kantach (Crease) lub na podstawie wartoci ich ostroci (Sharpness). Dzi ki tym opcjom mona na przykad szybko zaznaczy wszystkie szwy obiektu — wystarczy zaznaczy jedn kraw d nalec do szwu, a nast pnie wybra opcj Seam (szew). Podstaw do grupowego zaznaczania cianek moe by przynaleno do tego samego obszaru (Area), posiadanie tego samego materiau (Material), obrazu (Image), kierunku normalnej (Normal) lub wspópaszczyznowo (Co-Planar). Wspópaszczyznowo cianek oznacza tu zgodno ich normalnych i usytuowanie na jednej paszczynie w przestrzeni. Z kolei opcja Perimeter (obwód) pozwala zaznaczy cianki o takich dugociach obwodów, jakie maj cianki ju zaznaczone.
Manipulowanie obiektami Najcz ciej uywane i zalecane w materiaach szkoleniowych metody przesuwania, obracania i skalowania obiektów polegaj na stosowaniu skrótów klawiszowych G, R i S. Niewtpliwie s one atwe, ale w niektórych przypadkach bardziej efektywne mog okaza si inne sposoby manipulowania obiektami. Wi kszo uytkowników wie o moliwoci sterowania obiektami za pomoc manipulatorów 3D i gestów wykonywanych
44 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
mysz, poniewa obie te funkcje s domylnie wczone (sterowanie gestami cz sto irytuje uytkowników pocztkujcych, bo zdarza im si wykonywa okrelone gesty zupenie przypadkowo), ale niewielu potrafi z nich korzysta w sposób prawidowy. Gesty wykonywane mysz s po prostu innym sposobem wczania trybu przesuwania, skalowania lub obracania, tak jak wciskanie klawiszy G, S lub R. Korzystanie z nich polega na wykonaniu jednego z trzech ruchów mysz pokazanych na rysunku 1.28. RYSUNEK 1.28. Gesty wykonywane myszą oznaczające (od góry do dołu): przesunięcie, skalowanie i obrót
Równie wana jak umiej tno posugiwania si gestami jest wiedza na temat sytuacji, w jakich moe dochodzi do ich przypadkowego uaktywnienia i co wtedy naley robi
(po prostu naley klikn prawym przyciskiem myszy, aby anulowa transformacj ). Gesty s szczególnie przydatne, gdy korzystamy z tabletu graficznego. Najprostszym gestem jest ten, który wywouje przesuni cie. Jeli cz sto uywasz tabletu, prawdopodobnie szybko zapomnisz o klawiszu G i nawet sobie tego nie uwiadomisz. Nieco trudniejsze s gesty odpowiedzialne za obrót i skalowanie. Prawd mówic, chocia nazywa si je gestami mysz, z trudem udaje mi si wykona je za pomoc tego urzdzenia. Aby gest obrotu zosta prawidowo zinterpretowany, musisz nakreli dosy gadk lini w ksztacie okr gu. Jeli b dzie zbyt kanciasta i nieregularna, program moe rozpozna gest jako polecenie skalowania. Znacznie atwiej wykona waciwy gest przy uyciu piórka tabletu, chocia i to wymaga pewnej wprawy.
USPRAWNIANIE METOD PRACY~ 45
Moe si zdziwisz, ale posugiwanie si manipulatorami, pokazanymi na rysunku 1.29 (powtórzonym w kolorowej wkadce), równie nie jest trywialne i wymaga praktyki. Manipulatory mona wcza pojedynczo lub po kilka naraz za pomoc przycisków z nagówka okna widokowego (aby wczy wi cej ni jeden przycisk, klikaj je przy wcini tym klawiszu Shift, tak jak i inne klawisze kontekstowe). RYSUNEK 1.29. Manipulatory przesunięcia, obrotu i skalowania
Najprostszy sposób posugiwania si manipulatorami polega na klikaniu lewym przyciskiem myszy aktywnych elementów (strzaki manipulatora przesuni cia, okr gi manipulatora obrotu i odcinki zakoczone szecianikami w przypadku manipulatora skalowania) i przeciganiu ich. Przykady tak przeprowadzonych transformacji moesz zobaczy na rysunku 1.30 i w kolorowej wkadce. Transformacja koczy si w chwili zwolnienia przycisku myszy. Aby anulowa przeksztacenie, naley wcisn klawisz Esc lub klikn prawym przyciskiem myszy, ale naley to zrobi przed zwolnieniem lewego przycisku. RYSUNEK 1.30. Przesuwanie, obracanie i skalowanie za pomocą manipulatorów
Istnieje te inny sposób uywania manipulatorów. Jeli klikniesz aktywny element i od razu zwolnisz przycisk myszy (wane jest, aby nie wykona ruchu mysz przy wcini tym przycisku), efekt b dzie taki sam jak po wcini ciu klawisza G, R lub S. Klikni cie prawym przyciskiem myszy anuluje przeprowadzon transformacj , a klikni cie przyciskiem lewym zatwierdza j. Do przeprowadzania transformacji su nie tylko kolorowe elementy aktywne. W centrum kadego manipulatora widoczny jest pomaraczowy okrg, którego klikni cie wcza tryb transformacji swobodnej. W przypadku przesuni cia i obrotu transformacja odbywa si wtedy w paszczynie równolegej do paszczyzny okna widokowego, a skalowanie jest realizowane we wszystkich trzech kierunkach.
46 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
Na koniec, jeli chcesz przesuwa lub skalowa obiekt wzdu dwóch osi, wcinij klawisz Shift i kliknij o trzeci manipulatora. Efekt jest taki sam jak przy ograniczaniu wzgl dem wybranych osi za pomoc skrótów klawiszowych. Jeli na przykad chcesz przeskalowa obiekt wzdu osi X i Y, tak jak na rysunku 1.31, wcinij klawisz Shift i kliknij o Z manipulatora. RYSUNEK 1.31. Skalowanie wzdłuż osi X i Y
Nad anie za interfejsem Blendera Jako program otwarty Blender rozwija si w zupenie innym tempie ni programy prawnie zastrzeone, do których moe si przyzwyczaie. Czas ukazywania si nowych wyda nie jest dobierany pod ktem maksymalizacji zysków ani nie podlega wpywom innych czynników marketingowych. Ukazuj si one wtedy, gdy autorzy zdecyduj, e ostatnie zmiany s wystarczajco znaczce, aby uzasadni dodatkowy wysiek zwizany z przygotowaniem kolejnej, stabilnie dziaajcej wersji. W ramach tych przygotowa spoeczno uytkowników intensywnie testuje tzw. wersje beta i przekazuje zespoowi twórców uwagi o dostrzeonych b dach. Dzi ki takim testom oraz niczym nieograniczonemu dost powi do kodu programu wielu uytkowników zna nowe funkcje jeszcze przed ukazaniem si oficjalnej wersji. Niektóre serwisy internetowe, na przykad www.graphicall.org, regularnie przygotowuj pakiety instalacyjne Blendera — mona je instalowa tak samo atwo jak wersje oficjalne, ale nie zawsze s równie stabilne. Dzi ki temu, e na jednym komputerze mona zainstalowa nawet kilka rónych wersji Blendera, eksperymentowanie z najnowszymi jego funkcjami nie stwarza adnych problemów. Na forum BlenderArtist.org cigle dyskutuje si o najnowszych rozwizaniach i zawsze mona znale tam kogo, kto pomoe w opanowaniu nawet najbardziej egzotycznej funkcji.
NAD ANIE ZA INTERFEJSEM BLENDERA~ 47
Cige ledzenie zmian powinno by nieodczn cz ci procesu zg biania Blendera i jestem przekonany, e wielu Czytelników tej ksiki próbowao ju swoich si w sprawdzaniu, jak dziaaj nowe funkcje.
Spodziewane zmiany Kady, kto ledzi ostatnie dyskusje na temat Blendera, zapewne sysza o powanych zmianach, jakie maj pojawi si w wersji 2.5, a w szczególnoci o tych, które maj dotyczy interfejsu. Rzeczywicie, w pewnych kr gach (niektórzy s lepiej poinformowani ni inni) jest to ju wersja niemal mityczna. Wielu ywi nadziej , e to, co w interfejsie Blendera jest denerwujce i mao intuicyjne, zostanie poprawione, ale sycha te gosy pene obawy o to, czy te niekonwencjonalne rozwizania, do których wi kszo zdya ju przywykn , zostan zachowane. Ta ksika jest wprawdzie oparta na wersji 2.48, ale jako e Blender jest programem cigle rozwijajcym si , warto przyjrze si , w jakim kierunku zmierza i czego mona spodziewa si w niedalekiej przyszoci.
Nowy kod zdarze w wersji 2.5 Blender rozpocz swój ywot jako narz dzie do tworzenia animacji w jednym z komercyjnych studiów filmowych. By kodowany w j zyku C przez tych samych ludzi, którzy go uywali. Ci pierwsi uytkownicy cile ze sob wspópracowali i doskonale znali wszystkie tajniki programu. Wybór j zyka C sprawi, e Blender by bardzo szybki i nie zajmowa duo pami ci. Jednak miao to take ze strony. Wprowadzenie nawet bahej poprawki wizao si z duym nakadem pracy, bo trzeba byo zmienia kod w wielu miejscach. Brak moduowoci kodu praktycznie uniemoliwia szybkie i atwe wprowadzanie zmian, a to zniech cao wielu programistów, którzy mieli ochot wczy
si w prace nad rozwijaniem Blendera. Ci, którzy pogodzili si z takim stanem rzeczy, rozwijali program, ale w ich pracach nie byo systematycznoci i koordynacji. W rezultacie kod jest niespójny, a rozwijanie programu bardzo utrudnione. To wszystko ma si zmieni . Gdy pisz te sowa, organizacja Blender Foundation rozpoczyna wanie dugofalowy proces gruntownego przekodowania systemu obsugi zdarze w Blenderze. System zdarze realizuje obsug wszystkich sygnaów pochodzcych z klawiatury, myszy i innych urzdze I/O (wejcie/wyjcie), a wi c jest tym elementem, który odpowiada za komunikacj mi dzy interfejsem programu a jego funkcjami. Do tej pory obsuga zdarze jest realizowana przez te fragmenty kodu, w których s implementowane poszczególne funkcje. To powoduje, e aby zmieni na przykad skrót klawiszowy uruchamiajcy jak funkcj , trzeba przekopywa si przez wszystkie partie kodu zwizane z t funkcj. Z tych powodów Blender nie oferuje tak popularnej w innych programach moliwoci zmieniania skrótów klawiszowych — realizacja tego byaby naprawd bardzo trudna. Prace zwizane z przekodowaniem programu mogy by tak dugo odkadane, poniewa dania uytkowników i trudnoci zwizane z implementacj nowych funkcji miay charakter raczej powierzchowny. Przykadowo danie moliwoci dostosowywania skrótów klawiszowych jest cz sto zgaszane przez uytkowników korzystajcych wczeniej z innych aplikacji 3D, ale swoje argumenty na rzecz pozostawienia dotychczasowej
48 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
(cho odbiegajcej od powszechnie przyj tych standardów) konfiguracji tych skrótów maj te stali uytkownicy Blendera. cieranie si tych dwóch opcji w poczeniu z przytoczonymi wyej trudnociami natury technicznej sprawio, e danie wprowadzenia modyfikowalnych skrótów klawiszowych pozostawao przez dugie lata bez odpowiedzi. Teraz, gdy prace nad zmian kodu zostay rozpocz te, moemy oczekiwa nie tylko wi kszych moliwoci dostosowywania programu do wasnych potrzeb i upodoba, ale take wi kszej atwoci we wprowadzaniu nowych funkcji. DNA I RNA Do zapisywania modeli trójwymiarowych Blender stosuje wewnętrzny format o nazwie DNA. Biologiczne pochodzenie tej nazwy uzasadnia fakt, że format ten pozwala zakodować w bardzo zwarty sposób wszystkie informacje niezbędne do odtworzenia pełnej zawartości pliku .blend, a więc sceny, obiekty i wszystkie związane z nimi bloki danych. DNA jest formatem binarnym, dzięki czemu zapis i odczyt danych odbywa się bardzo szybko. Przykładowo zapis i odczyt tych samych danych zakodowanych w formacie XML trwa wielokrotnie dłużej i jest wyraźnie odczuwalne w przypadku scen o dużej liczbie elementów. To właśnie dlatego pliki .blend są tak elastyczne i można ich używać do przechowywania dużych i złożonych scen, a nawet całych kolekcji scen. Pod nazwą RNA (również zaczerpniętą z biologii) kryje się ważna część niewidocznych dla użytkownika struktur programu, które w wersji 2.5 będą stanowiły swoisty interfejs dla danych kodowanych w formacie DNA. W praktyce zadaniem RNA będzie automatyczne generowanie elementów interfejsu i API Pythona, co ma ułatwić ich aktualizowanie bez utraty spójności. Ułatwiony dostęp do danych, jaki oferuje RNA, może być również istotnym krokiem w kierunku realizacji marzenia o tym, by w Blenderze wszystko mogło być animowane!
Ewolucja interfejsu Implementacja nowego systemu zdarze i przenoszenie na t now baz dotychczasowych funkcji Blendera to dobry moment na zmodernizowanie równie jego interfejsu. Jako zapowied tych zmian William Reynish zaprezentowa w 2008 roku na corocznej konferencji organizowanej przez Blender Foundation zarys najnowszych kierunków rozwoju interfejsu Blendera. Liczc 25 stron drukowan wersj tego wystpienia mona pobra ze strony internetowej http://download.blender.org/documentation/bc2008/ evolution_of_blenders_ui.pdf. W opracowaniu tym Reynish przedstawi w przyst pny sposób idee lece u podstaw konstrukcji interfejsu Blendera w przeszoci, obecnie i w przyszoci. Jest to doskonaa lektura dla tych, którzy chcieliby lepiej zrozumie , dlaczego ten interfejs jest taki, jaki jest, i w jakim kierunku prawdopodobnie b dzie ewoluowa. Znale tam mona opis mocnych i sabych stron interfejsu Blendera w wersji 2.48, a take liczne zaoenia projektowe dla wersji 2.5.
MOCNE STRONY Reynish wskazuje cztery gówne zasady, na których opiera si caa konstrukcja interfejsu Blendera. S to efekty g bokich przemyle. Dzi ki nim dowiadczony uytkownik moe posugiwa si tym programem niezwykle szybko i wydajnie. Zasady te mona sformuowa nast pujco:
NAD ANIE ZA INTERFEJSEM BLENDERA~ 49
Program powinien by w maksymalnym stopniu niemodalny. Modalno
programu komputerowego oznacza, e pewne funkcje dziaaj w jednych trybach, a nie dziaaj w innych. Chocia w Blenderze uywamy rónych trybów dla edycji i manipulowania obiektami, to jednak jako cao interfejs tego programu ma charakter w duym stopniu niemodalny. Uytkownik ma przez cay czas dost p do niemal wszystkich funkcji. Okna interfejsu nie powinny zachodzi na siebie. Dla staych uytkowników Blendera ta cecha interfejsu jest jego wielk zalet. Przy tak duej liczbie funkcji, jak oferuje Blender, przekopywanie si przez gszcz wzajemnie zakrywajcych si okien byoby chyba koszmarem. Na szcz cie tak nie jest. Okna Blendera s starannie poukadane i nie zachodz na siebie. Mimo to uytkownik ma moliwo
zmiany ich konfiguracji, tak aby w danej chwili najbardziej odpowiadaa jego potrzebom. Skróty klawiszowe i zastosowane konwencje interfejsu powinny by szybkie, dobrze dobrane i w minimalnym stopniu zalene od aktualnego kontekstu. Skróty klawiszowe, polecenia menu i inne elementy interfejsu powinny by
moliwie jednakowe na kadym etapie pracy. W Blenderze jest to realizowane cz ciowo przez zachowanie podobnego lub intuicyjnie analogicznego dziaania tych samych funkcji w rónych trybach (tak jest na przykad z funkcjami zaznaczania, przesuwania i obracania w trybach obiektowym i edycyjnym) i przypisanie im tych skrótów klawiszowych. Rozmaite narzdzia powinny by cile ze sob zintegrowane. Blender ma „pod mask” mnóstwo narz dzi sucych do modelowania i rzebienia obiektów, edytowania i montau filmów wideo, pisania skryptów, a nawet do tworzenia gier i symulacji zjawisk fizycznych. Jedn z mocnych stron programu jest to, e te wszystkie narz dzia s bardzo dobrze zintegrowane, dzi ki czemu korzystanie z nich odbywa si bez adnych dodatkowych zabiegów. Podczas pracy — samodzielnej lub w maej grupie — mona zaoszcz dzi duo czasu w porównaniu z pakietami o sabszej integracji narz dzi, gdy trzeba cz sto eksportowa i importowa pliki.
SABE STRONY Mimo e twórcy Blendera dooyli wielu stara, aby speni wymienione wyej zasady, niektóre obszary interfejsu w wersji 2.48 nadal wykazuj pewne saboci. Jako jeden z istotnych mankamentów Reynish wymienia chaotyczny ukad przycisków. Podaje liczne przykady umieszczania przycisków w zupenie przypadkowych miejscach, nieczytelnego doboru ich typów (przyciski wyboru opcji, wyczniki i przeczniki) oraz baaganu wynikajcego z koniecznoci stosowania przycisków kwadratowych tam, gdzie moliwe jest przeczanie ukadu poziomego na pionowy, i na odwrót. Inny obszar, w którym Reynish wskazuje na niedocigni cia, to niektóre aspekty edycji wielu obiektów jednoczenie. Jako przykad przytacza nakadanie na obiekty ich obrazów w trybie konturowym. Mona to zrobi przez skopiowanie ustawie z jednego obiektu na pozostae za pomoc skrótu klawiszowego Ctrl+C, ale nie wszystko da si w ten sposób skopiowa i Reynish podkrela, e w takich sytuacjach wykonuje si niepotrzebnie dodatkowe operacje.
50 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
Swoje rozwaania Reynish koczy analiz problemów zwizanych z dostosowywaniem interfejsu Blendera do potrzeb i upodoba uytkownika. Blender znany jest z tego, e skróty klawiszowe s przypisane na stae i nie da si ich zmieni . Chocia postulat wi kszej elastycznoci interfejsu jest cz sto zgaszany przez nowych uytkowników, Reynish twierdzi, e te sprawy mona odsun na plan dalszy, jeeli skonstruuje si dobry zestaw ustawie domylnych. Wedug niego elastyczno interfejsu jest cz sto przeceniana — niektórzy twierdz, e kiepski interfejs mona ulepszy , jeli tylko istniej dostateczne moliwoci jego modyfikowania, ale w rzeczywistoci tak nie jest. Mimo wszystko istnieje szereg powodów, dla których uelastycznienie skrótów klawiszowych i niektórych innych elementów byoby bardzo wskazane. Na pewno wielu uytkowników ucieszyoby si , gdyby mogli zachowa swoje nawyki nabyte podczas obsugi innych programów. Co wi cej, uelastycznienie skrótów klawiszowych umoliwioby uytkownikom swobodniejsz obsug wasnych skryptów i niestandardowych funkcji.
CELE I SUGESTIE W swojej pracy Reynish wskazuje równie cele, ku którym powinien zmierza rozwój interfejsu Blendera, i sugeruje praktyczne rozwizania majce umoliwi osigni cie tych celów. Wedug niego interfejs powinien by niemodalny, nieliniowy, logiczny, szybki, elastyczny, nowatorski i prosty. Sugerowane rozwizania maj charakter dalekosi ny. Najbardziej znaczca zmiana, jak proponuje Reynish, polega na cakowitym usuni ciu okna przycisków i zastpieniu go edytorem waciwoci (properties editor), który w uporzdkowany i logiczny sposób umoliwiaby modyfikowanie wszystkich waciwoci i parametrów zaznaczonego obiektu lub grupy obiektów. Tutaj dost pne byyby ustawienia wszystkich bloków danych Blendera. Reynish zaleca take istotne zmiany w sposobie dziaania narz dzi Blendera. Obecnie narz dzia funkcjonuj w sposób wybitnie modalny, co przejawia si koniecznoci ustalania ich parametrów, zanim zostan uyte. Przykadem moe tu by dodawanie nowych obiektów do sceny — zanim obiekt powstanie, musimy okreli jego podstawowe waciwoci. Nowe rozwizanie miaoby polega na zwi kszeniu interaktywnoci narz dzi, tak aby równie po ich uyciu ustawienia mogy by zmieniane. Dalsze zalecenia obejmuj poprawienie kontekstowoci interfejsu w celu usuwania z niego tych elementów, które w danej chwili nie s potrzebne, poprawienie spójnoci wygldu przycisków oraz innych kontrolek, aby poszczególne ich typy byy atwo rozrónialne, wywietlanie informacji zwrotnej, gdy uytkownik musi na co czeka , oraz promowanie pionowego ukadu elementów sterujcych, poniewa jest bardziej przejrzysty ni poziomy i pozwala efektywniej wykorzysta powierzchni ekranu.
CZEGO MO NA SI SPODZIEWA Zapewne nie wszystkie sugestie Reynisha zostan zrealizowane tak, jak je opisa w swoim raporcie. Co wi cej, nie wiadomo, kiedy to nastpi. Jedno jest pewne, zapowiadana przeróbka kodu zdarze w wersji 2.5 sprawi, e wiele z tych zmian b dzie moliwych do zrealizowania, a czy stanie si to ju w tej edycji, czy te trzeba b dzie poczeka
do nast pnych, zobaczymy.
NAD ANIE ZA INTERFEJSEM BLENDERA~ 51
Moemy spodziewa si bardziej elastycznego, sensowniej i przejrzyciej zorganizowanego interfejsu. Prawdopodobnie preferowany dotd ukad poziomy zostanie zastpiony pionow konfiguracj paneli. By moe okno przycisków zostanie gruntownie przeprojektowane, a moe b dzie po prostu stopniowo wycofywane. Tak czy inaczej, nadchodzce zmiany powinny zlikwidowa wiele z tych elementów, które jeszcze teraz doskwieraj nie tylko uytkownikom pocztkujcym, ale równie zaawansowanym. Jeli to wszystko dojdzie do skutku, praca z Blenderem b dzie atwiejsza i przyjemniejsza. Zach cam wi c do bacznego ledzenia wszelkich nowoci, a szczególnie do wnikliwego studiowania oficjalnych informacji o kolejnych wersjach Blendera. Odnoniki do takich informacji znajduj si na stronie www.blender.org, natomiast wi cej szczegóów na temat projektowanych zmian w wersji 2.5 mona znale pod adresem http://wiki.blender.org/index.php/BlenderDev/Blender2.5/Focus.
WIAT BLENDERA SPOECZNO TWÓRCÓW W miarę jak Blender coraz szybciej się rozwija, kanał IRC o nazwie #blendercoders i rozmaite e-mailowe listy dyskusyjne o tematyce związanej z tym programem gromadzą coraz więcej programistów wymieniających między sobą pomysły i zamierzenia. Przygotowanie dla wersji 2.5 przeróbki kodu zdarzeń oraz przeniesienie na tę bazę wszystkich istniejących już funkcji stanowi nie lada wyzwanie i wymaga sprawnej organizacji całego przedsięwzięcia — podobnie zresztą jest podczas przygotowywania każdej nowej wersji. Płynny rozwój Blendera należy uznać za rzecz niezwykłą, jeśli uwzględni się fakt, że jest to przedsięwzięcie naprawdę ogólnoświatowe. Według Ohloh.net (jest to katalog programów typu open source) aktywni twórcy Blendera rozsiani są niemal po całym świecie — są w Europie, Ameryce Północnej i Południowej, Oceanii i Afryce. Jeśli uwzględnimy także tych, którzy są autorami skryptów, oraz tych programistów, którzy dopiero zaczynają pracować nad Blenderem, okaże się, że nie brak ich również w Azji. Niektóre historie związane z rozwojem Blendera mogą służyć za przykład potęgi oprogramowania otwartego. Bohaterem jednej z takich opowieści jest Raúl Fernández Hernández (farsthary), kubański student pracujący nad efektami wolumetrycznymi w Blenderze. Jako mieszkaniec Kuby miał ograniczony dostęp do wielu informacji i materiałów, z których obywatele innych krajów mogą korzystać bez problemu. Mimo to trafnie rozpoznał pilne zapotrzebowanie na prawdziwą wolumetrykę w Blenderze. Zaczął więc analizować kody wolnych programów, aby zdobyć wiedzę, dzięki której mógłby zaimplementować swoje pomysły w Blenderze. Chociaż nie miał stałego dostępu do internetu i nie mógł regularnie kontaktować się z innymi twórcami Blendera, zdołał stworzyć doskonałe podstawy dla symulowania zjawisk wolumetrycznych. Sporadycznie relacjonował postępy swojej pracy na blogu http://farsthary.wordpress.com, gdzie zamieszczał także zrenderowane obrazy i animacje przedstawiające niezwykle realistyczne płomienie i dymy. Prace Raúla szybko przyciągnęły uwagę innych użytkowników i twórców Blendera. Gdy huragan Gustaw zniszczył miasto Kubańczyka i pozbawił go elektryczności na tydzień, cała społeczność pospieszyła mu z pomocą, a najbardziej aktywnymi okazali się Matt Ebb i Daniel Genrich. To oni pomogli mu dostosować kod symulacji wolumetrycznych do istniejącego kodu Blendera. Obecnie projekt rozwija się bardzo ładnie, co można stwierdzić, gdy zajrzy się na blog Raúla, i jest duża szansa, że w kolejnej wersji Blender wzbogaci się o nowe funkcje wolumetryczne.
52 ~ROZDZIA 1. KONFIGUROWANIE RODOWISKA PRACY
Podsumowanie Ustaw opcje dostpne w oknie User Preferences (Ustawienia uytkownika). Okno to zawiera szereg opcji, które cz sto s pomijane przez uytkowników, szczególnie dotyczy to ustawie View & Controls (widok i kontrolki), Edit Methods (metody edycji) i Themes (motywy). Opanuj to Skonfiguruj Blendera zgodnie z wasnymi potrzebami i upodobaniami, a nast pnie zapisz t konfiguracj jako domyln, aby bya uaktywniana przy kadym uruchomieniu programu. Uyj mniej znanych metod zaznaczania, grupowania i organizowania elementów 3D, aby przyspieszy prac. Istnieje wiele sposobów zaznaczania i grupowania obiektów oraz innych elementów w przestrzeni 3D, które mog znaczco zwi kszy szybko
i efektywno pracy. Opanuj to Przy uyciu metod opisanych w tym rozdziale zaznacz cianki kuli tak jak na poniszym rysunku.
Takie zaznaczenie powiniene umie wykona przez klikni cie mysz (przy wcini tym odpowiednim klawiszu) i zastosowanie waciwego skrótu klawiszowego. Ten sam efekt mona uzyska kilkoma sposobami. Poznaj zasady rz dz ce obecnym interfejsem Blendera, aby lepiej przygotowa si na nadchodz ce zmiany. Blender rozwija si nieustannie i w Twoim interesie jest poszukiwanie informacji o wszystkich nowociach, szczególnie teraz, gdy zapowiadana wersja 2.5 ma przynie znaczce zmiany nie tylko w wygldzie, ale i funkcjonalnoci programu. Opanuj to Dowiedz si moliwie najwi cej o stanie prac nad zmian kodu zdarze w wersji 2.5 i zapowiadanych zmianach interfejsu.
Rozdzia 2.
Rze bienie i tworzenie nowej topologii obiektu Metoda modelowania okrelana jako rzebienie obiektów 3D jest ostatnio coraz cz ciej stosowana, poniewa pozwala tworzy bardzo realistyczne i szczegóowe modele. Trójwymiarowy obiekt jest traktowany tak, jakby by ulepiony z gliny. Blender zawiera bogaty zestaw narz dzi rzebiarskich do modelowania siatek typu multires (o wielu poziomach rozdzielczoci) i takich, które umoliwiaj bezporednie manipulowanie szczegóami siatek. Ponadto Blender oferuje moliwo wykorzystania wyrzebionych modeli jako podstawy do tworzenia nowych modeli o skorygowanej geometrii. Za pomoc funkcji tworzenia nowej topologii (retopo) i wypalania map normalnych mona tworzy
modele o mniejszej liczbie wieloktów i z prawidow geometri p tli kraw dzi, a przy tym zachowujce wszystkie szczegóy modeli rzebionych. Z tego rozdziau dowiesz si , jak:
maksymalnie wykorzysta rzebiarskie funkcje Blendera, za pomoc funkcji tworzenia nowej topologii przeksztaci form rzebion w obiekt o prawidowej geometrii p tli kraw dzi, przez wypalanie map normalnych przenie wyrzebione szczegóy na model zbudowany z maej liczby wieloktów.
Rze bienie w Blenderze W trójwymiarowej grafice komputerowej rzebienie jest metod manipulowania ksztatem obiektu w sposób podobny do tego, w jaki rzebiarz ksztatuje glin lub inny materia plastyczny. To doskonay sposób na modelowanie szczegóowych form organicznych i wielu artystów twierdzi, e jest on bardziej naturalny ni bezporednie manipulowanie wierzchokami i wieloktami siatek, co oferuj tradycyjne metody modelowania. Dlatego metody rzebiarskie staj si coraz popularniejsze równie wród zawodowych grafików komputerowych. Blender równie oferuje pokany zestaw funkcji umoliwiajcych rzebienie obiektów siatkowych. Nie s to moe narz dzia tak rozbudowane i uniwersalne jak w innych programach z najwyszej póki komercyjnej, ale w zupenoci wystarczaj do wykonywania nawet do skomplikowanych modeli. Natomiast Blender ma przewag nad tamtymi programami po pierwsze dlatego, e jest darmowy, a po drugie, e jego funkcje rzebiarskie s doskonale zintegrowane z innymi narz dziami do modelowania, teksturowania i animowania, co w duej mierze uatwia i przyspiesza prac .
54 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
Modelowanie w wielopoziomowej rozdzielczoci Podstaw rzebiarskich funkcji Blendera jest modelowanie siatek o wielu poziomach rozdzielczoci (multires meshes). Siatki takie mog przechowywa informacje o swoim ksztacie na kilku poziomach podpodziau. Kady z tych poziomów reprezentuje siatk o innej g stoci wierzchoków, ale jej ogólny ksztat pozostaje ten sam. Na rysunku 2.1 wida , co dzieje si z klasycznym szecianem, gdy zwi kszamy poziom rozdzielczoci od 1 do 8. Obiekt jest wywietlany w trybie edycji, aby widoczne byy wszystkie wierzchoki, ale w praktyce raczej nie stosuje si tego trybu podczas manipulowania siatkami multires. S ku temu dwa powody. Po pierwsze, niektóre funkcje trybu edycji s i tak niedost pne dla takich siatek. Na przykad niemoliwe jest wykonywanie zabiegów edycyjnych zmieniajcych topologi lub liczb wierzchoków siatki. Po drugie, wczenie trybu edycyjnego dla siatki o bardzo duej liczbie wierzchoków znacznie spowalnia dziaanie komputera, a niekiedy moe prowadzi do zawieszenia systemu. RYSUNEK 2.1. Różne poziomy rozdzielczości
Wielopoziomowo rozdzielczoci siatek zostaa wprowadzona gównie z myl o modelowaniu za pomoc narz dzi rzebiarskich, do których dost p uzyskujemy po wybraniu z listy Mode (tryb) opcji Sculpt Mode (tryb rzebienia). Poziomy rozdzielczoci mona zmienia z niszych na wysze i na odwrót. Moliwe jest wi c modelowanie szczegóów na poziomie wyszym, przy jednoczesnym zachowaniu moliwoci zgrubnej edycji na poziomach niszych. Zmiany wprowadzone na dowolnym z poziomów s odpowiednio interpolowane i przenoszone na pozostae poziomy.
WYMAGANIA SPRZTOWE Siatki multires i rzebienie to obszary, w których due znaczenie ma szybko procesora i wielko pami ci RAM komputera. Na szybkich stacjach roboczych bez problemu mona rzebi nawet najdrobniejsze szczegóy z dostatecznie du rozdzielczoci, ale starsze
RZEBIENIE W BLENDERZE~ 55
komputery lub redniej jakoci laptopy mog stwarza kopoty nawet przy niszych rozdzielczociach. B dziesz musia wi c poeksperymentowa , aby sprawdzi , jak liczb wierzchoków Twój komputer moe obsuy w trybie rzebienia. Do celów rzebiarskich oprócz dobrego komputera warto mie równie tablet graficzny. Najlepszy byby oczywicie monitor z funkcj tabletu, bo wtedy wszystko jest bardziej intuicyjne, ale nawet tani tablet podczany przez port USB b dzie znacznie lepszy ni zwyka mysz. Chocia rzebienie komputerowe zwykle porównuje si do formowania obiektów z gliny, w rzeczywistoci proces ten bardziej przypomina malowanie bd rysowanie i dlatego wi kszo grafików stosuje do tego celu urzdzenia wyposaone w piórko.
NARZDZIA RZEBIARSKIE Po wczeniu trybu rzebienia w oknie przycisków z wczonym przyciskiem kontekstowym Editing (edytowanie) pojawia si kilka nowych zakadek. Zakadka Sculpt (rzebienie), pokazana na rysunku 2.2, zawiera gówny zestaw narz dzi rzebiarskich. RYSUNEK 2.2. Zakładka Sculpt (rzeźbienie)
S to nast pujce narz dzia:
Draw (rysuj) jest uywane najcz ciej. Domylnie tworzy wybrzuszenia powierzchni w kierunku b dcym urednieniem normalnych obj tych p dzlem. Gdy na zakadce Texture (Tekstura) aktywna jest jaka tekstura, nakada j na powierzchni siatki. Smooth (Wygad) suy do wygadzania siatki i korygowania b dów. Jego dziaanie polega na wyrównywaniu odlegoci i któw mi dzy wierzchokami. W ten sposób likwiduje niespójnoci i wygadza poszczerbione obszary. Naley go uywa ostronie, bo moe usun równie wyrzebione szczegóy. Pinch (cinij) jest niezastpione przy dopracowywaniu szczegóów. Mona go uywa
take do tworzenia kantów i ostrych grzbietów. Przesuwa wierzchoki ku rodkowi p dzla, zacieniajc siatk wokó linii wyznaczonej ruchem p dzla. Inflate (rozedmij) dziaa podobnie jak Draw (rysuj) bez aktywnej tekstury, ale przesuwa wierzchoki zgodnie z ich normalnymi (bez uredniania). Za jego pomoc mona uzyska efekt napompowania siatki lub spuszczenia z niej powietrza.
56 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
Grab (przesu) jest narz dziem prostym, ale uytecznym. Umoliwia r czne przemieszczanie fragmentów siatki znajdujcych si w strefie wpywów p dzla. Zwykle uywa si go do delikatnego przesuwania fragmentów siatki w celu poprawienia jej ksztatu lub usytuowania okrelonych elementów w cile wyznaczonym miejscu. Layer (Warstwa) dziaa tak, jakbymy nakadali now warstw gliny lub j zeskrobywali z powierzchni obiektu. Flatten (spaszcz) przesuwa wierzchoki w stron otaczajcej je powierzchni, tym samym sprawia, e „zamalowywany” obszar staje si coraz bardziej paski.
Druga zakadka, Brush (p dzel), jest pokazana na rysunku 2.3. Tutaj moemy sterowa
ksztatem p dzla narz dzia Draw (rysuj)1. Krzywa, jak tu widzimy, decyduje o ksztacie zag bie i wybrzusze tworzonych tym narz dziem. Na rysunku 2.4 pokazano efekt zastosowania krzywej biegncej od lewego górnego rogu wykresu do prawego dolnego i wypukej ku górze. Jak wida , powstao wybrzuszenie o przekroju pókolistym. Opcja Anchored (zakotwiczony) zmienia reakcj p dzla na ruch myszy lub piórka. Gdy jest wczona, punkt, w którym zaczynamy „rysowanie”, staje si centrum wpywu p dzla na siatk , a punkt, do którego przesuwamy wskanik myszy, wyznacza zakres oddziaywania p dzla. Na rysunku 2.5 moesz zobaczy efekt zastosowania tej opcji wraz z krzyw o wypukoci skierowanej w dó. Strzaka na tym rysunku pokazuje, jaki ruch wykonano wskanikiem myszy. RYSUNEK 2.3. Zakładka Brush (pędzel)
Zakadka Texture (Tekstura), pokazana na rysunku 2.6, jest miejscem, w którym mona ustali parametry tekstury nakadanej na obiekt za pomoc narz dzia Draw (rysuj). Tutaj mona wczyta tekstur i ustali , jak ma by mapowana na powierzchni obiektu. Opcja Rake (pochyl) powoduje ustawianie si tekstury zgodnie z kierunkiem ruchu myszy lub piórka. W nast pnym podrozdziale zobaczymy, jak te podstawowe narz dzia rzebiarskie sprawuj si w praktyce.
1
Autor nieco zaw zi znaczenie tej zakadki. Suy ona do ustawiania parametrów p dzla dla wszystkich narz dzi rzebiarskich — przyp. tum.
RZEBIENIE W BLENDERZE~ 57
RYSUNEK 2.4. Rezultat zastosowania pędzla o krzywej wypukłej ku górze
RYSUNEK 2.5. Rezultat zastosowania pędzla zakotwiczonego i z krzywą wypukłą ku górze
58 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.6. Zakładka Texture (Tekstura)
Rze bienie gowy dziecka Narz dzia rzebiarskie doskonale nadaj si do modelowania rozmaitych nierównoci, bruzd i zmarszczek. Dlatego najcz ciej jako przykady ich zastosowa widzimy rozmaite demony, potwory lub starców. Mona by zatem odnie wraenie, e te narz dzia nadaj si jedynie do takiego typu modelowania. Aby temu zaprzeczy i pokaza , e rzebi
mona take gadkie obiekty organiczne, jako podstaw dla prezentowanego tu przykadu wybraem fotografi dziecka.
PRZYGOTOWANIE DO RZEBIENIA Zanim zaczniesz rzebi , musisz przygotowa siatk i odpowiednie obrazy. W tym celu wykonaj nast pujce czynnoci: 1. Podziel okno widokowe na dwa odr bne okna. Ustaw wskanik myszy w lewym oknie i wcinij klawisz 1 na klawiaturze numerycznej, aby wczy widok od przodu. W oknie prawym wcz widok z boku, wciskajc klawisz 3. Nast pnie do obu okien wczytaj obrazy gowy dziecka — wybierz View/Background Image (Widok/Obraz jako to), w oknie Background Image (Obraz w tle) kliknij najpierw przycisk Use Background Image (Uyj obrazu w tle), a potem Load (wczytaj) i wska plik baby.jpg, który znajdziesz na pycie doczonej do ksiki. Aby prawidowo ustawi obraz w lewym oknie, ustaw parametry Offset (przesuni cie) tak jak na rysunku 2.7. W tym oknie powinna by w caoci widoczna twarz dziecka. W oknie prawym ustaw obraz tak, aby widoczna bya gowa z boku, jak na rysunku 2.8. 2. Wcz tryb edycji, a nast pnie wcinij klawisz A, aby zaznaczy wszystkie wierzchoki. Wcinij klawisz W i z menu Specials (Specjalne) dwukrotnie wybierz polecenie Subdivide Smooth (Podziel z wygadzaniem). Po tym zag szczeniu siatki przeskaluj j tak, aby z grubsza pokrywaa si z gow dziecka (patrz rysunek 2.9). 3. Przed przystpieniem do rzebienia warto siatce nada przynajmniej zgrubnie ostateczny ksztat. Zacznij od przeskalowania caej siatki wzdu osi X w oknie z widokiem od przodu. W oknie z widokiem bocznym zaznacz wierzchoki — zrób to przy wyczonej opcji Occlude background geometry (ukryj geometri ta), aby mie pewno , e zaznaczone zostan wierzchoki po lewej i po prawej stronie gowy — a nast pnie poprzesuwaj je w stron konturów gowy (patrz rysunek 2.10). W rezultacie powiniene otrzyma siatk o ksztacie mniej wi cej takim jak na rysunku 2.11.
RZEBIENIE W BLENDERZE~ 59
RYSUNEK 2.7. Ustawianie poziomego przesunięcia obrazu w tle
RYSUNEK 2.8. Prawidłowe usytuowanie obrazu w oknach widokowych
RYSUNEK 2.9. Sześcian po dwukrotnym podziale
60 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.10. Zgrubne modelowanie siatki
RYSUNEK 2.11. Siatka po wstępnych przygotowaniach do modelowania głowy
4. Teraz moesz wczy wielopoziomow rozdzielczo . Ta funkcja ma kluczowe znaczenie w procesie rzebienia, poniewa pozwala Blenderowi zapami tywa
informacje o ksztacie siatki na wielu poziomach podziau. Po uaktywnieniu wielopoziomowej rozdzielczoci moesz szybko zmienia poziomy szczegóowoci siatki, a jeli zajdzie potrzeba, moesz dodawa nowe o jeszcze wi kszej rozdzielczoci. Aby uaktywni t funkcj , kliknij przycisk Add Multires (dodaj wielopoziomow rozdzielczo ), który znajdziesz w panelu Multires okna przycisków po wczeniu przycisku kontekstowego Editing (edytowanie) (patrz rysunek 2.12). Nast pnie kliknij dwukrotnie przycisk Add Level (dodaj poziom), aby uzyska trzy poziomy rozdzielczoci, tak jak na rysunku 2.13. W trybie obiektowym kliknij przycisk Set Smooth (Wygad) w panelu Links and Materials (Powizania i materiay), aby wygadzi
obraz obiektu w oknie widokowym.
RZEBIENIE W BLENDERZE~ 61
RYSUNEK 2.12. Panel Multires (wielopoziomowa rozdzielczość)
RYSUNEK 2.13. Trzeci poziom rozdzielczości
5. Jeste gotów do rozpocz cia rzebienia, ale jeli chcesz, moesz jeszcze wyczy
wywietlanie kratki i osi w oknie widokowym. Aby to zrobi , wybierz View/View Properties (Widok/Proporcje widoku) i w otwartym w ten sposób panelu View Properties (parametry widoku) wycz wspomniane elementy, tak jak na rysunku 2.14 2. Dobrym pomysem jest pozostawienie otwartych okien z widokami od przodu i z boku, ale z wczonym w nich trybem cieniowania Wireframe (Kontury). Dzi ki temu b dzie moliwe obserwowanie, jak zabiegi rzebiarskie wpywaj na ogólny ksztat siatki. Warto równie otworzy okno UV/Image Editor (Edytor UV/Obrazów) z obrazem wzorcowym, aby mie go cigle przed oczami. Na koniec wcz tryb rzebienia (Sculpt Mode) i w oknie przycisków pozostaw otwart zakadk Sculpt (rzebienie), aby bya cigle dost pna. Proponowany przeze mnie ukad okien moesz zobaczy na rysunku 2.15. RYSUNEK 2.14. Ustawianie parametrów widoku
2
Wyczenie tych elementów jest moliwe tylko w widokach perspektywicznych i z kamery — przyp. tum.
62 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.15. Można przystąpić do rzeźbienia
PROCES RZEBIENIA Rzebienie, podobnie jak malowanie, jest procesem, dla którego trudno okreli
jednoznaczny tok post powania. Poniej znajdziesz opis tego procesu w pewnym ukadzie chronologicznym, ale powiniene to traktowa raczej jako zbiór rozmaitych wskazówek i sugestii, a nie cisy cig instrukcji, które bezwzgl dnie trzeba wykona . Szczególn uwag zwró jednak na prezentowane liczby, zwaszcza gdy dotycz rozmiaru p dzla i siy jego dziaania na rónych etapach rzebienia.
Wstpne ksztatowanie siatki Narz dzie Draw (rysuj) tworzy wg bienia lub wybrzuszenia na powierzchni obiektu i doskonale nadaje si do wst pnego ksztatowania siatki. Aby rozpocz , ustaw parametry p dzla tak jak na rysunku 2.16. Tryb dziaania ustaw na Sub (odejmij), a parametrom Size (rozmiar) i Strength (sia) nadaj wartoci odpowiednio 62 i 25.W sekcji Symmetry (symetria) wcz przycisk X, aby uaktywni funkcj edycji symetrycznej wzgl dem osi X, która w swoim dziaaniu przypomina lustrzane odbicie w trybie edycji. Waciwie model nie powinien by
idealnie symetryczny, tote póniej, podczas prac wykoczeniowych, wyczymy t funkcj . Po ustawieniu parametrów narz dzia Draw (rysuj) zacznij formowa wg bienia wokó brody i nosa, tak jak na rysunkach 2.17 i 2.18. Prawdopodobnie do uzyskania waciwych rezultatów b dziesz musia stosowa p dzle o rónych rozmiarach i siach dziaania. To normalne. W trakcie pracy nieraz b dziesz zmienia te ustawienia. Jednak na tym etapie korzystne jest stosowanie duych p dzli o maej sile, bo to pozwala na lepsz kontrol wprowadzanych odksztace. Zauwa, e gdy zbliasz lub oddalasz modelowany obiekt, rozmiar p dzla pozostaje stay. A zatem jeli zmienisz odlego patrzenia, a tym samym wielko obiektu w oknie widokowym, b dziesz musia odpowiednio skorygowa
rozmiar p dzla. Relacj mi dzy wielkoci obiektu a rozmiarem p dzla moesz oceni , obserwujc okrg symbolizujcy to narz dzie.
RZEBIENIE W BLENDERZE~ 63
RYSUNEK 2.16. Ustawienia dla wstępnego kształtowania siatki narzędziem Draw (rysuj)
RYSUNEK 2.17. Wstępne kształtowanie brody
Gdy ju uksztatujesz twarz najlepiej jak si da na trzecim poziomie rozdzielczoci, dodaj kolejny poziom i kontynuuj rzebienie. Kliknij wi c przycisk Add Level (dodaj poziom) w panelu Multires. Dodany zostanie czwarty poziom podziau siatki, co pozwoli Ci na zwi kszenie szczegóowoci rzeby. Za pomoc narz dzia Draw (rysuj) w trybach Add (Dodaj) i Sub (odejmij) staraj si nada siatce ksztat zbliony do tego, jaki pokazano na rysunku 2.19. Trybu Add (Dodaj) uyj do ksztatowania nosa i warg, a w trybie Sub (odejmij) kontynuuj prac w okolicach brody, nosa i oczu.
64 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.18. Wstępne kształtowanie obszarów wokół nosa
RYSUNEK 2.19. Efekt zastosowania narzędzia Draw (rysuj) w trybach Add (Dodaj) i Sub (odejmij) na czwartym poziomie rozdzielczości
RZEBIENIE W BLENDERZE~ 65
UWAAJ NA SKRÓTY KLAWISZOWE EDYCJI SYMETRYCZNEJ! W trybie Sculpt (rzeźbienie) można włączać edycję symetryczną względem osi X, Y i Z przez wciskanie odpowiednich klawiszy na klawiaturze. Niestety klawisz Z jest często używany także w innych trybach do włączania widoku Wireframe (Kontury). Jeśli często modelujesz obiekty, może się zdarzyć, że odruchowo wciśniesz ten klawisz, a tym samym niechcący włączysz edycję symetryczną względem osi Z. Nie byłoby zabawne, gdybyś po kilku godzinach rzeźbienia brody w dużym zbliżeniu, zorientował się, że przez cały czas maglowałeś również czoło! W przyszłych edycjach Blendera prawdopodobnie będzie można włączać i wyłączać wybrane skróty klawiszowe w zależności od bieżących potrzeb, ale na razie, aby mieć pewność, że rzeźbiony jest właściwy fragment siatki, trzeba po prostu zwracać uwagę na przyciski w panelu Sculpt (rzeźbienie).
Stopniowe doskonalenie rze by Rzebienie polega na stopniowym odksztacaniu siatki i bardzo pomocne w tym bywa narz dzie Smooth (Wygad), chocia pozornie wydaje si , e jest na odwrót, bo przecie ono likwiduje (a przynajmniej minimalizuje) skutki wczeniejszego stosowania innych narz dzi rzebiarskich. Mimo to, jeli chcesz uzyska dobry rezultat, powiniene uywa
tego narz dzia dosy cz sto. Rzeb, wygadzaj to, co wyrzebie, ponownie rzeb i znów wygadzaj, a do uzyskania waciwego efektu. Gdy skoczysz wygadzanie rzeby (z si nieprzekraczajc wartoci 25), dodaj kolejny, czyli ju pity, poziom rozdzielczoci. W pracach wykoczeniowych przydaje si take narz dzie Grab (przesu). Za jego pomoc moesz przesuwa fragmenty siatki zgodnie z kierunkiem ruchu myszy. Stosujc odpowiednie rozmiary p dzla, ustawisz bardzo dokadnie zarówno due obszary, jak i najdrobniejsze szczegóy. Na rysunku 2.20 moesz zobaczy , jak za pomoc narz dzia Grab (przesu) wymodelowaem wargi dziecka. Widoczne tam strzaki pokazuj kierunek ruchu narz dzia, ale ich dugo jest znacznie przesadzona — zazwyczaj wystarczaj naprawd niewielkie pocigni cia mysz. RYSUNEK 2.20. Stosowanie narzędzia Grab (przesuń)
66 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
Narz dzie Layer (Warstwa) jest uywane w celu dodania lub zdj cia warstwy materiau z rzebionej powierzchni. W trybie Add (Dodaj) tworzy efekt analogiczny do naoenia nowej warstwy gliny na powierzchni obiektu. Ta analogia nie do koca jest suszna, bo, tak jak inne narz dzia rzebiarskie, nie dodaje ono adnych nowych elementów do siatki, a jedynie przesuwa istniejce wierzchoki. W trybie Sub (odejmij) uzyskujemy efekt odwrotny. Narz dzie zeskrobuje warstw „gliny” o okrelonej gruboci. Przydaje si to do tworzenia rozmaitych zag bie, na przykad oczodoów, tak jak na rysunku 2.21. Oczywicie, po kadym uyciu tego narz dzia naley odpowiednio wygadzi obiekt. RYSUNEK 2.21. Rzeźbienie oczodołów za pomocą narzędzia Layer (Warstwa) w trybie odejmowania
Tworzenie pomocniczych szkiców za pomoc narzdzia Grease Pencil (kredka woskowa) Gdy zaczynasz ksztatowa takie elementy jak oczy, pojawia si pewien problem. Rzebiony obiekt zasania obraz w tle, a samo spogldanie na zdj cie otwarte w edytorze obrazu nie jest tak pomocne jak posiadanie wyranych konturów obiektu, do których mona dopasowywa siatk . Mona wprawdzie rzebi w trybie Wireframe (Kontury), bo wtedy obraz w tle jest widoczny — g sto siatki zaley wówczas od wartoci parametru Edges (kraw dzie) ustawianego w zakadce Multires — ale nie jest to rozwizanie idealne.
RZEBIENIE W BLENDERZE~ 67
Rzebienie w trybie Wireframe (Kontury) jest mniej intuicyjne ni w trybie Solid (Solidny). Duo atwiej jest obserwowa , jak zmienia si ksztat obiektu, jeli jego powierzchnia jest cieniowana. Powyszy problem mona rozwiza w prosty sposób za pomoc narz dzia Grease Pencil (kredka woskowa). Jest to narz dzie ogólnego przeznaczenia, które umoliwia rysowanie i pisanie bezporednio w oknie widokowym. Utworzone w ten sposób rysunki, szkice lub notatki mog by na stae zwizane z oknem widokowym albo z okrelonym miejscem w przestrzeni 3D. W tym drugim przypadku podczas manipulowania widokiem (obracanie, przesuwanie, przyblianie i oddalanie) zachowuj si one tak jak zwyke obiekty. Narz dzia Grease Pencil (kredka woskowa) najcz ciej uywaj animatorzy i graficy pracujcy w grupach, ale przydaje si ono równie podczas rzebienia. Przygotujmy wi c szkic, który uatwi nam rzebienie szczegóów twarzy. W tym celu wykonaj nast pujce czynnoci: 1. Wcz tryb obiektowy. W oknie z widokiem bocznym umie kursor 3D tu przed rzebionym obiektem — po prostu kliknij tam lewym przyciskiem myszy (LMB), tak jak na rysunku 2.22. Gdy uywasz narz dzia Grease Pencil (kredka woskowa), kursor 3D wyznacza niewidoczn paszczyzn , na której narz dzie pozostawia lad. W naszym przypadku zaley nam, aby szkic znajdowa si przed obiektem, dlatego tam naley umieci kursor 3D. RYSUNEK 2.22. Umieść kursor 3D przed modelowanym obiektem
68 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
2. Wcinij klawisz Z, aby przeczy widok w tryb Wireframe (Kontury). Z menu View (Widok) w nagówku okna widokowego wybierz Grease Pencil (kredka woskowa), tak jak na rysunku 2.23. Otwarty zostanie panel Grease Pencil (kredka woskowa) pokazany na rysunku 2.24. Kliknij w nim przycisk Use Grease Pencil (uyj kredki woskowej), a nast pnie wcz opcj Sketch in 3D (szkicuj w 3D). Kliknij jeszcze przycisk Draw Mode (tryb rysowania) i moesz przystpi do rysowania. RYSUNEK 2.23. Wybieranie narzędzia Grease Pencil (kredka woskowa) z menu View (Widok)
RYSUNEK 2.24. Panel sterujący narzędzia Grease Pencil (kredka woskowa)
3. Rozpocznij rysowanie. Chodzi o to, aby naszkicowa kontury istotnych elementów twarzy, na przykad oczu, w sposób pokazany na rysunku 2.25. Gdy tylko zaczniesz rysowa , Blender automatycznie utworzy now warstw , na której b dzie przechowywany lad narz dzia Grease Pencil (kredka woskowa). Sam moesz równie tworzy takie warstwy za pomoc przycisku Add New Layer (dodaj now warstw ). Kada z nich ma wasne waciwoci, takie jak kolor, krycie czy grubo linii. Mona im te przypisywa waciwo o nazwie Onion Skin (skórka cebuli), która powoduje, e wykonane na nich rysunki s widoczne take w ssiednich klatkach animacji.
RZEBIENIE W BLENDERZE~ 69
RYSUNEK 2.25. Szkicowanie konturów oka za pomocą narzędzia Grease Pencil (kredka woskowa)
4. Naszkicuj oczy, nos i usta, tak jak na rysunku 2.26. Zaznacz te najwaniejsze topologicznie punkty twarzy. To samo zrób dla widoku bocznego (patrz rysunek 2.27). Pami taj, aby najpierw umieci w odpowiednim miejscu kursor 3D. Gdy skoczysz rysowanie, zmniejsz parametr Opacity (krycie) odpowiedniej warstwy, dzi ki czemu szkic stanie si lekko przezroczysty i nie b dzie utrudnia obserwacji efektów rzebienia. Ostatecznie Twój szkic powinien wyglda mniej wi cej tak jak ten z rysunku 2.28. RYSUNEK 2.26. Szkic pomocniczy w widoku od przodu
70 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.27. Szkic pomocniczy w widoku bocznym
RYSUNEK 2.28. Szkice przedni i boczny widziane w przestrzeni 3D
5. Teraz moesz kontynuowa rzebienie w oparciu o szkice pomocnicze. Na rysunku 2.29 pokazano przykad ksztatowania policzka narz dziem Grab (przesu). Odpowiedni fragment siatki zosta przesuni ty i dopasowany do naszkicowanej linii.
RZEBIENIE W BLENDERZE~ 71
RYSUNEK 2.29. Wypełnianie konturu policzka za pomocą narzędzia Grab (przesuń)
SZKICOWANIE KREDK A KLATKI ANIMACJI Narzędzie Grease Pencil (kredka woskowa) zostało stworzone głównie dla animatorów, aby łatwiej im było opracowywać kolejne klatki animacji. Dlatego jest ono wyposażone w mechanizm reagowania na zmianę bieżącej klatki. Rysunek wykonany w jednej klatce pozostaje widoczny także w sąsiednich klatkach, o ile nie umieszczono w nich innych rysunków. Jeśli na przykład w klatce nr 1 narysujesz kwadrat i w oknie Timeline (oś czasu) zmienisz klatkę na inną, kwadrat będzie wciąż widoczny. Ale jeśli po przejściu do klatki nr 10 narysujesz na tej samej warstwie okrąg, kwadrat zniknie i w kolejnych klatkach będzie widoczny tylko okrąg. Tak więc w klatkach 1 – 9 będzie kwadrat, a w klatce 10 i następnych będzie okrąg. Jeśli chciałbyś, aby okrąg był widoczny razem z kwadratem, musiałbyś go narysować w tej samej klatce co kwadrat, czyli w pierwszej. Opcja Onion Skin (skórka cebuli) pozwala oglądać rysunki z kilku różnych klatek jednocześnie — rysunki z klatek sąsiednich są wyświetlane w postaci półprzezroczystych nakładek. Oczywiście w trybie rzeźbienia opcja ta powinna być wyłączona, a wszystkie rysunki pomocnicze powinny być wykonywane w klatce nr 1.
Dodawanie gaek ocznych Gaki oczne najatwiej jest wymodelowa z siatek w ksztacie sfery. Aby utworzy tak siatk , wcz tryb obiektowy, wcinij klawisz spacji i z rozwini tego w ten sposób menu wybierz Add/Mesh/UVsphere (Dodaj/Siatka/UVKula). Parametrom Segments (segmenty) i Rings (piercienie) nadaj warto 12. Umie sfer w miejscu, w którym powinna znajdowa si gaka oczna — ustal pooenie i rozmiar sfery w widoku bocznym zgodnie z utworzonym wczeniej szkicem pomocniczym (patrz rysunek 2.30). Za pomoc narz dzia Grab (przesu) uksztatuj siatk twarzy wokó oka, tak jak na rysunku 2.31.
72 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.30. Gałka oczna widziana z boku
RYSUNEK 2.31. Kształtowanie siatki wokół oka za pomocą narzędzia Grab (przesuń)
Drug gak oczn utworzysz bardzo prosto — poprzez skopiowanie pierwszej, do tego wystarczy wcisn klawisze Shift+D. Nast pnie wcinij klawisz X, aby ograniczy
moliwo przesuwania tylko wzdu osi X, i ustaw drug gak tak jak na rysunku 2.32.
RZEBIENIE W BLENDERZE~ 73
RYSUNEK 2.32. Obie gałki oczne na swoich miejscach
Przy uyciu narz dzi Draw (rysuj), Inflate (rozedmij) i Grab (przesu) dopasuj obszar wokó oka do naszkicowanych wczeniej konturów. Sprawdzaj przy tym, ogldajc oko z rónych stron, czy waciwa cz gaki ocznej jest widoczna. Na tym etapie powiniene wyczy symetri edycji wzgl dem osi X i zacz zwraca wi ksz uwag na asymetryczno twarzy. Cz sto pomocne bywa wczenie wywietlania gaki ocznej w trybie konturowym, tak jak na rysunku 2.33, zwaszcza podczas modelowania szczegóów powiek. Aby uaktywni taki tryb, wcz przycisk Wire (Kontur) w sekcji Drawtype (Typ rysowania) panelu Draw (rysowanie) dost pnego w oknie przycisków po wczeniu przycisku kontekstowego Object (obiekt). RYSUNEK 2.33. Gałka oczna wyświetlana w trybie konturowym
74 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
Cyzelowanie nosa, ust i oczu Jak ju wspominaem, proces rzebienia powinien skada si z wielu etapów polegajcych na modelowaniu, wygadzaniu i cyzelowaniu. Takie wieloetapowe podejcie jest szczególnie wskazane przy formowaniu oczu, nosa i ust. Wane jest równie dostosowywanie poziomu rozdzielczoci do stopnia szczegóowoci modelowanych elementów. Oczywicie, im wyszy poziom rozdzielczoci zastosujesz, tym drobniejsze szczegóy b dziesz móg opracowywa . Musisz si jednak liczy z tym, e powyej pewnego poziomu praca moe sta si uciliwa ze wzgl du na ograniczon wydajno komputera. Spróbuj wi c wczeniej sprawdzi swój sprz t pod tym ktem. Pami taj przy tym, e tym, co gównie wpywa na szybko dziaania komputera, jest nie tyle poziom rozdzielczoci siatki, ile liczba jej wierzchoków. Jeli przed wczeniem trybu wielopoziomowej rozdzielczoci dokonae ju podziau siatki, liczba wierzchoków b dzie znaczco rosa przy kadym przejciu do wyszego poziomu. W prezentowanym tu przykadzie b dziemy stosowa
maksymalnie poziom 7. Na rysunku 2.34 moesz zobaczy , jak za pomoc narz dzia Draw (rysuj) w trybie odejmowania utworzyem zag bienia wokó kraw dzi nosa. I znów po takim zgrubnym rzebieniu naley uy narz dzia Smooth (Wygad), tak jak na rysunku 2.35. RYSUNEK 2.34. Zgrubne rzeźbienie zagłębień wokół nosa
Do tworzenia ostrych kantów i zaama najlepsze jest narz dzie Pinch (cinij), które przesuwa wierzchoki ku rodkowi p dzla. Gdy przecigasz nim wzdu wybrzuszenia, powstaje ostry grzbiet; gdy przecigasz nim wzdu wg bienia, powstaje bruzda. Uyj wi c tego narz dzia i wymodeluj zag bienia wokó nosa, takie jak na rysunku 2.36.
RZEBIENIE W BLENDERZE~ 75
RYSUNEK 2.35. Wygładzanie krawędzi nosa
RYSUNEK 2.36. Kształtowanie zagłębień wokół nosa
Podobnie naley postpi z ustami. Na rysunku 2.37 pokazane jest formowanie warg i rynienki podnosowej przy uyciu narz dzia Inflate (rozedmij). Narz dzie to dziaa podobnie jak Draw (rysuj), z tym e przesuwa wierzchoki siatki wzdu normalnych bez uredniania ich kierunków. Rónica jest niewielka, ale na tyle istotna, e narz dzie Inflate (rozedmij) lepiej nadaje si do uwydatniania okrelonych obszarów ni Draw (rysuj).
76 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.37. Kształtowanie ust za pomocą narzędzia Inflate (rozedmij)
Po wygadzeniu warg narz dziem Smooth (Wygad) podkrel kontury ust i szczelin mi dzy wargami. Uyj do tego celu narz dzia Pinch (cinij) w trybie Add (Dodaj), tak jak na rysunku 2.38. Zauwa, e to narz dzie jest rzadziej stosowane w trybie Sub (odejmij), który powoduje rozsuwanie wierzchoków. RYSUNEK 2.38. Wzmacnianie konturów ust przy użyciu narzędzia Pinch (ściśnij)
RZEBIENIE W BLENDERZE~ 77
Te same techniki stosujemy przy modelowaniu powiek. Na rysunku 2.39 moesz przeledzi kolejne etapy tworzenia powiek za pomoc narz dzia Draw (rysuj), wygadzania ich narz dziem Smooth (Wygad) i definiowania bruzd przy uyciu narz dzia Pinch (cinij). RYSUNEK 2.39. Formowanie powiek
Modelowanie uszu Przed przystpieniem do modelowania uszu wcz tryb edycji symetrycznej wzgl dem osi X, aby nie musia wszystkiego robi dwa razy. Na pocztek utwórz wst pny zarys uszu, za pomoc narz dzia Layer (Warstwa) w trybie Add (Dodaj). W ten sposób uzyskasz „materia” do dalszego ksztatowania tych elementów (patrz rysunek 2.40). Oczywicie korzystaj przy tym ze szkicu pomocniczego.
78 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.40. Wstępne kształtowanie ucha przy użyciu narzędzia Layer (Warstwa)
Za pomoc narz dzia Draw (rysuj) w trybie addytywnym ksztatuj wypukoci maowiny usznej, a za pomoc tego samego narz dzia w trybie subtraktywnym modeluj zag bienia (patrz rysunek 2.41). Zauwa, e w widoku od przodu uszy wydaj si krótsze, ni s w rzeczywistoci, a wi c powiniene je zrobi nieco wi ksze, ni s na zdj ciu. RYSUNEK 2.41. Dalsze modelowanie ucha za pomocą narzędzia Draw (rysuj) w trybach Add (Dodaj) i Sub (odejmij)
Cz sto uywaj narz dzia Smooth (Wygad), aby likwidowa niepodane napi cia siatki. Gdy ju ucho b dzie wystarczajco odstawa od gowy, uyj wszelkich dost pnych narz dzi, aby nada mu odpowiedni ksztat. Rezultat widoczny na rysunku 2.42 uzyskaem w efekcie zastosowania narz dzi Layer (Warstwa), Draw (rysuj) i Grab (przesu) zarówno w trybie addytywnym, jak i subtraktywnym.
RZEBIENIE W BLENDERZE~ 79
RYSUNEK 2.42. Modelowanie szczegółów ucha przy użyciu narzędzi Layer (Warstwa) i Draw (rysuj)
W wyniku prac rzebiarskich wierzchoki siatki cz sto zbijaj si w grupy, co nie wyglda najlepiej. Dlatego potrzebne jest cz ste stosowanie narz dzia Smooth (Wygad). Efekt takiego wygadzenia siatki pokazano na rysunku 2.43. Oczywicie znikaj wtedy niektóre drobne szczegóy i trzeba je rzebi ponownie. RYSUNEK 2.43. Ucho wygładzone
Podczas modelowania tak zoonych elementów jak ludzkie ucho staraj si cz sto spoglda na zdj cie umieszczone w tle okna widokowego. Dopracuj wszystkie szczegóy, aby uzyska efekt mniej wi cej taki jak na rysunku 2.44. Ostrzejsze kraw dzie i bruzdy utworzysz za pomoc narz dzia Pinch (cinij), a ogólny ksztat dopasujesz, uywajc narz dzia Grab (przesu) o rozmiarach co najmniej takich jak poowa ucha.
80 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.44. Dalsze doskonalenie ucha
Ukoczona rzeba gowy dziecka po dodaniu materiau imitujcego glin powinna wyglda mniej wi cej tak jak na rysunku 2.45. Gotow rzeb i zastosowany przeze mnie materia znajdziesz na pycie doczonej do ksiki w pliku baby.blend. RYSUNEK 2.45. Ukończona rzeźba głowy dziecka
Doskonalenie umiejtnoci Rzebienia cyfrowego, podobnie jak gry na trbce czy onglowania cukiniami, nie nauczysz si przez samo czytanie o nim. W tym podrozdziale zaprezentowaem podstawowe techniki, których opanowanie jest niezb dne, jeli chce si maksymalnie wykorzysta
FUNKCJA RETOPO~ 81
moliwoci narz dzi rzebiarskich. Pierwsze próby mog by nieudane, ale nie zraaj si tym. Jeli troch po wiczysz, szybko nab dziesz odpowiednich umiej tnoci. Jestem przekonany, e wkrótce uznasz rzebienie w Blenderze za rzecz tak naturaln jak rysowanie oówkiem po papierze.
WIAT BLENDERA RZE BIARSKIE FUNKCJE BLENDERA A GOOGLE SUMMER OF CODE Wyposażenie Blendera w narzędzia służące do rzeźbienia i modelowania z wielopoziomową rozdzielczością zawdzięczamy programowi corocznych letnich warsztatów programistycznych organizowanych przez Google. Do programu tego przystąpiła także fundacja Blendera. Przez udzielanie wsparcia finansowego w postaci stypendiów organizatorzy zachęcają młodych programistów do udziału w projektach typu open source. W ciągu ostatnich czterech lat corocznie uczestniczą w tym programie setki studentów z kilkudziesięciu krajów, a owocem ich pracy jest zauważalne przyspieszenie rozwoju ponad stu rozmaitych projektów z zakresu wolnego oprogramowania. Wielopoziomowa rozdzielczość i narzędzia rzeźbiarskie dla Blendera zostały opracowane podczas takich warsztatów w roku 2006 z inicjatywy i pod kierunkiem Nicholasa Bishopa, znanego już wcześniej uczestnika warsztatów i twórcy programu rzeźbiarskiego (również open source) o nazwie SharpConstruct. Jego opiekunem był wówczas Jean-Luc Peurière. Zaangażowanie Nicholasa i firmy Google w rozwój funkcji rzeźbiarskich Blendera nie ograniczyło się do warsztatów w 2006 roku. Nicholas powrócił w roku 2008 z propozycją pracy nad edytowalną topologią modeli w połączeniu z wielopoziomową rozdzielczością. Gdy to zostanie w pełni zaimplementowane, będzie można nie tylko rzeźbić modele i przemieszczać ich wierzchołki, ale także dodawać, usuwać, dzielić i rozciągać siatki z zachowaniem wszystkich poziomów rozdzielczości! Śledź uważnie zapowiedzi zmian w przyszłych wydaniach Blendera, aby nie przegapić pojawienia się tych nowych ekscytujących funkcji. I pamiętaj, że będziemy je zawdzięczać warsztatom Google Summer of Code.
Funkcja Retopo Funkcje rzebiarskie pozwalaj uzyska szczegóowy model, ale ich uycie stwarza pewien problem. Na najwyszym stopniu rozdzielczoci bogata w szczegóy rzeba zawiera bardzo duo wierzchoków. Moesz si o tym przekona po wczeniu trybu obiektowego. (Uwaaj: wczenie trybu obiektowego przy aktywnym wysokim stopniu rozdzielczoci moe doprowadzi do zawieszenia systemu!) Jeli obniysz poziom rozdzielczoci, znikn szczegóy rzeby. Co wi cej, okae si , e podstawowa geometria obiektu nie zmienia si od momentu, w którym wprowadzie wst pny podzia domylnego szecianu. Nie ma tu nic takiego, co by przypominao p tle kraw dzi lub inne elementy topologiczne umoliwiajce prawidowe deformowanie i animowanie obiektów zbudowanych z wieloktów. Mówic krótko, z tak wyrzebion siatk niewiele da si zrobi . Aby rozwiza ten problem, naley posuy si funkcj ponownego tworzenia topologii (retopo od remake topology). Umoliwia ona stworzenie zupenie nowej topologii siatki z zachowaniem wszystkich wyrzebionych szczegóów. Aby utworzy now siatk gowy dziecka o prawidowej geometrii i mniejszej liczbie wieloktów, wykonaj nast pujce czynnoci:
82 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
1. W trybie obiektowym zaznacz wyrzebiony obiekt, wcinij klawisze Shift+S i z rozwini tego w ten sposób menu wybierz Cursor–>Selection (Kursor–>Zaznaczenie), aby umieci kursor 3D dokadnie w rodku obiektu, tak jak na rysunku 2.46. Wcinij klawisz spacji i wybierz Add/Mesh/Cube (Dodaj/Siatka/Szecian), aby umieci
w scenie nowy szecian (patrz rysunek 2.47). W Blenderze 2.48 nowe obiekty s dodawane domylnie w trybie edycji i z zaznaczonymi wszystkimi wierzchokami. Jeli Twój Blender jest inaczej skonfigurowany, wcz tryb edycji i zaznacz wszystkie wierzchoki, wciskajc klawisz A. Nast pnie wcinij klawisz X, aby usun wszystkie wierzchoki szecianu. RYSUNEK 2.46. Przyciąganie kursora 3D do obiektu
RYSUNEK 2.47. Dodanie nowego sześcianu
FUNKCJA RETOPO~ 83
2. Uaktywnij funkcj ponownego tworzenia topologii. W tym celu wcz przycisk Retopo w panelu Mesh (Siatka) dost pnym w oknie przycisków po wczeniu przycisku kontekstowego Editing (edytowanie) i pokazanym na rysunku 2.48. Poniej pojawi si dwa przyciski z opcjami Retopo All (stosuj funkcj Retopo do wszystkiego) i Paint (maluj). Pierwsza powoduje przyciganie jednoczenie wszystkich zaznaczonych wierzchoków do siatki lecej g biej, a druga umoliwia rysowanie w oknie widokowym podobnie jak narz dzie Grease Pencil (kredka woskowa), a tworzone w ten sposób linie wyznaczaj now geometri . Pozwala to na szybkie „rysowanie” duych segmentów geometrii naraz. Tym razem jednak b dziemy to robi wielokt po wielokcie, a zatem pozostaw opcj Paint (maluj) wyczon. RYSUNEK 2.48. Uaktywnianie funkcji Retopo
3. Dziaanie funkcji Retopo polega na analizowaniu zawartoci bufora Z i przyciganiu wierzchoków do siatki lecej g biej, przy czym g boko jest tu wyznaczana wzdu osi widoku. Dlatego powinno si wybiera widok skierowany wprost na edytowan cz siatki. Zacznij od widoku ortogonalnego (do przeczania widoku perspektywicznego na ortogonalny i odwrotnie suy klawisz 5 na klawiaturze numerycznej) skierowanego wprost na twarz modelu. Dodaj wierzchoek na policzku wyrzebionej gowy dziecka przez klikni cie lewym przyciskiem myszy (LMB) przy wcini tym klawiszu Ctrl. Utworzony wierzchoek b dzie wyglda tak jak na rysunku 2.49. Gdy obrócisz scen , zobaczysz, e ten wierzchoek ley na powierzchni policzka. 4. Dodaj modyfikator Mirror (Odbicie). Chocia siatka nie jest idealnie symetryczna, z punktu widzenia dalszych prac korzystne b dzie utworzenie podstawowej geometrii w trybie odbicia lustrzanego. Póniej wprowadzimy pewne elementy asymetrii. Po dodaniu wspomnianego modyfikatora rozpocznij wyciganie kolejnych wierzchoków z tego wierzchoka, który wczeniej utworzye. Moesz to robi z wcini tym klawiszem E lub klikajc lewym przyciskiem myszy przy wcini tym klawiszu Ctrl. Utwórz w ten sposób wierzchoki wokó oczu, tak jak na rysunku 2.50.
84 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.49. Dodawanie wierzchołka za pomocą skrótu Ctrl+LMB
RYSUNEK 2.50. Wyciąganie wierzchołków wokół oczu
5. Na tym etapie moe si okaza , e niektóre wierzchoki i kraw dzie chowaj si pod powierzchni wyrzebionej siatki. Aby mie lepszy wgld w to, co robisz, wcz opcj X-ray (promienie X) w sekcji Draw Extra (rysuj dodatkowo) panelu Draw
FUNKCJA RETOPO~ 85
(rysowanie) dost pnego po wczeniu przycisku kontekstowego Object (obiekt) (patrz rysunek 2.51). To sprawi, e tworzona siatka b dzie w caoci widoczna. Wycignij teraz kraw dzie, aby utworzy cianki, tak jak na rysunku 2.52. RYSUNEK 2.51. Opcja Draw Extra/X-ray (rysuj dodatkowo/ promienie X)
RYSUNEK 2.52. Tworzenie ścianek przez wyciąganie krawędzi
6. Ta ksika jest przeznaczona dla uytkowników zaawansowanych, wi c zakadam, e znasz podstawy modelowania w Blenderze. Jeli obsuga narz dzi sucych do modelowania siatek sprawia Ci trudnoci, zajrzyj do mojej ksiki Character Animation with Blender (Sybex, 2007). Znajdziesz w niej wiele szczegóowo objanionych
wicze ilustrujcych mi dzy innymi stosowan tutaj metod modelowania przez wyciganie kolejnych wieloktów. Po nabyciu przynajmniej podstawowych umiej tnoci w tym zakresie powiniene bez trudu poradzi sobie z utworzeniem takiej topologii, jak wida na rysunku 2.53. Oczy wymodeluj tak jak na rysunku 2.54. Dla nosa utwórz geometri tak jak na rysunku 2.55. Nast pnie przejd do modelowania tyu gowy (rysunek 2.56) i na koniec wymodeluj ucho, tak jak na rysunku 2.57.
86 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.53. Geometria wokół oczu, nosa i ust
RYSUNEK 2.54. Geometria oka
7. Caa symetryczna siatka powinna wyglda mniej wi cej tak jak na rysunku 2.58. W panelu Modifiers (modyfikatory) kliknij przycisk Apply (Zastosuj) odpowiadajcy modyfikatorowi Mirror (Odbicie), aby zatwierdzi ten modyfikator. Funkcja Retopo nie zadziaa automatycznie na zwierciadlanym odbiciu edytowanej poowy modelu, ale gdy zaczniesz tam przesuwa wierzchoki, okae si , e s one przycigane do powierzchni wyrzebionego obiektu, tak samo jak na pierwszej poowie. Popraw delikatnie pooenie wierzchoków na zwierciadlanej poowie siatki, aby odtworzy pierwotn asymetryczno caoci.
FUNKCJA RETOPO~ 87
RYSUNEK 2.55. Szczegółowy widok nosa
RYSUNEK 2.56. Topologia głowy
8. Prawdopodobnie zauwaye, e nowa siatka jest mniejsza od oryginalnej. Tak jest w istocie. Funkcja Retopo „przykleja” wierzchoki nowej siatki do powierzchni siatki rzebionej, ale te wierzchoki nie le na powierzchni rozpinanej na nowej siatce. W przypadku, z jakim mamy do czynienia w naszym przykadzie, nowa siatka powstaje pod powierzchni siatki oryginalnej i to na niej jest rozpinana powierzchnia, która póniej b dzie renderowana. Wierzchoki nowej siatki tworz swego rodzaju stela (modeling cage) podtrzymujcy t powierzchni .
88 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.57. Ucho
RYSUNEK 2.58. Symetryczna siatka o nowej topologii
Na rysunku 2.59 wida dokadnie, e gdy wierzchoki stelau le na powierzchni siatki pierwotnej, nowa powierzchnia jest mniejsza. Efekt ten jest mniej widoczny w miejscach o wi kszej g stoci stelau. Jeli chcesz uzyska lepsze dopasowanie obu powierzchni, musisz w odpowiednich obszarach zag ci stela.
FUNKCJA RETOPO~ 89
RYSUNEK 2.59. Siatka stelażowa utworzona przy użyciu funkcji Retopo
9. Ostatecznie model gowy dziecka (po zastosowaniu funkcji Retopo i dodaniu materiau imitujcego glin ) powinien wyglda tak jak na rysunku 2.60. Na koniec wycz funkcj Retopo, aby unikn w przyszoci problemów, jakie mogyby wystpi
przy zblianiu lub oddalaniu widoku. RYSUNEK 2.60. Ukończona siatka z nową topologią
Zauwa, e asymetria rzeby zostaa zachowana, ale niektóre szczegóy, takie jak delikatne zmarszczki na czole czy doeczek pod doln warg, znikn y. W nast pnym podrozdziale zobaczysz, jak mona je przywróci .
90 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
POTENCJALNE PROBLEMY ZWIZANE Z FUNKCJ RETOPO Funkcja Retopo działa w oparciu o dane zawarte w buforze Z (bufor głębokości) okna widokowego. Problemy mogą wystąpić, gdy funkcja nie jest w stanie jednoznacznie ustalić względnej głębokości poszczególnych elementów. Problem może się pojawić, gdy w trakcie korzystania z tej funkcji spróbujesz powiększyć widok za pomocą klwisza Ctrl i środkowego przycisku myszy. Jeśli wtedy będą zaznaczone jakieś wierzchołki, może dojść do ich przesunięcia w inne położenie. Oczywiście można to naprawić przez wciśnięcie klawiszy Ctrl+Z, ale lepiej jest unikać powiększania widoku przy zaznaczonych wierzchołkach. Inne problemy są mniej przewidywalne. Przykład takiego błędu związanego z buforem głębi został pokazany na rysunku.
Jeśli zauważysz, że siatka z nową topologią wyraźnie odbiega kształtem od siatki wyrzeźbionej, wyłącz funkcję Retopo, odsuń wierzchołki od wyrzeźbionej siatki, a następnie ponownie włącz Retopo i umieść wierzchołki tam, gdzie być powinny. Takie wyzerowanie funkcji Retopo często pozwala przywrócić właściwy kształt nowej geometrii.
Wypalanie mapy normalnych Wiesz ju, jak utworzy siatk uproszczon o mniejszej liczbie wieloktów i waciwej topologii, tak aby ksztatem odpowiadaa wysokorozdzielczej siatce rzebionej. Jest jednak pewien problem. Opisany wyej proces tworzenia nowej topologii powoduje utrat wielu szczegóów pierwotnej siatki. Mona by wi c stwierdzi , e cay wysiek woony w rzebienie tych szczegóów poszed na marne. Na szcz cie tak nie jest. Blender zosta wyposaony w funkcj wypalania map normalnych (normal map-baking), która umoliwia zarejestrowanie nawet najdrobniejszych detali wyrzebionego modelu w postaci dwuwymiarowej tekstury. Jeli tak tekstur naoymy na model uproszczony, uzyska on wygld identyczny z pierwotnym modelem rzebionym.
WYPALANIE MAPY NORMALNYCH~ 91
Aby co takiego osign , wykonaj nast pujce czynnoci: 1. W celu naoenia paskiej tekstury na obiekt taki jak gowa trzeba najpierw rozwin ten obiekt we wspórz dnych UV. To za wymaga wyznaczenia linii szwów, ale to mona zrobi w Blenderze do atwo dzi ki odpowiednim narz dziom. Gdy wczysz tryb edycji i w oknie przycisków wciniesz przycisk kontekstowy Editing (edytowanie), uzyskasz dost p do panelu Mesh Tools More (wi cej narz dzi do edycji siatek), a tam znajdziesz list rozwijan Edge Alt-Select Mode (tryb zaznaczania kraw dzi z klawiszem Alt). Domylnie jest tu wybrana pozycja Loop Select (zaznacz p tl ), co oznacza, e klikni cie kraw dzi prawym przyciskiem myszy (RMB) przy wcini tym klawiszu Alt powoduje zaznaczenie p tli, do której ta kraw d naley. Zmiana tego trybu na Tag Edges (Seam) [oznacz kraw dzie (szew)], tak jak na rysunku 2.61, spowoduje, e kombinacja Alt+RMB b dzie automatycznie wyznacza szwy siatki. Za kadym razem, gdy wciniesz Alt i klikniesz prawym przyciskiem myszy jak kraw d, Blender oznaczy jako szew najkrótsz ciek mi dzy t kraw dzi a ostatnio oznaczonym szwem. RYSUNEK 2.61. Lista rozwijana Edge Alt-Select Mode (tryb zaznaczania krawędzi z klawiszem Alt)
2. Oznacz szwy na gowie, tak jak na rysunku 2.62. W ten sposób uzyskasz stosunkowo proste rozwini cie z trzema wyspami: jednej dla twarzy i dwóch dla uszu. 3. Otwórz okno UV/Image Editor (Edytor UV/Obrazów). Z menu Image (obraz) wybierz New (nowy) i w otwartym w ten sposób panelu New Image (nowy obraz) ustaw zarówno Width (szeroko ), jak i Height (wysoko ) na 1024 oraz wcz opcj UV Test Grid (siatka testowa UV), tak jak na rysunku 2.63. Na koniec kliknij przycisk OK, aby utworzy obraz siatki testowej. 4. W oknie 3D View (Widok 3D) zaznacz wszystkie wierzchoki siatki przez wcini cie klawisza A, a nast pnie w panelu Mesh (Siatka) kliknij przycisk New (Nowy) obok etykiety UV Texture (tekstura UV) (patrz rysunek 2.64). Przesu wskanik myszy na okno UV/Image Editor (Edytor UV/Obrazów) i wcinij klawisz E, aby rozwin siatk . Powiniene otrzyma rozwini cie podobne do tego, jakie wida na rysunku 2.65. W oknie 3D View (Widok 3D) zmie Draw type (typ rysowania) na Textured (Z teksturami), aby sprawdzi , jak testowa tekstura ukada si na powierzchni siatki. Uzyskany przeze mnie efekt moesz zobaczy na rysunku 2.66 oraz w kolorowej wkadce.
92 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.62. Oznaczanie szwów
RYSUNEK 2.63. Tworzenie nowego obrazu
RYSUNEK 2.64. Dodawanie tekstury do siatki
5. Teraz przygotuj si na co magicznego. Wcinij klawisz Tab, aby wczy tryb obiektowy, zaznacz oryginaln, wyrzebion siatk , a nast pnie przytrzymaj wcini ty klawisz Shift i zaznacz now siatk z uproszczon topologi. W oknie przycisków wcz przycisk kontekstowy Scene (scena) i otwórz panel Bake (wypalanie) pokazany na rysunku 2.67. Kliknij w nim przycisk Normals (Normalne) i z listy rozwijanej, która pojawi si w lewej cz ci panelu, wybierz Tangent (styczna).
WYPALANIE MAPY NORMALNYCH~ 93
RYSUNEK 2.65. Rozwinięcie siatki
RYSUNEK 2.66. Siatka z nałożoną teksturą UV
Kliknij jeszcze Selected to Active (zaznaczony na aktywny), aby normalne obiektu zaznaczonego (siatka rzebiona) wypalane byy na obiekcie aktywnym (siatka utworzona przy uyciu funkcji Retopo). Na koniec kliknij przycisk Bake (wypal). Na Twoich oczach zostanie wyrenderowana mapa normalnych w miejsce utworzonego wczeniej obrazu siatki testowej. Gotowa mapa jest pokazana na rysunku 2.68 i w kolorowej wkadce. Zapisz ten obraz — wybierz w tym celu polecenie Save (Zapisz) z menu Image (obraz). 6. Teraz masz tekstur w postaci mapy normalnych, któr moesz naoy na siatk utworzon przy uyciu funkcji Retopo. W tym celu utwórz dla materiau tekstur typu Image (Obraz), w panelu Image (Obraz) wczytaj map normalnych, a w panelu Map Image (obraz mapy) wcz opcj Normal Map (mapa normalnych) i z listy obok wybierz Tangent (styczna) (patrz rysunek 2.69). Przejd do ustawie materiau i w panelu Map Input (Mapowanie wejcia) wcz wspórz dne UV, a w panelu Map To (Mapowanie) wcz opcj Nor (normalne) i ustaw jej wspóczynnik (o tej samej nazwie) na 1.00, tak jak na rysunku 2.70.
94 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
RYSUNEK 2.67. Panel Bake (wypalanie)
RYSUNEK 2.68. Wypalona mapa normalnych
RYSUNEK 2.69. Ustawienia tekstury dla mapy normalnych
WYPALANIE MAPY NORMALNYCH~ 95
RYSUNEK 2.70. Ustawienia materiału dla mapy normalnych
7. Wyrenderuj obraz, aby zobaczy rezultat kocowy. Okae si , e mapa normalnych tworzy iluzj obecnoci wszystkich szczegóów rzeby na powierzchni siatki uproszczonej. Gaki oczne równie zostay zastpione oryginalnymi sferami. Wyrenderowane wszystkie trzy wersje modelu gowy dziecka moesz zobaczy
na rysunku 2.71 i w kolorowej wkadce. RYSUNEK 2.71. Od lewej do prawej: rzeźba o wysokiej rozdzielczości, siatka o uproszczonej topologii i mniejszej liczbie wielokątów, ta sama siatka uproszczona z nałożoną mapą normalnych
ZAPISUJ WYPALANE OBRAZY! Pamiętaj o zapisywaniu wypalanych obrazów (na przykład map normalnych), inaczej utracisz je w chwili zamknięcia programu. To samo dotyczy obrazów malowanych w Blenderze przy użyciu funkcji Texture Paint (Malowanie tekstury). Zwykłe spakowanie zewnętrznych danych w pliku .blend nie gwarantuje zachowania wytworzonych obrazów, ponieważ nie istnieją one jako zewnętrzne dane, dopóki nie zostaną zapisane w odrębnych plikach!
96 ~ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU
Poznae jeszcze jedno pot ne narz dzie do modelowania siatek. Podczas lektury tego rozdziau miae okazj si przekona , e materiay i tekstury s cile powizane z procesem modelowania, a na podstawie nast pnego rozdziau nauczysz si wykorzystywa
je w celu osigni cia dokadnie takich efektów, o jakie Ci chodzi.
Podsumowanie Korzystaj z narzdzi rze biarskich Blendera. Wielopoziomowa rozdzielczo i rozmaite narz dzia rzebiarskie umoliwiaj modelowanie nawet bardzo zoonych i szczegóowych obiektów 3D. Opanuj to W doskonaleniu umiej tnoci rzebiarskich nic nie zastpi praktycznych
wicze. W oparciu o podane w tym rozdziale wskazówki wykonaj jeszcze trzy inne rzeby gów ludzkich. Spróbuj wyrzebi gow starszej osoby, kobiety i m czyzny. Korzystaj przy tym z obrazów pomocniczych umieszczanych w tle widoków ortogonalnych, tak jak to robilimy w tym rozdziale, ale spróbuj take swobodnego rzebienia w oparciu o dowoln fotografi . Gdy opanujesz rzebienie gów, zacznij eksperymentowa z caymi postaciami. Staraj si , aby Twoje rzeby oddaway indywidualny charakter kadej postaci. Uywaj funkcji Retopo do przeksztacania form rze biarskich w topologicznie poprawne obiekty. Funkcja Retopo umoliwia tworzenie modeli o ksztatach identycznych z innymi obiektami, ale o innej topologii. Dzi ki temu moliwe jest zast powanie wysokorozdzielczych obiektów rzebionych takimi, których geometria jest oparta na regularnych p tlach kraw dziowych, a wi c dajcymi si atwo deformowa , animowa
i renderowa . Opanuj to Sporód modeli wykonanych w ramach poprzedniego wiczenia wybierz ten, który Ci si najbardziej podoba, i przy uyciu funkcji Retopo utwórz nowy model o tym samym ksztacie, ale o mniejszej liczbie wieloktów i geometrii bazujcej na p tlach kraw dzi. Staraj si przy tym, aby nowa siatka bya moliwie najprostsza, ale jednoczenie maksymalnie odzwierciedlaa ksztat siatki oryginalnej. Stosuj wypalanie map normalnych, aby przenie szczegóy rze by na model z uproszczon topologi . Wypalanie map normalnych umoliwia gromadzenie informacji o wektorach normalnych na powierzchni szczegóowych obiektów rzebionych i przechowywaniu ich w postaci dwuwymiarowych tekstur zwanych mapami normalnych. Mapy te mona nakada jako tekstury UV na uproszczone modele w celu wywoania zudzenia duej szczegóowoci ich powierzchni. Opanuj to Wzorujc si na przykadzie zaprezentowanym w tym rozdziale, spróbuj wypali map normalnych z obiektu wyrzebionego w pierwszym wiczeniu na obiekcie, który utworzye przy uyciu funkcji Retopo w wiczeniu poprzednim.
Rozdzia 3.
Zwikszanie realizmu scen za pomoc odpowiednich tekstur i materiaów Narz dzia opisane w rozdziale 2., „Rzebienie i tworzenie nowej topologii obiektu”, umoliwiaj tworzenie modeli siatkowych o duym stopniu szczegóowoci. Jednak przez samo modelowanie nie mona osign penego realizmu. Do tego potrzebne jest jeszcze odtworzenie rzeczywistych waciwoci powierzchni obiektu i sposobu, w jaki zachowuje si wiato padajce na t powierzchni . Potrzebna jest wi c dog bna wiedza na temat metod tworzenia realistycznie wygldajcych tekstur i materiaów. Konieczne jest te opanowanie pewnych technik manipulowania obrazami dwuwymiarowymi podczas opracowywania tekstur. Blender oferuje kilka pot nych narz dzi, za pomoc których mona atwo i szybko tworzy bezszwowe tekstury UV oraz wciela je do materiaów, jednak do samej obróbki obrazów dwuwymiarowych uywa b dziemy innego programu typu open source, a mianowicie GIMP-a. Z tego rozdziau dowiesz si , jak:
efektywnie korzysta z funkcji mapowania tekstur, tworzy rozmaite efekty powierzchniowe przez mieszanie tekstur, skutecznie i wydajnie posugiwa si systemem materiaów w Blenderze.
Tworzenie tekstur UV przy uyciu Blendera i GIMP-a Kady, kto próbowa utworzy w Blenderze cho by prost, ale realistyczn scen , szybko uwiadomi sobie niedostatki materiaów, jakimi dysponuje. Wprawdzie system materiaów i cieniowa w Blenderze jest mocno rozbudowany i umoliwia sterowanie wieloma parametrami materiaów, jak chociaby poyskliwoci, wspóczynnikiem odbicia wiata, przezroczystoci, a nawet rozpraszaniem podpowierzchniowym, jednak jednolito tych materiaów jest wyranie zauwaalna. W wiecie rzeczywistym obiekty nigdy nie s idealnie jednolite, ani pod wzgl dem koloru, ani poyskliwoci, ani innych cech — zawsze maj jakie nierównoci, rysy, pory, wgniecenia i inne skazy b dce skutkami oddziaywa z otoczeniem. W Blenderze takie zrónicowanie powierzchni obiektu mona uzyska przez zastosowanie odpowiednich tekstur.
98 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
Dlatego te opanowanie sztuki tworzenia i czenia tekstur w ramach jednego materiau jest istotn cz ci nauki tworzenia realistycznie wygldajcych obiektów i caych scen.
Tekstury i ich mapowanie Kada tekstura jest dwuwymiarowym wzorkiem, który po dodaniu do materiau wpywa na jego ostateczny wygld. Wszystkie tekstury dost pne w Blenderze mona podzieli
na dwa rodzaje: proceduralne i obrazkowe. Kady z tych typów tworzy inne efekty i wymaga innych metod stosowania. Tekstury proceduralne s definiowane w oparciu o matematyczne wzory lub algorytmy. Praca z nimi polega na manipulowaniu parametrami formu matematycznych w celu ustalenia ich wpywu na wygld materiau. W wielu przypadkach stosowane wzory maj charakter trójwymiarowy, a ich dwuwymiarowa reprezentacja jest przekrojem poprzecznym wyznaczonym na powierzchni siatki. Dobrym przykadem typu proceduralnego jest tekstura Clouds (chmury). Mapowanie takich tekstur polega na okrelaniu ich orientacji wzgl dem siatki obiektu i wzgl dem caej przestrzeni 3D. Posugiwanie si nimi jest stosunkowo proste, ale ich rónorodno jest do ograniczona. Tekstury obrazkowe bazuj na zawartoci obrazów cyfrowych, którymi mog by
zdj cia, zeskanowane rysunki odr czne czy te obrazy wygenerowane w jakikolwiek inny sposób. W przypadku tych tekstur mapowanie polega na ustaleniu zalenoci mi dzy punktami obrazu a punktami na powierzchni siatki, na któr tekstura jest nakadana. Istnieje kilka sposobów mapowania prostoktnych, paskich obrazów na powierzchni trójwymiarow. W Blenderze dost pne s nast pujce typy takiego mapowania: paskie, prostopadocienne, walcowe i sferyczne; wszystkie zostay pokazane na rysunku 3.1, na którym w celu lepszego zilustrowania rónic mi dzy nimi zastosowano ten sam obraz i t sam siatk . Wszelkie rónice w wygldzie tych czterech obiektów wynikaj jedynie z zastosowania rónych sposobów mapowania, czyli, mówic inaczej, sposobu dopasowywania dwuwymiarowych wspórz dnych tekstury do dwuwymiarowych wspórz dnych powierzchni siatki. W wielu przypadkach te wbudowane w program metody mapowania s wystarczajce i daj dobre rezultaty. Na przykad dzi ki wykorzystaniu mapowania sferycznego mona atwo naoy prostoktny obraz powierzchni Ziemi na siatk sferyczn. Oczywicie nie jest to uniwersalny zestaw mapowa i w przypadku obiektów znacznie odbiegajcych ksztatem od zwykej paszczyzny, prostopadocianu, walca czy kuli efekty mog by
zupenie nieprzewidywalne.
Mapowanie UV Teksturowanie obiektów tak zoonych jak ten z rysunku 3.2 (kolorowa wersja znajduje si we wkadce) wymaga duej kontroli nad rozmieszczeniem poszczególnych tekstur na odpowiednich cz ciach siatki. W takich sytuacjach pomocne jest mapowanie UV.
TWORZENIE TEKSTUR UV PRZY U YCIU BLENDERA I GIMP-A~ 99
RYSUNEK 3.1. Mapowanie płaskie, prostopadłościenne, walcowe i sferyczne
RYSUNEK 3.2. Model pokryty teksturami UV (autorem obrazu nieba w tle jest M@dcow z BlenderArtist.org)
100 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
Nazwa mapowanie UV pochodzi od nazwy ukadu wspórz dnych stosowanego do okrelania pooenia punktu na powierzchni trójwymiarowego obiektu. Tradycyjnie prostoliniowe wspórz dne na paszczynie oznacza si literami X i Y, a w przestrzeni — X, Y i Z. Do opisu pooenia na powierzchni obiektu trójwymiarowego wykorzystywane s wspórz dne krzywoliniowe, które w odrónieniu od tamtych oznaczane s literami U i V. Trzeci wymiar w tej krzywoliniowej przestrzeni (wysoko nad powierzchni) jest oznaczany zwykle liter W, ale w Blenderze nie jest stosowany. Mapowanie UV polega na r cznym ustalaniu zalenoci mi dzy wspórz dnymi X i Y obrazu a wspórz dnymi U i V powierzchni. Na szcz cie moemy przy tym korzysta
z licznych i niezwykle uytecznych narz dzi, a te, jakie oferuje Blender, nale do najlepszych. Cay proces mapowania mona podzieli na trzy zasadnicze etapy: rozwijanie siatki, tworzenie tekstury i nakadanie tekstury na siatk . Najwaniejsze jest odpowiednie rozwini cie siatki. To wymaga odpowiedniego przygotowania, czyli wyznaczenie takich szwów — linii, wzdu których siatka powinna by rozci ta — aby po jej rozprostowaniu znieksztacenia byy moliwie najmniejsze. Sam tekstur zazwyczaj wykonuje si poza Blenderem, w programach do grafiki dwuwymiarowej, takich jak GIMP. W tym rozdziale b dziesz mia okazj prze wiczy to wszystko, a nawet wi cej, bo dodatkowo wykorzystamy funkcj wypalania tekstur w celu usuni cia tych szwów, które pozostay widoczne po mapowaniu.
Teksturowanie komina lokomotywy W kilku nast pnych cz ciach tego rozdziau skoncentrujemy si na pokrywaniu tekstur konkretnego obiektu, a b dzie nim model komina lokomotywy, zaznaczony na rysunku 3.3. Sam komin skada si z kilku obiektów 3D i przed naoeniem tekstury wyglda tak jak na rysunku 3.4. W takiej te postaci znajdziesz go na pycie doczonej do ksiki w pliku smokestack_no_mats.blend. RYSUNEK 3.3. Model komina lokomotywy
TWORZENIE TEKSTUR UV PRZY U YCIU BLENDERA I GIMP-A~ 101
RYSUNEK 3.4. Komin bez materiału
Do wykonania w caoci poniszego wiczenia oprócz Blendera b dzie potrzebny równie GIMP. Plik instalacyjny tego programu znajdziesz na pycie doczonej do ksiki, ale moesz go take pobra ze strony internetowej www.gimp.org/downloads (dla systemu Windows) lub http://gimp.lisanet.de/Website/Download.html (dla systemu Mac OS X). Po zainstalowaniu GIMP-a otwórz w Blenderze plik smokestack_no_mats.blend i rozpocznij wykonywanie nast pujcych czynnoci: 1. Aby wykona mapowanie UV, musisz wytyczy linie, wzdu których trójwymiarowy model ma by „rozci ty” — robie to ju w rozdziale 2. przy okazji rozwijania siatki gowy dziecka. Linie te nazywane s szwami (seams). Jak ju wiesz z rozdziau 2., w panelu Mesh Tools More (wi cej narz dzi do edycji siatek) dost pnych jest kilka trybów zaznaczania z wcini tym klawiszem Alt, z których jeden tworzy automatycznie szwy mi dzy zaznaczonymi kraw dziami. Jednak tym razem siatka jest duo prostsza i szybciej b dzie, jeli skorzystasz z domylnej opcji Loop Select (zaznacz p tl ) i wyznaczysz szwy r cznie. Aby zaznaczy konkretn p tl kraw dzi, wcinij klawisz Alt i kliknij prawym przyciskiem myszy kraw d nalec do tej p tli. Nast pnie wcinij klawisze Ctrl+E i z otwartego w ten sposób menu wybierz polecenie Mark Seam (oznacz szew). Na rysunku 3.5 wida siedem takich p tli, które zostay oznaczone jako szwy. Sze z nich to okr gi lece na obwodzie komina, a siódma jest do nich prostopada i przecina komin pionowo. (Jeli nie wszystko jest tu dokadnie widoczne, zajrzyj do kolorowej wkadki — tam znajdziesz ten sam rysunek w wersji kolorowej).
102 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.5. Wytyczanie szwów na kominie
2. W panelu Mesh (Siatka) nalecym do kontekstu przycisku Editing (edytowanie) utwórz now tekstur (patrz rysunek 3.6). Otwórz okno UV/Image Editor (Edytor UV/Obrazów) i wcinij klawisze Alt+N, aby utworzy nowy obraz. W oknie dialogowym, które si pojawi, ustaw wartoci parametrów Width (szeroko ) i Height (wysoko ) na 2048. Wcinij te przycisk UV Test Grid (testowa siatka UV). Ustaw wskanik myszy w oknie 3D View (Widok 3D), wcinij klawisz A, aby zaznaczy
wszystkie wierzchoki, a nast pnie przejd do okna UV/Image Editor (Edytor UV/Obrazów) i przez wcini cie klawisza E wydaj Blenderowi polecenie rozwini cia siatki (patrz rysunek 3.7). Po zatwierdzeniu tego polecenia poustawiaj rozwini te fragmenty siatki tak jak na rysunku 3.8 (kolorowa wersja tego rysunku znajduje si we wkadce). Po prostu zaznaczaj poszczególne elementy, wskazujc je mysz i wciskajc klawisz L, a nast pnie przecigaj je i obracaj, wcisnwszy wczeniej klawisz G lub R. RYSUNEK 3.6. Dodawanie tekstury UV
3. Zapisz ukad cianek rozwini tej siatki. W tym celu w oknie UV/Image Editor (Edytor UV/Obrazów) otwórz menu UVs (rozwini cia UV) i wybierz polecenie Scripts/Save UV Face Layout (skrypty/zapisz ukad cianek UV) (patrz rysunek 3.9). W oknie dialogowym, które si otworzy, ustaw Size (rozmiar) na 2048 i Wire (kontur) na 2, tak jak na rysunku 3.10.
TWORZENIE TEKSTUR UV PRZY U YCIU BLENDERA I GIMP-A~ 103
RYSUNEK 3.7. Przygotowanie do rozwinięcia siatki
RYSUNEK 3.8. Siatka rozwinięta
4. Teraz moesz uruchomi GIMP-a i utworzy dwuwymiarow tekstur . W GIMP-ie otwórz zapisane przed chwil rozwini cie siatki — plik w formacie Targa z rozszerzeniem .tga (patrz rysunek 3.11). Poniewa b dziesz cz sto korzysta
z warstw, wcz stae wywietlanie okna Layers (Warstwy). W tym celu wybierz polecenie Windows/Dockable Dialogs/Layers (Okna/Dokowalne okna dialogowe/Warstwy), tak jak to pokazano na rysunku 3.12.
104 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.9. Zapisywanie rozwinięcia UV
RYSUNEK 3.10. Parametry zapisu rozwinięcia UV
RYSUNEK 3.11. Rozwinięcie UV otwarte w GIMP-ie
TWORZENIE TEKSTUR UV PRZY U YCIU BLENDERA I GIMP-A~ 105
RYSUNEK 3.12. Uzyskiwanie dostępu do warstw w GIMP-ie
DLACZEGO GIMP? Okno UV/Image Editor (Edytor UV/Obrazów) Blendera umożliwia tworzenie obrazów dwuwymiarowych (będziesz mógł się o tym przekonać podczas lektury rozdziału 9., „Przygotowywanie scen dla silnika gier”), ale brak mu pewnych funkcji niezbędnych do tworzenia realistycznych tekstur o wysokiej jakości. Przede wszystkim chodzi tu o możliwość operowania warstwami i sterowania ich przezroczystością. GIMP oferuje to wszystko i dlatego należy go uznać za doskonałe uzupełnienie Blendera, tym bardziej że w kategorii wolnego oprogramowania do edycji obrazów dwuwymiarowych zajmuje zdecydowanie pierwsze miejsce.
5. Aby utworzy realistycznie wygldajc tekstur , naley zacz od wyszukania odpowiednich materiaów zdj ciowych. Liczne zasoby zdj nadajcych si na rozmaite tekstury mona znale w internecie. Za niektóre trzeba zapaci , ale s te banki tekstur, które oferuj swoje zbiory za darmo. Ja najcz ciej korzystam z banku www.deviantart.com, w którym zgromadzono naprawd oszaamiajc liczb rónorodnych, a przy tym wysokiej jakoci tekstur. Wi kszo
z nich jest udost pniana zupenie za darmo. Dwie tekstury, które zastosujemy w tym wiczeniu, pochodz wanie z tego banku. Pierwsza z nich — obraz powierzchni metalu — jest autorstwa Wojciecha Sadleja. Moesz j zobaczy
na rysunku 3.13. Zostaa take umieszczona na pycie doczonej do ksiki jako metal_texture.jpg. T tekstur i wiele innych tekstur doskonaej jakoci moesz równie pobra ze strony http://wojtar-stock.deviantart.com. Autorem drugiej tekstury, pokazanej na rysunku 3.14, jest inny czonek spoecznoci deviantArt, Dazzle. Dzi ki tej teksturze mona uzyska jeszcze lepszy efekt zniszczonego metalu, ale korzystanie z niej nie jest konieczne w tym wiczeniu. Jeli chcesz, moesz j pobra ze strony http://dazzle-textures.deviantart.com. 6. Otwórz w GIMP-ie plik metal_texture.jpg. Wcinij Ctrl+A, aby zaznaczy cay obraz, a nast pnie skopiuj go, wciskajc Ctrl+C. Uaktywnij okno z obrazem rozwini tej siatki i wklej do niego skopiowany obraz tekstury (Ctrl+V). Rezultat tych zabiegów jest pokazany na rysunku 3.15. Widoczne na tym rysunku okno Layers (Warstwy) ujawnia, e wklejony obraz jest traktowany jako oderwane zaznaczenie (floating selection). Musisz ten stan zmieni poprzez umieszczenie obrazu na normalnej warstwie. W tym celu kliknij przycisk New Layer (Nowa warstwa) oznaczony
106 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.13. Tekstura metalu
RYSUNEK 3.14. Tekstura brudnego, bezbarwnego metalu
TWORZENIE TEKSTUR UV PRZY U YCIU BLENDERA I GIMP-A~ 107
RYSUNEK 3.15. Wklejanie tekstury metalu do okna z obrazem rozwiniętej siatki
ramk na rysunku 3.16. Pami taj, aby robi to za kadym razem, gdy wklejasz skopiowane zaznaczenie. Teraz b dziesz móg zaznacza tekstur za pomoc skrótu Alt+S1 lub dowolnego narz dzia do tworzenia zaznacze, ale zawsze pami taj o wczeniejszym uaktywnieniu waciwej warstwy. Zaznacz wi c metalow tekstur , wciskajc klawisze Alt+S, a nast pnie obracaj j i skaluj za pomoc ), tak narz dzi Rotate (Obrót) i Scale (Skalowanie) dost pnych w przyborniku ( jak na rysunku 3.17. Zmniejsz take parametr Opacity (Krycie) warstwy z tekstur, aby widoczna bya równie warstwa z rozwini ciem siatki. RYSUNEK 3.16. Tworzenie nowej warstwy dla wklejonego zaznaczenia
1
Autor najwidoczniej zdefiniowa sobie taki skrót klawiszowy, ale do przesuwania, obracania i skalowania tekstury za pomoc odpowiednich narz dzi wystarczy uaktywnienie jej warstwy przez klikni cie w oknie Layers (Warstwy) — przyp. tum.
108 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.17. Ustawianie nowej warstwy
7. Z przybornika wybierz narz dzie Rectangle Select (Zaznaczenie prostoktne), wyrónione na rysunku 3.18, wcz opcj Feather edges (Zmikczaj krawdzie) i ustaw parametr Radius (Promie ) na 50. To umoliwi Ci kopiowanie zaznaczonych obszarów z mi kkimi, stopniowo zanikajcymi kraw dziami, dzi ki czemu ich czenia b d praktycznie niezauwaalne. Uaktywnij warstw tekstury, zaznacz na niej prostoktny obszar, taki jak na rysunku 3.19, i skopiuj go, uywajc klawiszy Ctrl+C. Nast pnie wklej go, wciskajc klawisze Ctrl+V. Znów powstanie oderwane zaznaczenie, co wida na rysunku 3.20. Kliknij wi c przycisk New Layer (Nowa warstwa), aby umieci to zaznaczenie na jego wasnej warstwie. Przesu now warstw , tak aby zakrya dwa prostoktne fragmenty siatki (patrz rysunek 3.21). W ten sam sposób utwórz kolejn warstw tekstury i zakryj ni górne cz ci siatki, tak jak na rysunku 3.22. Aby uatwi sobie ustawianie poszczególnych warstw wzgl dem siatki, zmniejsz ich krycie, ale nie zapomnij powróci do wartoci 100% przed wyeksportowaniem gotowej tekstury. 8. Aby doda troch brudu i uj kolorów, otwórz w GIMP-ie drug tekstur . Za pomoc narz dzia Lasso z parametrem Feather edges (Zmikczaj krawdzie) o wartoci 50 zaznacz nieregularny ksztat podobny do tego, jaki wida na rysunku 3.23. Wcinij Ctrl+C, aby skopiowa zaznaczenie, po czym uaktywnij okno z siatk i wklej (Ctrl+V) do niego zawarto schowka. Tak jak poprzednio dodaj now warstw , obró j i przeskaluj, aby uzyska efekt zbliony do tego, jaki wida na rysunku 3.24. Powtórz to jeszcze kilka razy — za kadym razem wybierz inny fragment tekstury brudnego metalu, tak jak na rysunku 3.25. Jeli chcesz jeszcze bardziej zrónicowa
efekt, ustaw dla tych warstw róne tryby mieszania. W wi kszoci przypadków dobre rezultaty daje tryb Normal (Zwyky), ale równie tryb Soft Light (Mikkie wiato) moe by interesujcy ze wzgl du na delikatne odbarwianie obrazu. Poeksperymentuj troch z tymi trybami w poszukiwaniu nowych atrakcyjnych efektów.
TWORZENIE TEKSTUR UV PRZY U YCIU BLENDERA I GIMP-A~ 109
RYSUNEK 3.18. Ustawianie 50-pikselowego zmiękczania krawędzi dla narzędzia Rectangle Select (Zaznaczenie prostokątne)
RYSUNEK 3.19. Zaznaczanie prostokątnego fragmentu tekstury
110 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.20. Wklejanie zaznaczenia
RYSUNEK 3.21. Wklejone zaznaczenie na swojej własnej warstwie
TWORZENIE TEKSTUR UV PRZY U YCIU BLENDERA I GIMP-A~ 111
RYSUNEK 3.22. Podstawowa tekstura metalu
RYSUNEK 3.23. Zaznaczanie brudu
112 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.24. Wklejanie kopii fragmentu tekstury brudu
RYSUNEK 3.25. Dodawanie kolejnych brudnych plam
9. Po ustawieniu wszystkich elementów tekstury przywró pene krycie (100%) wszystkich warstw i upewnij si , e wszystkie s wczone — sprawd, czy obok miniatur warstw widoczne s ikony w ksztacie oka. Z menu Layer (Warstwa) wybierz New From Visible (Nowa z widoku), aby wszystkie widoczne warstwy zczy w jedn, tak jak na rysunku 3.26. Nadaj tej warstwie nazw color (kolor), a nast pnie wycz wszystkie warstwy lece powyej (patrz rysunek 3.27). Otwórz menu File (Plik) i wybierz polecenie Save As (Zapisz jako). Jako nazw pliku wpisz smokestack_color.png
TWORZENIE TEKSTUR UV PRZY U YCIU BLENDERA I GIMP-A~ 113
RYSUNEK 3.26. Łączenie wszystkich warstw w jedną
RYSUNEK 3.27. Gotowa tekstura
(kolor komina). Dodanie rozszerzenia .png jest równoznaczne z wydaniem GIMP-owi polecenia zczenia wszystkich warstw przed zapisaniem obrazu — plik w formacie PNG nie b dzie zawiera informacji o poszczególnych warstwach. Jeli zaley Ci na ich zachowaniu, zapisz obraz równie w pliku z rozszerzeniem .xcf.
114 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
10. Na razie to wszystko, co miae do zrobienia w GIMP-ie. Przejd do Blendera i w oknie UV/Image Editor (Edytor UV/Obrazów) otwórz plik smokestack_color.png, a nast pnie zamapuj tekstur na modelu komina (patrz rysunek 3.28). Na koniec utwórz dla komina materia, nadaj mu nazw BaseColor (kolor bazowy) i ustaw go jako Shadeless (bezcieniowy). Jako tekstur obrazkow mapowan we wspórz dnych UV zastosuj smokestack_color.png. Wszystkie ustawienia dla tego materiau s pokazane na rysunku 3.29. RYSUNEK 3.28. Tekstura nałożona na model komina
Na tym koczy si pierwszy etap tworzenia materiau, ale do uzyskania materiau nadajcego si do wyrenderowania pozostao jeszcze troch pracy. To, co utworzye do tej pory, jest materiaem przejciowym, który stanowi podstaw dla waciwej tekstury bezszwowej. Jej tworzeniem zajmiemy si w nast pnym podrozdziale.
Wygadzanie szwów przez wypalanie tekstur Mapowanie paskiej tekstury na trójwymiarowym modelu, pokazane na rysunku 3.30, wyglda niele, ale jest jeszcze dalekie od ideau. Najwi kszym problemem s tu wyrane szwy w miejscach, gdzie tekstura czy si sama z sob. Z tego podrozdziau dowiesz si , jak takie szwy eliminowa . Wprawdzie mona by przyj , e prawdziwy komin skada si z wielu kawaków blachy i ich czenia s widoczne, ale w przypadku innych modeli szwy na ogó s niepodane. Poza tym nawet wtedy, gdy w rzeczywistoci wyst puj, rzadko pokrywaj si z liniami ci cia siatki przy jej rozwijaniu. Tak czy inaczej, warto posiada umiej tno tworzenia tekstur bezszwowych. W prezentowanym przykadzie skoncentruj si wi c na objanianiu metod tworzenia wanie takich tekstur, pozwalajcych zignorowa rzeczywiste czenia blach.
WYGADZANIE SZWÓW PRZEZ WYPALANIE TEKSTUR~ 115
RYSUNEK 3.29. Tworzenie materiału bezcieniowego z kolorową teksturą UV
RYSUNEK 3.30. Takie szwy wyglądają nienaturalnie
116 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
Aby pozby si szwów z utworzonej wanie tekstury, wykonaj nast pujce czynnoci: 1. Trik z wygadzaniem szwów polega na powtórnym naoeniu tej samej tekstury, ale przy innym rozwini ciu siatki obiektu, dzi ki czemu obszary, w których za pierwszym razem wystpiy szwy, mog by odpowiednio spreparowane ju w GIMP-ie. To wymaga ponownego wytyczenia szwów na siatce i jej rozwini cia. Jednak dobrze jest zapisa pierwotny ukad szwów, na wypadek gdyby trzeba byo do niego powróci . Tak wi c najpierw zaznacz wszystkie szwy. W tym celu wcz tryb zaznaczania kraw dzi, zaznacz jedn z kraw dzi szwu, a nast pnie wcinij klawisze Shift+G lub z menu Select (Zaznacz) w nagówku okna widokowego wybierz polecenie Similar to Selection (podobne do zaznaczenia), tak jak na rysunku 3.31. Gdy to zrobisz, otworzy si menu Select Similar Edges (zaznacz podobne kraw dzie) pokazane na rysunku 3.32. Jeli tu wybierzesz opcj Seam (szew), zaznaczone zostan automatycznie wszystkie szwy. W sekcji Vertex Groups (Grupy wierzchoków) panelu Links and Materials (Powizania i materiay) kliknij najpierw przycisk New (Nowy), aby utworzy now grup wierzchoków i przypisz do niej zaznaczone wierzchoki za pomoc przycisku Assign (Przydziel). Utworzonej w ten sposób grupie nadaj jak sensown nazw , na przykad Seams1 (szwy1), tak jak na rysunku 3.33. RYSUNEK 3.31. Menu Select (Zaznacz)
WYGADZANIE SZWÓW PRZEZ WYPALANIE TEKSTUR~ 117
RYSUNEK 3.32. Zaznaczanie wszystkich szwów
RYSUNEK 3.33. Grupa wierzchołków Seams1 (szwy1)
2. Klikajc prawym przyciskiem myszy przy wcini tym klawiszu Alt, zaznacz kraw dzie tworzce szwy pokazane na rysunku 3.34. Aby zrobi to szybciej, usu biece zaznaczenie za pomoc klawisza A, po czym w sekcji Vertex Groups (Grupy wierzchoków) panelu Links and Materials (Powizania i materiay) kliknij przycisk Select (Zaznacz), aby zaznaczy wierzchoki nalece do utworzonej przed chwil grupy. Teraz wcinij klawisze Ctrl+E i wybierz Clear Seam (usu szew), a nast pnie zaznacz p tle kraw dzi pokazane na rysunku 3.35, wcinij jeszcze raz Ctrl+E i wybierz Mark Seam (oznacz szew). (Kolorowe wersje tych rysunków znajdziesz we wkadce). RYSUNEK 3.34. Usuwanie starych szwów
118 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.35. Wytyczanie nowych szwów
3. W panelu Mesh (Siatka) nalecym do kontekstu przycisku Editing (edytowanie) dodaj now tekstur UV (patrz rysunek 3.36), ale nie usuwaj poprzedniej. Nowa tekstura ma automatycznie wczony pierwszy z lewej przycisk, co oznacza, e jest aktywna. Poprzednia tekstura ma wci wczony przycisk renderowania (drugi od lewej), a to oznacza, e to wanie ona b dzie renderowana. W oknie UV/Image Editor (Edytor UV/Obrazów) jeszcze raz utwórz now siatk testow o wymiarach 2048×2048. W oknie widokowym uyj klawisza A, aby zaznaczy
ca siatk , a nast pnie w oknie edytora obrazów rozwi j, tak jak na rysunku 3.37. Jak wida , ukad cianek jest podobny do poprzedniego, ale jednak inny. RYSUNEK 3.36. Dodawanie nowej tekstury UV
WYGADZANIE SZWÓW PRZEZ WYPALANIE TEKSTUR~ 119
RYSUNEK 3.37. Nowe rozwinięcie siatki
4. Ten etap b dzie najbardziej interesujcy. W rozdziale 2. wypalalimy normalne jednego obiektu na teksturze UV drugiego obiektu. Tym razem zamiast normalnych b dziemy wypala poprzednio mapowan tekstur i zamiast z jednego obiektu na drugi, b dziemy j wypala na nowej teksturze tego samego obiektu. Wcz przycisk Render buttons (przyciski renderowania) i w panelu Bake (wypalanie) wcz opcj Textures (tekstury), po czym kliknij przycisk Bake (wypal) (patrz rysunek 3.38). Uzyskany w ten sposób obraz nowej tekstury pokazano na rysunku 3.39 (i w kolorowej wkadce). Z menu Image (Obraz) wybierz polecenie Save As (Zapisz jako) i zapisz ten obraz w pliku PNG o nazwie seams-color.png (szwy-kolor). RYSUNEK 3.38. Wypalanie tekstury
5. Plik seams-color.png otwórz w GIMP-ie. Zauwa, e stare szwy znajduj si teraz z dala od kraw dzi mapowania UV, a zatem mona je bez problemu zatuszowa . W tym celu wybierz narz dzie Lasso i zaznacz fragment obrazu bez szwu, tak jak na rysunku 3.40. Zanim to jednak zrobisz, upewnij si , e narz dzie to ma warto
parametru Feather Edges (Zmikczaj krawdzie) ustawion na 50 pikseli. Po utworzeniu zaznaczenia wcinij klawisze Ctrl+C i zaraz potem Ctrl+V, aby skopiowa i wklei
to zaznaczenie. Nast pnie, tak jak robie to poprzednio, kliknij przycisk New Layer
120 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.39. Nowa, wypalona tekstura
RYSUNEK 3.40. Zaznaczanie czystego obszaru tekstury
(Nowa warstwa) w oknie Layers (Warstwy), aby umieci wklejone zaznaczenie na jego wasnej warstwie. Za pomoc narz dzia Move (Przesunicie) ustaw now warstw na szwie, tak jak na rysunku 3.41. Uyj te narz dzia Rotate (Obrót), aby dopasowa
skopiowany fragment do nowego pooenia (patrz rysunek 3.42). To samo zrób
WYGADZANIE SZWÓW PRZEZ WYPALANIE TEKSTUR~ 121
RYSUNEK 3.41. Przesuwanie zaznaczenia w celu zakrycia szwu
RYSUNEK 3.42. Dopasowywanie zaznaczenia do nowego położenia przez obrót
122 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
z pozostaymi miejscami zawierajcymi widoczne szwy. Uwaaj przy tym, aby nie zmodyfikowa miejsc przylegajcych do kraw dzi nowego ukadu UV, bo to mogoby doprowadzi do powstania nowych widocznych szwów! Ostatecznie powiniene otrzyma tekstur zupenie pozbawion szwów, tak jak ta z rysunku 3.43. Korzystajc z polecenia File/Save As (Plik/Zapisz jako), zapisz widoczn warstw w pliku o nazwie no-seams-color.png (kolor bez szwów). RYSUNEK 3.43. Ostateczna wersja tekstury
6. Utwórz duplikat warstwy przez klikni cie przycisku Duplicate Layer (Powiel warstw), zaznaczonego na rysunku 3.44. Nowej warstwie nadaj nazw no-seam-bump (nierównoci bez szwów). B dzie to mapa nierównoci dla materiau metalicznego. Z menu Tools (Narzdzia) wybierz polecenie Color Tools/Desaturate (Narzdzia kolorów/Desaturacja) (patrz rysunek 3.45) i w oknie dialogowym Desaturate (Desaturacja), pokazanym na rysunku 3.46, zaznacz opcj Lightness (Jasno), a nast pnie kliknij przycisk OK. Obraz zostanie pozbawiony kolorów. Z menu Colors (Kolory) wybierz Invert (Inwersja), aby zamieni miejscami obszary jasne z ciemnymi. Wybierz jeszcze polecenie Brightness-Contrast (Jasno i kontrast) i dopasuj jasno oraz kontrast obrazu, aby uzyska efekt taki jak na rysunku 3.47. Zapisz widoczn warstw jako no-seam-bump.png, korzystajc oczywicie z polecenia File/Save As (Plik/Zapisz jako). Ostatecznie obraz tekstury powinien wyglda tak jak na rysunku 3.48. Pami taj, e jeli chcesz zachowa moliwo dalszej edycji poszczególnych warstw, musisz obraz zapisa dodatkowo w pliku z rozszerzeniem .xcf.
WYGADZANIE SZWÓW PRZEZ WYPALANIE TEKSTUR~ 123
RYSUNEK 3.44. Kopiowanie warstwy
RYSUNEK 3.45. Usuwanie kolorów z mapy nierówności
RYSUNEK 3.46. Okno dialogowe Desaturate (Desaturacja)
7. Teraz dysponujesz waciw tekstur. Wró do Blendera i otwórz j w oknie UV/Image Editor (Edytor UV/Obrazów). Jak wida na rysunku 3.49, szwy zostay wyeliminowane (barwna wersja tego rysunku znajduje si w kolorowej wkadce).
124 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.47. Dopasowywanie jasności i kontrastu
RYSUNEK 3.48. Ostateczna wersja tekstury nierówności
OSI GANIE REALIZMU DZIKI WZOM MATERIAOWYM~ 125
RYSUNEK 3.49. Tekstura bez szwów nałożona na model komina
Utworzye pozbawione szwów tekstury UV: jedn kolorow i drug czarno-bia, która b dzie map nierównoci. Obie tekstury b d stanowiy podstaw ostatecznego materiau. W tym momencie moesz usun zarówno star tekstur , jak i poprzedni materia o nazwie BaseColor. Z nast pnego podrozdziau dowiesz si , jak tworzy materiay w Blenderze w oparciu o system w zów (nodes).
Osi ganie realizmu dziki wzom materiaowym Tekstury s wanym elementem materiaów. Te, które utworzylimy do tej pory, b d decydoway o podstawowym kolorze metalowego komina, a take o widocznych na nim rysach i zadrapaniach. Za te ostatnie odpowiada b dzie czarno-biaa mapa nierównoci utworzona z tekstury kolorowej. Innym istotnym aspektem materiaów s parametry cieniowania, które decyduj o tym, co si dzieje ze wiatem padajcym na powierzchni pokryt danym materiaem. To od nich zaley, jak Blender imituje poyskliwo , matowo i inne tego typu waciwoci rzeczywistych materiaów. W przypadku naszego komina przydaaby si imitacja sadzy osadzajcej si w jego górnej cz ci. To musiaoby oznacza przyciemnienie materiau i zmniejszenie jego poyskliwoci w tych obszarach. Taki efekt mona uzyska na wiele sposobów, ale tym razem spróbujemy to zrobi metod czenia kilku materiaów o rónych zdolnociach odbijania wiata w jeden materia o strukturze w zowej. Aby utworzy taki materia, wykonaj nast pujce czynnoci: 1. Jeli nie zrobie tego do tej pory, usu utworzony wczeniej materia o nazwie BaseColor. W tym celu wcz przycisk Editing (edytowanie) i w panelu Links and Materials (Powizania i materiay) wybierz indeks tego materiau, a nast pnie kliknij przycisk Delete (Usu ). Teraz utwórz nowy materia, klikajc w tym samym panelu przycisk New (Nowy). Otwórz okno Node Editor (edytor w zów) i w jego nagówku kliknij przycisk Use Nodes (uyj w zów), aby utworzy nowy w ze materiaowy
126 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
(patrz rysunek 3.50). Z rozwijanej listy materiaów wybierz opcj Add New (Dodaj nowy), tak jak na rysunku 3.51. Nowy materia nazwij nospec (bez odbi ), jak na rysunku 3.52. RYSUNEK 3.50. Tworzenie węzła materiałowego
RYSUNEK 3.51. Dodawanie nowego materiału
2. Wró do okna przycisków, aby ustali parametry materiau nospec. Odpowiednie wartoci tych parametrów pokazano na rysunku 3.53. Warto Spec (specularity — odblaskowo ) obni do poziomu 0.07, a Hard (hardness — twardo ) zwi ksz do 108. Wybierz cieniowanie typu Lambert i CookToor. Utwórz trzy tekstury o nazwach color (kolor), bump (nierównoci) i dark (przyciemnienie). Pierwsze dwie powinny by teksturami obrazkowymi z mapowaniem UV wykorzystujcymi utworzone wczeniej obrazy tekstur. W panelu Map Input (Mapowanie wejcia) wcz opcj UV.
OSI GANIE REALIZMU DZIKI WZOM MATERIAOWYM~ 127
RYSUNEK 3.52. Węzeł materiału nospec (bez odbić)
RYSUNEK 3.53. Materiał nospec (bez odbić)
128 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
3. W panelu Map To (Mapowanie) wcz opcj Col (kolor) dla tekstury color, a dla tekstury bump wcz Nor (normalne) i ustaw wspóczynnik Nor na 1. 4. Tekstura dark ma reprezentowa przyciemnienie materiau spowodowane sadz. W przeciwiestwie do dwóch poprzednich nie jest tekstur obrazkow, lecz typu Blend (mieszanie). Jej parametry s pokazane na rysunku 3.54, a wartoci mapowania — na rysunku 3.55. Jak wida , zastosowaem mapowanie Orco (original coordinates — oryginalne wspórz dne) i ustawiem wszystkie wspórz dne mapowania na Z. RYSUNEK 3.54. Tekstura dark (przyciemnienie)
RYSUNEK 3.55. Mapowanie tekstury dark (przyciemnienie)
OSI GANIE REALIZMU DZIKI WZOM MATERIAOWYM~ 129
5. Wró do okna Node Editor (edytor w zów), uaktywnij w ze materiau nospec i wcinij klawisze Shift+D, aby skopiowa ten w ze (patrz rysunek 3.56). W nowym w le kliknij przycisk z liczb 2 (obok nazwy materiau), aby odczy w ze od materiau nospec, a nast pnie utwórz nowy materia i nadaj mu nazw spec (z odbiciami), tak jak na rysunku 3.57. Nowy materia powinien róni si od materiau nospec tylko wartociami parametrów Spec (odblaskowo ) i Hard (twardo ) w panelu Shaders (Cieniowanie) (patrz rysunek 3.58). Zmie te wartoci na takie, jakie widzisz na rysunku. RYSUNEK 3.56. Powielanie węzła materiału nospec
RYSUNEK 3.57. Tworzenie nowego materiału o nazwie spec (z odbiciami)
130 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
RYSUNEK 3.58. Parametry cieniowania dla materiału spec (z odbiciami)
6. Znów wró do okna Node Editor (edytor w zów). Tym razem wcinij klawisz spacji i dodaj zupenie nowy w ze materiau. Jeszcze raz wydaj polecenie Add New (Dodaj nowy) i nadaj nowemu materiaowi nazw blend (mieszany). Jego parametry ustaw tak, jak pokazano na rysunku 3.59. Jest to materia bezcieniowy, wi c parametry cieniowania nie maj tu znaczenia. Przypisz mu tylko jedn tekstur typu Blend (mieszanie) z mapowaniem Orco. Teksturze tej nadaj nazw blend i ustaw jej parametry tak jak na rysunku 3.60. RYSUNEK 3.59. Materiał o nazwie blend (mieszany)
OSI GANIE REALIZMU DZIKI WZOM MATERIAOWYM~ 131
RYSUNEK 3.60. Tekstura o nazwie blend
7. W ze materiau blend b dzie suy do ustalania parametrów mieszania materiaów spec i nospec. Dodaj w ze miksujcy — wcinij klawisz spacji i wybierz Add/Color/Mix (dodaj/kolor/miksowanie). Nast pnie utwórz nast pujce poczenia mi dzy w zami (patrz rysunek 3.61): RYSUNEK 3.61. Łączenie materiałów za pomocą węzła miksującego
132 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
wyjciowe gniazdo Color (kolor) w za materiau blend pocz z wejciowym gniazdem Fac (factor — czynnik) w za Mix, wyjciowe gniazda Color (kolor) w zów materiaów nonspec i spec pocz z wejciowymi gniazdami, odpowiednio, Color 1 (kolor 1) i Color 2 (kolor 2) w za Mix, wyjciowe gniazdo Color (kolor) w za Mix pocz z wejciowym gniazdem Color (kolor) w za Output (wyjcie). 8. Wyrenderuj ostateczny produkt. Powiniene otrzyma obraz podobny do tego z rysunku 3.62 z doln cz ci komina zniszczon, ale poyskujc, i górn ciemn, pokryt sadzami.
RYSUNEK 3.62. Komin ukończony
Zobaczye, jak mona tworzy realistyczne tekstury przy uyciu Blendera i GIMP-a i nauczye si wcza je do materiaów konstruowanych w oparciu o system w zów. Z nast pnych rozdziaów dowiesz si wi cej na temat tego systemu i jego zastosowa w komponowaniu obrazów i sekwencji wideo.
OSI GANIE REALIZMU DZIKI WZOM MATERIAOWYM~ 133
WIAT BLENDERA HISTORIA COGA Wielu użytkowników Blendera swoją wiedzę o materiałach zdobywało bezpośrednio lub pośrednio z materiałów szkoleniowych publikowanych przez Colina Litstera, będącego jednym z filarów społeczności zrzeszającej miłośników tego programu, znanego bardziej pod pseudonimem Cog. Cog to również roboczy tytuł jego ambitnego i wciąż rozwijanego przedsięwzięcia z dziedziny animacji komputerowej. Od kilku lat Colin dokumentuje swoją pracę w formie instruktaży i przykładowych animacji, pokazując efekty badań nad możliwościami Blendera. Dzięki jego pracy znacznie poszerzyły się granice tego, co jest możliwe do uzyskania w tym programie. Witryna internetowa poświęcona projektowi Coga stała się źródłem jednych z najlepszych wśród darmowych materiałów szkoleniowych dostępnych w sieci i wielu dzisiejszych znawców Blendera właśnie tu zdobywało swoją podstawową wiedzę o tym programie. Colin prowadził też wiele oficjalnych warsztatów organizowanych przez fundację Blendera. Jest również autorem jednego rozdziału książki Rolanda Hessa The Essential Blender: Guide to 3D Creation with the Open Source Suite Blender (Blender Foundation i No Starch Press, 2007). Zawartość witryny Cog Project powinna być lekturą obowiązkową dla każdego, kto chce dogłębnie poznać blenderowe materiały, tekstury i system węzłów. Do wykonania widocznego na poniższym rysunku domu Colin użył wielu kombinacji tekstur UV, tekstur proceduralnych i materiałów łączonych przy użyciu systemu węzłów. Dom ten jest jednym z elementów scenografii wspomnianego wyżej filmu animowanego. (Kolorowa wersja obrazu znajduje się we wkładce).
134 ~ROZDZIA 3. ZWIKSZANIE REALIZMU SCEN ZA POMOC ODPOWIEDNICH TEKSTUR I MATERIAÓW
Podsumowanie Uywaj efektywnie narzdzi do mapowania tekstur. Blender dysponuje jednymi z najlepszych narz dzi do mapowania tekstur UV. Jeli je opanujesz, b dziesz móg nakada paskie obrazy na trójwymiarowe modele dokadnie tak, jak sobie zaplanujesz. Opanuj to Na pycie doczonej do ksiki odszukaj plik o nazwie engine.blend i otwórz go. Utwórz szwy, rozwi siatk i wyeksportuj ukad cianek do GIMP-a. Na koniec naó testow siatk UV na model. cz tekstury, aby uzyska rozmaite efekty powierzchniowe. Umiej tne posugiwanie si teksturami UV i funkcj wypalania tekstur pozwoli Ci tworzy bezszwowe tekstury imitujce najrozmaitsze powierzchnie. Bardzo pomocna jest przy tym znajomo
programu do edycji obrazów, na przykad GIMP-a. Opanuj to Wykorzystaj zamieszczon na pycie tekstur metal_texture.jpg lub inn pobran z internetu bd przygotowan wasnor cznie i przy uyciu metod poznanych w tym rozdziale utwórz bezszwow tekstur koloru oraz map nierównoci dla modelu engine.blend. Wykorzystuj maksymalnie moliwoci dostpnego w Blenderze systemu materiaów i twórz zoone materiay oraz cieniowania. Generowanie tekstur to tylko pierwszy etap tworzenia realistycznych materiaów. Kluczowe znaczenie ma te waciwe ich mapowanie i ustawianie parametrów materiaów. Opanuj to Obie tekstury, które utworzye w poprzednim wiczeniu, wcz do jednego materiau, aby decydoway o kolorze i nierównociach powierzchni. Przez odpowiednie ustawienie waciwoci cieniowania nadaj materiaowi przekonujco metaliczny wygld.
Rozdzia 4.
Komponowanie wideoklipów przy uyciu wzów Zaimplementowany w Blenderze system w zów (nodes system) umoliwia manipulowanie rozmaitymi elementami kompozycyjnymi i czenie ich dokadnie tak, jak sobie yczymy. Za pomoc w zów mona komponowa zarówno obrazy nieruchome, jak i sekwencje wideo. Do edytowania tych ostatnich suy w Blenderze nieliniowy edytor sekwencji wideo (VSE), ale nim zajmiemy si w rozdziale 5., „Edytor wideo (VSE)”. Teraz postaramy si zg bi jedn z najcz ciej stosowanych technik komponowania materiaów wideo, jak jest metoda green screen. Gdy si z ni zapoznasz, atwiej zrozumiesz sposoby czenia obrazów rónych typów. Z tego rozdziau dowiesz si , jak:
przy uyciu systemu w zów tworzy maski green screen, uywa krzywych i haczyków do rotoskopowego maskowania niepodanych elementów, usuwa zabarwienia przez manipulowanie kanaami kolorów.
Tworzenie maski green screen za pomoc wzów Wan cz ci procesu komponowania obrazów wideo jest oddzielanie wybranych elementów od oryginalnego otoczenia, aby moliwe byo swobodne przenoszenie ich do innego rodowiska wizualnego. Mona to zrobi na kilka sposobów w zalenoci od rodzaju materiau ródowego. Zazwyczaj polega to na wykonaniu odpowiedniej maski (matte), czyli specjalnego obrazu, który jedne cz ci oryginalnego obrazu zasania, a dla pozostaych jest przezroczysty. Kompozycyjny system w zów umoliwia wielorakie przetwarzanie i czenie obrazów, filmów wideo, renderingów i innych materiaów wizualnych o charakterze dwuwymiarowym. Operacje przetwarzania odbywaj si w sposób nieliniowy i s reprezentowane przez w zy grafu. Zarówno poszczególne w zy, jak i sam graf mona w kadej chwili modyfikowa . W tym podrozdziale zobaczysz, jak kompozycyjny system w zów moe by pomocny w tworzeniu maski green screen dla nagrania wideo. Jeeli zrozumiesz omawiane tu zagadnienia, atwiej Ci b dzie opanowa inne zastosowania tego systemu.
136 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
Nagrania wideo typu green screen Jeli z góry wiadomo, e filmowany obiekt trzeba b dzie umieci w innej scenografii, zwykle filmuje si go na jednobarwnym tle, które póniej mona atwo wyeliminowa
przy uyciu opisanych niej technik kompozycyjnych. Obecnie najcz ciej stosowanym kolorem takiego ta jest ziele, std nazwa green screen (zielony ekran). Oczywicie, aby zarejestrowa film w technice green screen, trzeba dysponowa
odpowiednio duym, zielonym ekranem. Wi kszo studiów multimedialnych, wcznie z tymi, które funkcjonuj przy uniwersytetach i uczelniach technicznych, jest wyposaona we wszystko, co niezb dne do realizacji tego typu nagra. Zreszt przy odrobinie pomysowoci i niewielkim nakadem pracy moesz sam skonstruowa odpowiedni sprz t. Wiele praktycznych wskazówek na pewno znajdziesz w internecie. Na potrzeby prezentowanego niej wiczenia moesz wykorzysta krótki filmik green screen zapisany jako sekwencja obrazów JPEG w folderze greenscreen na pycie doczonej do ksiki. Wideoklip pochodzi z filmu Normana Englanda The iDol (www.theidol-movie.com) i przedstawia osob idc w kierunku kamery (patrz rysunek 4.1 i kolorowa wkadka). Klip zawiera kilka elementów, które dla operatora pracujcego nad kompozycj mog stanowi nie lada wyzwanie. Które to s elementy, jakie sprawiaj trudnoci i jak takie problemy naley rozwizywa , dowiesz si w trakcie lektury tego rozdziau. PAR SÓW O KODEKACH Jeśli planujesz nagrywać, edytować i komponować klipy wideo, musisz mieć świadomość, że programy typu open source nie obsługują wszystkich kodeków. Producenci programów profesjonalnych z reguły zakładają, że użytkownik korzysta z kodeków dostarczanych przez nich. Materiał zamieszczony na płycie dołączonej do książki został zarejestrowany kamerą Panasonic VariCam w trybie wysokiej rozdzielczości (HD). Kamera ta wyposażona jest w kodek DVCProHD. Oprogramowanie firmowe odczytujące nagrania zapisane przy użyciu tego kodeka są dostępne dla systemów Mac i Windows, ale nie znam żadnej aplikacji open source, która by z nim współpracowała. Zanim przystąpisz do nagrywania filmu, sprawdź, z jakiego kodeka możesz skorzystać. Zagadnienie staje się jeszcze istotniejsze, gdy używasz oprogramowania open source w systemie Linux. Przed wydaniem pieniędzy na zakup lub wypożyczenie sprzętu upewnij się, że będzie on współpracował z Twoim programem.
Praca z wzami kompozycyjnymi Tworzenie lub inaczej wydobywanie (pulling) maski green screen nie jest wcale trudne, ale wymaga znajomoci kompozycyjnego systemu w zów, jaki zosta zaimplementowany w Blenderze. Zanim przejdziemy do realizacji konkretnego zadania, przeka Ci kilka ogólnych informacji o w zach kompozycyjnych. W zy mog by rozmaitych typów. cz si wzajemnie, tworzc sie , nazywan przez niektórych makaronem (noodle). W zalenoci od typu kady w ze ma co najmniej jedno gniazdo wejciowe lub co najmniej jedno gniazdo wyjciowe, ale równie moe mie po kilka jednych i drugich. Gniazda wejciowe znajduj si po lewej stronie w za, a wyjciowe — po prawej. Poczenia mi dzy w zami realizowane s przez linie wychodzce z gniazd wyjciowych jednego w za i wchodzce do gniazd wejciowych innych w zów.
TWORZENIE MASKI GREEN SCREEN ZA POMOC WZÓW~ 137
RYSUNEK 4.1. Scena zarejestrowana na tle zielonego ekranu
Aby poczy dwa w zy, wystarczy ustawi wskanik myszy na gniedzie wyjciowym jednego w za, wcisn lewy przycisk myszy i bez zwalniania go przecign wskanik do gniazda wejciowego drugiego w za. W celu przerwania poczenia po prostu wcinij lewy przycisk myszy i wykonaj ruch, jakby chcia przeci lini poczenia.
138 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
Aby zestawi w zy w celu wydobycia maski green screen, wykonaj nast pujce czynnoci: 1. W Blenderze otwórz okno Node Editor (edytor w zów) przez wybranie jego nazwy z isty typów okien (patrz rysunek 4.2). W nagówku wcz kolejno przyciski Composite Nodes (w zy kompozycyjne) i Use Nodes (uyj w zów) pokazane na rysunku 4.3. Blender wywietli domylny ukad zoony z dwóch w zów: wejciowego Render Layers (warstwy renderingu) po lewej stronie i wyjciowego Composite (kompozycja) po prawej, tak jak na rysunku 4.4. W ze Composite (kompozycja) pokazuje, jak b dzie wyglda obraz zrenderowany, gdy wczysz przycisk Do Composite (utwórz kompozycj ) w panelu Anim (Animacja) nalecym do kontekstu Render buttons (przyciski renderowania). RYSUNEK 4.2. Otwieranie okna Node Editor (edytor węzłów)
RYSUNEK 4.3. Przyciski Composite Nodes (węzły kompozycyjne) i Use Nodes (użyj węzłów)
RYSUNEK 4.4. Domyślny układ węzłów kompozycyjnych
TWORZENIE MASKI GREEN SCREEN ZA POMOC WZÓW~ 139
2. W ze Render Layers (warstwy renderingu) nie b dzie Ci teraz potrzebny, wi c kliknij go, a nast pnie usu przez wcini cie klawisza X. Zamiast niego uyjesz oryginalnego nagrania green screen. Obrazy nieruchome i nagrania wideo mona importowa
do systemu w zów za pomoc w za Image (obraz). Aby go utworzy , wcinij klawisz spacji i z otwartego w ten sposób menu wybierz kolejno Add (Dodaj), Input (wejcie) oraz Image (Obraz), tak jak na rysunku 4.5. W dolnej cz ci w za kliknij przycisk Load New (wczytaj nowy), a nast pnie w oknie przegldarki plików odszukaj folder, do którego skopiowae sekwencj obrazów green screen z pyty doczonej do ksiki. Wcinij klawisz A, aby zaznaczy wszystkie pliki (patrz rysunek 4.6), po czym kliknij przycisk Select Image (wybierz obraz). W rezultacie powiniene otrzyma ukad w zów taki jak na rysunku 4.7. W prawym dolnym rogu w za Image (obraz) znajdziesz may przycisk z ikon w ksztacie samochodu, wcz go, aby mie pewno , e po kadej zmianie klatki obraz zostanie automatycznie odwieony. W celu sprawdzenia, czy wszystko dziaa, przejd o dziesi klatek do przodu — do przeczania klatek su klawisze ze strzakami w gór i w dó. RYSUNEK 4.5. Dodawanie węzła wejściowego Image (obraz)
RYSUNEK 4.6. Zaznaczanie sekwencji obrazów
140 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.7. Układ węzłów po wczytaniu obrazów
3. Zapewne chciaby mie moliwo ledzenia na bieco efektów swoich poczyna. Umoliwi Ci to w ze Composite (kompozycja), który wywietla ostateczn wersj przetwarzanego obrazu. Do caego grafu moesz podczy tylko jeden taki w ze. Moesz jednak podczy dowoln liczb w zów wyjciowych typu Viewer (wizjer), z których kady moe wywietli pobierany przez siebie stan obrazu w oknie UV/Image Editor (Edytor UV/Obrazów), jeli tylko w nagówku tego okna ustawisz tryb Viewer Node (w ze wizjera). Przykad dziaania takiego w za jest pokazany na rysunku 4.8. Do tworzenia w zów typu Viewer (wizjer) suy polecenie Add/Output/Viewer (Dodaj/Wyjcie/Viewer) dost pne w menu otwieranym za pomoc klawisza spacji. RYSUNEK 4.8. Obraz pobrany przez węzeł Viewer (wizjer) może być wyświetlany w oknie UV/Image Editor (Edytor UV/Obrazów)
TWORZENIE MASKI GREEN SCREEN ZA POMOC WZÓW~ 141
4. Pierwsz czynnoci, do której uyjesz w zów typu Viewer (wizjer), b dzie dokadne zbadanie kanaów poszczególnych kolorów obrazu. Taka analiza pomoe Ci oceni
jako przetwarzanych obrazów i uatwi zrozumienie funkcjonowania maski green screen. Aby zestawi odpowiedni ukad w zów, wcinij klawisz spacji i wybierz kolejno Add (Dodaj), Convertor (konwerter) i Separate RGBA (separuj RGBA), tak jak na rysunku 4.9. Utworzony w ten sposób w ze separujcy kanay obrazu ma jedno gniazdo wejciowe Image (obraz) i cztery gniazda wyjciowe dla kanaów: czerwonego (R), zielonego (G), niebieskiego (B) i alfa (A). Utwórz te trzy w zy typu Viewer (wizjer) (po utworzeniu pierwszego moesz go dwukrotnie skopiowa
przez wcini cie klawiszy Shift+D) i podcz je do gniazd R, G i B w za separujcego, tak jak na rysunku 4.10 (ten sam rysunek znajduje si równie w kolorowej wkadce). Jak si zapewne domylasz, najwi kszy kontrast wyst puje w kanale koloru zielonego, gdzie to jest bardzo intensywne dzi ki zielonemu ekranowi. Znacznie sabiej zrónicowany pod wzgl dem jasnoci jest kana koloru czerwonego. Wanie ta rónica kontrastowoci mi dzy kanaami kolorów zielonego i czerwonego ma istotny wpyw na proces tworzenia maski green screen. RYSUNEK 4.9. Tworzenie węzła Separate RGBA (separuj RGBA)
5. Teraz moesz wykorzysta t rónic intensywnoci mi dzy kanaami do utworzenia maski. Blender oferuje specjalne w zy umoliwiajce szybkie tworzenie masek, ale lepiej poznasz cay proces, jeli zrealizujesz go wasnor cznie. Poza tym takie przeledzenie wszystkich etapów uatwi Ci zrozumienie, na czym polega maskowanie niepodanych elementów (garbage matting). Rozpocznij od odj cia kanau czerwonego od zielonego za pomoc w za Subtract (odejmij). Aby utworzy ten w ze, wcinij klawisz spacji, wybierz kolejno Add (Dodaj), Color (kolor) i Mix (mieszaj), a nast pnie w w le wybierz z rozwijanej listy opcj Subtract (odejmij). Poniewa pierwszy plan zawiera znacznie wi cej czerwieni ni to, po odj ciu kanaów staje si on duo ciemniejszy, a to zmienia si tylko nieznacznie, co wida na rysunku 4.11. Nast puje wi c coraz silniejsze oddzielanie pierwszego planu od ta. Teraz dodaj w ze ColorRamp (skala koloru) — wcinij klawisz spacji i wybierz kolejno Add (Dodaj),
142 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.10. Analiza kanałów poszczególnych kolorów
RYSUNEK 4.11. Odejmowanie kanału czerwonego od zielonego
Convertor (konwerter) i ColorRamp (skala kolorów). Skonfiguruj go tak, jak pokazano na rysunku 4.12, aby zamieni miejscami obszary jasne z ciemnymi i jeszcze bardziej zwi kszy kontrast, a do uzyskania obrazu o dwóch kolorach: czarnym i biaym. Przez dopasowywanie pooenia i szerokoci przejcia od bieli do czerni na skali kolorów moesz zwi ksza obszary czarne kosztem biaych i na odwrót. Ostatecznie powiniene uzyska mask green screen podobn do tej z rysunku 4.13.
TWORZENIE MASKI GREEN SCREEN ZA POMOC WZÓW~ 143
RYSUNEK 4.12. Odwracanie i zwiększanie kontrastu za pomocą węzła ColorRamp (skala kolorów)
RYSUNEK 4.13. Podstawowa maska green screen
DZIWACTWA SYSTEMU WZÓW Prawdopodobnie twórcy systemów węzłów mieli dobre intencje, starając się uprzedzić użytkownika w jego poczynaniach, ale efektem tego są dość denerwujące zachowania tego systemu w niektórych sytuacjach. Gdy na przykład tworzymy nowe połączenie z gniazdem wejściowym, które ma już połączenie z innym źródłem sygnału, dotychczasowe połączenie jest automatycznie przełączane do najbliższego wolnego gniazda tego samego węzła. Rzadko jest to zachowanie pożądane i zmusza nas do wykonywania dodatkowych ruchów myszą w celu przerwania takiego połączenia. Często zdarza się, że sygnał, który docierał wcześniej do gniazda Image (obraz), nagle trafia do gniazda Alpha (alfa) i daje zupełnie nieoczekiwane efekty. Pamiętaj o tym i natychmiast usuwaj takie niepożądane połączenia; później możesz stracić wiele czasu i nerwów, zanim odkryjesz, co się stało. Miejmy nadzieję, że w następnych wydaniach Blendera będzie to naprawione, a jeśli zostanie, to tylko jako opcja do wyboru.
144 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
Maskowanie niepo danych elementów Maska, któr wanie utworzye, byaby bardzo dobra, gdyby nie jeden problem. Otó nie oddziela ona filmowanej postaci od otoczenia w naleyty sposób. Zielony ekran nie zakry elementów wyposaenia studyjnego, a nawet nie wypeni caego kadru. To sprawio, e maska zawiera wiele niepodanych biaych obszarów poza sylwetk filmowanej postaci. Proces ich usuwania nazywany jest (z oczywistych powodów) maskowaniem elementów niepo danych (garbage matting). W najprostszych przypadkach proces ten sprowadza si do zakrywania odpowiednich fragmentów maski czarnymi prostoktami. Jednak nasz przykad jest bardziej skomplikowany. Otó film przedstawia posta zmierzajc w kierunku kamery. W pewnym momencie kontury tej postaci zaczynaj zlewa si z konturami elementów wyposaenia studyjnego, co wyranie wida na rysunku 4.14. Maska green screen wyglda wtedy tak jak na rysunku 4.15. Nie ma tu prostego sposobu oddzielenia pierwszoplanowej postaci od elementów ta na podstawie rónic kolorystycznych. Ponadto elementy ta musz by tak maskowane, aby w adnym momencie nie naruszy
sylwetki poruszajcej si postaci. RYSUNEK 4.14. Skomplikowany przypadek maskowania elementów niepożądanych
Problem ten mona rozwiza za pomoc animowanej maski elementów niepodanych wykonanej przy uyciu krzywych i haczyków. Rozwizanie takie jest prost form rotoskopii, czyli r cznego opracowywania poszczególnych klatek filmu bd animacji. Metoda ta jest uyteczna, gdy w gr wchodzi stosunkowo niewielka liczba klatek. W przypadku duszych filmów byaby zbyt czasochonna.
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 145
RYSUNEK 4.15. Problematyczna maska green screen
Aby utworzy animowan mask elementów niepodanych, wykonaj nast pujce czynnoci: 1. Jak ju wspomniaem, mask animowan najatwiej utworzy przy uyciu krzywych i haczyków. Poniewa s to obiekty trójwymiarowe, maska b dzie musiaa by
renderowana. Najpierw jednak otwórz okno 3D View (Widok 3D) i ustaw w nim widok z kamery — po prostu wcinij klawisz 0 na klawiaturze numerycznej. W oknie przycisków wcz Render buttons (przyciski renderowania) i w panelu Format wybierz HD jako wyjciowy format obrazu (patrz rysunek 4.16). Jest to konieczne, aby wyrenderowana maska miaa dokadnie takie same wymiary, jak przetwarzany materia filmowy. RYSUNEK 4.16. Ustawianie formatu maski
146 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
2. Aby nagranie wideo byo widoczne w oknie 3D View (Widok 3D), musi by wczytane jako sekwencja obrazów ta. W nagówku okna otwórz menu View (Widok) i wybierz polecenie Background Image (Obraz jako to). W oknie dialogowym Background Image (Obraz w tle) kliknij najpierw przycisk Use Background Image (Uyj obrazu w tle), a potem Load (wczytaj). W oknie przegldarki plików odszukaj folder greenscreen, zaznacz w nim pierwszy plik (0001.jpg) i kliknij przycisk Select Image (wybierz obraz). W oknie dialogowym Background Image (Obraz w tle) wcz opcje Sequence (sekwencja) i Auto Refresh (odwieaj automatycznie), a w polu Frames (klatki) wpisz 240 (patrz rysunek 4.17). Po wykonaniu tych czynnoci powiniene zobaczy okno widokowe podobne do tego, jakie pokazano na rysunku 4.18. RYSUNEK 4.17. Wczytywanie sekwencji obrazów tła
RYSUNEK 4.18. Trójwymiarowy widok z obrazem w tle
3. Upewnij si , e kursor 3D znajduje si przed kamer i w rozsdnej od niej odlegoci. Od jego pooenia zaley, gdzie nowe obiekty b d umieszczane. Sprawd równie, czy w oknie preferencji Edit Methods (metody edycji), w sekcji Add new objects (dodaj nowe obiekty) wczona jest opcja Aligned to View (zgodnie z widokiem). Zachowujc nadal widok z kamery, wcinij klawisz spacji i wybierz
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 147
polecenie Add/Curve/Bezier Circle (Dodaj/Krzywa/Okrg Beziera), tak jak na rysunku 4.19. Powiniene otrzyma okrg podobny do tego z rysunku 4.20 (kolorowa wersja tego rysunku znajduje si we wkadce). Nie przejmuj si , jeli rozmiar Twojego okr gu jest nieco inny. I tak wkrótce b dziesz go skalowa . Zadbaj tylko o to, aby cay okrg by widoczny i dao si nim atwo manipulowa . RYSUNEK 4.19. Tworzenie okręgu Béziera
RYSUNEK 4.20. Okrąg Béziera
4. Zaznacz wszystkie punkty kontrolne krzywej i wcinij klawisz V, aby wymusi
tryb wektorowy, w którym kady uchwyt sterujcy jest skierowany w stron uchwytu ssiedniego. To sprawi, e okrg zmieni si w kwadrat (patrz rysunek 4.21). Obró ten kwadrat o 45 stopni, tak jak na rysunku 4.22, a nast pnie przeskaluj go wzdu lokalnych osi X i Y. Aby wczy odpowiednie skalowanie, wcinij klawisz S, a potem dwukrotnie klawisz X lub Y zalenie od osi, wzdu której chcesz skalowa . Ostatecznie powiniene otrzyma krzyw o ksztacie zaprezentowanym na rysunku 4.23.
148 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.21. Zmień typ punktów kontrolnych na wektorowy (klawisz V)
RYSUNEK 4.22. Obróć krzywą o 45 stopni
5. Wcinij klawisz Z, aby wywietli krzyw w trybie Solid (Solidny) (patrz rysunek 4.24). To b dzie wanie maska elementów niepodanych. Jednak zanim stanie si w peni uyteczna, musi zosta zrenderowana w kolorze biaym. A zatem musisz przypisa jej odpowiedni materia. Zrób to w zwyky sposób. Wybierz cakowicie biay materia z wczon opcj Shadeless (bezcieniowy), czyli taki jak na rysunku 4.25.
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 149
RYSUNEK 4.23. Krzywa po przeskalowaniu wzdłuż osi X i Y
RYSUNEK 4.24. Krzywa w trybie rysowania Solid (Solidny)
6. Na koniec musisz przeprowadzi rigowanie krzywej za pomoc haczyków (hooks), aby moga by animowana. Zaznacz wewn trzn (t po prawej stronie) kraw d krzywej — najszybciej zrobisz to, wciskajc klawisz B i tworzc prostoktn ramk wokó tej kraw dzi— a nast pnie wcinij klawisz W i wybierz polecenie Subdivide (Podziel). Podziel kraw d trzykrotnie, aby uzyskaa wygld taki jak na rysunku 4.26 (rysunek ten znalaz si take w kolorowej wkadce w rodku ksiki). Teraz b dziesz musia do kadego punktu kontrolnego zaczepi pusty haczyk. Najpierw zaznacz punkt kontrolny w prawym górnym naroniku. Upewnij si , e zaznaczye punkt kontrolny, a nie jego uchwyt. Wcinij klawisze Ctrl+H i wybierz Add, New Empty (dodaj, nowy pusty), aby utworzy pusty haczyk zaczepiony do zaznaczonego punktu kontrolnego (patrz rysunek 4.27). To samo zrób dla pozostaych punktów kontrolnych na prawej kraw dzi krzywej. Za kadym razem sprawdzaj dokadnie, czy zaznaczye punkt kontrolny — oba jego uchwyty te s wtedy zaznaczone, co wida na rysunku 4.28 (jeszcze lepiej zobaczysz to w kolorowej wkadce).
150 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.25. Ustawienia dla białego, bezcieniowego materiału
RYSUNEK 4.26. Efekt trzykrotnego podziału krawędzi
RYSUNEK 4.27. Dodawanie haczyka do narożnika
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 151
RYSUNEK 4.28. Dodawanie haczyka do kolejnego punktu kontrolnego
Nie zapomnij doda haczyka do prawego dolnego punktu kontrolnego. Rozmiary haczyków s zalene od tego, jak daleko od kamery umiecie kursor 3D. Jeli uwaasz, e s zbyt mae lub zbyt due, moesz je teraz przeskalowa . W tym celu w nagówku okna 3D View (Widok 3D) rozwi list Pivot (rodek obrotu) i wybierz z niej opcj Individual Centers (rodki indywidualne). Nast pnie zaznacz jeden haczyk, wcinij klawisze Shift+G i wybierz opcj zaznaczenia Objects of Same Type (obiekty tego samego typu), a nast pnie przeskaluj wszystkie haczyki, tak jak uwaasz za stosowne. To moe spowodowa niewielk zmian ksztatu krzywej, co wida na rysunku 4.29, ale tym si nie przejmuj, bo i tak ten ksztat b dziesz zmienia w poszczególnych klatkach. RYSUNEK 4.29. Pełny zestaw haczyków po lekkim przeskalowaniu
152 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
Animowanie maski elementów niepo danych Po zestawieniu krzywej i haczyków moesz przystpi do animowania maski, tak aby w caym nagraniu elementy niepodane byy zasoni te. W tym celu wykonaj nast pujce czynnoci: 1. Rozpocznij od klatki pierwszej. Poustawiaj haczyki tak, aby maska zakrya wszystkie elementy ta. Ja musiaem przesun tylko prawy górny naronik maski, aby zakry
widoczny tam napis (patrz rysunek 4.30). Nast pnie wcinij klawisze Shift+G i wybierz opcj Objects of Same Type (obiekty tego samego typu), tak jak na rysunku 4.31, aby zaznaczy wszystkie haczyki. Utwórz dla nich klatk kluczow — wcinij klawisz I i wybierz LocRotScale (pooenie-obrót-skala), tak jak na rysunku 4.32. RYSUNEK 4.30. Przesunięcie haczyka w celu zasłonięcia napisu
2. Za pomoc klawisza ze strzak w gór moesz przesun nagranie do przodu o 10 klatek naraz. Przejd w ten sposób do miejsca, gdzie posta pierwszoplanowa zblia si do elementów ta, czyli do klatki 150. Ustaw haczyki tak, aby maska zakrywaa elementy ta, ale jednoczenie bya daleko od postaci pierwszoplanowej (patrz rysunek 4.33). Przewijaj nagranie o kolejne 10 klatek i za kadym razem ustawiaj haczyki, aby maska zakrywaa to oraz by w miejscach nakadania si pierwszego planu i ta jej kraw d przebiegaa dokadnie wzdu konturów filmowanej postaci, tak jak na rysunku 4.34. Nie musisz ukada maski wzdu caego konturu postaci — wystarczy zrobi to tylko tam, gdzie sylwetka postaci pokrywa si z elementami ta. Haczyki mog by nie tylko przesuwane, ale równie obracane i skalowane. Dzi ki temu moesz uformowa mask bardzo dokadnie. Gdy posta
wypeni cay kadr, maska powinna cakowicie znikn z pola widzenia kamery, tak jak na rysunku 4.35.
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 153
RYSUNEK 4.31. Zaznaczanie haczyków na podstawie typu obiektu
RYSUNEK 4.32. Kluczowanie haczyków
RYSUNEK 4.33. Kształtowanie maski
154 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.34. Maskowanie obszarów wokół postaci
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 155
RYSUNEK 4.34. Ciąg dalszy
156 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.35. Klatka kluczowa z maską poza kadrem
3. Musisz te zamaskowa fragment ta po prawej stronie kadru. Cay proces b dzie tu przebiega podobnie jak po stronie lewej, a o jego wykonanie zostaniesz poproszony w jednym z wicze prezentowanych na kocu rozdziau. Po utworzeniu kluczy w odst pach 10-klatkowych, poczwszy od klatki 1., wró na pocztek nagrania, przejd do klatki 5. i powtórz cay proces (równie w odst pach 10-klatkowych), przy okazji popraw pooenie haczyków wsz dzie, gdzie to b dzie konieczne. Na koniec przejrzyj ca sekwencj klatka po klatce i wprowad niezb dne poprawki. Ostatecznie maska powinna wyglda mniej wi cej tak jak na rysunku 4.36.
Stosowanie warstw renderingu i wzów Jak wida , maska elementów niepodanych jest tworzona w przestrzeni trójwymiarowej. Mona j prosto wyrenderowa , jak kad scen . Trzeba tylko w oknie przycisków renderowania wyczy opcj Do Composite (utwórz kompozycj ). Dla celów kompozycyjnych nie b d nam równie potrzebne ustawienia wiata, czyli caego otoczenia sceny. Przejd zatem do podkontekstu World buttons (Ustawienia wiata) i kliknij przycisk X obok pola z nazw wiata (patrz rysunek 4.37). Renderingi przestrzeni trójwymiarowej mona wprowadzi do systemu w zów za pomoc w zów typu Render Layers (warstwy renderingu). Moliwo niezalenego renderowania poszczególnych warstw w poczeniu ze wspomnianymi w zami pozwala na wielk swobod w komponowaniu obrazów z wybranych fragmentów sceny. Kady taki w ze b dzie reprezentowa to, co znajduje si na przypisanej mu warstwie renderingu. W naszym przykadzie maska elementów niepodanych znajduje si na pierwszej warstwie sceny. Domylnie pierwsza warstwa renderingu obejmuje wszystkie warstwy sceny, a zatem b dziemy musieli to zmieni . Póniej b dziemy korzysta take z innych
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 157
RYSUNEK 4.36. Ukończona maska elementów niepożądanych
RYSUNEK 4.37. Usuwanie świata
warstw, ale na razie ograniczamy si do warstwy nr 1. A zatem w oknie przycisków renderowania otwórz panel Render Layers (warstwy renderingu) i w sekcji Layer (warstwa) kliknij przycisk pierwszej warstwy (patrz rysunek 4.38). To sprawi, e pozostae warstwy sceny nie b d renderowane. W oknie edytora w zów wcinij klawisz spacji i z otwartego w ten sposób menu wybierz kolejno Add (Dodaj), Input (wejcie) oraz Render Layers (warstwy renderingu), tak jak na rysunku 4.39, aby utworzy w ze typu Render Layers (warstwy renderingu).
158 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.38. Zestawianie warstw renderingu
RYSUNEK 4.39. Dodawanie węzła Render Layers (warstwy renderingu)
Zapewne pami tasz, e tworzona wczeniej maska jest biaa. Po usuni ciu ustawie wiata to obrazu zrenderowanego b dzie czarne. Otrzymasz wi c odwrotno tego, czym maska powinna by . Potrzebny b dzie zatem w ze odwracajcy. Aby go utworzy , wcinij klawisz spacji i wybierz kolejno Add (Dodaj), Color (kolor) oraz Invert (odwró ). Nast pnie pocz ten w ze z w zem Render Layers (warstwy renderingu) i dodaj jeszcze w ze Viewer (wizjer), aby mie podgld efektu wyjciowego. Na rysunku 4.40 pokazane s obok siebie maska green screen i maska elementów niepodanych. Teraz ju wszystko jest proste. Wystarczy pomnoy jedn mask przez drug, aby otrzyma obraz z obszarami biaymi tam, gdzie obie maski s biae (maj warto 1). Pozostae obszary s mnoone przez zero, wi c b d czarne. Dodaj wi c w ze mnoenia — wcinij klawisz spacji i wybierz kolejno Add (Dodaj), Color (kolor) oraz Mix (mieszaj), a nast pnie zmie jego funkcj na Multiply (pomnó). Do gniazd wejciowych tego w za podcz obie maski, a gniazdo wyjciowe pocz z w zem Composite (kompozycja), tak jak na rysunku 4.41. Wyrenderowana maska powinna wyglda tak jak ta z rysunku 4.42.
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 159
RYSUNEK 4.40. Maska green screen i maska elementów niepożądanych
RYSUNEK 4.41. Aktualny układ węzłów
RYSUNEK 4.42. Część wspólna (iloczyn) obu masek
160 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
Maskowanie niepo danych elementów postaci Niestety maska nie jest jeszcze w peni gotowa. Otó bohater filmu trzyma w r ku rekwizyt, który jest jaskrawo zielon lalk. Wprawdzie lalka nie jest tak mocno owietlona jak zielony ekran, ale jest kilka klatek, na których pada na ni wi cej wiata i wtedy na masce pojawiaj si czarne plamy (patrz rysunek 4.43). Waciwie powinno si dobiera taki kolor ekranu, który w ogóle nie wyst puje na pierwszym planie. W tym przypadku na pewno lepszy byby na przykad kolor pomaraczowy. Jednak zmienianie kolorów ekranu dla kadego uj cia jest luksusem, na który wi kszo niezalenych twórców filmowych moe sobie pozwoli . Na szcz cie takie mae niedocigni cia, z jakimi mamy do czynienia tutaj, daj si atwo naprawi w Blenderze. RYSUNEK 4.43. Maska green screen z ciemnymi plamami
Rozwizywanie takich problemów sprowadza si do tego samego, co maskowanie elementów niepodanych, z t rónic, e zamiast tworzy czarn mask i mnoy
j z mask green screen, trzeba utworzy bia at i doda j do maski green screen. Kolejno czynnoci, jakie powiniene wykona , przedstawia si nast pujco: 1. W oknie 3D View (Widok 3D) z widokiem Camera (kamera) utwórz nowy okrg Béziera na warstwie 2., tak jak na rysunku 4.44. Ustaw go tak, aby zakry zielon lalk . Nowa maska b dzie uywana przez inny w ze Render Layers (warstwy renderingu), dlatego istotne jest umieszczenie jej na warstwie drugiej, a nie na pierwszej, gdzie znajduje si ju maska niepodanych elementów ta. Do kadego z czterech punktów kontrolnych dodaj haczyk (patrz rysunek 4.45), w taki sam sposób, w jaki robie to przy poprzedniej masce.
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 161
RYSUNEK 4.44. Nowy okrąg Béziera na warstwie nr 2
RYSUNEK 4.45. Okrąg po dodaniu haczyków w punktach kontrolnych
2. Tak jak poprzednio, utwórz klucze w odst pach 10-klatkowych dla takich pooe haczyków, przy których lalka b dzie cay czas zasoni ta. Uwaaj przy tym, aby tworzona maska nie wysza poza kontury postaci. W ten sposób musisz doj mniej wi cej do klatki 170., kiedy to owietlenie lalki staje si na tyle sabe, e jej lad na masce green screen przestaje by widoczny. 3. W trybie obiektowym zaznacz wszystkie haczyki okr gu Béziera i sam okrg. Utwórz klucz dla warstwy przez wcini cie klawisza I oraz wybranie opcji Layer (Warstwa), tak jak na rysunku 4.46. Przejd do nast pnej klatki, wcinij klawisz M i kliknij trzeci przycisk od lewej, tak jak na rysunku 4.47. Kliknij OK, aby wysa wszystkie pi zaznaczonych obiektów na warstw nr 3. Utwórz klucz dla tej warstwy. Gdy podczas komponowania lub renderowania wyczysz widoczno tej warstwy, maska zniknie w klatce 171. — w nast pnych nie jest potrzebna.
162 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.46. Kluczowanie warstwy
RYSUNEK 4.47. Zmiana warstwy
4. Ponownie przejd do panelu Render Layers (warstwy renderingu) w oknie przycisków renderingu. Z listy rozwijanej wybierz Add New (Dodaj nowy), tak jak na rysunku 4.48, aby utworzy now warstw renderingu o numerze 2. Powinna ona zawiera
utworzon wanie mask . Aby to uzyska , w sekcji Layer (warstwa) wcz drugi od lewej przycisk, tak jak na rysunku 4.49. Przy takich ustawieniach druga warstwa renderingu b dzie zawieraa drug warstw sceny.
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 163
RYSUNEK 4.48. Tworzenie nowej warstwy renderingu
RYSUNEK 4.49. Konfiguracja drugiej warstwy renderingu
5. W edytorze w zów utwórz nowy w ze typu Render Layers (warstwy renderingu) i z rozwijanej listy w tym w le wybierz pozycj 2 Render Layer (warstwa renderingu nr 2). Wyjcie tego w za dodaj do wyjcia utworzonego dla poprzedniej maski w za Multiply (pomnó). Oczywicie musisz w tym celu utworzy nowy w ze Add (dodaj) i poczy wszystko tak, jak to pokazano na rysunku 4.50. Pami taj, aby przed wyrenderowaniem masek wczy widoczno obu warstw sceny (patrz rysunek 4.51). Odr bno masek b dzie zachowana, bo kada z nich znajduje si na innej warstwie sceny, a te z kolei s przypisane do rónych warstw renderingu. Ostatecznie powiniene teraz dysponowa mask podobn do tej, jak wida
na rysunku 4.52.
Grupowanie wzów Jak wida , liczba w zów ronie do szybko i graf staje si coraz mniej przejrzysty. Aby nad tym zapanowa , moesz czy w zy w grupy. Ukad, jaki wanie stworzye, doskonale si do tego nadaje, bo, cho skada si z wielu w zów, mona w nim wyróni
kilka logicznych jednostek, które poczone razem tworz mask green screen.
164 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.50. Układ węzłów dla dwóch warstw renderingu
RYSUNEK 4.51. Okno widokowe z włączonymi warstwami 1 i 2
RYSUNEK 4.52. Wyczyszczona maska
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 165
Aby utworzy grup z wybranych w zów, zaznacz je tak, jak pokazano na rysunku 4.53 (w zy typu wizjer zostay usuni te), a nast pnie wcinij klawisze Ctrl+G. Powstanie nowy w ze o nazwie Node Group (grupa w zów) czcy w sobie funkcje wszystkich w zów, które zaznaczye (patrz rysunek 4.54). Aby jeszcze bardziej uproci schemat, moesz widocznym w zom nada wygld kompaktowy przez klikni cie maego trójkcika w lewym górnym rogu kadego z nich. Wcini cie klawiszy Alt+G rozbija grup na poszczególne w zy skadowe. RYSUNEK 4.53. Zaznacz węzły przetwarzające elementy maski
RYSUNEK 4.54. Węzły połączone w grupę
Nakadki alfa i premultiplikacja Masz ju niez map green screen z czarnym tem i bia sylwetk postaci na pierwszym planie. Maska ta b dzie okrela wartoci alfa obrazu ródowego. Tam, gdzie maska jest biaa (posta ), obraz b dzie nieprzezroczysty (alfa = 1), a tam, gdzie jest czarna, obraz b dzie cakowicie przezroczysty (alfa = 0). Aby to uzyska , wcinij klawisz spacji i wybierz kolejno Add (Dodaj), Convertor (konwerter) oraz Set Alpha (ustaw kana alfa), tak jak na rysunku 4.55. Do gniazda Image (obraz) nowego w za podcz sygna z obrazem oryginalnym, a do gniazda Alpha (alfa) — obraz maski.
166 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.55. Dodawanie węzła Set Alpha (ustaw kanał alfa)
Aby przetestowa dziaanie maski, podó pod obraz jednokolorowe to. Wcinij klawisz spacji i wybierz kolejno Add (Dodaj), Input (wejcie) i RGB. W ten sposób utworzysz ródo sygnau jednobarwnego. Jeszcze raz wcinij klawisz spacji i wybierz Add (Dodaj), Color (kolor) i AlphaOver (nakadka alfa), aby utworzy w ze czcy jednolite to z obrazem wyposaonym w kana alfa. Wszystko pocz tak jak na rysunku 4.56 (ten sam rysunek znajdziesz take w kolorowej wkadce). RYSUNEK 4.56. Układ węzłów po dodaniu jednokolorowego tła i węzła AlphaOver (nakładka alfa)
Premultiplikacja okrela kolejno , w jakiej przeliczane s wartoci wielu nakadek alfa. Ze ustawienie tego parametru moe spowodowa wystpienie niepodanych artefaktów lub efektu halo. Przy wyczonej opcji Convert Premul (konwertuj premultiplikacj ) ujawniaj si artefakty w postaci biaych linii w obszarze ta i wokó konturów postaci. Wczenie tej opcji radykalnie poprawia obraz. Rónic moesz zobaczy na rysunku 4.57 (jest on powtórzony w kolorowej wkadce).
MASKOWANIE NIEPO DANYCH ELEMENTÓW~ 167
RYSUNEK 4.57. Rezultat wyłączenia i włączenia opcji Convert Premul (konwertuj premultiplikację)
WIAT BLENDERA BLENDER I MILO MOTION CONTROL Blender może współpracować z najwyższej jakości profesjonalnym sprzętem filmowym — dopiero wtedy ujawnia pełnię swoich możliwości. Podczas pracy nad swoim krótkim filmem science fiction pt. minDrones Luca Bonavita intensywnie wykorzystywał nagrodzony przez Amerykańską Akademię Filmową system o nazwie Milo Motion Control. System ten, opracowany przez Marka Robertsa, umożliwia filmowcom programowanie złożonych ustawień i ruchów kamery, które potem mogą być wielokrotnie powtarzane z wielką precyzją. To pozwala rejestrować różne sceny przy zachowaniu dokładnie tych samych ruchów kamery, dzięki czemu komponowanie takich ujęć staje się dużo łatwiejsze. Poza tym informacje o ruchach kamery mogą być pobierane z systemu Milo i przenoszone do Blendera w postaci skryptów Pythona w celu sterowania kamerą w wirtualnej przestrzeni Blendera. W ten sposób można w Blenderze dokładnie odtworzyć ruchy rzeczywistej kamery. Twórcy Blendera pracują nad funkcjami śledzenia ruchu i dokładnego ustawiania kamery, ale jak na razie system Milo jest na tym polu niezastąpiony. Możliwości współpracy Blendera z systemem Milo zaprezentował Riccardo Covino podczas Konferencji Blendera w 2006 roku. Ilustracją do tej prezentacji były fragmenty wspomnianego wyżej filmu. Prezentację realizacji jednego z takich efektów możesz obejrzeć w internecie pod adresem www.blender.org/features-gallery/feature-videos/?video=imaging, a raport w formie dokumentu PDF możesz pobrać ze strony http://download.blender.org/documentation/bc2006/blenderandmilo.pdf. Covino pojawił się jeszcze na Konferencji Blendera w 2008 roku, aby zaprezentować rezultaty swojej pracy nad niezależnym filmem Un Mare da Favola (Bajkowe morze), w którym połączono zdjęcia dokumentalne z animacjami wykonanymi w Blenderze. Nagranie z tej prezentacji również jest warte obejrzenia, a dostępne jest pod adresem http://river-valley.tv/conferences/blender_conference_2008/.
168 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
Usuwanie zabarwie i czyszczenie wideoklipu Sprawdzian w postaci naoenia pierwszoplanowego obrazu na jednokolorowe to pozwala równie wychwyci tak zwane wycieki koloru, które cz sto wyst puj w takich kompozycjach jak nasza. Obiekty filmowane na tle mocno owietlonego zielonego ekranu cz sto ulegaj zabarwieniu wiatem odbitym od tego ekranu. Ziele bywa te widoczna w miejscach, w których obiekt jest cho by cz ciowo przezroczysty, na przykad we wosach. Takie wycieki zieleni wida na rysunku 4.58, a tak naprawd zobaczysz je, gdy obejrzysz ten rysunek w kolorowej wkadce. RYSUNEK 4.58. Wyciekająca zieleń
Rozwizanie tego problemu polega na ogólnym osabieniu zieleni w obrazie przez odpowiednie zmodyfikowanie kanaów koloru.
Manipulowanie kanaami koloru Do modyfikowania kanaów R, G, B i A uyjemy w za konwertujcego Separate RGBA (separuj RGBA), z którego korzystalimy ju w celu rozbicia obrazu na poszczególne kanay koloru. Po wprowadzeniu odpowiednich poprawek uyjemy innego w za konwertujcego, Combine RGBA (pocz RGBA), aby na powrót poczy wszystkie kanay i uzyska prawidowy obraz kolorowy. W naszym przykadzie obniymy poziom zieleni, ale musimy to zrobi z umiarem. Bohater filmu trzyma przecie w r ku zielon lalk i nie moemy dopuci do tego, aby zmienia kolor. Niestety, nawet niewielka zmiana w kanale zieleni, która dla ogólnej kolorystyki obrazu nie b dzie miaa jakiego wielkiego znaczenia, moe spowodowa , e lalka przestanie by zielona. Musimy wi c utrzyma ten kana na odpowiednim poziomie.
USUWANIE ZABARWIE I CZYSZCZENIE WIDEOKLIPU~ 169
Nie ma jednego prostego sposobu na osigni cie tego celu, ale najprostszym rozwizaniem wydaje si metoda polegajca na zastpieniu wartoci w kanale zieleni urednionymi wartociami wszystkich kanaów. Pozwoli ona mocno zredukowa kana zieleni, ale jednoczenie pozostawi go mocniejszym w tych miejscach, które pierwotnie byy wyranie zielone. Aby co takiego zrealizowa , wystarcz dwa w zy Add (dodaj) i jeden Divide (podziel) poczone tak, jak pokazano na rysunku 4.59. Po zgrupowaniu tych w zów i bezporednim poczeniu kanaów R i B z w zem Combine RGBA (pocz RGBA) ukad w zów wyglda tak jak na rysunku 4.60. Rónica w wygldzie obrazu przed modyfikacj kanau zieleni i po niej jest pokazana na rysunku 4.61 (znajdziesz go równie w kolorowej wkadce). Zauwa, e lalka jest nadal zielona. RYSUNEK 4.59. Obliczanie nowego kanału zieleni
RYSUNEK 4.60. Połączenie kanałów R i B
170 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.61. Obraz zrenderowany z oryginalnym i zmodyfikowanym kanałem zieleni
Wykaczanie maski W wielu miejscach mona jeszcze mask ulepszy . Za pomoc w za Blur (rozmyj), dost pnego w menu Add (Dodaj) jako Filter/Blur (filtr/rozmyj), moesz rozmy kraw dzie maski. Inny w ze filtrujcy, Dilate/Erode (rozszerz/zaw ), umoliwia rozszerzanie lub zaw anie biaego obszaru maski, co bywa przydatne, gdy trzeba mask cile dopasowa
do konturów obiektu. Rozmycie mona zastosowa zarówno przed uyciem maski do ustalenia wartoci alfa obrazu pierwszoplanowego, jak i na dalszym etapie kompozycji. Peny ukad w zów z lekkim efektem rozmycia i zaw enia maski jest pokazany na rysunku 4.62 (tymczasowo dodany zosta równie w ze z jednolitym kolorem ta). Rezultat uzyskany przy takim ukadzie w zów, pokazany na rysunku 4.63, pochodzi z okna UV/Image Editor (Edytor UV/Obrazów) z wczon opcj wywietlania obrazu z uwzgl dnieniem wartoci w kanale alfa (przycisk tej opcji jest zaznaczony na rysunku). Ten sam rysunek znajduje si te w kolorowej wkadce.
USUWANIE ZABARWIE I CZYSZCZENIE WIDEOKLIPU~ 171
RYSUNEK 4.62. Pełny układ węzłów
RYSUNEK 4.63. Obraz wyświetlany z uwzględnieniem kanału alfa
Z kompozycj wideo mona zrobi kilka rzeczy. Pod obraz pierwszoplanowy mona podoy zupenie inne to, tak jak na rysunku 4.64 (ten sam rysunek jest równie w kolorowej wkadce). Wykonanie takiego montau b dzie tematem wiczenia w podrozdziale „Podsumowanie”. Wykorzystany tu obraz nieba zosta utworzony przez czonka spoecznoci BlenderArtists.org, M@dcowa, i jest dost pny pod adresem http://blenderartists.org/forum. Znajdziesz go równie na pycie doczonej do ksiki jako plik sky_twighlight.jpg.
172 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
RYSUNEK 4.64. Kompozycja wideo z nowym obrazem w tle
Po naoeniu pierwszego planu na nowe to moesz bardziej uwiarygodni kompozycj przez wprowadzenie odpowiednich zmian w kolorystyce pierwszego planu. Na rysunku 4.65 (powtórzonym w kolorowej wkadce) moesz zobaczy efekt w postaci zabarwienia jasno owietlonych obszarów pierwszego planu kolorem zgodnym z barwami nieba. Jeli wykonae wszystkie wiczenia z tego rozdziau, nie powiniene mie problemów z uzyskaniem takiego efektu. Jednym z zada, jakie otrzymasz do wykonania w ramach podsumowania rozdziau, b dzie zestawienie w zów dla takiego wanie efektu. RYSUNEK 4.65. Kompozycja wideo przed dodaniem i po dodaniu fioletowego zabarwienia
PODSUMOWANIE~ 173
Kompozycj moesz take wykorzysta jako nakadk alfa w edytorze sekwencji wideo. Tymi zagadnieniami zajmiemy si w rozdziale 5. Jeli zechcesz wyrenderowa obraz z uwzgl dnieniem wartoci w kanale alfa, wybierz format, w którym ten kana moe by zapisany, na przykad PNG (.png) lub Targa (.tga). Upewnij si take, czy w panelu Format w oknie przycisków renderowania wczona jest opcja RGBA. Domylnie jest tam wczona opcja RGB i jeli tak pozostawisz, kana alfa zostanie pomini ty.
Wy czanie wzów Gdy sie w zów zaczyna si rozrasta , wydua si te czas oczekiwania na efekt wprowadzanych zmian. Blender po prostu potrzebuje czasu, aby przeliczy efekty wprowadzane przez poszczególne w zy, a robi to za kadym razem dla wszystkich w zów. Aby skróci ten czas i uatwi prac Blenderowi, moesz cz w zów wyczy . Jeli dziaanie jakiego w za jest w danym momencie nieistotne, uaktywnij go, a nast pnie wcinij klawisz M. W ze zostanie wyczony. Oznak tego b dzie uj cie nazwy w za w nawiasy kwadratowe i przekrelenie go ukon czerwon lini. Procedura wczania w zów jest taka sama jak przy wyczaniu.
Pogbianie wiedzy o komponowaniu W tym rozdziale zdoaem zaprezentowa zaledwie czstk tego, co mona zdziaa
za pomoc systemu w zów w zakresie komponowania nagra wideo. Blender oferuje znacznie wi cej funkcji, ale jeszcze waniejsze jest poznanie podstaw komponowania obrazów dwuwymiarowych. Poczenie tego, czego nauczye si tutaj o pracy z w zami, z solidnymi podstawami komponowania pozwoli Ci na efektywne stosowanie wi kszoci efektów. Jeli chcesz dalej zg bia tajniki komponowania obrazów cyfrowych, si gnij po ksik Rona Brinkmanna The Art and Science of Digital Compositing, Second Edition: Techniques for Visual Effects, Animation and Motion Graphics (Morgan Kaufmann, 2008). Jest to prawdziwa biblia komponowania, znajdziesz w niej wszystko, co na ten temat powiniene wiedzie . Z ksik zwizana jest te doskonaa witryna internetowa, pena informacji nie tylko o samej ksice, ale równie o komponowaniu. Oto adres tej strony: www.digitalcompositing.com. Gorco zach cam Ci do zapoznania si z tymi pozycjami, jeli powanie mylisz o rozwijaniu swoich umiej tnoci obsugi Blendera w zakresie komponowania obrazów.
Podsumowanie Zaimplementowany w Blenderze system w zów jest niezwykle elastycznym i pot nym narz dziem do czenia wielu obrazów i nagra wideo w celu uzyskania rozmaitych efektów. System umoliwia mi dzy innymi tworzenie masek green screen, które z kolei su do oddzielania postaci pierwszoplanowych od ta i wkomponowywania ich w inne sceny.
174 ~ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW
Uywaj systemu wzów do tworzenia masek green screen. Jeli z góry wiadomo, e filmowany obiekt b dzie przenoszony do innego otoczenia, zwykle stosuje si popularn technik zwan green screen, polegajc na filmowaniu pierwszego planu na tle jednobarwnego ekranu. To umoliwia atwe i szybkie usuwanie ta przy uyciu odpowiednich w zów operujcych na poszczególnych kanaach koloru. Opanuj to Wykorzystujc ukad w zów utworzony w ramach wicze wykonywanych w tym rozdziale, dodaj do obrazu pierwszoplanowego to, aby uzyska
w peni skomponowany obraz, taki jak na rysunku 4.64. Uyj do tego celu pliku sky_map.jpg zapisanego na pycie doczonej do ksiki. Do tworzenia animowanych masek elementów niepo danych uywaj krzywych i haczyków. Niejednolite to w materiale oryginalnym moe prowadzi do powstania niewaciwej maski. W celu wyeliminowania takich niedoskonaoci stosuje si tzw. maskowanie elementów niepodanych (garbage matting). W miejscach, w których maska musi czy si z konturami planu pierwszego, konieczne moe by r czne jej animowanie. Opanuj to Za pomoc krzywej animowanej przy uyciu haczyków utwórz jeszcze jedn mask dla przykadowego materiau wideo, aby zakry niepodane elementy po prawej stronie kadru. Aby usun niekorzystne przebarwienie, manipuluj kanaami koloru. Gdy czysz nagrania zarejestrowane w rónych warunkach owietleniowych, musisz si liczy
z koniecznoci dopasowania ich kolorystyki. Jest to szczególnie istotne w przypadku nagra wykonywanych technik green screen. Ziele ekranu cz sto przelewa si na obiekty pierwszoplanowe, a to w ostatecznej kompozycji nie wyglda najlepiej. Aby ten niekorzystny efekt wyeliminowa , moesz zmodyfikowa kanay koloru takiego nagrania. Dzi ki dobraniu odpowiednich proporcji mi dzy wartociami w kanaach R, G i B zwykle udaje si tego typu problemy rozwiza . Opanuj to Do kompozycji wykonanej w ramach pierwszego wiczenia „Opanuj to” wprowad delikatne fioletowe przebarwienia w najjaniejszych obszarach postaci na pierwszym planie. Powiniene uzyska rezultat podobny do tego z rysunku 4.65.
Rozdzia 5.
Edytor wideo (VSE) Blender znany jest gównie jako program do modelowania obiektów trójwymiarowych i tworzenia animacji, ale w trakcie lektury poprzednich rozdziaów miae okazj si przekona , e jego moliwoci s znacznie wi ksze. Jako jedyny wród wieloplatformowych programów typu open source Blender moe pochwali si cakiem niezym zestawem funkcji do edycji sekwencji wideo. Blender nie zamierza wprawdzie rywalizowa (przynajmniej na razie) z profesjonalnymi pakietami, z których korzystaj due studia filmowe, ale jego edytor wideo (VSE — Video Sequence Editor) oraz zwizany z nim system w zów, o którym bya mowa w rozdziale 4., „Komponowanie wideoklipów przy uyciu w zów”, w zupenoci wystarczaj do wykonywania popularnych zada z zakresu edycji i komponowania materiaów wideo. Poczenie tych dwóch narz dzi edytorskich daje znacznie wi cej moliwoci ni niejeden tani program komercyjny. Za chwil zobaczysz, jak za pomoc edytora sekwencji wideo mona czy animacje, nagrania wideo, dwi ki i skomponowane sceny w jedn spójn cao . Z tego rozdziau dowiesz si , jak:
importowa , edytowa i renderowa materia wideo za pomoc VSE, tworzy przejcia, nakadki i efekty, czy sceny 3D z nagraniami wideo.
Obsuga edytora sekwencji wideo Dost pny w Blenderze edytor sekwencji wideo zosta pierwotnie stworzony z myl o animatorach, którym potrzebne byo narz dzie do edycji i czenia sekwencji animacyjnych. Wczeniej aden program open source nie oferowa takich funkcji. W miar rozwoju VSE zacz wyrasta na gronego konkurenta wielu aplikacji do edycji wideo. Jego zalet jest prosty i atwy w obsudze interfejs w peni zintegrowany ze rodowiskiem Blendera. To sprawia, e uytkownicy przyzwyczajeni do skrótów klawiszowych i sposobu dziaania innych narz dzi tego programu mog posugiwa
si edytorem w sposób intuicyjny. Inn wspania cech VSE jest jego zdolno do wspópracy z wieloma kodekami i obsugiwanie wielu formatów. Poniewa nie ma wasnego wewn trznego formatu zapisu plików, tak samo dobrze radzi sobie z plikami .avi, .move czy innymi, jeli tylko znajdzie w systemie odpowiedni kodek. Potrafi wspópracowa nawet z kodekami opracowanymi specjalnie dla zaawansowanych programów komercyjnych, dzi ki czemu moliwe jest korzystanie z profesjonalnych formatów wideo. Ta wielka elastyczno
176 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
edytora sprawia, e Blender moe by znakomitym narz dziem do konwersji formatów. W adnym innym programie nie mona tak atwo zamieni nagrania wideo w sekwencj nieruchomych obrazów i na odwrót. To jeszcze nie wszystkie zalety edytora. VSE jest take w peni funkcjonalnym, nieliniowym edytorem wideo oferujcym wiele kanaów wizyjnych i dwi kowych oraz moliwo ich komponowania. Komponowanie moe odbywa si zarówno z udziaem systemu w zów, jak i bez niego. Standardowo edytor zawiera mnóstwo rozmaitych efektów, a ich liczb mona jeszcze powi kszy przez instalowanie dodatkowych moduów zewn trznych — b dzie o tym mowa w dalszej cz ci rozdziau. Oprócz tego wszystkiego VSE oferuje narz dzia umoliwiajce szczegóow analiz rozkadu kolorów i jasnoci w materiaach wideo, co znacznie uatwia korygowanie ich kolorystyki i zakresu tonalnego. Jak wi kszo funkcji w Blenderze, VSE ma swoje okno o nazwie Video Sequence Editor (Edytor wideo) dost pne po wybraniu odpowiedniej opcji z listy Window type (typ okna) (patrz rysunek 5.1). Po otwarciu tego okna nadal moesz skonfigurowa przestrze robocz Blendera w sposób, jaki Ci najbardziej odpowiada. W menu pokazanym na rysunku 5.2 dost pna jest konfiguracja o nazwie Sequence (sekwencja) zaprojektowana wanie z myl o edycji sekwencji wideo. Domylny ukad okien dla tej konfiguracji pokazano na rysunku 5.3. Jeli nawet nie wszystko Ci tu odpowiada, moesz ten ukad potraktowa jako dobry punkt wyjcia do dalszych modyfikacji. RYSUNEK 5.1. Wybieranie okna edytora sekwencji wideo
RYSUNEK 5.2. Wybieranie konfiguracji Sequence (sekwencja)
Konfiguracja ta zawiera nast pujce okna:
Po lewej u góry znajduje si okno edytora krzywych IPO z wybran opcj wywietlania krzywych dla sekwencji wideo. Tutaj moesz sterowa wartociami parametru Fac (wspóczynnik) decydujcego o sile animowanego efektu.
OBSUGA EDYTORA SEKWENCJI WIDEO~ 177
RYSUNEK 5.3. Domyślny układ okien w konfiguracji Sequence (sekwencja)
W prawym górnym rogu jest okno VSE w trybie Image Preview (podgld obrazu). Nagówek tego okna zosta ukryty. Aby ten nagówek przywróci , ustaw wskanik myszy w obr bie okna, a nast pnie przesu go na kraw d okna. Gdy wskanik przybierze posta dwustronnej strzaki, kliknij prawym przyciskiem myszy i wybierz Add Header (dodaj nagówek). Na rysunku 5.4 pokazany jest ten nagówek i sposób ustawiania trybu Image Preview (podgld obrazu).
RYSUNEK 5.4. Okno VSE z włączonym trybem Image Preview (podgląd obrazu)
rodkow cz interfejsu zajmuje drugie okno VSE, ale tym razem w trybie Sequence (sekwencja). To tutaj wywietlana jest zawarto poszczególnych kanaów wizyjnych i dwi kowych i tutaj przeprowadza si wi kszo zabiegów edycyjnych. Przy okazji: jeli b d pisa okno VSE lub okno edytora sekwencji wideo, b d mia na myli okno tego edytora w trybie Sequence (sekwencja), czyli takim jak na rysunku 5.3. Pozostae tryby, takie jak Image Preview (podgld obrazu), b d okrela w sposób jednoznaczny. Pod oknem VSE znajduje si okno Timeline (o czasu), znane na pewno wszystkim uytkownikom Blendera. Doln cz interfejsu zajmuje Buttons Window (okno przycisków).
178 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
Importowanie filmów i sekwencji obrazów Po ustaleniu rodowiska edycyjnego pierwszy etap pracy z VSE b dzie polega na zaimportowaniu filmu wideo lub sekwencji obrazów. W tym celu ustaw wskanik myszy w oknie VSE i wcinij klawisz spacji, aby otworzy menu pokazane na rysunku 5.5. Jak wida , jest tam szereg rozmaitych typów sekwencji do wyboru. Do importowania sekwencji obrazów lub sekwencji wideo su opcje Image Sequence (sekwencja obrazów) oraz Movie (film) i Movie + Audio (film + dwi k). RYSUNEK 5.5. Menu Add Sequence Strip (dodaj pasmo sekwencji)
FILMY WIDEO NA CD Na płycie dołączonej do książki znajdują się dwa krótkie wideoklipy. Podczas lektury niniejszego rozdziału możesz je wykorzystać jako materiał ćwiczeniowy. Oba znajdziesz w folderze video_clips, który z kolei znajduje się w folderze Chapter 5. Pierwszy z tych wideoklipów, end_zone_clip.avi, jest fragmentem filmu End Zone wyreżyserowanego przez Roba Cunninghama (www.dualactionpictures.com). Jest to czarno-biały film z dźwiękiem. Tempo odtwarzania tego filmu wynosi 24 klatki na sekundę. Drugi klip, idol_clip.mov, jest kompozycją nagrania wykonanego techniką green screen na potrzeby filmu Normana Englanda The iDol (www.theidol-movie.com) i obrazu nieba wykonanego przez członka społeczności BlenderArtist.org, M@dcowa.
Jeli wybierzesz importowanie sekwencji obrazów, otworzy si okno przegldarki plików, w którym b dziesz móg odszuka folder z obrazami. Aby wczyta ca sekwencj , musisz zaznaczy wszystkie pliki, tak jak na rysunku 5.6. Najszybciej zrobisz to przez wcini cie klawisza A. Jeli sekwencja bya renderowana w Blenderze, obrazy maj automatycznie przypisane numery i VSE nie ma problemu z ustaleniem ich kolejnoci. Sekwencje tworzone poza Blenderem równie s odczytywane we waciwej kolejnoci, jeli tylko nalece do nich obrazy zostay odpowiednio ponumerowane. Numery powinny by staej dugoci (z ewentualnymi zerami na pocztku) i musz znajdowa
si na kocu nazwy pliku, bezporednio przed kropk.
OBSUGA EDYTORA SEKWENCJI WIDEO~ 179
RYSUNEK 5.6. Zaznaczanie sekwencji obrazów w przeglądarce plików
Jeli wczytasz tylko jeden obraz, Blender automatycznie utworzy z niego 50-klatkow sekwencj . ZAZNACZANIE PLIKÓW W PRZEGLDARCE Przeglądarka plików, z jaką mamy do czynienia w Blenderze, działa nieco inaczej niż przeglądarki systemowe. Wyboru pojedynczego pliku można tu dokonać na dwa sposoby. Można kliknąć nazwę pliku lewym przyciskiem myszy i gdy ta nazwa pojawi się w polu tekstowym u góry okna przeglądarki, kliknąć przycisk Select Images (wybierz obrazy). Można też kliknąć nazwę pliku prawym przyciskiem myszy, aby ją podświetlić, a następnie kliknąć przycisk Select Images (wybierz obrazy). W obu przypadkach rezultat jest taki sam. Aby zaznaczyć więcej obrazów, trzeba klikać ich nazwy prawym przyciskiem myszy. Można też przeciągać po nich myszą z wciśniętym prawym przyciskiem. Powtórne kliknięcie prawym przyciskiem (lub przeciągnięcie po już zaznaczonych plikach) powoduje usunięcie zaznaczenia danego pliku (lub plików). Niestety nie ma tu możliwości zaznaczenia grupy plików przez wskazanie pierwszego i ostatniego. To znacznie utrudnia zaznaczanie dużych zbiorów plików, jeśli takich zbiorów jest więcej w tym samym folderze. Dlatego warto zawsze zapisywać długie sekwencje w oddzielnych folderach. Wtedy, aby zaznaczyć całą sekwencję, wystarczy otworzyć odpowiedni folder i wcisnąć klawisz A.
Tak samo przebiega importowanie filmu. Format filmu moe by dowolny, byleby tylko odpowiedni kodek by zainstalowany w systemie. Klikamy nazw pliku lewym bd prawym przyciskiem myszy, a nast pnie klikamy przycisk Select Movie (wybierz film) i to wszystko. Oczywicie mona te zaimportowa kilka filmów naraz — przed klikni ciem przycisku Select Movie (wybierz film) trzeba zaznaczy odpowiednie pliki przez klikni cie ich nazw prawym przyciskiem myszy. Przykad takiego importu wielu plików jest pokazany na rysunku 5.7. W tym przypadku oba filmy zostan wczytane do tego samego kanau, jeden po drugim, co wida na rysunku 5.8. RYSUNEK 5.7. Zaznaczanie wielu filmów
180 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
RYSUNEK 5.8. Okno VSE po zaimportowaniu dwóch filmów naraz
Opcja Movie + Audio (film + dwi k) pozwala zaimportowa jednoczenie kana wizyjny i dwi kowy. W oknie VSE kady rodzaj sekwencji ma przypisany inny kolor:
szary oznacza powtarzane obrazy nieruchome, niebieski — filmy, fioletowy — sekwencje obrazów, niebieskozielony — dwi k, zielony — sceny wygenerowane w Blenderze.
Rónymi kolorami oznaczane s te poszczególne typy efektów, dzi ki czemu atwo je rozróni nawet wtedy, gdy bezporednio ze sob ssiaduj. JESZCZE PAR SÓW O KODEKACH Plik .avi zamieszczony na płycie dołączonej do książki został zapisany przy użyciu kodeka Xvid. Jest to bardzo dobry kodek typu open source. Doskonale nadaje się do tworzenia krótkich, ale niezłej jakości filmów amatorskich. Jeśli nie masz go jeszcze zainstalowanego w swoim systemie, możesz go pobrać ze strony www.xvid.org. Plik .mov został zakodowany jako QuickTime MPEG-4. Jeśli chcesz obejrzeć te filmy przed zaimportowaniem ich do Blendera, możesz użyć odtwarzacza VLC. Jest to jeden z najlepszych odtwarzaczy. Nie oszałamia zbędnymi dodatkami, ale rzetelnie wykonuje to, do czego został przeznaczony. Wraz z nim instalowane są liczne, użyteczne kodeki. Najnowszą wersję tego odtwarzacza możesz pobrać ze strony www.videolan.org.
Ustalanie szybkoci odtwarzania Szybko odtwarzania (frame rate) wyraana w klatkach na sekund (fps — frames per second) okrela liczb klatek wywietlanych w cigu jednej sekundy podczas normalnego odtwarzania nagrania wideo. Zwykle uywa si nast pujcych szybkoci:
24 klatek na sekund — filmy 16 mm i 35 mm, 25 klatek na sekund — telewizja z systemem kodowania PAL (system ten jest stosowany gównie w Europie i Afryce), 30 klatek na sekund — telewizja wysokiej rozdzielczoci, 29,97 klatek na sekund (30×1000÷1001) — telewizja z systemem NTSC (Ameryka Pónocna, cz Azji i kilka innych krajów).
OBSUGA EDYTORA SEKWENCJI WIDEO~ 181
W nagraniach wideo bywaj stosowane te i inne szybkoci odtwarzania. Gdy importujesz film do VSE, Blender oblicza czas trwania caego nagrania na podstawie szybkoci odtwarzania ustawionej w panelu Format, który znajdziesz w oknie przycisków renderowania (patrz rysunek 5.9). Czas ten pozostaje stay. Jeli zmienisz szybko odtwarzania i ponownie zrenderujesz nagranie, Blender wygeneruje tak liczb klatek, aby cakowity czas odtwarzania zosta zachowany. RYSUNEK 5.9. W tych polach ustawisz szybkość odtwarzania
Ta informacja jest istotna, bo wynika z niej, e szybko odtwarzania musi by
prawidowo ustawiona przed pierwszym importowaniem filmu. Na rysunku 5.10 pokazany jest skutek zaimportowania nagrania wideo ze ciek dwi kow przy szybkoci odtwarzania ustawionej na 25 klatek na sekund , podczas gdy nagranie byo rejestrowane z szybkoci 29,97 klatek na sekund . Jak wida , kanay obrazu i dwi ku nie s wzajemnie dopasowane. Tego nie da si ju naprawi w VSE. Po prostu trzeba oba kanay usun
i zaimportowa nagranie jeszcze raz z waciw liczb klatek na sekund . W tym konkretnym przypadku waciwe ustawienie szybkoci odtwarzania powinno wyglda
. Jest to dokadniejsza reprezentacja wartoci 29,97 i okrela szybko
tak: odtwarzania 30 klatek na sekund z uwzgl dnieniem klatek opuszczonych (drop frames). Jeli masz do czynienia z nagraniem, którego sam nie wytworzye, moesz nie wiedzie , z jak szybkoci odtwarzania zostao zakodowane. Wtedy pozostaje Ci ustalenie tej wartoci metod prób i b dów przez wielokrotne importowanie pliku przy rónych ustawieniach szybkoci odtwarzania. Oczywicie najrozsdniej b dzie zacz od wartoci typowych, które wczeniej wymieniem. Uyj klawisza T, aby przecza wywietlanie klatek lub sekund na osi X w oknie VSE. OPUSZCZONE KLATKI Odtwarzanie z szybkością 29,97 klatki na sekundę jest reliktem z czasów telewizji analogowej. Pierwotnym powodem opuszczania klatek w sygnale wizyjnym była konieczność wygospodarowania dodatkowego czasu na transmisję danych o kolorze przy zachowaniu stosowanej w telewizji czarno-białej szybkości 30 klatek na sekundę. Samo określenie „opuszczanie klatek” jest trochę mylące, bo tak naprawdę żadna klatka nie jest opuszczana; wszystko sprowadza się do sposobu liczenia klatek. Proces ten nie ma żadnego wpływu na zawartość lub jakość materiału wideo.
182 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
RYSUNEK 5.10. Ścieżka dźwiękowa nie pasuje do wizyjnej z powodu niewłaściwej szybkości odtwarzania
Manipulowanie ciekami sekwencji wideo Po zaimportowaniu materiau wideo moesz go przesuwa , rozciga i edytowa na wiele sposobów.
PODSTAWOWE OPERACJE NA CIE KACH Po dodaniu cieki wizyjnej lub dwi kowej (bd obu jednoczenie) jest ona w peni aktywna i poda za wskanikiem myszy, dopóki nie klikniesz lewym przyciskiem w miejscu, gdzie chcesz j ustawi . Klikni cie takie nie usunie jednak zaznaczenia cieki. Oczywicie moesz to zaznaczenie usun wprost lub przez zaznaczenie innej cieki. Istniej trzy sposoby zaznaczania cieki. Jeli klikniesz jej rodkow cz prawym przyciskiem myszy, zaznaczysz j ca i po wcini ciu klawisza G b dziesz móg j przesuwa w dowolne miejsce obszaru edycyjnego okna VSE. Jeli klikniesz prawym przyciskiem myszy strzak na lewym lub prawym kocu cieki, zaznaczysz tylko ten koniec (patrz rysunek 5.11). Zaznaczone koce moesz przesuwa (po wcini ciu klawisza G) niezalenie jeden od drugiego, co oczywicie spowoduje skrócenie lub wyduenie samej cieki. Jeli zwi kszysz dugo cieki w porównaniu z jej pierwotnym rozmiarem, dodatkowa cz zostanie wypeniona klatkami zawierajcymi ostatni (przy poszerzaniu w prawo) lub pierwsz (przy poszerzaniu w lewo) klatk oryginau. Dodane klatki przyjm kolor szary, jako e b d reprezentowa powtórzony obraz nieruchomy (patrz rysunek 5.12). Kade z tych trzech zaznacze moesz wykona równie
OBSUGA EDYTORA SEKWENCJI WIDEO~ 183
RYSUNEK 5.11. Ścieżka niezaznaczona, ścieżka zaznaczona, ścieżka z zaznaczonym lewym końcem, ścieżka z zaznaczonym prawym końcem
RYSUNEK 5.12. Ścieżka wydłużona w prawo
przez wcini cie klawisza B i zakrelenie odpowiedniego prostokta — ramki zaznaczenia. Jeli ramka obejmie tylko rodkow cz cieki, zaznaczona zostanie caa cieka, a jeli wewntrz ramki znajdzie si tylko jeden koniec, tylko on zostanie zaznaczony. Jeli chcesz przesuwa ciek w obr bie tylko jednego kanau, wcinij najpierw klawisz G, a potem X. Natomiast jeli po klawiszu G wciniesz Y, b dziesz móg przesuwa
zaznaczon ciek „pionowo”, czyli z kanau do kanau przy zachowaniu staego pooenia wzgl dem osi czasu. Jest to bardzo podobne do ograniczania ruchu w przestrzeni 3D. Rónica polega tylko na tym, e tutaj mamy do czynienia z dwuwymiarow przestrzeni obszaru edycyjnego VSE. Za pomoc klawiszy Shift+S moesz przyciga pocztek cieki do klatki biecej, która jest oznaczana pionow zielon lini.
184 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
PANEL FILTER (FILTR) Inne, ale równie wane, operacje na ciekach oferuje panel Filter (filtr) nalecy do subkontekstu Sequencer buttons (przyciski sekwencera). Tutaj dost pne s polecenia odwracania obrazu w pionie (FlipX) lub poziomie (Flip Y), odwracania sekwencji w czasie (Flip Time), wczania efektu stroboskopowego polegajcego na wywietlaniu tylko co n-tej klatki (parametr Strobe). Moliwe jest take ustawienie kilku innych parametrów cieek wideo.
KANAY W oknie VSE cieki lokowane s w wskich okienkach zwanych kanaami (channels). Kanay s numerowane, przy czym kana nr 0 znajduje si na samym dole. Chocia wydaje si on pusty, tak naprawd zawiera ostateczn wersj komponowanej sekwencji i dlatego nie mona w nim umieci adnej sporód edytowanych cieek. Okno VSE w trybie Image Preview (podgld obrazu) umoliwia wybór kanau, którego zawarto
ma by wywietlana (patrz rysunek 5.13). Zauwa, e gdy kanay nie s powizane zalenociami kompozycyjnymi, pierwszestwo w wywietlaniu ma ta cieka, która ley w kanale o najwyszym numerze (najwyej w stosie kanaów). Dlatego w prezentowanym na rysunku przykadzie, gdy parametr Chan (kana) ma warto 0, w tych klatkach, w których obie cieki s obecne, wywietlana jest cieka z kanau 2. RYSUNEK 5.13. Wyświetlanie zawartości kanałów o numerach 2, 1 i 0
OBSUGA EDYTORA SEKWENCJI WIDEO~ 185
CICIE I KOPIOWANIE Istniej dwa podstawowe sposoby ci cia cieek. Wcini cie klawisza K przecina ciek w biecej klatce w sposób destrukcyjny. Destrukcyjno takiego ci cia polega na tym, e obie cz ci, na jakie dzielona jest cieka, s niekompletne, zupenie tak, jakbymy przeci li tam filmow. Natomiast poczenie klawiszy Shift+K tnie ciek niedestrukcyjnie. W tym przypadku obie cz ci zawieraj cao cieki; kada z nich stanowi okrojon wersj caoci. Rónic mi dzy ci ciem destrukcyjnym a niedestrukcyjnym moesz zobaczy na rysunku 5.14 — pokazano tam oba rodzaje ci wykonanych jednoczenie na ciekach wizji i fonii (ten sam rysunek znajdziesz te w kolorowej wkadce). Zauwa, e w przypadku ci cia niedestrukcyjnego kada z powstaych cz ci ma swoj kontynuacj a do koca oryginalnej cieki. Aby to byo lepiej widoczne, na rysunku 5.15 pokazano rozci t ciek wizyjn, której obie cz ci zostay rozdzielone. Przez odpowiednie przesuwanie koców tych nowych cieek mona w kadej z nich przywróci cz lub cao cieki oryginalnej. RYSUNEK 5.14. Ścieżki sygnału wizyjnego i dźwiękowego rozcięte w sposób destrukcyjny i niedestrukcyjny
RYSUNEK 5.15. Dokładniejszy widok ścieżki wizyjnej rozciętej w sposób niedestrukcyjny
cieki mona równie duplikowa (klawisze Shift+D) i usuwa (klawisz X).
Edytowanie d wiku cieki dwi kowe mona importowa na dwa sposoby. Wybranie opcji Audio (HD) z menu Add (Dodaj) powoduje odtwarzanie dwi ków bezporednio z dysku twardego (std w nazwie opcji dodatek HD) bez adowania ich do pami ci komputera. Opcja ta umoliwia importowanie rozmaitych typów plików dwi kowych, wcznie z nagraniami w formacie MP3 i ciekami dwi kowymi filmów wideo. Opcja Movie + Audio
186 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
(film + dwi k) jest dost pna tylko w wersji HD. Z kolei opcja Audio (RAM) moe by
uyta tylko w odniesieniu do plików .wav. Jeli wybierzesz t opcj , dwi ki b d adowane do pami ci RAM, a cieka przyjmie posta wykresu fali akustycznej, co wida na rysunku 5.16. Zalet tej metody importowania jest to, e dwi ki mona póniej spakowa
do pliku .blend za pomoc polecenia External Data/Pack into.blend file (dane zewn trzne/pakuj do pliku .blend) z menu File (Plik). Dzi ki temu nie musisz pami ta , aby do pliku .blend docza kopi pliku dwi kowego. RYSUNEK 5.16. Ten sam plik dźwiękowy zaimportowany z opcją RAM (u góry) i z opcją HD (u dołu)
Panel Sequencer (sekwencer) nalecy do subkontekstu Sound block buttons (przyciski bloku dwi kowego) i pokazany na rysunku 5.17 udost pnia kilka przydatnych funkcji. Za pomoc przycisku Sync (synchronizuj) mona zsynchronizowa w czasie rzeczywistym odtwarzanie animacji 3D z dwi kiem, jednak nie ma to wi kszego zwizku z VSE. Natomiast funkcja Scrub (odtwarzaj) jest bardzo uyteczna w VSE. Jej wczenie umoliwia odtwarzanie cieki dwi kowej przez przesuwanie wskanika biecej klatki wzdu osi czasu. Kontrolki w dolnej cz ci panelu su do ustalania ogólnej siy gosu (pole Main), wyciszania (przycisk Mute) i eksportowania zmiksowanego dwi ku do pliku .wav (przycisk Mixdown). RYSUNEK 5.17. Panel Sequencer (sekwencer) z subkontekstu Sound block buttons (przyciski bloku dźwiękowego)
Panel Filter (filtr) nalecy do subkontekstu Sequencer buttons (przyciski sekwencera) i pokazany na rysunku 5.18 zawiera pola numeryczne do ustawiania parametrów Gain (sia gosu) i Pan (balans stereo) aktywnej cieki dwi kowej. Warto 0.0 tego
OBSUGA EDYTORA SEKWENCJI WIDEO~ 187
RYSUNEK 5.18. Panel Filter (filtr)
ostatniego parametru oznacza dokadne zrównowaenie obu kanaów stereo, warto
1.0 powoduje, e dwi k dociera tylko z prawego gonika, a warto –1.0 uaktywnia tylko lewy gonik. Balansu stereo nie da si animowa w sposób bezporedni, ale mona to zrobi przez powielenie danej cieki i ustawienie w poszczególnych kopiach rónych wartoci parametru Pan (balans stereo). Potem wystarczy animowa si gosu w tych ciekach, a to jest moliwe, bo parametr Gain (sia gosu) daje si animowa . Do sterowania si gosu cieki dwi kowej mona uy krzywej IPO typu Sequence (sekwencja), któr naley utworzy w oknie Ipo Curve Editor (Edytor krzywych IPO), tak jak na rysunku 5.19. Jeli nie ma tam jeszcze adnej krzywej, zastosowanie kombinacji Ctrl+LMB (lewy przycisk myszy) utworzy now krzyw, a jeli krzywa ju istnieje, dodany zostanie do niej nowy punkt kontrolny. Domylna dugo krzywej Sequence (sekwencja) wynosi 100 klatek i odpowiada to penej dugoci cieki sekwencji, bez wzgl du na jej rzeczywist dugo . Oczywicie mona wymusi tak sam numeracj klatek dla cieki i dla krzywej IPO — wystarczy w panelu Edit (Edycja) nalecym do subkontekstu Sequencer buttons (przyciski sekwencera) wczy przycisk IPO Frame locked (sprz one klatki IPO), tak jak na rysunku 5.20. RYSUNEK 5.19. Krzywa IPO w kanale Fac (współczynnik) steruje siłą głosu ścieżki dźwiękowej
Na rysunku 5.21 pokazana jest ta sama krzywa IPO i ta sama sekwencja audio co na rysunku 5.19, ale inna jest tutaj numeracja klatek. Na rysunku 5.19 wskanik biecej klatki w oknie edytora krzywych IPO znajduje si w klatce 95., co odpowiada 95 procentom cakowitej dugoci sekwencji. Dlatego w oknie edytora wideo wskanik znajduje si w klatce 234. Po sprz eniu klatek IPO z klatkami sekwencji, jak na rysunku 5.21, klatka 95. w oknie edytora krzywych IPO odpowiada 95. klatce w oknie edytora wideo. Na rysunkach czarno-biaych zielony wskanik biecej klatki moe by sabo widoczny, dlatego rysunki 5.19 i 5.21 zostay powtórzone w kolorowej wkadce.
188 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
RYSUNEK 5.20. Wymuszanie zgodności klatek IPO z klatkami aktualnej sekwencji
RYSUNEK 5.21. Okna edytorów wideo i krzywych IPO z taką samą numeracją klatek
AUDACITY Audacity jest potężnym edytorem plików dźwiękowych i jako taki stanowi niezbywalną część każdego zestawu narzędzi multimedialnych typu open source. Może służyć zarówno do wielorakiego modyfikowania dźwięków, jak i do konwertowania plików z jednego formatu w inny. Jest naprawdę wszechstronny, a przy tym niezwykle łatwy w obsłudze. Działa na większości platform komputerowych. Można go pobrać ze strony http://audacity.sourceforge.net.
Obsuga znaczników W oknie VSE dost pne s znaczniki klatek. Mona je dodawa , usuwa i edytowa . Aby utworzy znacznik w biecej klatce, wcinij Ctrl+Alt+M. Aby zaznaczy istniejcy znacznik, kliknij go prawym przyciskiem myszy; jeli chcesz zaznaczy kilka znaczników, uyj kombinacji Shift+RMB (prawy przycisk myszy) — ta sama kombinacja posuy Ci do usuni cia zaznaczenia wybranych znaczników. Do zaznaczania i usuwania zaznaczenia wszystkich znaczników moesz uy skrótu Ctrl+A. Aby usun znacznik, zaznacz go, a potem wcinij klawisze Shift+X. Funkcj przesuwania zaznaczonych znaczników uaktywnisz za pomoc klawiszy Ctrl+G.
OBSUGA EDYTORA SEKWENCJI WIDEO~ 189
Inne tryby wywietlania w VSE Najcz ciej uywanymi trybami wywietlania w edytorze wideo s tryby Sequence (sekwencja) oraz Image Preview (podgld obrazu), ale poza nimi dost pne s jeszcze: Histogram, Chroma Vectorscope (wektoroskop barw) i Luma Waveform (monitor przebiegu jasnoci).
HISTOGRAM W trybie histogramu moemy obserwowa poziomy jasnoci poszczególnych kanaów koloru. Wykresy supkowe przedstawiaj liczby pikseli na poszczególnych poziomach jasnoci w kadym kanale koloru. O pozioma wykresu reprezentuje poziomy jasnoci, od najniszych po lewej stronie do najwyszych po prawej, a liczba pikseli na danym poziomie obrazowana jest przez wysoko odpowiadajcego mu supka wykresu. Przykadowo wysoki czerwony supek w pobliu prawego koca wykresu oznacza, e obraz zawiera duo czerwonych pikseli o wysokim poziomie jasnoci. Rysunek 5.22 przedstawia histogramy trzech rónych klatek nagrania wideo. Jak wida , ksztat wykresu zmienia si wraz ze zmian ogólnej jasnoci filmowanej sceny (ten sam rysunek znajduje si równie w kolorowej wkadce). RYSUNEK 5.22. Histogramy trzech klatek nagrania wideo
190 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
CHROMA VECTORSCOPE (WEKTOROSKOP BARW) Tryb Chroma Vectorscope (wektoroskop barw) umoliwia ogldanie rozkadu barw i ich nasycenia w obrazie. Punkty widoczne wewntrz kolorowego szeciokta oznaczaj poszczególne kolory wyst pujce w obrazie. O pooeniu ktowym punktu decyduje barwa, a o pooeniu radialnym — nasycenie. Im wi ksze nasycenie, tym bliej konturów szeciokta ley dany punkt. Wyranie wida to na rysunku 5.23 — obecno
mocno nasyconych kolorów we wosach wymodelowanej postaci spowodowaa pojawienie si duej liczby punktów w pobliu kraw dzi szeciokta (ten sam rysunek moesz obejrze te w kolorowej wkadce). RYSUNEK 5.23. Okno VSE w trybie wektoroskopu barw
LUMA WAVEFORM (MONITOR PRZEBIEGU JASNOCI) Tryb Luma Waveform (monitor przebiegu jasnoci) wywietla krzywe reprezentujce przebieg jasnoci w kadym rz dzie pikseli obrazu. Jak wida na rysunku 5.24, w rodkowej cz ci obrazu, gdzie posta zasania jasne to, wyst puj gwatowne spadki jasnoci we wszystkich rz dach pikseli. Jeli klikniesz w nagówku okna przycisk CS (Color Separation — separacja barw), b dziesz móg zobaczy przebiegi jasnoci w kadym z trzech kanaów koloru (patrz rysunek 5.25 i kolorowa wkadka). RYSUNEK 5.24. Tryb Luma Waveform (monitor przebiegu jasności)
TWORZENIE PRZEJ I KOMPONOWANIE W VSE~ 191
RYSUNEK 5.25. Tryb Luma Waveform (monitor przebiegu jasności) z separacją barw
Tworzenie przej i komponowanie w VSE W edytorze wideo (VSE) mona zrobi znacznie wi cej, ni tylko ci i kopiowa cieki. Mona je take czy na wiele sposobów i tworzy rozmaite przejcia mi dzy nimi.
Nakadki alfa Jedn z najwaniejszych funkcji edytora wideo jest moliwo stosowania nakadek alfa (alpha overlays). Nakadka alfa to cieka z okrelonymi wartociami przezroczystoci (alfa), któr nakada si na inn ciek . Wartoci alfa decyduj wtedy, która z tych cieek jest widoczna. Wartoci te mog zmienia si w zakresie od 0 (pena przezroczysto ) do 1 (cakowite krycie). Aby zastosowa nakadk alfa, zaznacz dwie cieki w VSE — aktywna b dzie ta, któr zaznaczysz jako ostatni — a nast pnie wcinij klawisz spacji i z menu Add Sequence Strip (dodaj ciek sekwencji) wybierz jedn z nast pujcych trzech opcji:
Alpha Over (alfa nad) — umieszcza aktywn ciek nad drug zaznaczon ciek. Ta opcja umoliwia animowanie ogólnej przezroczystoci nakadanej cieki za pomoc krzywej IPO typu Fac (wspóczynnik). Alpha Under (alfa pod) — umieszcza aktywn ciek pod drug zaznaczon ciek. Ta opcja umoliwia animowanie ogólnej przezroczystoci spodniej cieki za pomoc krzywej IPO typu Fac (wspóczynnik). Alpha Over Drop (alfa pod nakadk) — umieszcza aktywn ciek nad drug zaznaczon ciek, ale w przeciwiestwie do opcji Alpha Over (alfa nad) umoliwia animowanie za pomoc krzywej IPO ogólnej przezroczystoci spodniej cieki.
Te trzy opcje daj du swobod w nakadaniu cieek. Nakadki alfa nie zale od kolejnoci kanaów, w których znajduj si czone cieki. Wana jest tylko kolejno , w jakiej cieki zostay zaznaczone. Na rysunku 5.26 pokazany jest rezultat naoenia obrazu PNG z przezroczystym tem (alfa ma tam warto 0) na klip wideo. W oknach Image Preview (podgld obrazu) po prawej stronie wida zawarto kanaów 3., 2. i 1. W duym oknie podgldu — nad ciekami — widoczny jest finalny efekt kompozycji, czyli zawarto kanau 0. Zastosowany tu plik PNG zosta utworzony przy uyciu ukadu w zów omawianego w rozdziale 4. i jest zamieszczony na pycie doczonej do ksiki, w podfolderze video_clips.
192 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
RYSUNEK 5.26. Nakładka alfa
Takie nakadanie cieek w edytorze wideo jest mniej efektywne ni komponowanie za pomoc w zów. Jest to jednak metoda szybka i zupenie wystarczajca do wykonywania prostych kompozycji.
Zanikania i przejcia Przejcia mi dzy kolejnymi ciekami wykonuje si zazwyczaj podobnie jak nakadki alfa. Dla danego typu przejcia tworzy si now ciek . Najcz ciej stosowane s pynne przejcia typu cross fade (stopniowe przenikanie), w których jedna cieka stopniowo zanika, a nast pujca po niej stopniowo si wyania. Aby utworzy pynne przejcie, zaznacz najpierw ciek , która ma stopniowo zanika , a potem wcinij klawisz Shift i zaznacz ciek , która ma si stopniowo pojawia
(dla standardowego przejcia pynnego kolejno zaznaczania pokrywa si z chronologiczn kolejnoci cieek). Wcinij klawisz spacji i z menu Add Sequence Strip (dodaj ciek sekwencji) wybierz opcj Cross (przenikanie). Blender utworzy now ciek obejmujc te klatki, w których obie zaznaczone cieki pokrywaj si (patrz rysunek 5.27). Dugo
przejcia b dzie dokadnie taka jak dugo cieki Cross (przenikanie). W oknach Image Preview (podgld obrazu) po prawej stronie rysunku 5.27 wida zawarto kanaów 3., 2. i 1. Po lewej, w duym oknie podgldu widoczny jest finalny efekt kompozycji z kanau 0. Opcja Gamma Cross (przenikanie gamma) dziaa podobnie jak Cross (przenikanie), ale dodatkowo wprowadza korekcj gamma, dzi ki czemu obraz wyjciowy jest lepiej zbalansowany kolorystycznie i tonalnie. Innym rodzajem przejcia mi dzy kolejnymi sekwencjami jest przecieranie (wipe). cieki tego typu przej tworzy si dokadnie tak samo jak cieki przenikania (patrz rysunek 5.28).
TWORZENIE PRZEJ I KOMPONOWANIE W VSE~ 193
RYSUNEK 5.27. Płynne przenikanie ścieżek
RYSUNEK 5.28. Ścieżka przecierania
Przejcia typu przecieranie mog by bardziej zrónicowane ni przenikanie. Róne typy takich przej s dost pne w panelu Effect (efekt) nalecym do subkontekstu Sequencer buttons (przyciski sekwencera) i pokazanym na rysunku 5.29. RYSUNEK 5.29. Ustawianie opcji przejścia typu przecieranie
W panelu tym mona take okreli stopie rozmycia (Blur) linii oddzielajcej obie sekwencje, a dla niektórych typów przecierania równie kt (Angle) ustawienia tej linii. Do wyboru s nast pujce typy przecierania:
194 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
Single Wipe (przecieranie pojedyncze) — linia prosta przeciera ekran, wymazujc jedn sekwencj i wprowadzajc nast pn. Double Wipe (przecieranie podwójne) — do przecierania pojedynczego dodaje drug lini poruszajc si tak, jakby bya lustrzanym odbiciem pierwszej. Iris Wipe (przecieranie koowe) — lini przecierajc jest okrg, który moe si rozszerza lub kurczy . Clock Wipe (przecieranie zegarowe) — lini przecierajc jest póprosta obracajca si wokó swojego pocztku, podobnie jak wskazówki zegara.
Na rysunku 5.30 pokazano przykady tych wszystkich typów przecierania. W kadym przypadku parametr Blur (rozmycie) ma warto 0.20. RYSUNEK 5.30. Przecieranie pojedyncze, podwójne, kołowe i zegarowe
TWORZENIE PRZEJ I KOMPONOWANIE W VSE~ 195
RYSUNEK 5.30. Ciąg dalszy
Zanikanie do czerni Za pomoc cieek typu Cross (przenikanie) mona tworzy take efekty polegajce na stopniowym zanikaniu obrazu a do cakowitej czerni lub innego, jednolitego koloru. Wcinij klawisz spacji i z menu Add Sequence Strip (dodaj ciek sekwencji) wybierz opcj Color Generator (generator koloru). Utworzysz w ten sposób ciek , która domylnie zawiera 50-procentow szaro . W panelu Effect (efekt) nalecym do subkontekstu Sequencer buttons (przyciski sekwencera) moesz zmieni ten kolor na inny — kliknij widoczn tu próbk , aby otworzy próbnik kolorów, tak jak na rysunku 5.31. Po wybraniu waciwego koloru z próbnika utwórz ciek Cross (przenikanie), która spowoduje stopniowe przechodzenie obrazu sekwencji w jednolity kolor. Ukad cieek powinien by mniej wi cej taki jak na rysunku 5.32.
196 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
RYSUNEK 5.31. Wybieranie koloru ścieżki
RYSUNEK 5.32. Układ ścieżek dla efektu zanikania do czerni
Transformacje Transformacje sekwencji wideo polegaj na skalowaniu, przesuwaniu i obracaniu obrazu. Kada z tych transformacji moe by animowana za pomoc cieki Transform (transformacja) i krzywej interpolacyjnej (IPO). Zaznacz ciek wideo, któr chcesz transformowa , a nast pnie z menu Add Sequence Strip (dodaj ciek sekwencji) wybierz opcj Transforms (transformacje), aby utworzy ciek transformacji. Do sterowania transformacjami suy panel Effect (efekt) nalecy do subkontekstu Sequencer buttons (przyciski sekwencera). Jak wida na rysunku 5.33, kadej z moliwych transformacji mona tu przypisa wartoci Start (pocztek) i End (koniec). Warto Start (pocztek) okrela stan danej transformacji w chwili, gdy krzywa IPO osiga poziom 0, a warto
End (koniec) wyznacza ten stan w chwili, gdy krzywa IPO osiga poziom 1. Na rysunku 5.34 pokazany jest rezultat animowania wszystkich trzech transformacji z wartociami pocztkowymi i kocowymi, takimi jak na rysunku 5.33. Podobnie jak w przypadku cieek dwi kowych, krzywa IPO obejmuje swoim zasi giem 100 klatek, ale te klatki pokrywaj ca dugo cieki. Aby wymusi zgodno
numeracji klatek dla krzywej IPO i dla cieki, musisz wczy opcj IPO Frame locked (sprz one klatki IPO) w panelu Edit (Edycja) nalecym do subkontekstu Sequencer buttons (przyciski sekwencera). Szybkoci wideo mona sterowa za pomoc cieki Speed Control (sterowanie szybkoci). W panelu Edit (Edycja) nalecym do subkontekstu Sequencer buttons (przyciski sekwencera) mona wybra , czy wartoci krzywej IPO maj by powizane z poszczególnymi klatkami (warto 1 reprezentuje wtedy klatk ostatni, a warto
0 — pierwsz), czy te z szybkoci (velocity) sekwencji. Tak jak w innych przypadkach mona wymusi zgodno numeracji klatek dla krzywej IPO i dla sekwencji przez wczenie opcji IPO Frame locked (sprz one klatki IPO) w panelu Edit (Edycja).
TWORZENIE PRZEJ I KOMPONOWANIE W VSE~ 197
RYSUNEK 5.33. Ścieżka transformacji i ich parametry
Inne efekty Sekwencje wideo mona wzajemnie nakada nie tylko w formie nakadek alfa. Nakadanie moe mie take charakter addytywny, subtraktywny lub multiplikatywny. Odpowiednie opcje, czyli Add (Dodaj), Sub (odejmij) i Mult (pomnó), znajdziemy w menu Add Sequence Strip (dodaj ciek sekwencji). Kada z tych metod nakadania polega na wykonaniu odpowiednich operacji matematycznych na sekwencjach wejciowych. Efekt Glow (powiata) polega na rozmywaniu tych obszarów obrazu, w których jasno
przekracza okrelon warto progow. Przykad zastosowania tego efektu pokazano na rysunku 5.35. Wspomnian warto progow, wielko rozmycia i inne parametry powiaty mona ustali w panelu Effect (efekt). Intensywno efektu mona animowa
za pomoc krzywej IPO zwizanej ze ciek Glow (powiata).
Korzystanie z moduów dodatkowych Wi cej efektów mona uzyska dzi ki zewn trznym moduom dodatkowym. Wiele takich moduów rozszerzajcych moliwoci edytora wideo znajdziesz pod adresem www.users.cs.umn.edu/~mein/blender/plugins/sequence.html. Aby zastosowa tego typu efekt, pobierz modu odpowiedni dla Twojego systemu operacyjnego, a nast pnie zaznacz sekwencj lub sekwencje, którym efekt ma by przypisany, i z menu Add Sequence Strip (dodaj ciek sekwencji) wybierz opcj Plugin (modu dodatkowy). Otworzy si wtedy przegldarka plików i zostaniesz poproszony o wskazanie moduu na dysku twardym. Po odszukaniu i zaznaczeniu waciwego pliku kliknij przycisk Select Plugin (wybierz modu). W opisie konkretnego moduu znajdziesz wskazówki dotyczce ustawiania parametrów efektu i jego animowania.
198 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
RYSUNEK 5.34. Sterowanie transformacjami za pomocą krzywej IPO
RYSUNEK 5.35. Obraz przed zastosowaniem i po zastosowaniu efektu Glow (poświata)
TRÓJWYMIAROWE SCENY BLENDERA W VSE~ 199
Na rysunku 5.36 pokazany jest efekt Old Movie (stary film) dost pny w postaci moduu dodatkowego. Nadaje on sekwencji wideo charakter starego, czarno-biaego, ziarnistego i porysowanego filmu. RYSUNEK 5.36. Efekt uzyskany dzięki zewnętrznemu modułowi Old Movie (stary film)
Metacieki Aby zachowa przejrzysto obszaru roboczego w oknie edytora wideo, moesz czy
cieki w tzw. metacieki. Po prostu zaznacz cieki, które chcesz poczy , a nast pnie wcinij klawisz M. Aby rozbi metaciek na poszczególne cieki, zaznacz j i wcinij klawisze Alt+M.
Trójwymiarowe sceny Blendera w VSE cieki z sekwencjami obrazów mona tworzy take przez animowanie scen Blendera. Mona wi c bardzo atwo komponowa trójwymiarowe animacje. Co wi cej, sceny te mog by ju same w sobie kompozycjami utworzonymi za pomoc systemu w zów, a to oznacza, e moliwoci edytora wideo mona poszerzy o funkcje kompozycyjne dost pne tylko za porednictwem w zów.
Dodawanie napisów do sekwencji wideo Prosta, ale wygodna metoda dodawania napisów do sekwencji wideo polega na tworzeniu trójwymiarowego tekstu w oknie z widokiem sceny, a nast pnie czeniu go z nagraniem wideo w oknie VSE. Aby w ten sposób doda napisy do sekwencji end_zone_clip.avi zamieszczonej na pycie doczonej do ksiki, wykonaj nast pujce czynnoci: 1. Skopiuj plik wideo z pyty na dysk twardy. To nagranie zostao zarejestrowane z pr dkoci 24 klatek na sekund , a zatem ustaw tak warto w panelu Format nalecym do kontekstu Render buttons (przyciski renderowania). Zrób to jeszcze przed otwarciem pliku. Aby umieci sekwencj wideo w obszarze edycyjnym
200 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
okna VSE, wcinij klawisz spacji, wybierz opcj Movie + Audio (HD) (film + dwi k), tak jak na rysunku 5.37, a nast pnie odszukaj i zaznacz wspomniany wyej plik, po czym kliknij przycisk Select Movie + Audio (wybierz film + dwi k). Ustaw wskanik biecej klatki w klatce nr 1 i wcinij klawisze Shift+S, aby ustawi pocztki cieek w klatce pierwszej (patrz rysunek 5.38). W panelu Sequencer (sekwencer) nalecym do kontekstu Sound block buttons (przyciski bloku dwi kowego) wcz opcj Scrub (odtwarzaj), dzi ki czemu b dziesz móg odsuchiwa ciek dwi kow podczas przesuwania wskanika biecej klatki. Korzystajc z tej funkcji, odszukaj miejsce, w którym mier mówi: „Check” (szach). Tu umiecisz napis. RYSUNEK 5.37. Dodawanie ścieżki Movie + Audio (HD) (film + dźwięk)
RYSUNEK 5.38. Wyrównywanie ścieżek w klatce nr 1
2. Teraz wcz okno 3D View (Widok 3D). Usu domylny szecian, wciskajc w tym celu klawisz X, po czym na klawiaturze numerycznej wcinij klawisz 0, aby wczy
widok z kamery. W nagówku górnego okna z listy rozwijanej Scene (scena) wybierz opcj Add New (Dodaj nowy), tak jak na rysunku 5.39, a nast pnie wybierz Full Copy (pena kopia), jak na rysunku 5.40. Nowej scenie nadaj nazw Check, aby informowaa o treci napisu. 3. Sprawd, czy w cz ci Edit Methods (metody edycji) okna User Preferences (Ustawienia uytkownika) wczona jest opcja Add new objects/Aligned to View (dodaj nowe obiekty/zgodnie z widokiem). To zapewni waciwe ustawienie napisu wzgl dem kamery. Wcinij klawisz spacji i wybierz Add/Text (Dodaj/Tekst), aby utworzy obiekt tekstowy (patrz rysunek 5.41). Wcz tryb edycji i zmie tre napisu na Check (szach), tak jak na rysunku 5.42.
TRÓJWYMIAROWE SCENY BLENDERA W VSE~ 201
RYSUNEK 5.39. Tworzenie nowej sceny
RYSUNEK 5.40. Wybieranie opcji Full Copy (pełna kopia)
RYSUNEK 5.41. Dodawanie obiektu tekstowego
RYSUNEK 5.42. Edycja tekstu
4. Na obiekt tekstowy naó materia. Zrób to w zwyky sposób, otwórz panel Link and Materials (Powizania i materiay) nalecy do kontekstu Editing (edytowanie) i kliknij w nim przycisk New (Nowy). Utwórz materia biay i bezcieniowy (shadeless), taki jak na rysunku 5.43.
202 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
RYSUNEK 5.43. Biały, bezcieniowy materiał dla obiektu tekstowego
5. Dodaj pask siatk — wybierz polecenie Add/Mesh/Plane (Dodaj/Siatka/Kwadrat), tak jak na rysunku 5.44. Ustaw t siatk tu za obiektem tekstowym, przesuwajc j w trybie obiektowym wzdu jej lokalnej osi Z, tak jak na rysunku 5.45. Przypisz jej czarny materia bezcieniowy z wczon opcj ZTransp (Przezr.Z) i parametrem Alpha (alfa) ustawionym na 0.5 (patrz rysunek 5.46). Przeskaluj i ustaw siatk tak, aby tworzya waciwie dopasowane to dla napisu, tak jak na rysunku 5.47. Na koniec wcz subkontekst World buttons (Ustawiania wiata) i kliknij przycisk X na prawo od aktualnej nazwy wiata, aby ten wiat usun , bo adne to w tej scenie nie b dzie potrzebne. RYSUNEK 5.44. Dodawanie płaskiej siatki
6. Wró do okna VSE i dodaj ciek z utworzon wanie scen. W tym celu wcinij klawisz spacji i z menu Add Sequence Strip (dodaj ciek sekwencji) wybierz opcj Scene (Scena), tak jak na rysunku 5.48. Poniewa dost pnych jest wi cej ni jedna scena, wybierz t o nazwie Check, tak jak na rysunku 5.49. ciek sceny ustaw w oknie VSE tak jak na rysunku 5.50. W trybie Image Preview (podgld obrazu) napis powinien by widoczny.
TRÓJWYMIAROWE SCENY BLENDERA W VSE~ 203
RYSUNEK 5.45. Ustawianie siatki
RYSUNEK 5.46. Materiał dla płaskiej siatki
RYSUNEK 5.47. Tekst i płaska siatka
204 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
RYSUNEK 5.48. Dodawanie ścieżki ze sceną
RYSUNEK 5.49. Wybór właściwej sceny
RYSUNEK 5.50. Ustawienie napisu
TRÓJWYMIAROWE SCENY BLENDERA W VSE~ 205
7. Kliknij prawym przyciskiem myszy ciek wideo, aby j zaznaczy . Nast pnie przytrzymaj wcini ty klawisz Shift i kliknij prawym przyciskiem myszy ciek sceny. Kiedy zaznaczysz ju te dwie cieki, wcinij klawisz spacji i z menu Add Sequence Strip (dodaj ciek sekwencji) wybierz opcj Alpha Over (alfa nad). Teraz tekst powinien by widoczny na tle obrazu. Jeli jego rozmiar lub pooenie jest niewaciwe, wprowad odpowiednie poprawki w oknie 3D View (Widok 3D). Z kolei w oknie edytora wideo ustal pooenia pocztku i koca cieki, aby napis pojawia si w odpowiednim momencie i by widoczny dostatecznie dugo. Ostatecznie powiniene uzyska efekt podobny do tego, jaki wida na rysunku 5.51. RYSUNEK 5.51. Napis utworzony jako nakładka alfa
Dodawanie kompozycji scen Dodawanie cieek z scenami skomponowanymi za pomoc w zów przebiega podobnie jak w przypadku zwykej sceny 3D. Jedyna rónica polega na tym, e scena skomponowana musi mie wczon opcj Do Composite (utwórz kompozycj ) w panelu Anim (Animacja) nalecym do subkontekstu Render buttons (przyciski renderowania). Zawartoci takiej cieki b dzie to, co zostanie wygenerowane przez w ze Composite (kompozycja).
Renderowanie sekwencji Aby wyrenderowa gotow sekwencj , musisz wczy opcj Do Sequence (utwórz sekwencj ) w panelu Anim (Animacja) nalecym do subkontekstu Render buttons (przyciski renderowania), tak jak na rysunku 5.52. Wczenie tej opcji spowoduje, e renderowana b dzie zawarto okna Video Sequence Editor (Edytor wideo), a nie 3D View (Widok 3D).
206 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
RYSUNEK 5.52. Włączona opcja Do Sequence (utwórz sekwencję)
Przy renderowaniu sekwencji, podobnie jak przy renderowaniu animacji, masz do wyboru rozmaite formaty wyjciowe. Rezultatem renderowania mog by nieruchome klatki lub plik wideo. Plik wideo moesz wyrenderowa z dwi kiem, jeli z listy rozwijanej w panelu Format nalecym do subkontekstu Render buttons (przyciski renderowania) wybierzesz opcj FFMpeg. Gdy to zrobisz, uzyskasz dost p do dalszych opcji obrazu i dwi ku w panelach Video i Audio. Wybór konkretnych ustawie zaley od zainstalowanych kodeków i moliwoci sprz towych oraz programowych samego komputera i systemu operacyjnego. Ja najcz ciej wybieram kodowanie typu Xvid dla wideo i MP3 dla audio. W poczeniu z opcj Multiplex audio (multipleksowanie dwi ku) daje to dobrej jakoci pliki .avi z prawidowo zsynchronizowanym dwi kiem zarówno w systemie Windows, jak i Mac. By moe na Twoim komputerze inna kombinacja tych ustawie da lepsze wyniki — po prostu musisz poeksperymentowa . Plik wideo moe zawiera take dodatkowe informacje, takie jak nazwa pliku, data utworzenia, nazwa sceny itp. Odpowiednie opcje dost pne s w panelu Stamp (stemplowanie) po wczeniu w nim przycisków Enable Stamp (wcz stemplowanie) i Draw Stamp (rysuj stempel) (patrz rysunek 5.53). Wybrane informacje b d widoczne w lewym górnym rogu obrazu wideo. RYSUNEK 5.52. Panel Stamp (stemplowanie)
Renderowanie plików wideo z dwi kiem jest jednym z ostatnich etapów tworzenia filmów, ale nie jest to ostatni etap nauki Blendera. Z pozostaych dwóch cz ci ksiki dowiesz si , jak za pomoc skryptów Pythona mona automatyzowa wykonywanie okrelonych zada i tworzy nowe narz dzia, a za pomoc silnika gier (BGE) generowa
sceny interaktywne.
PODSUMOWANIE~ 207
WIAT BLENDERA WIZUALIZACJA PRZESZOCI I PRZYSZOCI Brytyjskie studio See3D (www.see3d.co.uk) zajmuje się tworzeniem wizualizacji rozmaitych miejsc, produktów i procesów. Głównym narzędziem do grafiki 3D jest tutaj Blender. Intensywnie wykorzystywane są także edytor wideo i system węzłów. Wśród klientów studia są korporacje przemysłowe, akademickie instytuty badawcze i organizacje rządowe, a realizowane projekty to wizualizacje obiektów historycznych, urbanistycznych, konstrukcyjnych i innych. Niedawno wykonana przez to studio wizualizacja budowy akweduktu w Pontcysyllte została wykorzystana w dokumentalnym serialu telewizji BBC pt. Hidden Histories. Projekt powstał na zamówienie rady miasta Wrexham, w ramach starań o wpisanie akweduktu na listę dziedzictwa światowego. Samo nagranie wideo jest doskonałym przykładem wizualizacji procesu, jaki miał miejsce ponad 200 lat temu, kiedy to budowano najdłuższy i najwyższy akwedukt w Brytanii. Film możesz obejrzeć w całości na stronie http://see3d.co.uk/customers_heritage.htm.
Podsumowanie Importuj, edytuj i renderuj wideo przy uyciu edytora VSE. VSE, czyli Video Sequence Editor (Edytor wideo), jest pot nym, wieloplatformowym narz dziem do edycji wideo. Jedn z jego najwi kszych zalet jest to, e bez wi kszych problemów obsuguje szerok gam formatów graficznych, filmowych i dwi kowych zarówno na wejciu, jak i na wyjciu. Opanuj to Zaimportuj plik idol_clip.mov z pyty doczonej do ksiki. Za pomoc cieki Transform (transformacja) utwórz animacj obrotu obrazu. Wyrenderuj przetworzone w ten sposób wideo jako seri obrazów JPEG. Twórz przejcia, nakadki i inne efekty. VSE oferuje wiele gotowych efektów i przej , dzi ki którym mona szybko i atwo tworzy proste kompozycje wideo. Bez problemu mona te wykorzystywa przezroczysto zdefiniowan w scenach 3D. Opanuj to W filmie end_zone_clip.avi utwórz napis o treci Checkmate (szach i mat). Napis powinien si pojawi , gdy kwesti t wypowiada robot. Wyrenderuj film wraz z dwi kiem jako plik .avi. W czaj do filmów sceny 3D bezporednio lub po skomponowaniu za pomoc
systemu wzów. VSE umoliwia czenie sekwencji wideo z animowanymi scenami przygotowanymi w oknie 3D View (Widok 3D) i scenami skomponowanymi w oknie Node Editor (edytor w zów). W sumie tworzy to niezwykle pot ny i w peni zintegrowany system kompozycyjno-edycyjny. Opanuj to Kompozycj green screen utworzon w ramach wiczenia z rozdziau 4. otwórz w oknie VSE, a nast pnie pocz j z dowoln ciek wideo, tworzc mi dzy nimi przejcie typu Wipe (przecieranie). Uzyskan sekwencj wyrenderuj w formacie, jaki uznasz za stosowny.
208 ~ROZDZIA 5. EDYTOR WIDEO (VSE)
Cz II
Zgbianie Pythona
Rozdzia 6. Python dla niecierpliwych Rozdzia 7. Skrypty Pythona w Blenderze Rozdzia 8. W o wielu gowach, czyli inne zastosowania Pythona w Blenderze
210 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
WPROWADZENIE DO PYTHONA~ 211
Rozdzia 6.
Python dla niecierpliwych Jednym z zaawansowanych elementów Blendera jest wbudowany i w peni funkcjonalny interpreter skryptowego j zyka o nazwie Python. To umoliwia bezporedni dost p do wewn trznych danych Blendera, dzi ki czemu moliwe jest automatyzowanie wykonywanych zada oraz doskonalenie funkcjonowania wielu narz dzi wcznie z systemem w zów, silnikiem gier i krzywymi interpolacyjnymi. By jednak móc z tych moliwoci skorzysta , musisz pozna sam j zyk Python. W niniejszym rozdziale staraem si zawrze te informacje, które mog by przydatne w pocztkowej fazie nauki programowania w tym j zyku. Z tego rozdziau dowiesz si , jak:
pisa proste skrypty w j zyku Python, uruchamia powok Pythona i rodowisko IDLE, stosowa podstawowe elementy skadni Pythona.
Wprowadzenie do Pythona Kilka nast pnych rozdziaów powi ciem dog bnej prezentacji zastosowa skryptów Pythona w Blenderze. Poniewa ksika jest skierowana do uytkowników Blendera, którzy nie musz by biegli w programowaniu, postanowiem zacz od podstaw. Oczywicie, nawet skromne dowiadczenie w tej dziedzinie b dzie bardzo pomocne. Jeli znasz ju jaki j zyk programowania zorientowany obiektowo, lektura tych rozdziaów z pewnoci nie sprawi Ci adnych problemów. Z drugiej strony, jeli dwi k takich sów jak zmienna przyprawia Ci o zawrót gowy, b dziesz musia czyta je nieco wolniej i z wi ksz koncentracj. Mam jednak nadziej , e przy odrobinie cierpliwoci i wytrwaoci zdoasz zg bi prezentowane tu zagadnienia na tyle, aby póniej móc samodzielnie pisa uyteczne skrypty.
Czym jest Python? Python to powszechnie uywany j zyk skryptowy ogólnego przeznaczenia. Naley do kategorii j zyków zorientowanych obiektowo. Znajduje zastosowanie w wielu dziedzinach, wcznie z badaniami naukowymi i programowaniem serwisów internetowych. Jak ju wspominaem, Python jest równie j zykiem skryptowym Blendera. W tym momencie zakadam, e nic wi cej o Pythonie nie wiesz, a jeli jest inaczej, przejd od razu do tego, co Ci najbardziej interesuje.
212 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
Jeli nic nie wiesz o Pythonie i programowaniu, prawdopodobnie zadajesz sobie teraz pytanie: „Co to takiego jest skrypt?”. Rzeczywicie, bez znajomoci tego poj cia trudno b dzie Ci zrozumie , w czym Python moe by uyteczny, zwaszcza w odniesieniu do Blendera. Spróbujmy zatem zag bi si nieco bardziej w szczegóy zwizane z tym zagadnieniem.
JAK DZIAAJ PROGRAMY Zasadniczo istniej dwa sposoby dziaania programów komputerowych. Zaley to od j zyka, w jakim zostay napisane. Niektóre z nich, na przykad C i C++, s jzykami kompilowanymi, co oznacza, e programista pisze program w formie zwykego tekstu, a nast pnie przetwarza go za pomoc specjalnego programu zwanego kompilatorem. Odczytuje on tekst programu (kod ródowy) i zamienia go w binarny plik wykonywalny. Taki plik jest zakodowany w systemie zero-jedynkowym i jest zupenie nieczytelny dla czowieka (zwykego miertelnika). Jest to klasyczny model programu kompilowanego. W przypadku programów typu open source, takich jak GNU General Public License (GPL), istotny jest swobodny dost p do kodu ródowego. Otwarte licencje, takie jak GPL, wymagaj, aby uytkownik mia dost p nie tylko do pliku wykonywalnego, ale take do kodu czytelnego dla czowieka. Blender jest pisany gównie w j zyku C, a zatem naley do kategorii programów kompilowanych. Wi kszo uytkowników korzysta z binarnych plików wykonywalnych, pobierajc je w postaci plików .zip lub gotowych instalatorów dla konkretnego systemu operacyjnego. Pliki wykonywalne s tworzone tylko dla wygody uytkowników, bo licencja nie wymaga ich udost pniania. Jedyne, co jest wymagane, to swobodny dost p do kodu ródowego. W przypadku Blendera kod ten moesz pobra ze strony domowej programu lub z repozytorium kolejnych wersji (t drog pobieraj kod twórcy programu). Inaczej funkcjonuj programy tworzone za pomoc jzyków interpretowanych. Kod napisany w takim j zyku jest wykonywany przez inny program zwany interpreterem. Oba programy — interpreter i kod przez niego wykonywany — dziaaj jednoczenie. Proces kompilacji przypomina tumaczenie ksiki z jednego j zyka na inny. Kompilator przekada kod ródowy na j zyk zrozumiay dla komputera i po zakoczeniu tego procesu otrzymujemy kod binarny niezaleny od róda. Z kolei prac interpretera mona porówna z prac tumacza symultanicznego, który na bieco tumaczy sowa osoby przemawiajcej. W tym przypadku zarówno mówca, jak i tumacz musz pracowa
jednoczenie, aby suchacz móg zrozumie tre przemówienia. Programy pisane w j zykach interpretowanych (czyli takie, które s wykonywane przez interpreter) cz sto nazywane s skryptami. A zatem nazywanie Pythona jzykiem skryptowym to po prostu inny sposób wyraania faktu, e jest on j zykiem interpretowanym. W pewnych sytuacjach lepiej sprawdzaj si j zyki interpretowane, a w innych — kompilowane. Te pierwsze nadaj si szczególnie do szybkiego tworzenia krótkich programów realizujcych konkretne zadanie. Ich skadnia zwykle dopuszcza wyszy stopie abstrakcji, dzi ki czemu kodowanie zoonych, ale typowych funkcji staje si duo atwiejsze. Z drugiej strony konieczno równoczesnej pracy interpretera powoduje spowolnienie pracy programu, a to w przypadku rozbudowanych aplikacji wielozadaniowych mogoby by wyranie odczuwalne. Tu przewag maj j zyki kompilowane. Jednak obie
WPROWADZENIE DO PYTHONA~ 213
metody programowania mona z powodzeniem czy , czego najlepszym dowodem jest Blender, który sam pisany jest w j zyku C (kompilowanym), ale potrafi te korzysta
ze skryptów Pythona (interpretowanych).
SKRYPTY W BLENDERZE W tym rozdziale poznasz podstawy Pythona i zaznajomisz si z jego domylnym rodowiskiem programistycznym zwanym w skrócie IDLE. Znajomo tego rodowiska, cho by pobiena, jest niezb dna do pisania nawet najprostszych skryptów. Nie musisz jednak powi ca na to zbyt wiele czasu, bo masz do dyspozycji inny interpreter Pythona, lepiej dostosowany do Twoich potrzeb. To prawda, Blender poza wszystkimi innymi funkcjami ma jeszcze wbudowany wasny interpreter Pythona. Wbudowany interpreter oraz interfejs programowania aplikacji (API) daje dost p do zasobów i funkcji Blendera, dzi ki czemu moesz tworzy skrypty realizujce rozmaite zadania, poczwszy od automatyzowania powtarzajcych si czynnoci, których wykonywanie za porednictwem standardowego interfejsu Blendera byoby zbyt mudne, poprzez tworzenie wasnych makr i narz dzi, a skoczywszy na wykonywaniu zoonych wizualizacji matematycznych uruchamianych jednym klikni ciem myszy. Ale to nie wszystko. Python jest tak mocno zintegrowany z Blenderem, e mona z niego korzysta
nie tylko za porednictwem interpretera skryptów, ale take w systemie w zów czy podczas tworzenia klatek kluczowych i wi zów. Zdarzenia wyst pujce w trakcie odtwarzania animacji mog uruchamia okrelone skrypty poprzez specjalne cza skryptowe. Wszystkie funkcje Pythona s dost pne take z poziomu silnika gier. W nast pnych rozdziaach zobaczysz, jak si to wszystko robi, a zdobyta wiedza pozwoli Ci wkroczy w zupenie nowy wiat moliwoci Blendera.
Dlaczego Python? Python od samego pocztku, czyli od roku 1991, jest powszechnie stosowany w najrozmaitszych dziedzinach programowania. Powodów tego jest kilka. Po pierwsze, Python jest stosunkowo atwy do opanowania. Dla kogo, kto zna inne j zyki programowania, pewnym problemem moe by specyficzna skadnia, ale za to wiele funkcji, których brakuje w innych j zykach, tutaj jest zaimplementowanych w sposób bezporedni. Pocztkujcy programista ma uatwione zadanie, bo wysoki poziom abstrakcji tego j zyka pozwala w prosty sposób realizowa to, co w innych j zykach cz sto wymaga stosowania skomplikowanych rozwiza. Cz sto zdarza si , e dowiadczony programista, rozpoczynajc prac z Pythonem, niepotrzebnie koduje pewne rzeczy w skomplikowany sposób. Przykadowo przeszukiwanie list w Pythonie realizowane jest znacznie prociej ni w innych powszechnie stosowanych j zykach. Po drugie, Python tworzy bardzo przejrzysty i czytelny kod, co znacznie uatwia jego modyfikowanie. Jest to zreszt jedna z najbardziej charakterystycznych cech tego j zyka. Przykadowo zasi g takich struktur skadniowych jak p tla for czy instrukcje warunkowe jest tutaj determinowany przez wci cia kolejnych linii kodu. W innych j zykach jest to realizowane za pomoc rozmaitych nawiasów, a biae znaki, tabulatory i odst py maj tam znacznie mniejsze znaczenie. Rozwizanie zastosowane w Pythonie eliminuje moliwo popenienia b du przez opuszczenie lub wstawienie zego nawiasu,
214 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
co bywa zmor programistów korzystajcych z innych j zyków. Interpreter Pythona sprawdza ukad wci i w razie wykrycia nieprawidowoci sygnalizuje bd oraz przerywa wykonywanie skryptu. Z drugiej strony, jeli wci cia s prawidowe, zakresy poszczególnych struktur skadniowych s wyranie widoczne. W praktyce programici stosuj takie wci cia nawet w tych j zykach, które tego nie wymagaj. Jak wida , Python po prostu zmusza programist do tworzenia kodu zwartego i czytelnego. Po trzecie, Python oprócz wysokiego poziomu abstrakcji i skadni wymuszajcej przejrzysto kodu oferuje równie wszystkie funkcje programowania zorientowanego obiektowo (OOP — Object-Oriented Programming). To pozwala programicie definiowa
wasne struktury danych zwane klasami. Konkretne egzemplarze danej klasy nazywane s obiektami. Programowanie zorientowane obiektowo polega w duej mierze na przesyaniu informacji mi dzy obiektami, co jest realizowane przez ich skadniki zwane metodami. Kada klasa ma swoje specyficzne metody. Jako przykad rozwamy dwie klasy o nazwach Osoba i Auto. Konkretny czowiek jest obiektem nalecym do klasy Osoba. Kady z nas ma okrelony kolor oczu, a zatem jest sens definiowania w klasie Osoba metody, która b dzie odpowiada na pytanie: „Jaki jest kolor oczu tej osoby?”. Nie ma natomiast sensu zadawanie takiego pytania w odniesieniu do samochodu, dlatego w klasie Auto nie zdefiniujemy takiej metody. Wielk zalet programowania zorientowanego obiektowo jest to, e gdy chcemy skorzysta z bibliotek napisanych przez innych programistów, potrzebna nam jest znajomo tylko wyst pujcych tam klas i ich metod. Peny zestaw klas, metod i specjalnych zmiennych dla danego programu nosi nazw interfejsu programowania aplikacji (API — Application Programming Interface). W kolejnych rozdziaach zaprezentuj API Blendera, bo znajomo jego klas b dzie potrzebna przy pisaniu skryptów. atwo , z jak mona tworzy i wykorzystywa
biblioteki z kodami Pythona, sprawia, e liczba tych bibliotek jest naprawd imponujca. Dzi ki temu pisanie bardziej zoonych skryptów staje si duo prostsze — wystarczy utworzy gówny szkielet programu, a szczegóowe procedury mona zaimplementowa
z ogólnie dost pnych bibliotek. Kolejnym powodem, dla którego Python zosta wybrany jako j zyk skryptowy dla Blendera, jest jego przynaleno do kategorii open source. Dzi ki temu móg by
dowolnie integrowany z Blenderem bez specjalnych licencji i zezwole. Python nie jest adnym wyjtkiem pod tym wzgl dem — istniej te inne j zyki skryptowe typu open source — ale o jego wyborze zadecydoway pozostae, wymienione wczeniej zalety.
Inne róda wiedzy W tym rozdziale zamierzam przekaza Ci tylko niezb dne minimum wiedzy na temat Pythona, aby móg zrozumie zagadnienia zwizane z tworzeniem skryptów dla Blendera — b dzie o nich mowa w nast pnych rozdziaach. Tam skupimy si przede wszystkim na klasach i funkcjach specyficznych dla tego programu. Jeli chcesz pozna
inne funkcje Pythona, musisz si gn po inne róda wiedzy na jego temat. Zach cam Ci do tego, bo jeli nawet zamierzasz tworzy skrypty wycznie dla Blendera, szersza znajomo samego Pythona i jego narz dzi z pewnoci okae si przydatna.
WPROWADZENIE DO PYTHONA~ 215
DOKUMENTACJA, KSI KI I SAMOUCZKI Oficjalna dokumentacja Pythona dost pna jest w internecie pod adresem www.python.org. Na temat Pythona napisano te wiele ksiek. Znajdziesz w nich odpowiedzi na wszystkie pytania, jakie chciaby zada . Pocztkujcym polecam ksik Marka Lutza Learning Python (O’Reilly Media, 2007). Zawiera ona rozwini cie tematów, które ja tylko zasygnalizowaem. Bardziej zaawansowan pozycj jest Programming Python tego samego autora (O’Reilly Media, 2006); znajdziesz tam informacje nawet o programowaniu sieciowym. Programistom znajcym inne j zyki i szukajcym informacji o rónicach w implementacji okrelonych funkcji mi dzy Pythonem a innymi j zykami polecam ksik Marka Pilgrima Dive Into Python (Apress, 2004). Dodatkow zalet tej ksiki jest to, e mona j pobra ze strony internetowej www.diveintopython.org w wielu popularnych formatach. Wartociow pozycj jest te ksika Aleksa Martelliego, Anny Ravenscroft i Davida Aschera Python Cookbook (O’Reilly Media, 2005). Autorzy prezentuj w niej liczne przykady dobrego programowania w Pythonie.
API PYTHONA W BLENDERZE Peny opis API Pythona dla Blendera w wersji 2.48 znajduje si pod adresem www.blender.org/documentation/248PythonDoc/index.html Jeli zamierzasz pisa skrypty w Blenderze, radz Ci utworzy zakadk do tej strony albo pobra jej kopi na dysk twardy. Znajdziesz tam kompletny opis wszystkich klas, metod i zmiennych, których b dziesz potrzebowa, aby uzyska dost p do danych Blendera w swoich skryptach. Do tworzenia gier b dzie Ci potrzebne take Blender GameLogic API. Najbardziej aktualny opis tego interfejsu znajdziesz pod adresem www.blender.org/documentation/248PythonDoc/GE/index.html W tym miejscu musz Ci ostrzec. Podejmujc wyzwanie pisania skryptów w Blenderze, wkraczasz na tereny dziewicze. Stajesz si uytkownikiem zaawansowanym (o ile jeszcze nim nie jeste). Do tej pory API Pythona w Blenderze rozwijane byo przez ekspertów i dla ekspertów. Elegancja, spójno i intuicyjno zapisów ustpiy miejsca skrótom mylowym i suchej terminologii technicznej. Powodem takiego stanu rzeczy nie jest niedbao czy niech twórców Blendera do elegancji, spójnoci i intuicyjnoci, lecz ich ograniczone moliwoci w tym zakresie. API Pythona naley do tych elementów Blendera, które nie zostay jeszcze poddane penemu przegldowi pod tym ktem. Taki przegld jest planowany i dlatego w nast pnych rozdziaach, gdy b d omawia poszczególne skadniki tego API, postaram si wskaza przewidywane kierunki jego rozwoju. Tak czy inaczej, jako zaawansowany uytkownik, który pragnie tworzy skrypty usprawniajce prac w Blenderze, b dziesz musia cz sto korzysta z tego API i bacznie ledzi zachodzce w nim zmiany. Du pomoc w pokonywaniu wszelkich trudnoci suy zawsze ch tna i bogata w wiedz spoeczno internetowa zoona z twórców i uytkowników zarówno Pythona, jak Blendera. Jedno z wi kszych forów tej spoecznoci znajdziesz pod adresem http://blenderartists.org/forum/forumdisplay.php?f=11
216 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
Zagadnienia zwizane z Pythonem s take dyskutowane na kanaach IRC #blender, #blenderpython i #blendercoders. Nie wahaj si przed zabieraniem gosu w dyskusji i wskazywaniem obszarów, w których Twoim zdaniem API jest niedopracowane. Im wi cej ludzi b dzie wykazywa tego typu zainteresowanie, tym szybciej pojawi si lepsze rozwizania. Na razie jednak API ma swoje dziwactwa, wi c musisz by cierpliwy.
WIAT PYTHONA PYTHON SOFTWARE FOUNDATION Przez pierwszych kilka lat swojego istnienia Python kilkakrotnie zmieniał status w zakresie własności intelektualnej. Wiązało się to ze zmianami pracodawców przez twórcę tego języka, Guida van Rossuma. W roku 2001, gdy popularność Pythona stała się zbyt duża, aby taki stan niepewności mógł trwać nadal, powołano do życia organizację non profit o nazwie Python Software Foundation (PSF) z misją „promowania, ochrony i wspierania rozwoju języka programowania o nazwie Python oraz udzielania pomocy międzynarodowej społeczności programistów pracujących na rzecz rozwoju tego języka”. W praktyce oznacza to chronienie wszelkiej własności intelektualnej związanej z Pythonem oraz wspieranie rozmaitymi metodami wszystkiego, co przyczynia się do jego rozwoju. PSF wspomaga finansowo organizatorów wszelkiego rodzaju konferencji poświęconych temu językowi, finansuje działalność szkoleniową i funduje nagrody oraz stypendia dla tych, którzy pracują nad rozwojem Pythona. Założyciele PSF wzorowali się na istniejących już wtedy innych fundacjach opiekujących się programami typu open source, takich jak Apache Software Foundation, która promuje i wspiera popularny serwer HTTP o nazwie Apache. Z kolei PSF była pod pewnymi względami wzorem dla zakładanej nieco później fundacji Blendera (Blender Foundation). Firmy angażujące się w rozwój Pythona czynią to właśnie poprzez fundację, wstępując do niej jako członkowie sponsorujący. Wśród takich firm znalazły się między innymi ActiveState, Google, Microsoft, O’Reilly Media i Sun Microsystems. Do najbardziej zasłużonych sponsorów fundacji należy hollywoodzka firma Industrial Light & Magic specjalizująca się w tworzeniu filmowych efektów specjalnych. Chociaż wpływy od firm sponsorujących stanowią niemałą część dochodu fundacji, dzięki temu, że jest organizacją non profit, może ona przyjmować datki także od indywidualnych osób (i to jest główne źródło przychodu). Jeśli uważasz, że fundacja zasługuje na wsparcie finansowe z Twojej strony, możesz to zrobić za pośrednictwem witryny internetowej www.python.org/psf/donation.
rodowisko programistyczne Pythona Zanim przejdziemy do konkretnych zastosowa Pythona w Blenderze, przyjrzyjmy si bliej samemu Pythonowi. Jak ju wspominaem, Python jest uniwersalnym j zykiem programowania stosowanym w wielu rónych dziedzinach. Nawet jeli zamierzasz uywa
tego j zyka wycznie do sterowania Blenderem, powiniene pozna jego standardowe rodowisko programistyczne, bo taka wiedza b dzie Ci potrzebna, gdy si gniesz po jakkolwiek ksik powi con samemu Pythonowi. Standardowa instalacja Pythona zawiera zintegrowane rodowisko programistyczne (IDLE — Integrated DeveLopment Environment) w formie graficznego interfejsu uytkownika (GUI — Graphical User Interface). IDLE umoliwia bezporednie sterowanie interpreterem
RODOWISKO PROGRAMISTYCZNE PYTHONA~ 217
Pythona za porednictwem wiersza polece. Zawiera te prosty edytor tekstu dostosowany do skadni tego j zyka. W tym podrozdziale poka Ci, jak w takim rodowisku pisze i wykonuje si skrypty Pythona. A
TERAZ CO Z ZUPENIE INNEJ BECZKI…
Być może zastanawiasz się, czy nazwę Python należy kojarzyć ze znanym serialem komediowym telewizji brytyjskiej, czy też z wężem należącym do rodziny dusicieli. Otóż twórca języka nadał mu taką, a nie inną nazwę na cześć grupy aktorskiej Monty Pythona. Jednym z członków tej grupy był Eric Idle i to jego nazwisko posłużyło za wzór akronimu nazwy środowiska programistycznego (IDLE).
Pozyskiwanie Pythona Jeli uywasz systemu Mac OS X lub Linuksa, prawdopodobnie masz ju Pythona zainstalowanego na swoim komputerze. Powiniene tylko sprawdzi , czy jest to wersja 2.5. Jeli nie, b dziesz musia si o tak postara . Waciw wersj moesz pobra ze strony www.python.org. Znajdziesz tam równie wskazówki dotyczce instalacji Pythona w danym systemie operacyjnym.
Uywanie wiersza polece Aby rozpocz , musisz uruchomi IDLE. W systemie Windows i przy standardowej instalacji znajdziesz ten program w menu Start/Python 2.5. W systemie Mac moesz go odszuka za pomoc narz dzia Spotlight. Uruchomienie programu spowoduje otwarcie okna takiego jak na rysunku 6.1. Okno to nosi nazw Python Shell (powoka Pythona). RYSUNEK 6.1. Okno Python Shell (powłoka Pythona)
Jeli uywae kiedy wiersza polece w Uniksie, Linuksie lub konsoli DOS, sposób post powania z takim interfejsem powinien by Ci znany. Wiersz polece umoliwia wydawanie polece przez bezporednie wypisywanie ich (zwykle po jednym w wierszu). Odpowied, w tym przypadku od interpretera Pythona, pojawia si w kolejnych wierszach.
218 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
Wiersz zaczynajcy si od trzech znaków wi kszoci (>>>) jest wierszem zach ty (na rysunku 6.1 to wiersz ostatni). Jeli wpiszesz tu polecenie i zatwierdzisz je klawiszem Enter, interpreter Pythona odpowie Ci w nast pnym wierszu, tak jak tutaj: IDLE 1.2.2. >>> print "Hello World!" Hello World! >>>
W tym przykadzie wydaem polecenie interpreterowi, aby wywietli tekst Hello World! — jak wida , zrobi dokadnie to, co mu kazaem.
Gdy interfejs wiersza polece jest wczony, interpreter cay czas ledzi jego stan, co oznacza, e mona tu zmiennym nadawa konkretne wartoci i póniej z nich korzysta , jak w poniszym przykadzie: >>> my_variable = "Hello World!" >>> print my_variable Hello World! >>>
Jest to dobry przykad, ale podczas bezporedniej pracy z wierszem polece nie musisz uywa instrukcji print. Zwyke wpisanie danej wartoci b dzie miao ten sam skutek — warto ta zostanie po prostu powtórzona przez interpreter. W nast pnych przykadach ilustrujcych prac z wierszem polece b d wi c t instrukcj pomija. Musisz jednak pami ta , e nie mona tego robi w kodzie skryptu. Tam instrukcja print musi by
uyta. Nie egnamy si wi c z ni cakowicie. Interaktywno wiersza polece umoliwia take podgldanie wartoci poszczególnych zmiennych w trakcie manipulowania nimi. Jest to szczególnie przydatne podczas wyszukiwania b dów. Przykadowo interesujce moe by sprawdzenie typu danych przechowywanych przez zmienn uyt w poprzednim fragmencie kodu. Mona to zrobi za pomoc funkcji type(), która zwraca typ swojego argumentu. atwo si wi c przekona , e typem tym jest str, czyli acuch (string): >>>type(my_variable)
Do omówienia typów danych wrócimy w dalszej cz ci rozdziau. Na razie powiem tylko, e Python ma zdefiniowane podstawowe typy danych, jakie mog by reprezentowane przez zmienne. Typ acuchowy okrela cig znaków. Poniewa zmiennej my_variable przypisalimy wczeniej wanie cig znaków, zostaa ona automatycznie zaklasyfikowana jako obiekt typu acuchowego. Dane rónych typów s dost pne w róny sposób i podlegaj rónym dziaaniom. W przypadku acuchów mona na przykad zada pytanie o ich dugo : >>> len(my_variavle) 12
Bezporednie korzystanie z wiersza polece moe by w pewnych sytuacjach przydatne (na przykad w dalszej cz ci rozdziau b dziemy w ten sposób obserwowa interakcje mi dzy rónymi typami danych), ale najcz ciej okno powoki Pythona suy jako domylny interfejs wyjciowy i miejsce raportowania b dów. Gdy uruchomisz skrypt, to wanie w tym oknie instrukcje print b d wypisywa stosowne treci, a jeli w skrypcie
RODOWISKO PROGRAMISTYCZNE PYTHONA~ 219
wystpi bd, tutaj zostanie wywietlony odpowiedni komunikat. Jak wida okno to odgrywa bardzo wan rol . Wprawdzie rodowisko Pythona, z jakim mamy do czynienia w Blenderze, nie zezwala na wprowadzanie danych za pomoc wiersza polece — powoka Pythona realizuje tu tylko funkcje wyjciowe — ale i tak jest niezastpiona w identyfikowaniu b dów.
Posugiwanie si edytorem IDLE Programów zazwyczaj nie wykonuje si po jednej linii kodu w rodowisku wiersza polece, lecz pisze si skrypt, który nast pnie przesya si w caoci do interpretera (lub otwiera w interpreterze — wychodzi na to samo). Skrypt taki mona utworzy za pomoc dowolnego edytora tekstu, ale skoro masz ju otwarte rodowisko IDLE, wypróbujmy edytor, jaki jest tu dost pny. Z menu File (plik) okna Python Shell (powoka Pythona) wybierz polecenie New Window (nowe okno), tak jak na rysunku 6.2. RYSUNEK 6.2. Otwieranie nowego pliku w IDLE
To spowoduje otwarcie nowego okna, które na pierwszy rzut oka wydaje si bardzo podobne do tego, które jest ju otwarte. S to jednak zupenie róne okna. Nowe okno nie jest cz ci powoki Pytona, lecz edytorem tekstu, w którym mona pisa skrypty. Wbrew pozorom jest to rozbudowany edytor wyposaony w wiele funkcji uatwiajcych pisanie skryptów. Gdyby mia pisa skrypty ogólnego przeznaczenia, prawdopodobnie nie potrzebowaby innego edytora. Jednak w Blenderze dost pne s inne rozwizania, dlatego edytorowi IDLE przyjrzymy si bardzo pobienie.
Uruchamianie skryptów Skrypt tworzony w rodowisku IDLE mona uruchomi przez wybranie polecenia Run Module (uruchom modu) z menu Run (uruchom) edytora tekstu lub wcini cie klawisza F5. Aby sprawdzi , jak to dziaa, wpisz jako pierwsz lini kodu: print "Hello World!". Zauwa, e tutaj instrukcja print jest konieczna, bo nie korzystasz bezporednio z wiersza polece. Przed uruchomieniem skryptu b dziesz musia go zapisa w pliku. Zrób to, stosujc rozszerzenie nazwy pliku .py. Teraz moesz uruchomi swój skrypt. Instrukcja print wypisze stosowny tekst w oknie Python Shell (powoka Pythona). S jeszcze inne sposoby uruchamiania skryptów. Mona po prostu klikn dwukrotnie ikon pliku .py, chocia to moe nie da spodziewanych rezultatów, jeli skrypt nie ma charakteru samodzielnego programu z wasnym interfejsem. Do uruchomienia skryptu mona wykorzysta take wiersz polece systemu operacyjnego. Jeszcze wi cej moliwoci uruchamiania skryptów oferuje rodowisko Blendera. Kilka wyspecjalizowanych metod poznasz w rozdziale 8., „W o wielu gowach, czyli inne zastosowania Pythona w Blenderze”, ale podstawowy sposób jest podobny do tego,
220 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
jaki poznalimy w IDLE. Od tej pory korzysta b dziemy ze rodowiska Blendera, chocia w tym rozdziale kilkakrotnie jeszcze wrócimy do wiersza polece, aby zobaczy
jak wspódziaaj ze sob róne typy danych.
Uywanie Pythona w rodowisku Blendera Blender ma wbudowane rodowisko programistyczne dla Pythona, które w wi kszoci oferuje te same funkcje co IDLE, ale ma t zalet , e jest dobrze zintegrowane z samym Blenderem. Aby uzyska dost p do tego rodowiska, otwórz menu Window type (typ okna) w dowolnym oknie Blendera i wybierz opcj Text Editor (Edytor tekstu), tak jak na rysunku 6.3. Otwarty zostanie edytor tekstu pokazany na rysunku 6.4. RYSUNEK 6.3. Otwieranie okna z edytorem tekstu
RYSUNEK 6.4. Edytor tekstu w Blenderze
W ramach szybkiego eksperymentu uruchom taki sam skrypt, jaki tworzye przed chwil w edytorze IDLE. Wpisz wi c print "Hello World!", a nast pnie wcinij klawisze Alt+P, aby uruchomi proces wykonywania kodu. Rezultat wyjciowy moesz zobaczy
w oknie konsoli Blendera pokazanym na rysunku 6.5. Jeli wczeniej zastanawiae si , czemu ma suy to dziwne, czarne okno, teraz ju wiesz! Podczas pisania skryptów dla Blendera okno konsoli jest potrzebne bardzo cz sto — przede wszystkim do wyszukiwania i usuwania b dów.
SKADNIA JZYKA PYTHON~ 221
RYSUNEK 6.5. Rezultat działania skryptu wyświetlany w oknie konsoli Blendera
OKNA KONSOLI W INNYCH SYSTEMACH OPERACYJNYCH W systemie Windows okno konsoli Blendera jest otwierane wraz z głównym oknem programu i pozostaje otwarte podczas całej sesji Blendera. W systemie Mac konsola jest bardziej ukryta. Można do niej dotrzeć po wpisaniu w wyszukiwarce Spotlight słowa console. Jednak w tym systemie konsola służy nie tylko do wyświetlania komunikatów Blendera — raportowana jest tu także inna aktywność systemu. Dla celów skryptowych w systemach Mac, Unix i Linux zalecam uruchamianie Blendera za pomocą terminalowego wiersza poleceń. Wtedy okno terminala będzie pełniło rolę konsoli Blendera.
Do tej pory poznawae te elementy rodowiska Pythona, których znajomo jest niezb dna, aby móc pisa skrypty. Teraz musisz nauczy si pisa skrypty w tym j zyku! Pozosta cz rozdziau powi ciem wi c omówieniu podstawowych zasad skadniowych Pythona.
Skadnia jzyka Python Python, podobnie jak Perl i inne j zyki skryptowe, ma skadni proceduraln wzbogacon o funkcje obiektowe. To oznacza, e programy napisane w tym j zyku s wykonywane krok po kroku (proceduralnie) z uwzgl dnieniem p tli i instrukcji warunkowych, a take umoliwiaj dost p do danych obiektowych za porednictwem metod zdefiniowanych na poziomie klasy. Aby móc pisa skrypty w Pythonie, musisz zna trzy zasadnicze rzeczy: w jaki sposób reprezentowane s podstawowe typy danych, jak mona sterowa
przebiegiem programu i jak naley post powa z obiektami oraz klasami. Ostatni element jest niezb dny, aby móc korzysta z API Blendera.
Typy i struktury danych Python ma wbudowanych kilka podstawowych typów danych. Kady typ danych ma cile okrelone sposoby interakcji z operatorami i cile okrelone metody dost pu do informacji. Teraz zaprezentuj Ci te typy danych, które s uywane najcz ciej.
Liczby cakowite (int) — s to liczby bez cz ci uamkowej i bez kropki dziesi tnej. Dodatnie liczby cakowite nazywane s take liczbami naturalnymi lub porz dkowymi, ale liczby cakowite mog by równie ujemne. Liczby te s cz sto uywane do zliczania przej w p tlach iteracyjnych oraz do numerowania rozmaitych elementów.
222 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
Liczby zmiennoprzecinkowe (float) — te liczby zawieraj kropk dziesi tn. S przyblionymi wartociami liczb rzeczywistych i stanowi dobr ich reprezentacj . Wartoci logiczne (bool) — tego typu wartoci s tylko dwie: True (prawda) i False (fasz). acuchy (str) — s cigami znaków. Ten typ przydaje si podczas pracy z danymi tekstowymi. Listy (list) — s uporzdkowanymi zbiorami elementów. Poszczególne elementy listy mog by dowolnego typu, a dost p do nich uzyskuje si przez podanie indeksu w postaci liczby cakowitej. Listy mona atwo modyfikowa i poszerza o nowe elementy, dzi ki czemu mog suy jako dynamiczne zbiory uporzdkowane. Sowniki (dict) — s nieuporzdkowanymi zbiorami elementów, w których kady element skada si z dwóch cz ci: klucza i wartoci. Dost p do wartoci uzyskuje si przez podanie odpowiedniego klucza. Krotki (tup) — s podobne do list, ale maj mniejsze moliwoci modyfikacyjne. Krotki mona przeszukiwa szybciej ni listy, dlatego przydaj si do przechowywania duych i niezmiennych zbiorów.
Szczególnie wanymi typami danych s listy, sowniki i krotki, poniewa zawieraj inne obiekty i umoliwiaj dost p do nich. Proceduralne sterowanie w Pythonie niemal zawsze polega na manipulowaniu tymi strukturami danych. Przykady, jakie za chwil zaprezentuj , najlepiej sprawdzisz w rodowisku wiersza polece IDLE.
LICZBY CAKOWITE I ZMIENNOPRZECINKOWE Liczby cakowite i zmiennoprzecinkowe w Pythonie reprezentowane s przez cigi cyfr. Zmiennoprzecinkowe zawieraj dodatkowo kropk dziesi tn. Python wykonuje dziaania na obu typach liczb w sposób naturalny i na ogó niezauwaalny dla uytkownika. Jeli na przykad spróbujesz pomnoy liczb cakowit przez zmiennoprzecinkow, wynik b dzie liczb zmiennoprzecinkow, tak jak tego oczekiwae.
ACUCHY Do obsugi cigów znaków su w Pythonie acuchy. Oczywicie w programie komputerowym wszystko jest cigiem znaków, a zatem acuchy musz by w jaki sposób wyróniane. Robimy to za pomoc znaków pojedynczego lub podwójnego cudzysowu — dopuszczalna jest tutaj ich pena zamienno . Jeli acuch ma zawiera
znaki pojedynczego cudzysowu, musisz go uj w cudzysów podwójny i na odwrót. Cigi znaków nieuj te w aden cudzysów nie s traktowane jak acuchy. Jeli taki cig nie zostanie rozpoznany jako sowo kluczowe Pythona, interpreter przyjmie, e jest to nazwa zmiennej. Jeli wpisae ten cig znaków w innym celu ni wprowadzenie zmiennej, prawdopodobnie program nie b dzie dziaa prawidowo. Z acuchami zwizane s liczne metody. Mona na przykad odczyta dugo
cigu lub znak znajdujcy si na konkretnej pozycji w acuchu. Stosowne metody s takie same jak w przypadku list, o których opowiem za chwil .
SKADNIA JZYKA PYTHON~ 223
LISTY I KROTKI Listy w Pythonie s kolekcjami elementów obj tymi nawiasami kwadratowymi. Poszczególne skadniki listy oddzielone s przecinkami. Oto przykad prostej listy: ['a', 'b', 'c']
Ta lista skada si z trzech elementów, którymi s acuchy 'a', 'b' i 'c'. Za pomoc funkcji len(list)moemy sprawdzi dugo listy: >>>len(['a', 'b', 'c']) 3
Dost p do poszczególnych elementów listy uzyskujemy poprzez ich indeksy. W Pythonie listy indeksowane s od 0, co oznacza, e pierwszy element ma indeks 0, a ostatni n–1, gdzie n oznacza dugo listy. Aby wydoby okrelony element listy, naley jego indeks umieci w nawiasach kwadratowych tu za list. Taka notacja stosowana jest zwykle wtedy, gdy lista przechowywana jest w zmiennej (b dzie o tym mowa w dalszej cz ci rozdziau), ale moe by równie uyta wraz z bezporednim zapisem listy, jak w poniszym przykadzie. >>> ['a', 'b', 'c'][0] 'a' >>> ['a', 'b', 'c'][1] 'b' >>> ['a', 'b', 'c'][2] 'c'
Mechanizm indeksowania list w Pythonie jest bardzo wydajny. Pozwala wydobywa
nie tylko pojedyncze elementy, ale take wycinki (slices) lub inaczej podlisty (sublists). W tym celu trzeba poda indeks elementu pocztkowego oraz tego, przed którym wycinek ma si zakoczy (element o indeksie kocowym nie wchodzi w skad wycinka). W poniszym przykadzie wycinek zosta okrelony indeksami [1:4], a to oznacza, e b dzie on zawiera elementy, które w oryginalnej licie maj indeksy od 1 do 3. >>> ['a', 'b', 'c', 'd', 'e'][1:4] ['b', 'c', 'd'] >>>
Wanymi metodami zdefiniowanymi dla list s append() i extend(). Obie dodaj elementy do listy. W pewnych sytuacjach mona te metody stosowa zamiennie, ale trzeba pami ta , e ich dziaanie jest inne. Pierwsza z nich, append(), dodaje pojedynczy element do listy. Lista jest zmieniana, ale rezultat nie jest automatycznie wywietlany. Aby naocznie sprawdzi dziaanie tej metody, trzeba najpierw list umieci w zmiennej, a nast pnie po uyciu metody wywietli aktualn warto tej zmiennej, tak jak w poniszym przykadzie. >>> mylist = ['a', 'b', 'c'] >>> mylist.append('d') >>> mylist ['a', 'b', 'c', 'd']
224 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
Inny sposób dodawania nowych elementów do listy polega na doczaniu do niej caej zawartoci innej listy. Co takiego mona zrobi przy uyciu metody extend(). Oto przykad: >>> mylist = ['a', 'b', 'c'] >>> mylist.extend(['d', 'e', 'f']) >>> mylist ['a', 'b', 'c', 'd', 'e', 'f']
W tym przypadku argumentem metody extend()jest lista, a nie pojedynczy element. W rezultacie powstaje lista b dca poczeniem listy oryginalnej i tej, która bya argumentem metody. Zauwa, e uycie metody append() z argumentem w postaci listy da zupenie inny rezultat: >>> mylist = ['a', 'b', 'c'] >>> mylist.append(['d', 'e', 'f']) >>> mylist ['a', 'b', 'c', ['d', 'e', 'f']]
Jeli argumentem metody extend() jest lista, zostaje ona doczona do oryginalnej jako pojedynczy element. W naszym przykadzie lista wyjciowa ma cztery elementy, przy czym ostatni sam jest list. Krotki pod wieloma wzgl dami s podobne do list. Do ich oznaczania uywamy nawiasów okrgych, a nie kwadratowych. Dost p do elementów uzyskujemy równie za porednictwem indeksów. Nie mona jednak poszerza krotek o nowe elementy ani nie mona zmienia istniejcych ju elementów. Z tego powodu krotki s przydatne tylko wtedy, gdy mamy do czynienia z kolekcjami ustalanymi raz na zawsze w chwili ich tworzenia.
SOWNIKI Podczas gdy listy s kolekcjami elementów uporzdkowanych i dost pnych poprzez liczbowe indeksy, sowniki stanowi kolekcje nieuporzdkowane, których elementy s dost pne za porednictwem odwoa do innych elementów. Sowniki s reprezentowane przez oddzielone przecinkami pary elementów; elementy pary oddzielone s dwukropkiem, a cao obj ta jest nawiasami klamrowymi, tak jak w poniszym przykadzie. {'brit': 32, 'john': 25, 'mary': 29, 'tom': 74}
Poszczególne elementy sownika s nazywane parami klucz – warto ; po lewej stronie dwukropka jest klucz, a odpowiadajca mu warto znajduje si po prawej stronie. Warto jest dost pna za porednictwem klucza, tak jak element listy jest dost pny za porednictwem indeksu. >>> {'brit': 32, 'john': 25, 'mary': 29, 'tom': 74}['mary'] 29
Za pomoc metody keys() mona wywietli wszystkie klucze sownika. Oto przykad uycia tej metody: >>> {'brit': 32, 'john': 25, 'mary': 29, 'tom': 74}.keys() ['tom', 'john', 'mary', 'brit']
SKADNIA JZYKA PYTHON~ 225
OPERATORY Operatory okrelaj sposób, w jaki j zyk programowania ustala relacje mi dzy rozmaitymi danymi w programie. Do tej pory poznae ju operator przypisania oznaczany znakiem równoci (=). Jego dziaanie polega na umieszczaniu wartoci stojcej po prawej stronie w zmiennej, która znajduje si po lewej. Wana uwaga: znak równoci ma tu nieco inne znaczenie ni w matematyce, gdzie suy do stwierdzania faktu, e dwa wyraenia maj takie same wartoci. Python zawiera nast pujce operatory porównania: Operator
Nazwa
==
równe
>=
wi ksze lub równe
>
wi ksze
>> 5+1 6 >>>
Podobnie przewidywalny rezultat uzyskamy, jeli zastosujemy ten operator w odniesieniu do liczb zmiennoprzecinkowych. Inaczej sprawa wyglda, gdy jego argumentami s acuchy. W tym przypadku + staje si operatorem czenia acuchów, o czym wiadczy poniszy przykad: >>> "Hello " + "World!" 'Hello World!' >>>
W odniesieniu do list operator ten dziaa tak jak metoda extend(), czyli do pierwszej listy dodaje elementy drugiej. >>> ['a', 'b', 'c']+ ['d', 'e', 'f'] ['a', 'b', 'c', 'd', 'e', 'f']
226 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
Jeli spróbujesz uy operatora + w odniesieniu do danych, z których kada inaczej reaguje na ten operator, otrzymasz komunikat o b dzie, jak w poniszym przykadzie: >>> "Hello World!" + 5 Traceback (most recent call last): File "", line 1, in "Hello World!" + 5 TypeError: cannot concatenate 'str' and 'int' objects
Interesujco zachowuje si te operator *. W odniesieniu do liczb cakowitych i zmiennoprzecinkowych jest on zwykym operatorem mnoenia, ale w przypadku acuchów i list mona go uy z liczb cakowit i wtedy powoduje odpowiednie zwielokrotnienie acucha lub zawartoci listy. Oto przykady: >>> "Hello" * 3 'HelloHelloHello' >>> ['a', 'b', 'c'] * 3 ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
Python obfituje w tego rodzaju triki, ale w ramach tej ksiki mog tylko zasygnalizowa
zagadnienie. Podane tu informacje o operatorach powinny Ci wystarczy do pisania prostych skryptów dla Blendera.
ZMIENNE W Pythonie zmienne maj posta acuchów alfanumerycznych (w celu odrónienia od zwykych acuchów nie s obejmowane znakami cudzysowu). W innych j zykach, takich jak Perl, nazwa zmiennej musi rozpoczyna si okrelon liter, która determinuje typ tej zmiennej, natomiast w Pythonie nazwy mog by zupenie dowolne. Co wi cej, tej samej zmiennej mona przypisywa wartoci rozmaitych typów. Typ aktualnie przypisanej wartoci mona sprawdzi za pomoc funkcji type(). W poniszym przykadzie zmienna my_variable jest inicjalizowana wartoci 10. Gdy sprawdzamy jej typ, uzyskujemy odpowied int. Nast pnie tej samej zmiennej jest przypisywana warto "Hello" i po ponownym sprawdzeniu okazuje si , e zmienna jest teraz typu acuchowego: >>> my_variable = 10 >>> type(my_variable)
>>> my_variable = "Hello!" >>> type(my_variable)
Aby uzyska dost p do zmiennej, trzeba jej najpierw przypisa jak warto . Dotyczy to take instrukcji warunkowych. Na nieokrelone zmienne Python reaguje komunikatami o b dach. Rónica mi dzy zmiennymi globalnymi a lokalnymi stanie si oczywista, gdy poznasz dokadniej poj cie funkcji. Teraz powiem tylko, e zmienna inicjalizowana w ramach definicji funkcji ma charakter lokalny i jest nieosigalna w sposób bezporedni poza t funkcj. Natomiast zmienne globalne s definiowane poza wszystkimi funkcjami i s dost pne z kadego miejsca programu. Do tych zagadnie wrócimy jeszcze w dalszej cz ci rozdziau.
SKADNIA JZYKA PYTHON~ 227
Sterowanie przebiegiem programu Sterowanie przebiegiem programu oznacza wymuszanie okrelonej kolejnoci, w jakiej instrukcje maj by wykonywane; w gr wchodz tutaj wszelkiego rodzaju powtórzenia, iteracje i warunki. Python oferuje cay zestaw instrukcji przeznaczonych do tego celu. Wród nich s instrukcje for oraz if/else. WCICIA ZAMIAST NAWIASÓW Jedną z najszybciej zauważalnych różnic między Pythonem a innymi językami programowania jest sposób, w jaki identyfikuje on bloki sterujące. W większości języków służą do tego rozmaite nawiasy. W takich językach jak C, Perl czy Java bloki sterujące wydzielane są nawiasami klamrowymi. Natomiast w Pythonie jest to realizowane bez żadnych nawiasów. Bloki sterujące są tu identyfikowane na podstawie poziomu zagnieżdżenia, który z kolei określony jest lewostronnym wcięciem linii kodu. Takie rozwiązanie zdecydowanie zwiększa czytelność kodu, ale też powoduje większą wrażliwość interpretera na wszelkie niekonsekwencje w rozkładzie białych znaków. Oznacza to również, że edytowanie programu w kilku edytorach tekstu o różnych ustawieniach tabulatorów może prowadzić do błędów. Niektóre edytory są wyposażone w funkcję wizualizacji białych znaków z rozróżnieniem na zwykłe znaki i tabulatory. Jeśli zdarzy Ci się używać więcej niż jednego edytora, skorzystaj z tej funkcji i sprawdź spójność odpowiednich ustawień we wszystkich edytorach.
P tla for najcz ciej jest wykorzystywana do wykonywania operacji na kolejnych elementach listy. Przykadem moe by nast pujcy zestaw instrukcji: >>> my_list = ['a', 'b', 'c'] >>> for item in my_list: print item a b c
Zmienna item jest tu inicjalizowana na pocztku p tli for. Podczas kadego przejcia iteracyjnego zmienna ta pobiera kolejny element listy. Zauwa, e iteracja jest tu realizowana bez odwoywania si do liczbowych indeksów elementów listy. Jak wida , jawne odwoywanie si do indeksów nie jest potrzebne. Oczywicie, mona te zrealizowa
iteracj w odniesieniu do cigu liczb. Wystarczy posuy si funkcj range(), która zwraca list wartoci cakowitych z podanego zakresu (bez wartoci kocowej). Oto przykad takiej iteracji: >>> for num in range(1,5): print num 1 2 3 4
Opcjonalny trzeci argument funkcji range() okrela krok, z jakim generowany jest cig liczb. Domyln wartoci tego argumentu jest 1, ale jeli chcesz otrzyma co drug lub co trzeci liczb z danego zakresu, moesz t warto zmieni .
228 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
Do sterowania przebiegiem programu w oparciu o spenienie okrelonych warunków suy blok instrukcji if/elif/else. W poniszym przykadzie realizowana jest iteracja po wartociach od 0 do 9 z krokiem wynoszcym 2. Kada z tych wartoci jest sprawdzana, czy jest mniejsza bd równa 2, wi ksza bd równa 8, a jeli nie spenia adnego z tych warunków, jest po prostu wypisywana z komentarzem is medium (jest rednia). Nazwa instrukcji elif jest skrótem od else if (albo jeli). Zwró szczególn uwag na wci cia poszczególnych linii kodu. Instrukcje if, elif i else musz by na tym samym poziomie zagniedenia. W przeciwnym razie kod b dzie b dny. >>> for num in range(0,10,2): if num = 8: print str(num) + " is big" else: print str(num) + " is medium" 0 2 4 6 8
is is is is is
small small medium medium big
Przydatn instrukcj jest pass, która nie robi nic, ale mona j wstawi wsz dzie tam, gdzie brak instrukcji mógby spowodowa bd wci cia. Do sterowania przebiegiem programu Python oferuje jeszcze inne instrukcje, na przykad while, oraz rozmaite odmiany p tli. Jednak dla naszych celów wystarczy znajomo p tli for (w postaci standardowej) i konstrukcji if/elif/else. Jeli chcesz pozna inne instrukcje, si gnij po dodatkow lektur — kilka tytuów znajdziesz na pocztku rozdziau.
Funkcje Programowanie w Pythonie w duej mierze polega na definiowaniu wasnych funkcji, które póniej mona wywoywa z dowolnego miejsca programu, a nawet z wn trza innych funkcji. W ramach wiczenia wykonaj prosty eksperyment. W edytorze IDLE wpisz poniszy kod i zanim go uruchomisz za pomoc klawisza F5, zapisz go w pliku o nazwie simplefunction.py. def my_simple_function(): print "Hello World!" my_simple_function()
Gdy uruchomisz ten skrypt, zobaczysz, e wypisuje on tekst Hello World! tak samo, jak przy bezporednim wywoaniu instrukcji print. Tym razem jednak jest ona wywoywana z wn trza funkcji my_simple_function()zdefiniowanej za pomoc instrukcji def. Zauwa przy tym, e podobnie jak w przypadku bloków sterujcych blok definiujcy funkcj nie jest wytyczany nawiasami, lecz wci ciami linii kodu.
SKADNIA JZYKA PYTHON~ 229
Moliwe jest take definiowanie funkcji przyjmujcych argumenty. Wtedy zmienna reprezentujca argument jest inicjalizowana w bloku definiujcym funkcj . W chwili wywoania funkcji aktualna warto argumentu jest przypisywana owej zmiennej. Oto prosty przykad funkcji z argumentem: def my_simple_function(arg): print "Hello World" * arg my_simple_function(5)
Rezultatem wykonania tego skryptu jest pi ciokrotne powtórzenie acucha Hello World: Hello WorldHello WorldHello WorldHello WorldHello World
Zmienne inicjalizowane wewntrz funkcji maj charakter lokalny wzgl dem danej funkcji i s niedost pne z innych miejsc programu. Jeli spróbujesz odwoa si do takiej zmiennej poza blokiem definiujcym funkcj , Python zareaguje komunikatem o b dzie. Zmienne inicjalizowane poza funkcjami maj charakter globalny i s dost pne z dowolnego miejsca programu, wcznie z blokami definicyjnymi funkcji. my_global_variable = "Hello!" def my_simple_function(): print my_global_variable my_simple_function()
Ten skrypt wypisze acuch Hello!. Jednak sprawa si nieco komplikuje, gdy zmieniasz warto zmiennej globalnej wewntrz funkcji. W kolejnym przykadzie zmienna my_global_variable otrzymuje na pocztku warto "Hello!", a nast pnie w obr bie definicji funkcji warto ta jest zmieniana na "World!". Jednak ta nowa warto obowizuje tylko w ramach funkcji. Wartoci globaln zmiennej my_global_variable jest nadal acuch "Hello!". Dlatego rezultatem wywoania funkcji my_simple_function()b dzie wypisanie lokalnej wartoci tej zmiennej, a instrukcja print umieszczona po wywoaniu funkcji wypisze pierwotn warto globaln. my_global_variable = "Hello!" def my_simple_function(): my_global_variable = "World!" print my_global_variable my_simple_function() print my_global_variable
Aby unikn takich dwuznacznoci, naley wewntrz funkcji zadeklarowa zmienn jako globaln. Suy do tego instrukcja global. Po takiej deklaracji zarówno funkcja, jak i nast pujca po niej instrukcja print wypisz t sam warto zmiennej. Tym razem b dzie to acuch World!. my_global_variable = "Hello!" def my_simple_function():
230 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
global my_global_variable my_global_variable = "World!" print my_global_variable my_simple_function() print my_global_variable
Klasy i programowanie zorientowane obiektowo Python jest j zykiem w peni zorientowanym obiektowo, co oznacza, e wyst pujce w nim dane s reprezentacjami okrelonych klas, a zatem maj swoje waciwoci i metody. Takie reprezentacje klas nazywane s obiektami. Waciwoci odnosz si do typu danych, z jakimi zwizana jest dana klasa. Przykadowo klasa Osoba moe mie waciwo Kolor oczu. Metody s funkcjami operujcymi na waciwociach danej klasy. Najbardziej popularne s metody zwracajce wartoci waciwoci. W przypadku klasy Osoba metoda mogaby odpowiada na pytanie: „Jaki jest kolor oczu tej osoby?”. Definiowanie wasnych klas stanowi istotn cz wysokopoziomowego w Pythonie, szczególnie gdy programowane s zoone systemy. Oczywicie mona si bez tego obej , bo w prostszych przypadkach wystarczy korzysta z klas wbudowanych oraz z moduów i bibliotek, w których inni zdefiniowali stosowne klasy. Z tego powodu nie b d rozwodzi si nad szczegóami pisania definicji klas, a raczej skoncentruj si na podstawowych elementach skadni obiektów, metod i waciwoci, bo te informacje b d Ci potrzebne, gdy przejdziemy do analizowania interfejsu programistycznego (API) Blendera i wykorzystywania go w skryptach. Definicja prostej klasy o nazwie Person (osoba) mogaby si zaczyna nast pujco: class Person eye_color = "Green" def get_eye_color(self) print self.eye_color
W tej definicji osoba ma tylko jedn waciwo , eye_color (kolor oczu). Jest tu równie tylko jedna metoda o nazwie get_eye_color() (pobierz kolor oczu), która wypisuje warto waciwoci eye_color. Obiekty reprezentujce dan klas mona przypisywa zmiennym tak samo jak listy, liczby cakowite czy acuchy. Na zewntrz definicji klasy mona utworzy jej reprezentacj , czyli obiekt, przez przypisanie go do zmiennej. W przypadku klasy Person mogoby to wyglda nast pujco (kod ten powinien znajdowa si w tym samym skrypcie co definicja klasy): p = Person() p.get_eye_color() p.eye_color = "Blue" p.get_eye_color()
Po przypisaniu obiektu do zmiennej p nast puje próba wydobycia z niego informacji za pomoc instrukcji p.get_eye_color(). Wana jest tutaj skadnia. Wywoanie metody obiektu nast puje przez umieszczenie jej nazwy po nazwie obiektu zakoczonej kropk. Nazwa metody koczy si okrgymi nawiasami zawierajcymi odpowiednie dla niej
SKADNIA JZYKA PYTHON~ 231
argumenty. Jeli argumenty nie s potrzebne, nawiasy pozostaj puste. W powyszym przykadzie pierwsze wywoanie metody zwraca acuch Green (zielone), poniewa taki kolor zosta zdefiniowany jako domylny w definicji klasy. Równie dost p do waciwoci uzyskuje si przez umieszczenie jej nazwy po kropce koczcej nazw obiektu. W kolejnej linii skryptu nast puje przypisanie acucha "Blue" (niebieskie) do waciwoci eye_color obiektu p. Powtórnie wywoana metoda get_eye_color() zwróci wi c acuch Blue. Interfejs programowania aplikacji (API) zawiera zwykle opisy poszczególnych klas, a w ramach opisu klasy znajdziesz take opisy jej waciwoci i metod. Po nabraniu pewnego dowiadczenia w analizowaniu takich interfejsów b dziesz umia odczytywa
zawarte tam informacje bez adnych dodatkowych objanie. W nast pnych rozdziaach przeanalizujemy obszary, które pocztkujcym programistom mog sprawia problemy. Zobaczysz wtedy, e nie wszystko jest tak spójne, jak mona by oczekiwa . Tylko dog bne poznanie zasad funkcjonowania danego interfejsu pozwoli Ci szybko upora si z przeszkodami, jakie mog si pojawi , gdy trafisz na co, co wyglda inaczej, ni powinno.
Polecenie dir() Przy wyszukiwaniu konkretnych rzeczy w API duo czasu mona zaoszcz dzi , jeli skorzysta si z polecenia dir(). Uyte z nazw obiektu jako argumentem zwraca list wszystkich metod i waciwoci zdefiniowanych w klasie, której reprezentantem jest dany obiekt. Jako e w Pythonie wszystko jest obiektem, argumentem polecenia dir() mog by dane dowolnego typu. Gdybymy uyli tego polecenia z argumentem p reprezentujcym klas Person z poprzedniego przykadu, otrzymalibymy nast pujc list : ['__doc__', '__module__', 'eye_color', 'get_eye_color']
Pierwsze dwie metody wyst puj standardowo we wszystkich klasach i su do dokumentowania klas i moduów, w których te klasy s zdefiniowane. Pozostae dwa elementy, eye_color i get_eye_color, to waciwo i metoda, które sami zdefiniowalimy.
Moduy Jedn z gównych zalet rodowiska zorientowanego obiektowo jest to, e klasy raz utworzone mog by wykorzystywane przez wszystkich, którzy znaj ich interfejsy programistyczne. Nie jest do tego potrzebny wgld w rzeczywisty kod definicji klasy, wystarczy tylko zna waciwoci i metody oraz wiedzie , co poszczególne metody zwracaj. Mówic ogólnie, wystarczy wiedzie , jak klasy i ich metody zostay zaimplementowane. Aby móc skorzysta z klasy zdefiniowanej przez kogo innego, musisz zaimportowa
modu, w którym ta klasa zostaa zdefiniowana. W Pythonie kady skrypt moe by
moduem i kada klasa zdefiniowana w skrypcie moe by w ten sposób zaimportowana do innego skryptu. Do importowania moduów suy instrukcja import nazwamoduu, któr naley umieci na pocztku skryptu. Od tego momentu mona korzysta z klas zdefiniowanych w zaimportowanym module. Trzeba tylko nazw klasy poprzedzi nazw moduu: nazwamoduu.nazwaklasy. Aby unikn cigego powtarzania nazwy moduu,
232 ~ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH
mona skorzysta z innej instrukcji importujcej, a mianowicie from nazwamoduu import nazwaklasy. Jeli modu zawiera duo klas i chcesz je zaimportowa wszystkie, moesz zastosowa instrukcj from nazwamoduu import *. Takie konstrukcje b dziesz stosowa bardzo cz sto podczas pracy w rodowisku blenderowo-pythonowym, poniewa wi kszo klas Blendera jest rozlokowanych wanie w moduach. W nast pnym rozdziale poznasz bliej API Blendera i nauczysz si go uywa za porednictwem Pythona.
Podsumowanie Poznaj podstawy jzyka Python. Python jest j zykiem skryptowym powszechnie stosowanym w wielu dziedzinach programowania komputerowego. Jest atwy w uyciu, czytelny i umoliwia szybkie tworzenie programów. Opanuj to Postaraj si o dobr literatur na temat Pythona, a szczególnie jego skadni. Moesz rozway zakup jednej z ksiek, które zaprezentowaem na pocztku rozdziau. Za pomoc wyszukiwarki Google znajd kilka witryn internetowych z dobrze opracowanymi informacjami o typach danych i operatorach Pythona. Naucz si korzysta z powoki Pythona i rodowiska IDLE. Najszybszy dost p do Pythona daje okno jego powoki, b dce cz ci rodowiska programistycznego IDLE. Tutaj moesz wydawa pojedyncze polecenia i sprawdza wartoci zmiennych. Opanuj to Z tego rozdziau dowiedziae si , e nie mona poczy acucha z liczb cakowit za pomoc operatora +. Nie mona równie dodawa acuchów, tak jak dodaje si liczby. Jednak w niektórych przypadkach mona wartoci numeryczne traktowa jako typ acuchowy (przynajmniej formalnie). Si gnij do róde wiedzy zgromadzonych w ramach pierwszego wiczenia „Opanuj to” i poszukaj informacji o rzutowaniu typów w Pythonie. Dowiedz si , jak mona acuch "5" zmieni w liczb cakowit, któr b dzie mona doda do innej liczby. Poznaj podstawowe cechy skadni Pythona. Python jest j zykiem programowania o duych moliwociach z wieloma wbudowanymi typami danych, rozbudowanymi opcjami sterowania przebiegiem programu i uytecznymi funkcjami. Jedn z jego cech charakterystycznych jest uzalenienie reprezentacji struktur logicznych od wci
linii kodu. Opanuj to Utwórz zmienn my_list i przypisz jej list [1,2,1,3,1,4]. Wywoaj funkcj dir()z t list jako argumentem. Jak mylisz, która z metod wypisanych przez funkcj dir()nadaje si do usuni cia jednego z elementów listy? Poeksperymentuj z tymi metodami, które uznasz za waciwe, i spróbuj usun z listy liczb 2. Jako wynik powiniene otrzyma list [1,1,3,1,4]. Spróbuj te znale metod , która zwróci liczb wystpie cyfry 1 w tej licie.
Rozdzia 7.
Skrypty Pythona w Blenderze W tym rozdziale zaczniemy wreszcie pisa skrypty dla Blendera. Do tego niezb dna jest znajomo zarówno rodowiska programistycznego dost pnego w Blenderze, jak i interfejsu API tego programu. Teraz dowiesz si , jak za pomoc skryptów mona tworzy obiekty w trójwymiarowych scenach Blendera i manipulowa ich parametrami. Nauczysz si równie pisa skrypty interaktywne i tworzy nowe narz dzia. Znajdziesz tu nie tylko wiczenia ilustrujce realizacj konkretnych zada, ale równie ogólne wskazówki dotyczce korzystania z dokumentacji API i wyszukiwania w niej informacji potrzebnych podczas pisania skryptów. Z tego rozdziau dowiesz si , jak:
edytowa i uruchamia skrypty w Blenderze, korzysta z API Blendera, tworzy skrypty interaktywne.
Edytowanie i uruchamianie skryptów w Blenderze Blender oferuje kilka uytecznych narz dzi do pisania skryptów. W poprzednim rozdziale poznae edytor dost pny w standardowym rodowisku programistycznym (IDLE) Pythona, ale skrypty przeznaczone dla Blendera atwiej pisze si w rodowisku, jakie oferuje on sam.
Edytor tekstu w Blenderze Okno edytora tekstu w Blenderze, podobnie jak pozostae typy okien, dost pne jest po wybraniu odpowiedniej opcji z menu Window type (typ okna) w lewym naroniku nagówka dowolnego okna. Okno to pokazano na rysunku 7.1. Zawarto menu Text (Tekst) oraz Edit (Edycja) jest tu standardowa i powinna by
znana kademu, kto posuguje si jakimkolwiek procesorem lub edytorem tekstu. Menu Format zawiera polecenia suce do formatowania skryptów zgodnie z wymaganiami j zyka Python. Polecenie Indent (utwórz wci cie) wstawia, a Unindent (usu wci cie) usuwa wci cie zaznaczonych linii kodu. Ten sam efekt mona uzyska przez wciskanie klawiszy Tab lub Shift+Tab. Jako e struktura programu pisanego w j zyku Python jest okrelana za pomoc wci , powysze skróty klawiszowe s rzeczywicie bardzo przydatne.
234 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
RYSUNEK 7.1. Skrypt wyświetlany w oknie edytora tekstu
Polecenie Comment (komentarz) dodaje znak # na pocztku kadej linii zaznaczonego tekstu, co dla interpretera stanowi informacj , e dana linia zawiera komentarz, a nie kod wykonywalny. W takich liniach moesz umieszcza tekst objaniajcy dziaanie programu. Warto to robi z myl nie tylko o innych programistach, którzy b d chcieli zapozna si z kodem skryptu, ale równie o sobie, aby po pewnym czasie nie mie
problemów ze zrozumieniem tego, co si kiedy stworzyo. Polecenia Comment (komentarz) i Uncomment (usu komentarz) przydaj si równie do wyczania i wczania caych bloków programu w celach testowych bez koniecznoci ich usuwania i ponownego wpisywania. Takie wyczanie fragmentów kodu przez opatrywanie ich znakami komentarza jest powszechnie stosowan metod lokalizowania b dów w programach. Ostatnie polecenie w menu Format, czyli Convert whitespace (konwertuj biae znaki), umoliwia zamian zwykych spacji na tabulatory i odwrotnie, a to moe by przydatne do usuwania b dów wci powstaych w wyniku uywania wielu edytorów tekstu rónicych si ustawieniami tabulacji. Pi przycisków pokazanych na rysunku 7.2 suy do przeczania widoku penoekranowego, numerowania linii, zawijania tekstu, kolorowania elementów skadni i wczania tekstowych moduów dodatkowych Pythona. Przyciski s tu pokazane w dwóch rz dach: z ikonami domylnymi i alternatywnymi (ten zestaw jest niekompletny).
EDYTOWANIE I URUCHAMIANIE SKRYPTÓW W BLENDERZE~ 235
RYSUNEK 7.2. Przyciski przełączające widok pełnoekranowy, numerowanie linii, zawijanie tekstu, kolorowanie elementów składni języka i włączanie tekstowych modułów dodatkowych Pythona
TEKSTOWE MODUY DODATKOWE PYTHONA Stosunkowo nową funkcją edytora jest możliwość uruchamiania tekstowych modułów dodatkowych. Do ich włączania służą polecenia z grupy Text Plugins (moduły tekstowe) w menu Text (Tekst). Poszczególne moduły dają dostęp do bardzo użytecznych funkcji, takich jak automatyczne podpowiadanie składników, klas i typów, automatyczne uzupełnianie kodu czy ułatwienia w wyszukiwaniu odpowiednich fragmentów tekstu. Poeksperymentuj z tymi modułami i stwórz sobie takie środowisko edytorskie, w którym będzie Ci się wygodnie pracować. Aby dowiedzieć się więcej na ten temat, zajrzyj do opublikowanego w internecie dokumentu Relase Notes poświęconego Blenderowi 2.48.
WYCINANIE I WKLEJANIE Do przeprowadzania operacji wycinania i wklejania większość aplikacji wykorzystuje schowek systemowy, ale Blender używa do tych celów własnego schowka. Tradycyjne skróty Ctrl+C i Ctrl+V obsługują tu wyłącznie wewnętrzny schowek Blendera (za ich pomocą można przenosić fragmenty tekstu również między wszystkimi otwartymi kopiami tego programu). Jeśli chcesz przenosić tekst między edytorem Blendera a jakimkolwiek edytorem zewnętrznym, musisz dodatkowo użyć klawisza Alt. Skrót Ctrl+Alt+C kopiuje zaznaczony tekst do schowka systemowego, a skrót Ctrl+Alt+V wkleja zawartość tego schowka do dokumentu Blendera.
Formatowanie skryptów i stosowanie szablonów W skryptach pisanych dla Blendera obowizuj pewne konwencje. Nie musisz ich przestrzega , jeli tworzysz skrypt wycznie na wasny uytek, ale jeli zamierzasz go udost pni innym lub chcesz, aby zosta on w peni zintegrowany z rodowiskiem Blendera, powiniene go odpowiednio sformatowa . W tym celu moesz wykorzysta
gotowe szablony dost pne w menu Text (Tekst) edytora tekstowego, pokazanym na rysunku 7.3. RYSUNEK 7.3. Wczytywanie szablonu skryptu
236 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
Pierwsz rzecz, jak ujrzysz po otwarciu szablonu, jest nagówek skryptu. Wyglda on mniej wi cej tak: #!BPY """ Name: 'My Object Script' Blender: 244 Group: 'Object' Tooltip: 'Put some useful info here' """
Jest to specjalny nagówek dla skryptów Blendera. Jeli taki skrypt zostanie umieszczony w folderze .blend/scripts, jego nazwa b dzie pobierana przy kadym uruchomieniu Blendera i wywietlana w odpowiedniej grupie polece menu Scripts (skrypty)1, przy czym grupa ta okrelana jest na podstawie wpisu Group w nagówku skryptu. Skrypt z powyszym nagówkiem znalazby si w grupie o nazwie Object (Obiekt), pokazanej na rysunku 7.4. RYSUNEK 7.4. Grupa poleceń Object (Obiekt) w menu Scripts (skrypty)
Skrypty udost pniane innym uytkownikom zazwyczaj zawieraj informacje licencyjne. Jeli chcesz, aby Twój skrypt zosta doczony do oficjalnego wydania Blendera, warunki licencyjne musz by zgodne ze standardem GPL. Odpowiedni tekst moesz po prostu skopiowa z innych skryptów. Oczywicie najpierw sprawd, czy kopiowana licencja spenia Twoje wymagania. Nie licz na to, e inni uytkownicy domyl si , co im wolno, a czego nie, jeli ich o tym wyranie nie poinformujesz. Pozostaa cz szablonu to miejsce na waciwy kod skryptu. I wanie na jego tworzeniu teraz si skoncentrujemy.
Okno skryptów Skrypty z wasnym interfejsem uruchamiane s w specjalnie do tego celu przeznaczonym oknie o nazwie Scripts Window (Okno skryptów). Okno to automatycznie zast puje okno edytora tekstu w chwili uruchomienia skryptu i pozostaje otwarte przez cay czas jego 1
Oczywicie chodzi o menu w oknie Scripts Window (Okno skryptów) — przyp. tum.
WPROWADZENIE DO API BLENDERA~ 237
dziaania. Mona je otworzy take bez uruchamiania skryptu, ale wtedy nic ciekawego tam nie znajdziemy — tylko nagówek i pusty, szary obszar roboczy. Dost pne w nagówku menu Scripts (skrypty) umoliwia wprawdzie wywoywanie skryptów, ale mimo to bezporednie otwieranie tego okna jest rzadko stosowane. Jego gównym przeznaczeniem jest zapewnienie waciwego rodowiska dla interfejsu generowanego przez skrypt, a jak to dziaa, zobaczysz pod koniec rozdziau.
Wprowadzenie do API Blendera Dla kogo, kto chce tworzy skrypty dla Blendera, najwaniejszym dokumentem jest wykaz wszystkich moduów tego programu, wszystkich klas zdefiniowanych w tych moduach i wszystkich metod oraz waciwoci zdefiniowanych w tych klasach. Taki wykaz to po prostu interfejs programistyczny lub krócej API programu. Jeli b dziesz pisa skrypty dla Blendera, jego API stanie si Twoim najlepszym przyjacielem. Dla Blendera 2.48 znajdziesz go w internecie pod adresem www.blender.org/documentation/248PythonDoc/index.html. Aby uatwi Ci prac , kopi tego dokumentu zamiecilimy równie na pycie doczonej do ksiki. API
NA KAD OKAZJ
Używane tutaj pojęcie API Blendera odnosi się do samego Blendera oraz modułów bpy używanych do tworzenia skryptów w języku Python. Wiedz, że nie jest on tym samym API, który posłużył do zintegrowania Pythona z silnikiem gier Blendera (BGE) — chociaż z pewnymi ograniczeniami można go używać również w kontekście tego silnika. API systemu logiki gier oraz inne zastosowania Pythona w odniesieniu do BGE będą tematem rozdziału 11., „Łączenie potęgi Pythona z możliwościami silnika gier”.
Dodatek B, „Hierarchie moduów i klas pythonowego API Blendera”, zawiera wykaz wszystkich moduów i klas udokumentowanych w omawianym tutaj API. Jeli tam zajrzysz, zauwaysz, e nazwy klas wymienione w cz ci „Hierarchia klas” zawieraj równie nazwy moduów, do których nale. Na przykad pierwsza pozycja na tej licie, Armature.Armature, oznacza klas definiujc obiekty armatury. Jak wida , obowizuje klasyczna konwencja skadni Pythona: na prawo od kropki jest nazwa klasy, a na lewo — nazwa moduu, w którym ta klasa jest zdefiniowana. Uycie danej klasy w skrypcie jest moliwe dopiero po zaimportowaniu waciwego moduu. Tworzenie skryptu wykorzystujcego API Blendera powiniene rozpocz
od przegldni cia listy klas. Na podstawie ich opisów wybierz najodpowiedniejsz dla obiektów, którymi zamierzasz manipulowa . Jeli na przykad maj to by obiekty armatury, przeanalizuj dokadnie zarówno klas Armature.Armature, jak i cay modu Armature. Jeli w pliku HTML zawierajcym wykaz moduów (zarówno w wersji online, jak i tej, która jest na pycie doczonej do ksiki) klikniesz cze z nazw moduu, na przykad Armature, otworzy si strona ze szczegóowymi informacjami o tym module. Zwykle ju na samym pocztku znajdziesz kilka przykadów kodu zapisanych w j zyku Python. Zach cam Ci do ich wnikliwego przestudiowania, bo cz sto b d one zawiera dokadnie
238 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
to, czego szukasz, a w przypadku niektórych nowych pozycji mog to by jedyne dost pne informacje. Pozosta cz takiej strony wypeniaj listy klas, funkcji i specjalnych zmiennych zdefiniowanych w danym module. Podstawowymi funkcjami moduu s Get() i New(). Pierwsza suy do pobierania listy wszystkich obiektów okrelonego typu (w naszym przykadzie byyby to obiekty armatury) wyst pujcych w biecej sesji Blendera, a druga tworzy nowe obiekty na podstawie gównej klasy moduu. Zastosowanie zmiennych specjalnych zaley w duej mierze od moduu i klas, z którymi s zwizane. Znaczenie tych zmiennych zwykle mona odczyta z ich nazw oraz z przykadów zastosowa. Na stronie informacyjnej moduu Armature lista klas rozpoczyna si pozycj Armature. Klikni cie tego cza zaprowadzi Ci do tej samej strony co klikni cie cza Armature.Armature na stronie hierarchii klas. B dzie to strona o nazwie Class Armature. Znajdziesz tam dwie listy, jedn z metodami zdefiniowanymi w tej klasie i drug ze zmiennymi reprezentujcymi waciwoci. Waciwoci mog by rozmaitych typów. Jeli przyjrzysz si waciwociom klasy Armature, zauwaysz, e wiele z nich przyjmuje wartoci logiczne (Boolean), ale na przykad waciwo bones (koci) zwraca obiekt typu ko armatury zdefiniowany w klasie o nazwie BonesDict, która jest rozszerzeniem wbudowanego typu sownikowego. Na stronach takich jak ta znajdziesz równie bardziej szczegóowe opisy metod i waciwoci, a nierzadko take przykady ich uycia.
WIAT BLENDERA SUPERNOWOCZESNA RZECZYWISTO WIRTUALNA W METAVR Modelowanie i animowanie obiektów w Blenderze to nie tylko gry i zabawa. W firmie MetaVR, należącej do czołówki producentów oprogramowania generującego wirtualną rzeczywistość, za ważną część planu rozwojowego aplikacji o nazwie Virtual Reality Scene Generator (VRSG) uznano integrację z Blenderem. VRSG od dłuższego czasu służy jako symulator warunków bojowych w armiach wielu krajów. Firma zatrudniła nawet jednego z twórców Blendera, Campbella Bartona, aby kierował opracowaniem specjalnego modułu umożliwiającego przenoszenie obiektów (włącznie z w pełni animowanymi postaciami) z Blendera do środowiska VSRG. Dzięki tym pracom możliwe stało się utworzenie scen zawierających dziesiątki tysięcy budynków i drzew oraz zbudowanie biblioteki ponad 100 postaci ludzkich, które można eksportować do formatu VSRG z automatycznie dobieranymi poziomami szczegółowości i generowaniem tekstur dla wizualizacji efektu podczerwieni. Na tej współpracy skorzystał także Blender. Właśnie dzięki zaangażowaniu firmy MetaVR powstały zupełnie nowe funkcje, takie jak eksport plików w formacie BVH, modyfikator Array (szyk), rzutowanie UV, dowolnie definiowane osie transformacji, przyciąganie narzędzia tnącego, usprawniona konwersja czworokątów na trójkąty i numeryczne sterowanie transformacjami. Efektem tego wspólnego przedsięwzięcia jest również rozwijany obecnie system właściwości identyfikacyjnych (ID Properties). Ma on stanowić bazę dla systemu wymiany danych w Blenderze 2.5 i kolejnych jego wersjach. Wspomniany wyżej moduł umożliwiający wymianę danych między Blenderem a oprogramowaniem MetaVR stanowi doskonały przykład na to, jak za pomocą skryptów Pythona można rozszerzać możliwości Blendera w zakresie importowania i eksportowania plików w różnych formatach. Blender ma już wbudowanych wiele takich skryptów. Służą one do obsługi standardowych formatów 3D. Dzięki modułowi MetaVR Blender był w stanie zaoferować funkcje, które inaczej mogły być dostępne jedynie w wyspecjalizowanych programach kosztujących po kilkadziesiąt tysięcy dolarów za jedno stanowisko. Więcej informacji na temat zastosowań Blendera w środowisku VRSG znajdziesz na stronie www.matavr.com/products/vsrg/vrsg-characteranimation.html.
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 239
Pami taj, e ksika, któr czytasz, nie zawiera wszystkich informacji, jakie mog by potrzebne podczas pisania skryptów. ródem takich informacji jest dokumentacja API i jeli zdecydujesz si na samodzielne pisanie skryptów, b dziesz musia mie j zawsze pod r k. Sprawne pisanie skryptów w 90 procentach polega na szybkim przeszukiwaniu API, a najlepszym sposobem na opanowanie tej sztuki jest po prostu cz ste korzystanie z tego interfejsu. W dalszej cz ci rozdziau oraz w rozdziale 8., „W o wielu gowach, czyli inne zastosowania Pythona w Blenderze”, zobaczysz przykady manipulowania obiektami 3D za pomoc skryptów. B dzie to take okazja do bliszego zapoznania si z API Blendera.
Tworzenie skryptu interaktywnego W tym podrozdziale zbudujemy od podstaw przykadowy skrypt interaktywny. Jego funkcje nie b d skomplikowane — ma umoliwi uytkownikowi tworzenie kolorowych i podskakujcych stoków. Skrypt ma take wygenerowa interfejs sucy do ustawiania rozmaitych parametrów tych stoków: rozmiaru, koloru, pr dkoci i wysokoci, na jak podskakuj. Nie b dzie to zadanie ambitne, ale przecie chodzi tylko o to, aby wreszcie zobaczy na konkretnym przykadzie, jak mona manipulowa obiektami w trójwymiarowej przestrzeni Blendera za pomoc skryptów.
Manipulowanie siatkami, obiektami i krzywymi IPO Najpierw musisz nauczy si tworzy obiekty i rozmieszcza je w scenie. Zauwa, e termin obiekt ma tu podwójne znaczenie. W Pythonie jest to egzemplarz danej klasy (w Pythonie wszystko jest obiektem), a w Blenderze poj cie to oznacza co, co ma okrelone pooenie, co mona obróci , przeskalowa i ustawi wzgl dem innych obiektów w przestrzeni, albo inaczej: jest to co, co mona w trybie obiektowym zaznaczy
prawym przyciskiem myszy. Jeli jeszcze nie dostrzegasz rónicy na przykad mi dzy blokiem danych o nazwie Mesh (siatka) a obiektem Mesh (siatka), z którym ten blok jest zwizany, radz Ci to dokadnie przeanalizowa przed przystpieniem do lektury dalszych cz ci rozdziau. Jeli brakuje Ci wiedzy, zajrzyj do pierwszego rozdziau mojej ksiki Introducing Character Animation with Blender (Sybex, 2007). W kolejnych kilku rozdziaach, wsz dzie tam, gdzie mog pojawi si wtpliwoci, b d obiekty blenderowe nazywa obiektami 3D, a poj cie obiektu zarezerwuj dla pythonowego znaczenia tego terminu.
IMPORTOWANIE MODUÓW Pisanie skryptu dla Blendera zwykle rozpoczyna si od zaimportowania moduów z niezb dnymi klasami. W naszym przykadowym skrypcie b dziemy importowa
moduy dopiero wtedy, gdy b d nam potrzebne. Aby jednak móc rozpocz , musimy zaimportowa moduy Blender i bpy (skrót od nazw Blender i Python). B dziemy te potrzebowa kilka funkcji matematycznych do wyliczania ksztatu siatki stoka. Tego typu funkcje znajduj si w module math, który jest cz ci standardowej instalacji Pythona. Wszystkie te moduy moesz zaimportowa za pomoc jednej instrukcji import. Nazwy moduów wystarczy oddzieli przecinkami. Po prostu wpisz nast pujc lini kodu:
240 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
import Blender, bpy, math
Aby móc uywa submoduów moduu Blender bez poprzedzania ich za kadym razem przedrostkiem Blender, naley je zaimportowa dodatkowo za pomoc instrukcji from nazwa_moduu import nazwa_submoduu. Poniewa w pierwszej kolejnoci trzeba b dzie utworzy obiekt siatkowy i doda go do biecej sceny Blendera, niezb dne b d submoduy Object (obiekt), Scene (scena) i Mesh (siatka). A zatem nast pna linia kodu powinna wyglda tak: from Blender import Object, Scene, Mesh
To samo zrób z moduem math, ale zamiast wypisywa dug list klas, po prostu zaimportuj z niego ca przestrze nazw. Wykorzystaj do tego celu skadni z gwiazdk zast pujc nazwy klas: from math import *
MODUY W FAZIE PRZEJCIOWEJ Jeśli masz wrażenie, że moduły Blender i bpy się dublują, to dlatego, że tak jest w istocie. Moduł Blender istnieje od dawna, a bpy jest stopniowo przygotowywany jako jego następca. Jeśli analogiczne klasy istnieją w obu modułach, lepiej jest wybrać bardziej elegancką opcję z bpy.
USTAWIANIE WARTOCI DOMYLNYCH Istnieje kilka powodów, dla których pewne wartoci dobrze jest przechowywa
w zmiennych. Jednym z nich jest atwo , z jak mona póniej zmodyfikowa kod, aby wartoci mogy by zmieniane w sposób interaktywny za pomoc odpowiedniego interfejsu. Na razie jednak wystarczy, jeli utworzymy stosowne zmienne i nadamy im pewne wartoci domylne. Widoczne niej zmienne b d reprezentowa nast pujce parametry stoka: liczb wierzchoków na obwodzie podstawy, wspórz dne X i Y pooenia pocztkowego, promie podstawy, wysoko , szybko podskakiwania, wysoko podskoku, skadowe R, G i B koloru oraz nazw . cverts = 10 varX = 0 varY = 0 varRad = 1 varHeight = 2 varSpeed = 1 varBHeight = 5 varRed = 1 varGrn = 0 varBlu = 1 varNam = "MyCone"
TWORZENIE SIATKI Jedn z waciwoci obiektu siatkowego (mam na myli obiekt Pythona nalecy do klasy Mesh, a nie trójwymiarowy obiekt Blendera, który, jak si wkrótce okae, jest w Pythonie obiektem klasy Object) jest lista jego wierzchoków. Z kolei kady wierzchoek jest
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 241
reprezentowany przez list trzech wspórz dnych X, Y i Z. Inn waciwoci jest lista cianek, z których kada jest list trzech lub czterech wierzchoków w zalenoci od tego, czy cianka jest trójktem, czy czworoktem. Wierzchoki z tych list s identyfikowane za pomoc ich indeksów na licie wierzchoków obiektu. Pierwsz rzecz, jak musimy zrobi , b dzie zapisanie tych wierzchoków i cianek w formie prawidowych list Pythona. Pooenia rodka podstawy i szczytu stoka s ju znane, wi c te wierzchoki mona od razu umieci na licie. Jeli chodzi o cianki, to pooenia ich wierzchoków s na razie nieznane, a zatem ich list moemy jedynie zainicjalizowa jako pust. Odpowiednie linie skryptu b d miay nast pujc posta : list_of_ vertices = [[0,0,0],[0,0,varHeight]] list_of_faces = []
Nast pny krok jest troch bardziej skomplikowany. Warto cverts reprezentuje liczb wierzchoków na obwodzie podstawy stoka. Obliczenie wspórz dnych dla tych wierzchoków wymaga zastosowania pewnych wzorów trygonometrycznych. Iteracj tych oblicze w zakresie od 0 do 9 wykonamy przy uyciu funkcji range()opisanej w rozdziale 6., „Python dla niecierpliwych”. Oblicza musimy tylko wspórz dne X i Y, bo wspórz dna Z dla tych wierzchoków wynosi 0. W kadym przebiegu p tli for wygenerowana trójka wspórz dnych b dzie doczana do listy wierzchoków. Poczwszy od drugiego przebiegu, do listy cianek doczane b d dwie cianki; pierwsz wyznacz dwa ostatnio wygenerowane wierzchoki obwodu oraz rodek podstawy, a drug — te same wierzchoki na obwodzie podstawy i szczyt stoka. Zauwa, e trójki reprezentujce cianki zaczynaj si od 0 lub 1. Liczby te s indeksami zdefiniowanych wczeniej wierzchoków pooonych w rodku podstawy i na szczycie stoka. Wartoci wyrae j+1 i j+2 okrelaj indeksy kolejnych wierzchoków na obwodzie podstawy. for j in range(0,cverts): x = sin(j*pi*2/(cverts-1))*varRad y = cos(j*pi*2/(cverts-1))*varRad z = 0 list_of_vertices.append([x,y,z]) if j > 0: list_of_faces.extend([[0,j+1,j+2],[1,j+1,j+2]])
To wszystko, jeli chodzi o definiowanie geometrii, ale obiekt typu Mesh (siatka) dla tej geometrii jeszcze nie istnieje. Na razie mamy tylko par liczbowych list. Aby utworzy obiekt siatkowy, musimy uy odpowiedniej metody z moduu bpy. Obiektowi temu nadamy nazw coneMesh (siatka stoka). coneMesh = bpy.data.meshes.new(varNam)
Na koniec musimy jeszcze przekaza wygenerowane listy wierzchoków i cianek do utworzonego wanie obiektu siatkowego. Zrobimy to za pomoc metody extend(), która doczy nasze listy do odpowiednich list obiektu (domylnie pustych): coneMesh.verts.extend(list_of_ vertices) coneMesh.faces.extend(list_of_faces)
242 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
UMIESZCZANIE OBIEKTU W SCENIE Moesz teraz uruchomi skrypt, wciskajc klawisze Alt+P lub wybierajc polecenie Run Python Script (Uruchom skrypt Pythona) z menu Text (Tekst), ale nic ciekawego nie zobaczysz. Wprawdzie blok danych Mesh (siatka) zostanie utworzony, ale nie b dzie powizany z adnym obiektem 3D, a zatem nie b dzie istnia w scenie Blendera. Aby poczy siatk z obiektem 3D w scenie, musisz najpierw uzyska dost p do aktywnej sceny. Zrobisz to w nast pujcy sposób: scn = bpy.data.scenes.active
Teraz zmienna scn przechowuje obiekt reprezentujcy aktywn scen . Nowy siatkowy obiekt 3D utworzysz, wywoujc metod objects.new()i przekazujc jej w formie argumentów siatk oraz nazw obiektu. Metoda ta jest cz ci moduu bpy i wywoasz j w sposób nast pujcy: mwshOb = scn.objects.new(coneMesh, varNam)
Utworzony w ten sposób obiekt b dzie domylnie umieszczony w punkcie 0,0,0. Aby to zmieni , uyj metody setLocation() w sposób nast pujcy: meshOb.setLocation(varX, varY 0)
Jeli teraz uruchomisz skrypt (Alt+P), zobaczysz stoek, taki jak na rysunku 7.5. Pierwsza cz wiczenia jest ju prawie ukoczona. Pozostaje jeszcze ustawienie normalnych. Gdy budujesz obiekt z wierzchoków i cianek, kierunki normalnych mog okaza si niewaciwe. Aby to sprawdzi , obejrzyj obiekt w trybie Textured (Z teksturami), tak jak na rysunku 7.6 (pomocne moe si okaza odpowiednie owietlenie stoka), lub wcz tryb edycyjny i w panelu Mesh Tools More (wi cej narz dzi siatkowych) uaktywnij opcj Draw Normals (Rysuj normalne), która wywietla normalne wszystkich cianek, co wida na rysunku 7.7. Tak jak podczas zwykego modelowania mona wymusi zwrot normalnych na zewntrz siatki za pomoc skrótu Ctrl+N, tak z poziomu skryptu moesz to zrobi
przy uyciu metody recalcNormals(). W zalenoci od wartoci argumentu (0 lub 1) metoda ta skieruje normalne na zewntrz lub do wewntrz siatki. W naszym skrypcie wywoanie tej metody powinno wyglda nast pujco: coneMesh.recalcNormals(0)
Zauwa, e ta metoda wymaga, aby siatka bya zwizana z obiektem 3D. Jeli wywoasz j przed przypisaniem siatki do obiektu, otrzymasz informacj o b dzie — metoda poinformuje Ci , e nie moe znale obiektu dla danej siatki. Pami taj wi c, aby wywoa
j dopiero po metodzie scn.objects.new(coneMesh, varNam). Jeli teraz uruchomisz skrypt, nie zauwaysz adnej zmiany w oknie widokowym, dopóki nie klikniesz w jego obr bie lub w inny sposób nie zmusisz Blendera, aby odwiey zawarto okna (moesz na przykad obróci widok). Ale odwieenie okna widokowego moesz wymusi równie z poziomu skryptu. Wystarczy, e na kocu wpiszesz nast pujc lini kodu: Blender.Redraw()
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 243
RYSUNEK 7.5. Tworzenie siatki stożka
RYSUNEK 7.6. Skutek złego ustawienia normalnych widoczny w trybie Textured (Z teksturami)
Jeli teraz uruchomisz skrypt, stoek powinien ukaza si natychmiast w prawidowej postaci. Jeeli chcesz porówna swój kod z moim, otwórz plik cones_tutorial.blend zamieszczony na pycie doczonej do ksiki. Odpowiedni skrypt nosi nazw step1–mesh i znajdziesz go na rozwijanej licie tekstów w nagówku okna edytora.
244 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
RYSUNEK 7.7. Opcja Draw Normals (Rysuj normalne) pozwala sprawdzić kierunki normalnych
DODAWANIE MATERIAU Aby zakoczy tworzenie stoka, przypiszmy mu materia. W tym celu musimy skorzysta z klasy Material (materia) zdefiniowanej w module o takiej samej nazwie. Jednak zanim uyjesz tej klasy, zajrzyj do API i zapoznaj si ze wszystkimi jej metodami oraz waciwociami. Nast pnie w swoim skrypcie do listy importowanych moduów dodaj pozycj Material, bo bez tego nie b dziesz móg utworzy adnego materiau. Kod caego etapu dodawania materiau znajdziesz w tekcie step2–material zawartym w pliku cones_tutorial.blend. Aby utworzy nowy materia, wywoaj metod New()i wygenerowany przez ni obiekt przeka do zmiennej, tak jak w poniszej linii kodu: mat = Material.New('Material')
W ten sposób utworzye obiekt klasy Material o nazwie mat. Teraz musisz go doda
do kolekcji materiaów obiektu coneMesh. W tym miejscu natkniesz si na dziwn i rac niekonsekwencj obecnej implementacji API Blendera. Kolekcja materiaów powinna pod kadym wzgl dem przypomina zwyk list znan z Pythona. Jednak tak si nie dzieje i nie jest to jedyny przypadek niekonsekwencji (eby nie powiedzie bdu) tego API. Otó nie moesz tak po prostu uy metody append() i poszerzy kolekcji coneMash.materials o now pozycj . Zamiast tego musisz wykona do dziwny, ale skuteczny zabieg: przypisa
kolekcj coneMash.materials do nowej zmiennej (ja nazwaem j mats), doczy do niej materia mat, a nast pnie przekaza warto zmiennej mats z powrotem do kolekcji coneMash.materials. Caa procedura powinna wyglda tak:
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 245
mats = coneMash.materials mats.append(mat) coneMash.materials = mats
Tak, to jest naprawd dziwne, ale chyba nikt nie wie o tym lepiej ni twórcy Blendera. Pozostaje wi c mie nadziej , e tego typu niekonsekwencje zostan usuni te tak szybko, jak tylko to b dzie moliwe. Na razie zakadam, e skoro dobrne do tego miejsca, jeste zdecydowany uczy si pisa skrypty dla Blendera i nie zniech c Ci takie niespodzianki! Przekazanie poszczególnych skadowych koloru (RGB) do zmiennej mat jest bardzo proste. List tych wartoci zawiera waciwo rgbCol. Wszystkie trzy wartoci mona przypisa tej waciwoci za jednym razem w sposób nast pujcy: mat.rgbCol = [varRed, varGrn, varBlu]
Uyte tu zmienne zostay zdefiniowane na pocztku skryptu. Przypomn , e ich wartoci wynosz odpowiednio 1, 0 i 1, a zatem stoek powinien by fioletowy. Sprawd tylko, czy wywoanie metody Blender.Redraw()znajduje si za powyszymi instrukcjami, bo zapewni odwieenie zawartoci okna widokowego we waciwym momencie i stoek b dzie widoczny w kolorach.
INTERPOLACJA Celem niniejszego wiczenia jest wykonanie skryptu dodajcego do sceny Blendera podskakujce stoki. Jeli tworzye jakkolwiek animacj w Blenderze, to z pewnoci ju wiesz, e wykorzystuje si do tego krzywe interpolacyjne (IPO). Teraz poka Ci, jak to si robi na poziomie skryptów Pythona. Najpierw musisz ustali , które moduy i klasy b d potrzebne. Przejrzyj list moduów API i spróbuj odgadn , które z nich udost pni Ci informacje zwizane z interpolacj i umoliwi tworzenie krzywych IPO. Jeli wskazae modu o nazwie Ipo, wybrae prawidowo. Jeli wskazae nast pny na licie modu IpoCurve, równie nie popenie b du. Po prostu b d Ci potrzebne oba, ale b dziesz musia pozna rónice, jakie mi dzy nimi wyst puj. Aby móc ich uy w skrypcie, musisz doda w instrukcji import kolejn pozycj o nazwie Ipo. Gorco zach cam Ci do przeczytania opisów klas Ipo oraz IpoCurve (zreszt dotyczy to wszystkich klas, jakich zamierzasz uywa ). Zazwyczaj to si przydaje, a czasami jest wr cz niezb dne. Cz ste zagldanie do API powinno sta si Twoim nawykiem. W skrócie: obiekt Ipo reprezentuje zbiór krzywych interpolacyjnych okrelonego typu. Waciwo curves tego obiektu zawiera list obiektów IpoCurve reprezentujcych krzywe IPO. Istnieje 10 typów obiektów Ipo, a dla kadego z nich okrelony jest zbiór staych wartoci charakteryzujcych nalece do niego krzywe. Typy Ipo s nast pujce:
Material (materia),
Lamp (lampa),
World (wiat),
Camera (kamera),
Object (obiekt),
246 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
Curve (krzywa),
Constraint (wi zy),
Texture (tekstura),
Pose/Action (poza/dziaanie),
Sequence (sekwencja).
Powysze typy powinny by Ci znane, poniewa s dost pne równie w samym Blenderze. Prawdopodobnie potrafisz te okreli , jakie krzywe s zwizane z kadym z tych typów. Peny wykaz tych powiza znajduje si na stronie moduu Ipo w API. Jako przykad przytaczam tu list staych krzywych zwizanych z obiektem Ipo typu Object:
OB_LOCX
OB_LOCY
OB_LOCZ
OB_DLOCX
OB_DLOCY
OB_DLOCZ
OB_ROTX
OB_ROTY
OB_ROTZ
OB_DROTX
OB_DROTY
OB_DROTZ
OB_SCALEX
OB_SCALEY
OB_SCALEZ
OB_DSCALEX
OB_DSCALEY
OB_DSCALEZ
OB_LAYER
OB_TIME
OB_COLR
OB_COLG
OB_COLB
OB_COLA
OB_FSTRENG
OB_FFALL
OB_RDAMP
OB_DAMPING
OB_PERM
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 247
Pierwsze dwie litery w nazwach tych staych wskazuj, e chodzi o krzywe IPO typu Object. Pozostae cz ci nazw informuj o tym, jakie parametry s animowane przez
poszczególne krzywe. Niezalenie od tych staych, które s waciwociami obiektów Ipo, wszystkie obiekty IpoCurve maj swoje waciwoci name (nazwa) okrelajce rodzaj reprezentowanej krzywej. Wartoci tych waciwoci znajdziesz w API na stronie z opisem klasy IpoCurve. Oczywicie mi dzy nazwami obiektów IpoCurve a staymi reprezentujcymi krzywe w obiekcie Ipo zachodzi cisa odpowiednio . Do tworzenia nowych obiektów klasy Ipo suy funkcja New() zdefiniowana w module Ipo. Argumentami tej funkcji s typ i nazwa obiektu. W naszym przypadku animowane b dzie pooenie wzgl dem osi Z, a to oznacza, e musimy utworzy obiekt Ipo typu Object. Nast pnie musimy wywoa metod addCurve()tego obiektu. Jej dziaanie polega na dodaniu nowego obiektu IpoCurve do listy krzywych w obiekcie Ipo. Jak ju wspominaem, kady obiekt IpoCurve ma ustalon nazw okrelajc animowany parametr. My b dziemy potrzebowa krzywej LocZ, a wi c jej nazw musimy poda jako argument metody addCurve(). To wszystko mona zrealizowa za pomoc nast pujcych dwóch linii kodu: ipo = Ipo.New("Object","Ipo") ipo.addCurve('LocZ')
Kolejn rzecz, któr musimy si zaj , jest szybko , z jak stoek ma podskakiwa . Dla kadego, kto mia do czynienia z krzywymi IPO, jest oczywiste, e szybko , z jak zmienia si warto animowanego parametru, zaley od nachylenia krzywej w danej chwili. Póniej pr dko podskoków b dziemy regulowa za pomoc interfejsu, dlatego pooenie drugiego punktu na krzywej IPO musimy uzaleni od tej ustawianej wartoci. Wczeniej zdefiniowalimy zmienn varSpeed i nadalimy jej domyln warto 1. Teraz uyjemy jej jako mianownika uamka okrelajcego liczb klatek potrzebnych stokowi, aby osign swoje najwysze pooenie. Domyln wartoci tego uamka jest 10. Jeli warto zmiennej varSpeed b dzie rosa, rosn b dzie te szybko ruchu stoka, a zatem szybciej b dzie on osiga maksymalne pooenie. Póniej, w kodzie interfejsu, ustalimy te ograniczenia pr dkoci. Warto okrelajc liczb klatek, po których stoek znajdzie si w najwyszym pooeniu, nazwiemy speedOffset i zdefiniujemy nast pujco: speedOffset = 10/varSpeed
Teraz musimy ustawi punkty kontrolne obiektu IpoCurve. Jeli przyjrzysz si uwanie skadnikom tego obiektu, zauwaysz, e wród waciwoci na pierwszym miejscu jest pozycja o nazwie bezierPoints (punkty Béziera) zdefiniowana jako list of BezTriples (lista trójek Béziera). To powinno by dla Ciebie informacj, e musisz zaznajomi
si z jeszcze jedn klas. Chodzi oczywicie o klas BezTriple. A zatem odszukaj teraz opisy moduu i klasy BezTriple i uwanie je przeczytaj. Nast pnie wró na pocztek skryptu i do listy importowanych klas dodaj pozycj BezTriple. Obiekt klasy BezTriple reprezentuje pojedynczy punkt kontrolny Béziera jako trzy punkty w przestrzeni: zasadniczy punkt kontrolny i dwa towarzyszce mu uchwyty. Jeli nie miae dotd okazji pracowa z krzywymi Béziera lub krzywymi IPO, powiniene przestudiowa te zagadnienia, bo bez tego trudno b dzie Ci zrozumie istot obiektów BezTriple.
248 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
Obiekt BezTriple moe zawiera trzy lub dziewi wspórz dnych. Jeli s tylko trzy wspórz dne, to znaczy, e punkt kontrolny i jego uchwyty dokadnie si pokrywaj (maj dokadnie takie same wspórz dne X, Y i Z). Jeli jest ich dziewi , to pierwsze i ostatnie trzy odnosz si do uchwytów, a rodkowe wyznaczaj pooenie punktu kontrolnego. Jak wida , klasa BezTriple zostaa stworzona wanie z myl o punktach kontrolnych krzywych Béziera. Poniewa tego typu krzywe funkcjonuj w przestrzeni trójwymiarowej, kady punkt kontrolny czy uchwyt jest reprezentowany przez trzy wspórz dne wyznaczajce jego pooenie. Jednak w przypadku krzywych IPO, które s krzywymi dwuwymiarowymi, trzecia wspórz dna nie jest potrzebna. Dlatego w obiektach BezTriple b dcych skadnikami obiektów IpoCurve ostatnia wspórz dna z kadej trójki jest po prostu ignorowana. Zdefiniujemy trzy punkty kontrolne krzywej IPO. Pierwszy b dzie reprezentowa moment odbicia od podoa, drugi — najwysze pooenie stoka, a trzeci — moment ponownego zetkni cia z podoem. Kady z tych punktów b dzie obiektem BezTriple z dziewi cioma wspórz dnymi. Wszystkie wspórz dne Z b d miay warto 0, chocia równie dobrze mogaby to by dowolna liczba cakowita lub zmiennoprzecinkowa — jak ju wspominaem, w przypadku krzywych IPO te wspórz dne s po prostu pomijane. Pierwszy obiekt o nazwie point1 (punkt 1) ustanowi punkt kontrolny na osi X w punkcie 0, a uchwytom nada wspórz dne –0,5 i 0,5. Takie rozmieszczenie uchwytów blisko punktu kontrolnego pozwoli na uzyskanie ostrego zaamania krzywej. Drugi obiekt, point2, b dzie mia wszystkie wspórz dne Y równe varBheight; wspórz dna X punktu kontrolnego przyjmie tu warto speedOffset, a dla uchwytów jej warto b dzie wynosia odpowiednio speedOffset–5 i speedOffset+5. Przez zwi kszenie odlegoci uchwytów od punktu kontrolnego uzyskamy agodniejszy uk krzywej dla najwyszego pooenia stoka, dzi ki czemu pr dko nie b dzie si tutaj zmieniaa tak gwatownie jak w punkcie pierwszym. Trzeci obiekt przywróci wspórz dnym Y warto 0, a wspórz dn X punktu kontrolnego ustawi na speedOffset*2; uchwyty znów zostan przysuni te do punktu kontrolnego na odlego 0,5. Kod definiujcy te trzy obiekty powinien wyglda
nast pujco: point1 = BezTriple.New(-.5,0,0, 0,0,0, .5,0,0) point2 = BezTriple.New(speedOffset-5,varBheight,0, speedOffset,varBheight,0, ´speedOffset+5,varBheight,0) point3 = BezTriple.New(speedOffset*2-0.5,0,0, speedOffset*2,0,0, speedOffset*2+0.5,0,0)
Po zdefiniowaniu punktów trzeba je doda do krzywej interpolacyjnej. Aby uzyska
dost p do waciwej krzywej, uyjemy opisywanych wczeniej staych. ipo[Blender.Ipo.OB_LOCZ].append(point1) ipo[Blender.Ipo.OB_LOCZ].append(point2) ipo[Blender.Ipo.OB_LOCZ].append(point3)
Zauwa, e punkty s tu dodawane pojedynczo. Nie mona ich doda wszystkich naraz. Jest to efekt kolejnej niespójnoci API Blendera. Wydawa by si mogo, e skoro mona uy metody append(), to dost pna powinna by równie metoda extend(), która pozwoliaby doda wszystkie trzy punkty jednoczenie. Niestety ta metoda, dost pna dla zwykych list Pythona, nie zostaa zdefiniowana dla uywanej przez nas kolekcji punktów. Dodatkowo dezorientuje fakt, e w klasie IpoCurve zdefiniowana jest waciwo o nazwie
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 249
extend, ale oznacza ona zupenie co innego — okrela sposób przeduania krzywej. Extend Types, czyli metody przeduania krzywych interpolacyjnych (poza zdefiniowane punkty kontrolne), s podane w dokumentacji API na stronie Module IpoCurve. Dla naszych celów najlepsz opcj b dzie metoda cykliczna reprezentowana przez warto 2. ipo[Blender.Ipo.OB_LOCZ].extend = 2
Na koniec docz obiekt ipo do obiektu siatkowego. Uyj do tego celu metody setIpo() w nast pujcy sposób: meshOb.setIpo(ipo)
Teraz moesz uruchomi skrypt. Gdy wciniesz klawisze Alt+P, w oknie 3D View (Widok 3D) powinna ukaza si scena ze stokiem. Wcinij teraz klawisze Alt+A lub w oknie Timeline (o czasu) kliknij przycisk Play (odtwórz), a by odtworzy animacj . Stoek powinien porusza si w gór i w dó. Jeli chcesz obejrze krzyw interpolacyjn, zaznacz stoek, a nast pnie otwórz okno Ipo Curve Editor (Edytor krzywych IPO) i z listy Ipo type (typ IPO) wybierz Object (obiekt). Ukoczye wanie pierwsz poow wiczenia. Kod utworzony do tej pory znajdziesz w tekcie step3-ipos zapisanym w pliku cones_tutorial.blend. W drugiej cz ci wiczenia zbudujemy interfejs, za pomoc którego b dzie mona ustawia wartoci rozmaitych parametrów i wydawa polecenia skryptowi.
Budowanie interfejsu Przed przystpieniem do budowy waciwego interfejsu dla naszego skryptu byoby dobrze rzuci okiem na przykad cho by najprostszego interfejsu zaprogramowanego w Pythonie i dziaajcego w rodowisku Blendera. Poznanie zasad budowy skryptu takiego interfejsu na pewno b dzie pomocne.
SKRYPT PROSTEGO INTERFEJSU Aby utworzy przykadowy prosty interfejs, otwórz nowy plik w oknie edytora. W tym celu rozwi menu Text (Tekst) i wybierz opcj New (Nowy). Nast pnie wpisz w caoci poniszy kod. Ten sam kod znajdziesz równie w pliku cones_tutorial.blend jako tekst simple-interface. 1 2 3 4 5 6 7 8 9 10 11 12 13 14
from Blender import Draw def gui(): Draw.PushButton("Press Me!", 0, 5, 30, 100, 25, "pressButton") Draw.PushButton("Quit", 1, 110, 30, 100, 25, "quit") def event(evt, val): if evt == Draw.ESCKEY: Draw.Exit() def button_event(evt): if evt == 0: print "Button Pressed!" if evt == 1:
250 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
15 16 17
Draw.Exit() Draw.Register(gui, event, button_event)
Gdy teraz wciniesz klawisze Alt+P, kod zostanie wykonany i w oknie Scripts (skrypty) ukae si prosty interfejs z dwoma przyciskami, taki jak na rysunku 7.8. Jeli klikniesz przycisk Press Me! (wcinij mnie), w oknie konsoli Blendera pojawi si tekst Button Pressed!(przycisk wcini ty) (patrz rysunek 7.9). Jeli klikniesz przycisk Quit (wyjcie) lub wciniesz klawisz Esc, skrypt zakoczy swoje dziaanie i ponownie otworzy si okno edytora tekstu. RYSUNEK 7.8. Bardzo prosty interfejs
RYSUNEK 7.9. Odpowiedź na kliknięcie przycisku
Najwaniejsza cz caego skryptu zawarta jest w ostatniej linii. Instrukcja Draw.Register(gui, event, button_event)musi znale si w kadym skrypcie Pythona
definiujcym graficzny interfejs uytkownika (GUI) w rodowisku Blendera. To z kolei wymusza zaimportowanie klasy Draw, która odpowiada za wi kszo prac zwizanych z rysowaniem elementów interfejsu, takich jak przyciski, suwaki czy pola edycyjne. Metoda Draw.Register() steruje wywoywaniem trzech podstawowych funkcji definiujcych cay interfejs. Kady argument jest tutaj nazw odpowiedniej funkcji. Pierwszy z nich odpowiada funkcji realizujcej graficzny aspekt interfejsu. Drugi jest nazw funkcji obsugujcej zdarzenia pochodzce z urzdze wejciowych, takich jak klawiatura czy mysz. Natomiast trzeci argument jest nazw funkcji obsugujcej zdarzenia generowane przez elementy interfejsu — tzw. zdarzenia przycisków (button events). Same nazwy tych argumentów nie maj znaczenia, ale musz si pokrywa z nazwami funkcji realizujcych poszczególne zadania. Caa reszta tego skryptu to po prostu definicje tych trzech funkcji. Przeanalizujmy najpierw funkcj event(). Przyjmuje ona dwa argumenty, z których pierwszy reprezentuje zdarzenie wywoujce t funkcj . Wykaz wszystkich zdarze zwizanych z klawiatur i mysz znajdziesz w dokumentacji API na stronie Module Draw. W tym przypadku funkcja obsuguje tylko jedno z tych zdarze, a mianowicie wcini cie klawisza Esc. Jest ono tutaj zapisane jako waciwo Draw.ESCKEY. Wystpienie tego zdarzenia spowoduje wywoanie metody Draw.Exit(), która koczy dziaanie skryptu. Drugi argument funkcji event() suy do rozróniania mi dzy wcini ciem klawisza a jego zwolnieniem. Gdy wciskamy klawisz, funkcja event() jest wywoywana z wartoci tego parametru równ 1, a gdy zwalniamy przycisk, w wywoaniu funkcji pojawia si warto 0.
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 251
Funkcja button_event()róni si od poprzedniej tym, e zamiast wbudowanych typów zdarze przyjmuje w roli argumentu indeks zdarzenia przycisku okrelony w definicji konkretnego elementu interfejsu. Definicje te z kolei zawarte s w funkcji gui(). Indeksów jest tyle, ile przycisków, i to od tych indeksów zaley, co funkcja zrobi. W naszym przykadzie klikni cie przycisku z indeksem równym 0 spowoduje wywietlenie w oknie konsoli napisu Button Pressed!, a klikni cie przycisku z indeksem 1 zakoczy dziaanie skryptu. Pozostaa nam jeszcze do omówienia funkcja gui(). Tutaj definiowane s przyciski i ich parametry. Przykadem takiej definicji moe by instrukcja Draw.PushButton ´("Press Me!", 0, 5, 30, 100, 25, "pressButton"), która tworzy przycisk ekranowy. Za pomoc podobnych instrukcji mona tworzy równie inne elementy interfejsu. Argumentami funkcji Draw.PushButton() s: tekst etykiety, indeks zdarzenia, wspórz dna X lewego górnego naronika, wspórz dna Y lewego górnego naronika, wysoko , szeroko i nazwa przycisku. Drugi przycisk jest tu zdefiniowany w taki sam sposób. Inne ma tylko parametry, a w szczególnoci inny jest tu indeks zdarzenia, co sprawia, e klikni cie tego przycisku wywouje zupenie inn reakcj programu. Teraz, gdy ju znasz podstawowe zasady pisania skryptów interfejsowych, moemy spróbowa zrobi co powaniejszego i zbudowa interfejs umoliwiajcy sterowanie tworzeniem skaczcych stoków.
INTERFEJS DLA TWORZENIA SKACZCYCH STO KÓW Zanim rozpoczniemy waciw prac , spójrzmy, jak powinien wyglda rezultat. Zawsze przed rozpocz ciem kodowania warto przygotowa sobie przynajmniej ogólny schemat interfejsu. W naszym przykadzie potrzebne b d miejsca na wpisywanie nazwy stoka, jego wymiarów (wysokoci i promienia podstawy), pooenia pocztkowego oraz szybkoci i wysokoci podskoków. Wszystko, wcznie z etykietami objaniajcymi znaczenie poszczególnych elementów, rozlokowaem w 13 wierszach, tak jak na rysunku 7.10. RYSUNEK 7.10. Docelowa postać interfejsu
252 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
USTALENIE LOGICZNEJ STRUKTURY INTERFEJSU Podstawowa struktura tego interfejsu powinna by taka sama jak ta, któr widzielimy w przypadku prostego interfejsu przykadowego. Dojd tylko rozmaite zmienne ustawiane za pomoc suwaków, a klikni cie przycisku OK zamiast wypisania tekstu w oknie konsoli spowoduje utworzenie stoka. Aby co takiego miao miejsce, kod odpowiedzialny za tworzenie stoka musi by wywoywany przez funkcj button_event(). Wida wi c od razu, e oprócz trzech funkcji niezb dnych do dziaania interfejsu potrzebna b dzie jeszcze jedna, odpowiedzialna za tworzenie stoka. W rzeczywistoci funkcji b dzie wi cej, bo przecie b dziemy jeszcze tworzy kamer i lamp . Na pocztek utwórz szkielet ogólnej struktury skryptu, taki jaki zaprezentowano poniej (aby uatwi skad ksiki, lista importowanych moduów zostaa podzielona na dwie cz ci; moesz przepisa kod dokadnie tak, jak podano tutaj, ale moesz take zapisa wszystkie moduy w jednej linii, oddzielajc je przecinkami): import Blender, math import bpy from Blender import Camera, Object, Ipo, IpoCurve, Scene from Blender import Lamp, Mesh, Material, BezTriple, Draw, BGL from math import * def MakeCamera(): pass def MakeLamp(): pass def MakeCone(): pass def gui(): pass def button_event(): pass def event(): pass MakeCamera() MakeLamp() Draw.Register(gui, event, button_event)
Na kilka rzeczy warto tutaj zwróci uwag . Pierwsza to uycie instrukcji pass w roli „wypeniacza” pustych miejsc. Python jest wraliwy na wci cia linii kodu i wymaga, aby po kadej linii zakoczonej dwukropkiem nast powaa linia z odpowiednim wci ciem. Uycie instrukcji pass pozwala zadeklarowa funkcj , która chwilowo nie robi nic — interpreter potraktuje to jak prawidow definicj funkcji. Inn rzecz wart odnotowania jest import klasy BGL. Klasa ta odpowiada za implementacj biblioteki OpenGL w API Blendera i jest potrzebna do wywietlania etykiet tekstowych w interfejsie. Zwró take uwag na wywoania funkcji MakeCamera() i MakeLamp(). Funkcje te powinny by wywoane tylko raz i nie ma powodu, aby byy wywoywane w ramach jakiegokolwiek zdarzenia.
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 253
USTALANIE ZMIENNYCH Niektóre zmienne b d uywane w wielu miejscach skryptu i dlatego powinny by
zdefiniowane na samym pocztku, jeszcze przed definicjami funkcji. Wród nich b d równie zmienne uywane w pierwszej cz ci wiczenia: conv = 2*math.pi/360 cverts = 10 scn = bpy.data.scenes.active
W tym miejscu warto take zadeklarowa stae przechowujce wartoci indeksów zdarze przycisków (stae s podobne do zmiennych, ale róni si od nich tym, e przechowywane w nich wartoci nie zmieniaj si ). Przy wi kszej liczbie przycisków dobrze jest przypisa im indeksy zdarze w postaci staych o wymownych nazwach. Autorami zaprezentowanej poniej konwencji nazywania takich staych s Olivier Saraja i Yves Bailly. Zasada jest prosta: kada nazwa rozpoczyna si przedrostkiem EV, po którym nast puje znak podkrelenia, a po nim kolejne dwie litery oznaczajce typ elementu interfejsu — BT dla przycisku, SL dla suwaka, NB dla pola numerycznego i ST dla pola tekstowego; potem nast puje kolejny znak podkrelenia i na koniec krótka, opisowa nazwa funkcji. Zauwa, e te wszystkie stae s nazywane indeksami zdarze przycisków, mimo e odnosz si take do suwaków, pól numerycznych i tekstowych. Ponadto w naszym przykadzie tylko dwie pierwsze b d uyte wewntrz funkcji button_event()jako indeksy zdarze przycisków. Cay ten etap zwizany z definiowaniem staych wprowadziem tylko po to, aby pokaza przykad dobrej praktyki programistycznej. Przy wi kszej liczbie przycisków i zdarze z nimi zwizanych taki sposób organizacji kodu jest naprawd pomocny. EV_BT_OK = 1 EV_BT_CANCEL = 2 EV_SL_RADIUS = 3 EV_SL_HEIGHT = 4 EV_SL_SPEED = 5 EV_SL_BHEIGHT = 6 EV_NB_POSX = 7 EV_NB_POSY = 8 EV_SL_R = 9 EV_SL_G = 10 EV_SL_B = 11 EV_ST_NAME = 12
Na tym etapie utworzymy te domylne elementy interfejsu. Metoda Draw.Create() tworzy ogólny element interfejsu i przypisuje mu domyln warto . W ten sposób moemy utworzy zmienne globalne (musz by zdefiniowane poza definicjami funkcji) i nada
im wartoci pocztkowe. Unikniemy te ewentualnych b dów, jakie mogyby powsta , gdyby funkcja MakeCone()zadaa odpowiednich danych. Póniej, w definicji funkcji gui(), te ogólne elementy przedefiniujemy jako przyciski, suwaki i pola edycyjne. stringName = sliderRadius sliderHeight numberPosX = numberPosY =
Draw.Create("MyCone") = Draw.Create(0.50) = Draw.Create(1.00) Draw.Create(0.00) Draw.Create(0.00)
254 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
sliderR = Draw.Create(0.50) sliderG = Draw.Create(0.50) sliderB = Draw.Create(0.50) sliderSpeed = Draw.Create(1.00) sliderBHeight = Draw.Create(1.00)
DEFINIOWANIE FUNKCJI Jedn z najwaniejszych funkcji mamy ju prawie w caoci zdefiniowan. Jest ni funkcja MakeCone(). Jej kod tworzylimy w pierwszej cz ci wiczenia. Teraz moesz go skopiowa
w miejsce instrukcji pass pod lini kodu def MakeCone():. B dziesz musia tylko zwi kszy
wci cie tego kodu — po prostu zaznacz kod i z menu Format wybierz polecenie Indent (utwórz wci cie). Jedyne, co musisz zmieni w skopiowanym kodzie, to inicjalizacje zmiennych. Zamiast konkretnych wartoci liczbowych przypisz im wartoci przechowywane w ogólnych elementach interfejsu, które utworzye przed chwil. Poza tym cay kod a do instrukcji przypisania krzywej interpolacyjnej do obiektu pozostaje bez zmian. Nie umieszczaj tu wywoania metody Blender.Redraw(), poniewa mona to zrobi poza funkcj. Pocztek definicji funkcji MakeCone() powinien teraz wyglda tak: def MakeCone(): varX = numberPosX.val varY = numberPosY.val varRad = sliderRadius.val varHeight = sliderHeight.val varSpeed = sliderSpeed.val varBHeight = sliderBHeight.val varRed = sliderR.val varGrn = sliderG.val varBlu = sliderB.val varNam = stringName.val
Od tego miejsca kod tworzenia stoka pozostaw bez zmian (wprowad jedynie dodatkowe wci cie, poniewa wszystko to jest teraz wewntrz definicji funkcji), wcznie z lini meshOb.setIpo(ipo)
Pozostae funkcje s prostsze, a poza tym zawieraj znane Ci ju konstrukcje programistyczne. Funkcja MakeLamp() tworzy nowy obiekt typu Lamp (lampa), przypisuje go do sceny i umieszcza w okrelonym punkcie przestrzeni: def MakeLamp(): lmp = Lamp.New('Lamp','MyLamp') lampOb = scn.objects.new(lmp, 'Lamp') lampOb.setLocation(3, -10, 8)
Funkcja MakeCamera() robi to samo z kamer: def MakeCamera(): cam = Camera.New('persp','MyCamera') camOb = scn.objects.new(cam, 'Camera') scn.objects.camera = camOb camOb.setEuler(58*conv, -1.25*conv, 53*conv) camOb.setLocation(13, -10, 12)
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 255
FUNKCJE EVENT() I BUTTON_EVENT() Jak ju widziae na przykadzie prostego interfejsu, funkcje event() i button_event() obsugujce zdarzenia generowane przez klawiatur , mysz i elementy interfejsu stanowi najwaniejsz cz kodu interfejsu. Przypominam, e ich nazwy mog by inne, ale musz pokrywa si z nazwami drugiego i trzeciego (w takiej wanie kolejnoci) argumentu metody Draw.Register(). Zacznijmy od funkcji button_event(). Tutaj odczytywany jest indeks klikni tego przycisku i na tej podstawie wywoana zostaje okrelona funkcja. Jak ju wspominaem, w tym skrypcie b dziemy uywa tylko dwóch indeksów zwizanych z przyciskami, a mianowicie: EV_BT_OK i EV_BT_CANCEL. W ramach definicji funkcji gui() powiemy te indeksy z konkretnymi przyciskami. atwo si domyli , e pierwszy z nich zostanie przypisany do przycisku OK, a drugi do Cancel. Jeli klikni ty zostanie przycisk OK, funkcja button_event() odbierze sygna w postaci indeksu EV_BT_OK i wywoa funkcj makeCone(), a zaraz po niej metod Blender.Redraw(), aby odwiey zawarto okna widokowego. Jeli odebranym sygnaem b dzie indeks EV_BT_CANCEL, wywoana zostanie metoda Draw.Exit() koczca dziaanie skryptu. def button_event(evt): if evt == EV_BT_OK: MakeCone() Blender.Redraw() elif evt == EV_BT_CANCEL: Draw.Exit()
W tym skrypcie obsugiwany jest tylko jeden klawisz, Esc. Jego wcini cie powinno spowodowa zakoczenie dziaania skryptu. Dodaem tu jednak krótk procedur wywietlajc okno dialogowe dajce potwierdzenia decyzji zamkni cia programu. Okienko to jest obiektem klasy PupMenu. Jeli klikniesz w nim przycisk OK, wywoana zostanie metoda Draw.Exit(). def event(evt, val): if evt == Draw.ESCKEY: ext = Draw.PupMenu("Do you want to exit?%t|OK %x1") if ext == 1: Draw.Exit()
FUNKCJA GUI() Funkcja gui() tworzy graficzn stron interfejsu. Zawsze umieszczaj wszystkie elementy GUI bezporednio w tej funkcji. Nie definiuj innych funkcji z elementami GUI i nie próbuj wywoywa ich z wn trza funkcji gui(). Wprawdzie jest to dopuszczalne w samym Pythonie, ale w rodowisku Blendera nie zadziaa. Komunikatów o b dach najprawdopodobniej nie b dzie, ale te interfejs nie b dzie funkcjonowa poprawnie. Jak w wi kszoci podobnych skryptów, tak i tym razem w tej funkcji nie dzieje si nic nadzwyczajnego poza systematycznym rozmieszczaniem elementów interfejsu. Pierwsza linia definicji funkcji zawiera deklaracje zmiennych globalnych, które b d przez t funkcj uywane. Zmiany wartoci tych zmiennych b d widoczne z kadego miejsca kodu. (Ze wzgl dów drukarskich deklaracja tych zmiennych zostaa podzielona na dwie cz ci. Moesz przepisa kod dokadnie tak, jak podano tutaj, ale moesz take zapisa wszystkie zmienne w jednej linii, oddzielajc je przecinkami).
256 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
def gui(): global stringName, sliderRadius, sliderHeight, sliderSpeed, sliderBHeight global numberPosX, numberPosY, numberPosZ, sliderR, sliderG, sliderB
Umieszczenie etykiety tekstowej wymaga dwóch linii kodu. W pierwszej linii ustalane s wspórz dne X i Y punktu, w którym tekst etykiety powinien si zaczyna . Jest to realizowane za pomoc metody glRasterPos2i() nalecej do klasy BGL. Interfejs b dzie mia 10-pikselowy margines po lewej stronie. Wspórz dne Y s mierzone od dou do góry. Nasz interfejs zawiera 13 wierszy, a najniej pooone elementy b d oddalone o 10 pikseli od dolnej kraw dzi okna. Kady kolejny wiersz elementów b dzie pooony o 30 pikseli wyej ni poprzedni (elementy interfejsu b d miay wysoko 25 pikseli). Z tego wynika, e ostatni wiersz (liczc od dou) powinien znale si na wysokoci 370 pikseli. Na ogó warto sporzdzi wczeniej list odpowiednich wartoci, ale tym razem nie b dziemy tego robi . Tworzymy wi c pierwsz etykiet : BGL.glRasterPos2i(10, 370) Draw.Text(("Set the name of the cone:")
Kolejnym elementem jest tekstowe pole edycyjne, w którym uytkownik b dzie móg wpisa nazw stoka. Zauwa, e uyta tu zmienna jest globaln zmienn zdefiniowan wczeniej jako ogólny element interfejsu. Teraz jest ona definiowana jako konkretne pole edycyjne. Jest to realizowane za pomoc metody Draw.String() z argumentami reprezentujcymi kolejno: etykiet tekstow umieszczan w obr bie pola, indeks zdarzenia, wspórz dn X, wspórz dn Y, szeroko , wysoko , domyln zawarto
(tu pobierana jest zdefiniowana wczeniej warto pocztkowa elementu ogólnego), maksymaln dugo acucha tekstowego i tre etykiety ekranowej wywietlanej, gdy uytkownik ustawi wskanik myszy na danym elemencie interfejsu. stringName = Draw.String("Name: ", EV_ST_NAME, 10, 340, 310, 25, stringName.val, 32,
´"Name of the object")
Pozostaa cz funkcji wprowadza jeszcze trzy inne typy elementów interfejsu: Draw.Slider(), czyli suwak, Draw.Number(), czyli numeryczne pole edycyjne, i Draw.PushButton(),
czyli przycisk. Kady z tych elementów ma swoj list wymaganych argumentów, które musz by podane w odpowiedniej kolejnoci i oddzielone przecinkami. Oto wykaz tych argumentów:
Draw.Slider(): etykieta, indeks zdarzenia, wspórz dna X, wspórz dna Y, szeroko , wysoko , warto domylna, warto minimalna, warto maksymalna, przecznik aktualizacji (jeli jest róny od zera, zdarzenia s generowane w trakcie zmieniania pooenia suwaka, a jeli ma warto zerow, zdarzenie jest generowane dopiero po ustaleniu nowego pooenia suwaka), etykieta ekranowa. Draw.Number(): etykieta, indeks zdarzenia, wspórz dna X, wspórz dna Y, szeroko , wysoko , warto domylna, warto minimalna, warto maksymalna, etykieta ekranowa. Draw.PushButton(): etykieta, indeks zdarzenia, wspórz dna X, wspórz dna Y, szeroko , wysoko , etykieta ekranowa.
TWORZENIE SKRYPTU INTERAKTYWNEGO~ 257
Teraz, gdy ju znasz znaczenie poszczególnych metod i ich argumentów, nie powiniene mie problemów z rozszyfrowaniem dziaania pozostaej cz ci kodu. Wiersz po wierszu tworzone s kolejne elementy interfejsu: BGL.glRasterPos2i(10, 310) Draw.Text("Set the geometry of the cone:") sliderRadius = Draw.Slider("Radius of the cone: ", EV_SL_RADIUS, 10, 280, 310, 25, ´sliderRadius.val, 0.25, 2.00, 1, "Set length of radius") sliderHeight = Draw.Slider("Height of the cone: ", EV_SL_HEIGHT, 10, 250, 310, 25, ´sliderHeight.val, 0.25, 2.00, 1, "Set height of cone") BGL.glRasterPos2i(10, 220) Draw.Text("Set the color of the cone:") sliderR = Draw.Slider("R: ", EV_SL_R, 10, 190, 100, 25, sliderR.val, 0.00, 1.00, 1, ´"Set the red component") sliderG = Draw.Slider("G: ", EV_SL_G, 115, 190, 100, 25, sliderG.val, 0.00, 1.00, 1, ´"Set the green component") sliderB = Draw.Slider("B: ", EV_SL_B, 220, 190, 100, 25, sliderB.val, 0.00, 1.00, 1, ´"Set the blue component") BGL.glRasterPos2i(10, 160) Draw.Text("Set start point for cone's bounce:") numberPosX = Draw.Number("Pos X: ", EV_NB_POSX, 10, 130, 100, 25, numberPosX.val, ´-5.00, 5.00, "X coordinate") numberPosY = Draw.Number("Pos Y: ", EV_NB_POSY, 115, 130, 100, 25, numberPosY.val, ´-5.00, 5.00, "Y coordinate") BGL.glRasterPos2i(10, 100) Draw.Text("Set properties for bounce:") sliderSpeed = Draw.Slider("Speed: ", EV_SL_SPEED, 10, 70, 310, 25, sliderSpeed.val, ´0.25, 2.00, 1, "Set bounce speed") sliderBHeight = Draw.Slider("Height: ", EV_SL_BHEIGHT, 10, 40, 310, 25, ´sliderBHeight.val, 1, 10, 1, "Set bounce height") Draw.PushButton("OK", EV_BT_OK, 10, 10, 100, 25, "Confirm") Draw.PushButton("Cancel", EV_BT_CANCEL, 220, 10, 100, 25, "Cancel")
Skadanie wszystkiego w cao Ostatnie linie kodu powinny by nast pujce: MakeCamera() MakeLamp() Draw.Register(gui, event, button_event)
Po uruchomieniu skryptu kamera i lampa zostan utworzone od razu i gotowy do dziaania b dzie take interfejs. Reszta b dzie realizowana przez opisane wyej funkcje w zalenoci od poczyna uytkownika. W skryptach Pythona moesz czasami zauway , e wywoania gównych funkcji umieszczane s w instrukcjach warunkowych, które sprawdzaj, czy skrypt zosta uruchomiony jako samodzielny program, czy te jako zewn trzny modu z definicjami klas. W przypadku naszego skryptu taka konstrukcja wygldaaby nast pujco: if __name__ == '__main__': MakeCamera() MakeLamp() Draw.Register(gui, event, button_event)
258 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
Peny kod skryptu znajduje si w pliku cones_tutorial.blend zamieszczonym na pycie doczonej do ksiki i jest dost pny po wybraniu pozycji conegen_gui.py z listy tekstów w oknie edytora tekstowego. Powysze wiczenie zostao zainspirowane kilkoma wietnymi materiaami szkoleniowymi innych autorów. Najwi cej daa mi lektura znakomitych stron internetowych Jeana-Michela Solera i Oliviera Sarai. Na stronie Jeana-Michela, http://jmsoler.free.fr/didacticiel/blender/tutor/eng_index.htm, znalazem mi dzy innymi interesujc analiz tworzenia trójwymiarowych obiektów matematycznych (zwanych tam „ziemniaczkami” — potatoids) za pomoc skryptów Pythona. Bogata w przykady takich skryptów jest równie strona Oliviera Sarai http://feeblemind.tuxfamily.org/dotclear. Gorco zach cam Ci do przejrzenia tych stron w celu poszerzenia swojej wiedzy na temat skryptów Pythona i innych aspektów Blendera. ZAPOBIEGANIE BDOM WYCIEKANIA PAMICI W prezentowanym wyżej przykładzie jedne elementy interfejsu (przyciski, suwaki i pola edycyjne) były tworzone poprzez przypisanie obiektu zwracanego przez odpowiednią metodę klasy Draw do zmiennej globalnej, podczas gdy metoda Draw.Text() była używana w sposób bezpośredni, bez korzystania ze zmiennych. Robiliśmy tak ze względu na pewne niedociągnięcia w module Draw. Przy bezpośrednim wywoływaniu metod tworzących przyciski i inne tego typu elementy może dochodzić do błędów wyciekania pamięci. Jeśli kiedykolwiek otrzymasz komunikat z tekstem Error Totblock, sprawdź, czy wszystkie obiekty zwracane przez wspomniane metody są przypisywane do zmiennych globalnych.
STOSOWANIE WACIWYCH FUNKCJI ODWIEANIA Nie używaj funkcji typu redraw z innych modułów, jeśli miałyby one działać po wywołaniu metody Draw,Register() i przed wywołaniem metody Draw.Exit(). Moduł Draw ma swoje funkcje odświeżające, Draw.Redraw() i Draw.Draw(), których możesz użyć, jeśli zajdzie taka potrzeba.
Podsumowanie Edytuj i uruchamiaj skrypty w Blenderze. Blender ma wbudowany edytor tekstu, w którym moesz pisa skrypty lub komentarze. Edytor jest wyposaony w funkcje numerowania linii i kolorowania elementów skadni Pythona. Opanuj to Naucz si posugiwa edytorem tekstu dost pnym w Blenderze. Otwórz okno Text Editor (Edytor tekstu) i z menu Text (Tekst) wybierz polecenie Script Templates/Object Editing (szablony skryptów/edytowanie obiektu), aby otworzy szablon skryptu do edycji obiektów. Uruchom ten skrypt (wcinij klawisze Alt+P). Nast pnie odszukaj ten fragment kodu, który odpowiada za wypisanie liczby obiektów w scenie, i zmie go tak, aby bya wypisywana liczba obiektów zaznaczonych. Poznaj API Blendera. Jeli b dziesz uywa Pythona do pisania skryptów dla Blendera, API stanie si Twoim wiernym kompanem. Dua cz nauki pisania skryptów polega na opanowaniu sztuki sprawnego korzystania z API.
PODSUMOWANIE~ 259
Opanuj to W korzystaniu z API wane jest to, aby wiedzie , do czego su poszczególne moduy i klasy. Otwórz teraz spis klas i spróbuj odpowiedzie
na nast pujce pytania. Której klasy naley uy do pracy z obiektem tekstowym w przestrzeni 3D? Która metoda b dzie odpowiednia do wprowadzenia acucha tekstowego dla tego obiektu? Utwórz skrypt interaktywny. Pythonowe API Blendera zawiera narz dzia do tworzenia graficznych interfejsów, dzi ki którym moliwe jest wydawanie polece i ustawianie parametrów w sposób interaktywny. Opanuj to Zmie zaprezentowany w tym rozdziale przykadowy generator stoków skaczcych, aby zamiast stoków generowa podskakujce napisy. Pozostaw moliwo ustawiania koloru, pocztkowego pooenia, szybkoci i wysokoci podskoków, ale zamiast ustawiania rozmiarów wprowad moliwo wpisywania tekstu tworzonych napisów.
260 ~ROZDZIA 7. SKRYPTY PYTHONA W BLENDERZE
Rozdzia 8.
W o wielu gowach, czyli inne zastosowania Pythona w Blenderze Moliwo sterowania Blenderem za pomoc skryptów to tylko jeden z przejawów tego, co daa cisa integracja z Pythonem. Poniewa konieczno uruchamiania zewn trznego skryptu nie jest najwygodniejszym rozwizaniem, wiele opcji zintegrowano z Pythonem w stu procentach, co pozwala na korzystanie z niego podczas normalnej pracy z Blenderem. Dzi ki temu mona umieszcza kod Pythona bezporednio w sterownikach IPO, wi zach i w zach. Mona te wykorzystywa cza skryptowe do wykonywania kodu w cile okrelonych momentach animacji. To wszystko b dzie tematem niniejszego rozdziau. Z tego rozdziau dowiesz si , jak:
modyfikowa krzywe IPO za pomoc sterowników pythonowych (PyDrivers), wcza do sceny skrypty za pomoc pythonowych wi zów i w zów (PyConstraints i PyNodes), zwi ksza interaktywno przy uyciu czy skryptowych i skryptów typu space handler.
Usprawnianie Blendera za pomoc Pythona W rozdziale 7., „Skrypty Pythona w Blenderze”, miae okazj si przekona , e zastosowanie Blendera w roli interpretera j zyka Python daje uytkownikowi dodatkowe moliwoci w manipulowaniu obiektami 3D. W rozdziale 11., „czenie pot gi Pythona z moliwociami silnika gier”, zobaczysz, e korzyci wynikajce z tego poczenia mog by jeszcze wi ksze. Ale to jeszcze nie wszystko, jeli chodzi o wspóprac Pythona z Blenderem. Ich integracja posza tak daleko, e moliwe jest stosowanie kodu Pythona bezporednio w rozmaitych funkcjach Blendera, co z kolei pozwala na usprawnianie dziaania tych funkcji i poszerzanie ich moliwoci. Podobnie jak w innych programach, wi kszo dokumentacji Blendera zwizana z jego funkcjonowaniem w oparciu o skrypty jest kierowana do dowiadczonych programistów. Przykadowe kody s dost pne w internetowych publikacjach opisujcych kolejne wersje programu, ale dla kogo, kto jest zainteresowany gównie grafik trójwymiarow i samym Blenderem, a nie ma wprawy w czytaniu kodów i programowaniu,
262 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
perspektywa studiowania tych przykadów nie naley do zach cajcych. W tym rozdziale poka Ci na kilku prostych przykadach, jak to dziaa. Gdy zrozumiesz, o co w tym wszystkim chodzi, b dziesz móg podejmowa samodzielne próby poszerzania moliwoci Blendera za pomoc kodu Pythona.
Sterowniki pythonowe Uytkownicy Blendera, którzy zajmuj si animowaniem postaci lub innymi zagadnieniami wymagajcymi prostych sposobów sterowania skomplikowanymi ruchami, z pewnoci znaj ju pot ne moliwoci sterowników IPO. Jeli jeszcze nie miae do czynienia z tymi sterownikami, przeczytaj najpierw rozdzia mojej ksiki Character Animation with Blender (Sebex, 2007) powi cony rigowaniu postaci. Nawet jeli nie zajmujesz si animowaniem postaci (bo o tym jest ta ksika), przekonasz si , jak wiele skomplikowanych przypadków rigowania mona atwo rozwiza dzi ki umiej tnoci posugiwania si sterownikami IPO. Dziaanie sterowników IPO polega tworzeniu odwzorowa jednych parametrów na inne. W ten sposób mona na przykad uzaleni wpyw klucza ksztatu (shape key) na siatk od okrelonego zakresu zmian pooenia koci. Jednak moliwoci tych sterowników, cho due, s ograniczone przez jednoznaczno odwzorowania jednej wielkoci na inn. Jeli relacja mi dzy wielkoci sterujc a sterowan nie moe by przedstawiona w formie pojedynczej krzywej IPO, nie moe by take zakodowana jako sterownik IPO. Sterowniki pythonowe (PyDrivers), jako e s oparte na kodzie Pythona, umoliwiaj tworzenie bardziej zoonych zalenoci. Sterowanie interpolacj jest tu realizowane za pomoc pojedynczej linii kodu, w której mona uywa dowolnych wartoci. Jedynym ograniczeniem jest tutaj brak moliwoci stosowania rozbudowanych skryptów z instrukcjami warunkowymi i dost pem do moduów zewn trznych. Stosowa mona jedynie to, co mona zawrze w jednej linii kodu, a zatem skrypty te musz by
z koniecznoci bardzo zwarte. Aby umoliwi jeszcze bardziej zwarty zapis, wprowadzono specyficzn dla sterowników pythonowych skrócon notacj dla kilku najcz ciej uywanych typów danych. Te skrócone formy zapisu wygldaj nast pujco:
ob('Nazwa')— udost pnia obiekt o nazwie Nazwa,
me('Nazwa') — udost pnia siatk o nazwie Nazwa,
ma('Nazwa') — udost pnia materia o nazwie Nazwa.
Aby zobaczy to na konkretnym przykadzie, utworzymy obiekt, którego dugo
uzalenimy od obj toci innego obiektu. eby nie komplikowa oblicze, przyjmiemy, e ten drugi obiekt to prostopadocian. Poniewa obj to prostopadocianu jest funkcj trzech zmiennych (skala X, skala Y, skala Z), nie da si naszego zadania zrealizowa za pomoc tradycyjnego sterownika IPO. Aby uzaleni dugo jednego obiektu od trzech wymiarów innego obiektu, musimy uy sterownika pythonowego. Wykonaj wi c nast pujce czynnoci:
STEROWNIKI PYTHONOWE~ 263
1. Rozpocznij now sesj Blendera i wcinij klawisze Shift+D, aby utworzy kopi domylnego szecianu. Nowy szecian b dzie peni rol „tamy mierniczej” rozwijanej lub zwijanej w zalenoci od obj toci szecianu oryginalnego. Przeskaluj ten szecian i ustaw tak jak na rysunku 8.1. Aby szeciany byy atwiej rozrónialne, do nowego przypisaem czarny materia. Prawdziwe tamy miernicze zazwyczaj rozwijaj si tylko w jedn stron , by zatem i nasza zachowywaa si podobnie, wcz tryb edycji i przesu geometri czarnego szecianu tak, aby rodek obiektu znalaz si dokadnie na lewym boku (jak na rysunku 8.2). RYSUNEK 8.1. U góry — sześcian oryginalny; u dołu — sześcian przeznaczony do mierzenia objętości sześcianu górnego
RYSUNEK 8.2. Po przesunięciu geometrii punkt środkowy sześcianu znajduje się na jego lewym boku
2. Wartoci sterowan ma by skalowanie czarnego szecianu wzgl dem osi X. Z zaznaczonym czarnym szecianem i wczonym trybem obiektowym otwórz okno Ipo Curve Editor (Edytor krzywych IPO). W jego lewej cz ci kliknij lewym przyciskiem
264 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
myszy kana IPO o nazwie ScaleX (skala X). Nast pnie wcinij klawisz N, aby otworzy okno dialogowe Transform Properties (Proporcje transformacji) pokazane na rysunku 8.3. W tym oknie kliknij przycisk Add Driver (dodaj sterownik). Domylnie tworzone s sterowniki oparte na kanaach interpolacyjnych zwizanych z obiektami i dlatego pojawio si tu pole edycyjne OB, w którym naleaoby wpisa
nazw odpowiedniego obiektu. Jednak tym razem nie o to nam chodzi. Dlatego kliknij ikon symbolizujc skrypt (jest zaznaczona na rysunku 8.4), aby przej
do trybu wpisywania kodu dla sterownika pythonowego. Pole edycyjne tego trybu jest pokazane na rysunku 8.5. RYSUNEK 8.3. Okno dialogowe Transform Properties (Proporcje transformacji) w kontekście edytora krzywych IPO
RYSUNEK 8.4. Pole edycyjne sterownika obiektowego
RYSUNEK 8.5. Pole edycyjne sterownika pythonowego
3. Teraz pozostao Ci tylko wpisanie odpowiedniego wyraenia matematycznego. Okno edycyjne z wpisanym wyraeniem jest pokazane na rysunku 8.6, a samo wyraenie przedstawia si nast pujco: ob('Cube').SizeX * ob('Cube').SizeY * ob('Cube').SizeZ
RYSUNEK 8.6. Sterownik pythonowy
WZY PYTHONOWE~ 265
Jest to po prostu iloczyn wymiarów obiektu Cube (szecian) mierzonych wzdu osi X, Y i Z. Rezultat dziaania naszego sterownika wida na rysunku 8.7. Zwi kszenie wymiarów szecianu oryginalnego spowodowao rozcigni cie tamy mierniczej (czyli drugiego szecianu) proporcjonalnie do wzrostu jego obj toci. RYSUNEK 8.7. Odwzorowanie objętości na długość
To prosty przykad, ale mam nadziej , e pomóg Ci zrozumie , czym s sterowniki pythonowe. Tych sterowników mona uywa wsz dzie tam, gdzie trzeba jeden kana interpolacyjny uzaleni od kilku innych kanaów. Jako kana sterujcy moe suy
odlego mi dzy obiektami, rónica któw obrotu rozmaitych obiektów i wiele innych parametrów. W ksice Bounce, Tumble, and Splash! Simulating the Phisical World with Blender 3D (Sybex, 2008) opisaem zastosowanie sterowników pythonowych do sterowania rozciganiem spr yny. Armatura spr yny skada si z dwóch koci na kocach. Jednak ksztat spr yny nie zaley od pooenia koci, lecz od odlegoci mi dzy nimi. Dlatego nie mona nim sterowa za pomoc zwykych sterowników obiektowych, a trzeba si gn po sterownik pythonowy. Zajrzyj do tej ksiki i przestudiuj peny opis rigowania spr yny oraz tworzenia sterownika pythonowego.
Wzy pythonowe Jak ju widziae w poprzednich rozdziaach, Blender dysponuje pot nym systemem w zów, który znakomicie sprawdza si przy tworzeniu materiaów i komponowaniu obrazów. Tak jak sugeruje nazwa, wzy pythonowe (PyNodes, zwane take wzami dynamicznymi — dynamic nodes) stanowi rozszerzenie tego systemu, umoliwiajc poszerzanie moliwoci w zów za pomoc kodu Pythona. W przeciwiestwie do sterowników w zy pythonowe dopuszczaj stosowanie penych skryptów, a nie tylko pojedynczych linii kodu. Waciwie w zy te s skryptami, przy czym rol gniazd wejciowych peni argumenty skryptu, a gniazd wyjciowych — wartoci przez niego zwracane. Jak wiele innych zaawansowanych zastosowa Pythona w Blenderze, w zy te s nadal w fazie eksperymentów i naley si liczy z tym, e przeznaczone dla nich API b dzie zmieniane w nast pnych wersjach programu.
266 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
Funkcje w za pythonowego okrelamy w definicji klasy o nast pujcej strukturze: class ClassName(Node.Scripted): def __init__(self, sockets): #socket definition my_float_socket = Node.Socket('MyFloatSocket', val = 0.0, min = -1.0, max = 1.0) my_list_socket_in = Node.Socket('MyListSocketIn', val = [1.0, 1.0, 1.0]) my_list_socket_out = Node.Socket('MyListSocketOut', val = [1.0, 1.0, 1.0]) sockets.input = [my_float_socket, my_list_socket_in] sockets.output = [my_list_socket_out] def __call__(self) #node functionality
Pierwsza linia rozpoczyna definicj klasy. Tutaj moesz okreli nazw tworzonej klasy. Argument tej definicji musi mie nazw Node.Scripted, bo to stanowi informacj dla Blendera, e skrypt jest definicj w za. Podobnie argumenty funkcji __init__ powinny mie nazwy self i sockets, a argumentem funkcji __call__ musi by self. Wewntrz funkcji __init__ naley umieci definicje gniazd w za. Suy do tego metoda Node.Socket(nazwa gniazda, warto domylna). Nazw gniazda b dziemy posugiwa
si wsz dzie tam, gdzie b dzie potrzebna jego warto . Na tym etapie nie ma rónicy mi dzy gniazdami wejciowymi a wyjciowymi. Typ wartoci gniazda jest automatycznie okrelany na podstawie wartoci domylnej przypisanej parametrowi val. W powyszym przykadzie parametr val gniazda my_float_socket otrzyma domyln warto 0.0, a zatem gniazdo to zostanie automatycznie zaliczone do gniazd operujcych na wartociach typu float. Opcjonalne parametry min i max okrelaj dopuszczalny zakres tych wartoci. Jeli nie podasz tych parametrów, przyj ty zostanie domylny zakres od 0,0 do 1,0. Zmienna my_list_socket_in zostaa zainicjalizowana list, a zatem b dzie traktowana jako zmienna typu list. Waciwoci sockets.input i socket.output s listami gniazd, odpowiednio, wejciowych i wyjciowych. Elementy tych list s obiektami reprezentujcymi gniazda definiowanego w za. Znaczenie metody __call__ najlepiej pokaza na konkretnym i dziaajcym przykadzie. Spróbujmy wi c utworzy za pomoc w zów materia, którego wygld b dzie zaleny od pewnych informacji pobieranych z biecej sceny. Niech po prostu materia b dzie biay lub czarny w zalenoci od tego, czy liczba obiektów w scenie jest parzysta, czy nieparzysta. Zadanie nie jest skomplikowane, ale bez w zów pythonowych wykona
si go nie da. A oto procedura tworzenia takiego dynamicznego materiau: 1. Rozpocznij od utworzenia dwóch wejciowych w zów materiaowych. Jeli nie wiesz, jak to si robi, przeczytaj fragment rozdziau 3. powi cony tworzeniu materiaów przy uyciu systemu w zów. Oba materiay skonfiguruj tak, aby wyranie róniy si wygldem. Ja wybraem dla jednego z nich kolor czarny, a dla drugiego biay, co wida na rysunku 8.8. Nadaem im te odpowiednie nazwy: Black (czarny) i White (biay). 2. Opu na chwil edytor w zów i otwórz okno edytora tekstu. Z menu Text (Tekst) w nagówku tego okna wybierz polecenie New (Nowy) i utworzonemu w ten sposób plikowi tekstowemu nadaj nazw EvenOdd (parzysty-nieparzysty). Nast pnie wpisz poniszy kod (okno edytora tekstowego z tym kodem jest pokazane na rysunku 8.9).
WZY PYTHONOWE~ 267
RYSUNEK 8.8. Wstępny układ węzłów dla materiału dynamicznego
RYSUNEK 8.9. Kod węzła pythonowego
1 import Blender 2 from Blender import Node, Scene 3 4 5 class EvenOddNode(Node.Scripted): 6 def __init__(self, sockets): 7 col1 = Node.Socket('Color1', val = 4*[1.0]) 8 col2 = Node.Socket('Color2', val = 4*[1.0]) 9 col3 = Node.Socket('OutColor', val = 4*[1.0]) 10 sockets.input = [col1, col2] 11 sockets.output = [col3] 12 def __call__(self): 13 col1 = list(self.input.Color1) 14 col2 = list(self.input.Color2) 15 scn = Scene.GetCurrent()
268 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
16 17 18 19 20
o_e = bool(len(scn.objects)%2) if(o_e): self.output.OutColor = col2 else: self.output.OutColor = col1
3. Teraz, po zdefiniowaniu klasy dynamicznego w za, moesz wróci do edytora w zów i utworzy nowy w ze. Dodaj ogólny w ze typu Dynamic (Dynamika) i z zaznaczonej na rysunku 8.10 listy rozwijanej wybierz nazw utworzonego przed chwil skryptu dla w za pythonowego. Od tej pory b dziesz móg tworzy tego typu w zy za pomoc polecenia Add/Dynamic/EvenOdd (Dodaj/Dynamika/EvenOdd), tak jak na rysunku 8.11. RYSUNEK 8.10. Ogólny węzeł dynamiki
RYSUNEK 8.11. Dodawanie węzła nowego typu
4. Teraz pozostao Ci ju tylko poczy oba w zy wejciowe i w ze wyjciowy z nowym w zem pythonowym, tak jak na rysunku 8.12. Zrenderuj scen z domylnym szecioktem (ja dodaem mu czarne kraw dzie, aby by lepiej widoczny), nast pnie powiel go (Shift+D) i zrenderuj scen jeszcze raz. Jeli wszystko zrobie zgodnie z moimi wskazówkami, przy nieparzystej liczbie szecianów powinny otrzyma
one kolor biay, a przy parzystej — kolor czarny (patrz rysunek 8.13). Przyjrzyjmy si bliej naszemu skryptowi. Pierwsze dwie linie s ju znane. Dodam tylko, e do utworzenia w za pythonowego konieczne jest zaimportowanie moduu Node, a modu Scene by nam potrzebny tylko po to, abymy mogli pobra liczb obiektów istniejcych w scenie. Pocztek definicji klasy jest bardzo podobny do tego, co byo prezentowane w poprzednim przykadzie. Wszystkie trzy zmienne — col1, col2 i col3 — s gniazdami pobierajcymi listy wartoci okrelajcych kolor i przezroczysto
(kanay R, G, B i A). Przypominam, e mnoenie listy przez liczb cakowit powoduje zwielokrotnienie tej listy zgodnie z wartoci liczby. A zatem kadej waciwoci val b dzie ostatecznie przypisana lista [1.0, 1.0, 1.0, 1.0]. W definicji metody __call__ nazwy zmiennych col1 i col2 zostay uyte ponownie, ale jako e odbywa si to wewntrz definicji metody, zmienne te maj charakter lokalny i nie koliduj z tamtymi zmiennymi. Uycie tych samych nazw miao jednak sens,
WZY PYTHONOWE~ 269
RYSUNEK 8.12. Ostateczny układ węzłów
RYSUNEK 8.13. Efekt działania węzła EvenOdd (parzystynieparzysty)
270 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
poniewa jedne i drugie zmienne reprezentuj te same wartoci. W metodzie __call__ su one do przechowywania wartoci pobieranych przez gniazda wejciowe w za. Wartoci te s uaktualniane przy kadej zmianie sieci w zów. Tak aktualizacj mona te wymusi przez klikni cie przycisku Update (uaktualnij) na w le — naley to robi
po kadej zmianie kodu. Pobieranie informacji ze sceny (linia 15.) powinno by ju znane z rozdziau 7. W linii 16. reszta z dzielenia liczby obiektów w scenie przez 2 (takie jest dziaanie operatora % w Pythonie) jest zamieniana na obiekt logiczny (boolean). Jeli liczba obiektów jest nieparzysta, reszta z dzielenia wynosi 1, co po konwersji na warto
logiczn daje True (prawda). Jeli liczba obiektów jest parzysta, reszta z dzielenia wynosi 0, a to po konwersji na warto logiczn daje False (fasz). Uzyskana w ten sposób warto logiczna jest uywana przez instrukcj sterujc if/else do okrelania, która z wartoci wejciowych powinna by przekazana na wyjcie. Jeli jeste zainteresowany pog bieniem wiadomoci na temat w zów pythonowych, zajrzyj na stron http://wiki.blender.org/index.php/Resources/PyNode_Cookbook oraz przeled zwizane z tym tematem wtki na forach dyskusyjnych takich spoecznoci, jak BlenderArtists (http://blenderartists.org/forum/showthread.php?t=125741) i CGSociety (http://forums.cgsociety.org/showthread.php?t=636058).
Wizy pythonowe Wizy (constraints) w Blenderze dziaaj na obiekty lub koci, ograniczajc okrelonym ich waciwociom moliwo przyjmowania dowolnych wartoci. Na przykad wi zy Copy Location (kopiuj pooenie) i Copy Rotation (kopiuj obrót) zmuszaj obiekt do bardziej lub mniej wiernego naladowania ruchów innego obiektu. Wbudowany system wi zów jest mocno rozwini ty i pozwala na do swobodne sterowanie zachowywaniem si obiektów. Gdyby to jednak komu nie wystarczao, moe sobie stworzy dowoln liczb jeszcze innych wi zów. Takie moliwoci zapewnia system wi zów pythonowych (PyConstraints). W tym podrozdziale utworzymy wi zy pythonowe realizujce stosunkowo proste zadanie: obiekt, na który te wi zy zostan naoone, ma by transformowany zgodnie ze rednimi wartociami transformacji trzech innych obiektów. Wszystkie transformacje — przesuni cie, obrót i skalowanie — b d dost pne jako opcje do wyboru, przy czym domyln transformacj b dzie przesuni cie. Wi zy przesuni cia b d ustawia obiekt w punkcie lecym mi dzy obiektami docelowymi. Gdy którykolwiek z tych obiektów zmieni swoje pooenie, b dzie to miao wpyw na pooenie obiektu poddanego dziaaniu wi zów — zupenie tak, jakby by poczony z tamtymi obiektami elastyczn lin. Aby co takiego uzyska , wykonaj ponisz procedur : 1. Utwórz potrzebne obiekty. Ja uyem obiektu Monkey (Mapa) i trzech szecianów. Szecianom nadaj nazwy 1, 2 i 3, a nast pnie rozstaw je wokó mapy, tak jak na rysunku 8.14.
WIZY PYTHONOWE~ 271
RYSUNEK 8.14. Obiekt Monkey (Małpa) i trzy sześciany
2. W trybie obiektowym zaznacz obiekt Monkey (Mapa) i w panelu Constraints (wi zy) nalecym do subkontekstu Object buttons (przyciski obiektu) rozwi list Add Constraint (dodaj wi zy). Wybierz opcj Script (Skrypt), tak jak na rysunku 8.15. Gdy to zrobisz, otworzy si panel wi zów skryptowych, pokazany na rysunku 8.16. Jest tam lista rozwijana o nazwie Script (Skrypt), z której mona wybra skrypt definiujcy wi zy. Oczywicie w tej chwili lista jest pusta, bo adnego skryptu jeszcze nie utworzylimy. 3. Aby napisa skrypt dla wi zów, otwórz okno edytora tekstu. Zapewne pami tasz z rozdziau 7. list szablonów rozmaitych skryptów dost pn w menu Text (Tekst). Zawiera ona mi dzy innymi szablon o nazwie Script Constraint (wi zy skryptowe), co wida na rysunku 8.17. Rozpocznij wi c tworzenie skryptu od wybrania tego szablonu. Zawsze warto korzysta z gotowego szablonu, jeli tylko taki jest dost pny, bo to nie tylko uatwia i przyspiesza pisanie skryptu, ale take jest okazj do podpatrzenia, jak naley to robi . Zmie nazw skryptu na average.py (rednia). 4. Pierwsza linia kadego skryptu wi zów powinna zawiera jedynie acuch #BPYCONSTRAINT. To stanowi informacj dla Blendera, e skrypt ma by udost pniony systemowi wi zów. Poniej w potrójnym cudzysowie mona zamieci nawet kilka linii komentarza lub objanie. W nast pnych kilku liniach importowane s niezb dne moduy. Do wymienionych w szablonie moduów moesz doczy
inne, ale Draw, Mathutils i math s wymagane zawsze w skryptach wi zów, wi c ich nie usuwaj. Zmie natomiast liczb obiektów docelowych. Liczba ta jest przypisana do zmiennej NUM_TARGETS i w szablonie wynosi 1, a jako e tworzymy wi zy z trzema obiektami docelowymi, zmie j na 3, tak jak na rysunku 8.18.
272 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
RYSUNEK 8.15. Dodawanie więzów skryptowych
RYSUNEK 8.16. Więzy skryptowe nałożone na Suzanne
RYSUNEK 8.17. Otwieranie szablonu skryptu więzów
WIZY PYTHONOWE~ 273
RYSUNEK 8.18. Zmiana liczby obiektów docelowych
5. Teraz dopiero rozpoczniesz prawdziwe programowanie wi zów. Funkcja doConstraint() jest t, która pobiera odpowiednie parametry obiektów docelowych i na ich podstawie wylicza pooenie oraz obrót i skal obiektu poddawanego dziaaniu wi zów. Funkcja ta przyjmuje nast pujce argumenty: obmatrix — macierz obrotu obiektu podlegajcego wi zom. Jest to macierz 4×4, w której zakodowane s wspóczynniki przesuni cia, obrotu i skalowania. Znajomo sposobu kodowania tych wartoci czy manipulowania ca macierz nie jest potrzebna do napisania skryptu. Do uzyskiwania wspórz dnych przesuni cia, obrotu i skali wzgl dem osi X, Y i Z su odpowiednie metody. targetmatrices — lista macierzy odpowiadajcych poszczególnym obiektom docelowym. Dugo tej listy powinna by równa liczbie przypisanej do zmiennej NUM_TARGETS. Dost p do wartoci przesuni cia, obrotu czy skalowania poszczególnych obiektów zapewniaj te same metody, co w przypadku macierzy obiektu podlegajcego wi zom. idprop — sownik zawierajcy opcje i parametry wi zów ustalane przez uytkownika w oknie dialogowym Options (opcje). Zanim cokolwiek zmienisz, zobaczmy, co dzieje si na pocztku tej funkcji. Zmiennym obloc, obrot i obsca przypisywane s wartoci przesuni cia, obrotu i skali pozyskiwane z macierzy obmatrix za pomoc metod translationPart(), toEuler() i scalePart(). Kada z tych zmiennych zawiera list wartoci reprezentujcych odpowiedni transformacj wzgl dem osi X, Y i Z. Wymienione tu metody su take do wydobywania czytelnych dla czowieka informacji z poszczególnych macierzy obiektów docelowych. Poniewa mamy trzy obiekty docelowe, informacje o ich pooeniach, obrotach i skalach musimy zebra w listy. Na rysunku 8.19 pokazane s zmiany, jakie kolejno naley wprowadzi w kodzie szablonu. W bloku oznaczonym liter A zostay zadeklarowane trzy listy, po jednej dla kadego rodzaju transformacji. Nast pujca zaraz potem p tla for przebiega wszystkie macierze docelowe przekazane do funkcji za porednictwem parametru targetmatrices. Dla kadej macierzy wywoywane s opisane wczeniej metody wydobywajce z niej dane o transformacjach. Dane te s doczane do odpowiedniej listy. Po zakoczeniu p tli listy zawieraj atwo dost pne informacje o przesuni ciu, obrocie i skalowaniu kadego obiektu docelowego.
274 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
RYSUNEK 8.19. Edycja funkcji doConstraints()
W cz ci oznaczonej liter B na rysunku 8.19 ustalane s wartoci domylne, na wypadek gdyby uytkownik nie wybra adnej opcji. Uyta tutaj metoda sownikowa has_key()sprawdza, czy okrelony klucz istnieje w sowniku. Jeli klucz nie istnieje, jest tworzony i nadawana jest mu warto domylna. Klucz loc_toggle (sucy do wczania wi zów pooenia) otrzymuje wtedy warto 1, a pozostae klucze, wczajce wi zy obrotu i skalowania, otrzymuj warto 0. Nakadanie wi zów jest realizowane w liniach oznaczonych liter C. S tu trzy instrukcje if, które odpowiadaj wybranym przez uytkownika opcjom nakadania wi zów pooenia, obrotu lub skali. Wszystkie maj tak sam posta , ale kada z nich odnosi si do innego typu transformacji. Pierwsza dotyczy pooenia. P tla rozpoczynajca si lini for axis in range(0, 3): jest wykonywana dla wszystkich indeksów listy reprezentujcej wspórz dne pooenia obiektu. Kada wspórz dna otrzymuje warto równ sumie odpowiednich wspórz dnych obiektów docelowych podzielonej przez 3. Analogicznie wyznaczane s wspórz dne obrotu i skali, jeli tylko uytkownik wybierze odpowiedni opcj . 6. Pozostaje jeszcze napisanie kodu dla okna dialogowego, w którym uytkownik b dzie móg wybra rodzaj nakadanych wi zów. Zadanie to zrealizujemy w ramach funkcji getSettings(), pokazanej na rysunku 8.20. Wykorzystamy tu trzy zmienne przechowujce stan kadej opcji, o których wspominaem ju wczeniej przy okazji omawiania funkcji doConstraints(). W liniach 92., 93. i 94. zmiennym tym przypisywane s wartoci domylne, tak samo jak poprzednio. Linie te maj nast pujc posta :
WIZY PYTHONOWE~ 275
RYSUNEK 8.20. Edycja funkcji getSettings()
if not idprop.has_key('loc_toggle'): idprop['loc_toggle'] = 1 if not idprop.has_key('rot_toggle'): idprop['rot_toggle'] = 0 if not idprop.has_key('scale_toggle'): idprop['scale_toggle'] = 0
Powysze linie musz wyst powa w definicjach obu funkcji. W liniach od 97. do 99. definiowane s graficzne elementy okna dialogowego, które póniej stan si przyciskami sucymi do wczania poszczególnych opcji. Zastosowana tu metoda Draw.Create() bya ju omawiana w rozdziale 7. Sposób jej uycia jest tutaj taki sam: ltoggle = Draw.Create(idprop['loc_toggle']) rtoggle = Draw.Create(idprop['rot_toggle']) stoggle = Draw.Create(idprop['scale_toggle'])
Nast pnie elementy te s doczane do listy o nazwie block, która póniej jest przekazywana w formie argumentu do metody Draw.PupBlock() tworzcej okno dialogowe z przyciskami. Warto zwracana przez t metod jest przypisywana do zmiennej retval. Odpowiednie linie kodu wygldaj nast pujco: block = [] block.append(("Average Loc", ltoggle, "Toggle average location.")) block.append(("Average Rot", rtoggle, "Toggle average rotation.")) block.append(("Average Scale", stoggle, "Toggle average scale.")) retval = Draw.PubBlock("Options", block)
Na koniec, jeli zmienna retval ma jak warto , wartoci sownika idprop s uaktualniane zgodnie z wyborem dokonanym przez uytkownika: if (retval): idprop['loc_toggle'] = ltoggle.val idprop['rot_toggle'] = rtoggle.val idprop['scale_toggle'] = stoggle.val
276 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
7. Teraz, kiedy wi zy s ju zaprogramowane, moesz ponownie otworzy list Script (Skrypt) w panelu wi zów skryptowych i wskaza na niej nazw utworzonego wanie skryptu, tak jak na rysunku 8.21. Gdy to zrobisz, w panelu pojawi si pola edycyjne dla wszystkich obiektów docelowych (patrz rysunek 8.22). W polach OB wpisz nazwy szecianów. S tam równie pola VG, w których mona poda grup wierzchoków obiektu docelowego — wówczas wi zy b d wyliczane w oparciu o pooenie i obrót rodka ci koci tych wierzchoków. RYSUNEK 8.21. Wybieranie skryptu więzów
RYSUNEK 8.22. Panel więzów skryptowych
Jeli klikniesz przycisk Options (opcje), otworzy si okno dialogowe pokazane na rysunku 8.23. Tutaj moesz wybra , które rodzaje transformacji maj by
podporzdkowane wi zom. RYSUNEK 8.23. Okno dialogowe Options (opcje)
WIZY PYTHONOWE~ 277
8. Skoro wi zy s gotowe, spróbuj przesun , obróci lub przeskalowa obiekt Monkey (Mapa), wykonujc odpowiednie transformacje na szecianach. Przykad tak wykonanego przesuni cia jest pokazany na rysunku 8.24. Z kolei na rysunku 8.25 wida rezultat przesuwania i obracania szecianów, a na rysunku 8.26 doszed jeszcze efekt skalowania. RYSUNEK 8.24. Uśrednianie współrzędnych położenia
RYSUNEK 8.25. Efekt działania więzów na przesunięcie i obrót
278 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
RYSUNEK 8.26. Efekt działania więzów na wszystkie trzy rodzaje transformacji
cza skryptowe i cza typu space handler W tym rozdziale zaprezentowaem ju kilka przykadów cisej integracji kodu Pythona ze rodowiskiem Blendera. Ale to jeszcze nie wszystko. Istniej inne sposoby pog biania tej integracji. cza skryptowe (script links) umoliwiaj automatyczne uruchamianie skryptów Pythona w wyniku zaistnienia okrelonych zdarze. cza typu space handler s specjalnym rodzajem czy skryptowych, które umoliwiaj interaktywn obsug elementów interfejsu umieszczanych bezporednio w widoku 3D.
Wykonywanie skryptów „w locie” za pomoc czy skryptowych Zwyky sposób wykonywania skryptów, z którego korzystalimy w rozdziale 7., polega na wcini ciu klawiszy Alt+P przy aktywnym oknie edytora tekstu lub wybraniu nazwy skryptu z odpowiedniego menu. S jednak sytuacje, w których takie r czne uruchamianie skryptu jest niewygodne. Dobrze byoby na przykad mie moliwo automatycznego uruchamiania skryptu przy kadej zmianie klatki animacji albo przy okazji zaistnienia jakiego innego zdarzenia. Co takiego mona osign dzi ki czom skryptowym. Aby móc uywa czy skryptowych, trzeba je najpierw uaktywni , a to mona zrobi
w panelu Scriptlinks (cza skryptowe) nalecym do kontekstu Script (skrypt) i pokazanym na rysunku 8.27.
CZA SKRYPTOWE I CZA TYPU SPACE HANDLER~ 279
RYSUNEK 8.27. Uaktywnianie łączy skryptowych
Gdy cza s ju aktywne, moesz doda nowe cze — wystarczy klikn w tym celu przycisk New (Nowy) i wybra z rozwijanej listy odpowiedni plik tekstowy. Domylnie, po pierwszym uruchomieniu Blendera, lista ta zawiera tylko jedn pozycj o nazwie Text (Tekst), jeli zatem spróbujesz teraz utworzy cze, znajdziesz tam tylko t jedn opcj . Po wybraniu tekstu (chodzi oczywicie o skrypt) pojawia si druga lista rozwijana (patrz rysunek 8.28), z której moesz wybra zdarzenie uruchamiajce dany skrypt. Zdarzenia te zale od tego, czy cze jest powizane ze scen (wariant domylny), obiektem, materiaem lub wiatem. Odpowiedniego wyboru dokonujemy za pomoc trzech przycisków znajdujcych si pod przyciskiem Enable Script Links (uaktywnij cza skryptowe). Dla czy powizanych ze scen dost pne s nast pujce zdarzenia:
OnSave (zapisywanie), OnLoad (otwieranie), Render (renderowanie), Redraw (odwieanie), FrameChanged (zmiana klatki).
RYSUNEK 8.28. Lista zdarzeń uruchamiających skrypty
280 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
Po wczeniu opcji Object (obiekt), Material (materia) lub World (wiat) dost pne b d nast pujce zdarzenia:
ObDataUpdate (aktualizacja danych obiektowych), ObjectUpdate (aktualizacja obiektu) Render (renderowanie), Redraw (odwieanie), FrameChanged (zmiana klatki).
Nazwy te nie wymagaj chyba dodatkowych objanie. Skrypt poczony z danym zdarzeniem b dzie uruchamiany przy kadym zaistnieniu tego zdarzenia. Przykadowo skrypt poczony ze zdarzeniem FrameChanged (zmiana klatki) b dzie uruchamiany przy kadym przejciu do kolejnej klatki animacji.
PRZECHOWYWANIE DANYCH W REJESTRZE Gdy skrypt jest poczony z jakim zdarzeniem, wówczas kade wystpienie tego zdarzenia powoduje uruchomienie skryptu, wykonanie go i zamkni cie. To oznacza, e za kadym razem przestrze nazw tego skryptu jest cakowicie czyszczona. Nie ma sposobu, aby w ramach samego skryptu przekaza warto jakiejkolwiek zmiennej z jednego uruchomienia do nast pnego. To powany problem, bo cz sto zachodzi potrzeba odwoywania si do wartoci, jakie istniay podczas poprzedniej sesji dziaania skryptu. Na szcz cie istnieje modu o nazwie Registry (rejestr) umoliwiajcy przechowywanie danych w taki sposób, aby byy dost pne dla kadego skryptu uruchamianego w ramach tej samej sesji Blendera. Jak si wkrótce przekonasz, mona to wykorzysta do przenoszenia danych nie tylko mi dzy kolejnymi wywoaniami tego samego skryptu, ale take mi dzy rónymi skryptami dziaajcymi w tym samym czasie — jest to potrzebne w przypadku stosowania czy typu space handler.
PROSTY PRZYKAD PRZENOSZENIA DANYCH W tym przykadzie wykorzystamy mechanizm przenoszenia danych mi dzy kolejnymi uruchomieniami skryptu, aby uzyska efekt stopniowej zmiany koloru materiau. Przy kadym przejciu do nast pnej klatki wartoci R, G i B b d w niewielkim stopniu zwi kszane, przy czym kada z nich b dzie si zmienia w innym tempie, dzi ki czemu powstawa b d wci nowe barwy. Gdy która ze skadowych koloru osignie warto
1, kierunek jej zmian zostanie odwrócony — wartoci tej skadowej b d male . Gdy osignie warto 0, kierunek zmian zostanie ponownie odwrócony. Poniewa do okrelenia kierunku zmian nie wystarczy znajomo jedynie aktualnej wartoci koloru materiau, konieczne b dzie przechowywanie stanu przeczników (dla kadej skadowej koloru) w zewn trznym rejestrze. W ramach przygotowa do uruchomienia opisywanego tu skryptu otwórz now sesj Blendera, upewnij si , e domylny szecian ma przypisany materia, utwórz nowy plik tekstowy o nazwie color.py i uaktywnij cza skryptowe. Nast pnie pocz plik color.py ze zdarzeniem FrameChanged (zmiana klatki).
CZA SKRYPTOWE I CZA TYPU SPACE HANDLER~ 281
Sam skrypt color.py zaczyna si w znany Ci ju sposób. Najpierw importowane s moduy Blender, Scene i Registry, a nast pnie bieca scena przypisywana jest do zmiennej: import Blender from Blender import Scene, Registry scn = Scene.GetCurrent()
Nast pny etap polega na zdefiniowaniu funkcji aktualizujcej zawarto rejestru. Rejestr przechowuje dane w formie sownika (a waciwie sowników, po jednym dla kadej przestrzeni nazw). Gdy aktualizujesz rejestr, musisz by pewien, e sownik b dzie zawiera dokadnie te wartoci, które powinny by zachowane. W naszym przykadzie s to wartoci zmiennych r_inc, g_inc i b_inc, które reprezentuj kierunki zmian poszczególnych skadowych koloru (kanay czerwony, zielony i niebieski). Warto
1 oznacza zwi kszanie, a warto 0 — zmniejszanie konkretnej skadowej. Funkcja update_Registry() ma za zadanie tworzy sownik i przekazywa mu wartoci argumentów, z jakimi jest wywoywana. Odróniaj klucze sownika, które s acuchami (poznasz je po znakach cudzysowu), od zmiennych reprezentujcych wartoci tych kluczy. Po utworzeniu sownika funkcja przekazuje go do rejestru, wywoujc w tym celu metod Registry.SetKey(). Pierwszym argumentem tej metody jest nazwa sownika reprezentujcego przestrze nazw skryptu. Ja uyem tu nazwy Colors, aby nawiza
do nazwy skryptu. Drugi argument to utworzony wczeniej sownik. Ostatni argument, typu logicznego, okrela, czy informacje przekazane do rejestru maj by take zapisywane w zewn trznym pliku. def update_Registry(r_inc, g_inc, b_inc): d = {} d['r_inc'] = r_inc d['g_inc'] = g_inc d['b_inc'] = b_inc Blender.Registry.SetKey('Colors', d, False)
Po zdefiniowaniu narz dzi do aktualizowania rejestru moesz przystpi do opracowania sposobu wydobywania z niego potrzebnych informacji. Do realizacji tego zadania suy metoda Registry.GetKey(). Zwracan przez ni warto naley przekaza do sownika. Jednak przed prób uzyskania dost pu do wartoci zawartej w sowniku za porednictwem reprezentujcego j klucza naley sprawdzi , czy odpowiedni klucz istnieje (oczywicie ani klucz, ani przypisana do niego warto nie istniej przed pierwsz aktualizacj rejestru). Python nie lubi, gdy próbujemy si odwoywa do nieistniejcych kluczy lub zmiennych i natychmiast komunikuje bd, zamiast po prostu zwróci warto 0 lub False, jak to robi niektóre inne j zyki programowania. Dlatego Python oferuje specjaln konstrukcj do sprawdzania istnienia zmiennych i kluczy sowników. Konstrukcja ta skada si z instrukcji try i except. W naszym skrypcie sprawdzamy najpierw, czy sownik zawiera jakie dane (istnienie samego sownika wynika z poprzedniej linii kodu, a zatem konstrukcja try/except nie jest potrzebna, aby to ustali ). Jeli sownik nie zawiera adnych danych, zmienne reprezentujce kierunki zmian skadowych koloru otrzymuj wartoci równe 1. Jeli sownik zawiera jakie dane, próbujemy wspomnianym zmiennym przypisa wartoci skojarzone z odpowiednimi kluczami sownika. Jeli te wartoci nie s jeszcze okrelone, instrukcja except wywoa funkcj updateRegistry() i przypisze wszystkim kluczom wartoci równe1:
282 ~ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE
rdict = Registry.GetKey('Colors') if rdict: try: r_inc = rdict['r_inc'] g_inc = rdict['g_inc'] b_inc = rdict['b_inc'] except: update_Registry(1, 1, 1) else: r_inc = 1 g_inc = 1 b_inc = 1
Z analiz pozostaej cz ci skryptu nie powiniene mie problemów, jeli uwanie przeczytae rozdzia 7. Po uzyskaniu dost pu do aktywnego obiektu i jego bloku danych typu Mesh (siatka) modyfikowane s wartoci poszczególnych skadowych koloru. Jeli warto zmiennej okrelajcej kierunek zmian wynosi 1, odpowiednia skadowa jest zwi kszana. Przy innych wartociach tej zmiennej skadowa koloru jest zmniejszana. Gdy która skadowa osiga warto 1 lub 0, kierunek jej zmian jest odwracany: ob =scn.getActiveObject() mesh = ob.getData(mesh=True) if r_inc ==1: r = mesh.materials[0].rgbCol[0] + 0.1 if r >= 1: r = .99 r_inc = 0 else: r = mesh.materials[0].rgbCol[0] - 0.1 if r = 1: g = .99 g_inc = 0 else: g = mesh.materials[0].rgbCol[1] if g = 1: b = .99 b_inc = 0 else: b = mesh.materials[0].rgbCol[2] if b Selection (Kursor -> Zaznaczenie), aby mie pewno , e kursor znajduje si dokadnie w rodku postaci (powinien to by równie rodek sceny). Nast pnie wcinij klawisz spacji i z menu Add (Dodaj) wybierz opcj Armature (Koci). W panelu Armature (Koci) nalecym do kontekstu Editing (edytowanie) wcz przyciski X-Axis Mirror (odbicie lustrzane wzgl dem osi X) i x-Ray (rentgen) (patrz rysunek 9.28).
PRZYGOTOWYWANIE ELEMENTÓW SCENY DLA SILNIKA GIER~ 309
RYSUNEK 9.26. Tryb malowania tekstury
RYSUNEK 9.27. Postać w pełni pomalowana
2. Uyj skrótu klawiszowego Shift+E, aby wczy funkcj wycigania koci w trybie odbicia lustrzanego, i wycignij koci ramion, tak jak na rysunku 9.29. Uycie tego skrótu jest konieczne tylko przy pierwszym wyciganiu symetrycznej pary koci. Do wycigania kolejnych par koci z tych, które ju s wycigni te, wystarczy sam klawisz E — nowe koci b d nadal tworzy symetryczne pary (patrz rysunek 9.30). Zaznacz gówk oryginalnej koci (grubszy koniec omiocianu) przez klikni cie jej prawym przyciskiem myszy i, uywajc ponownie skrótu Shift+E, wycignij pierwsz par koci nóg, tak jak na rysunku 9.31. Nast pnie wcinij klawisz E i wycignij drug par koci nóg (patrz rysunek 9.32).
310 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.28. Ustawienia armatury
RYSUNEK 9.29. Wyciąganie kości ramion w trybie odbicia lustrzanego (Shift+E)
RYSUNEK 9.30. Wyciąganie kolejnych kości (klawisz E)
PRZYGOTOWYWANIE ELEMENTÓW SCENY DLA SILNIKA GIER~ 311
RYSUNEK 9.31. Wyciąganie kości nóg w trybie odbicia lustrzanego (Shift+E)
RYSUNEK 9.32. Wyciąganie kolejnych kości nóg (klawisz E)
3. Wcinij klawisz Tab, aby wczy tryb obiektowy. Zaznacz siatk modelu, a nast pnie przytrzymaj wcini ty klawisz Shift i kliknij prawym przyciskiem armatur , aby j równie zaznaczy . Potem wcinij klawisze Ctrl+P, aby powiza siatk z armatur. Z menu pokazanego na rysunku 9.33 wybierz Armature (koci), aby t struktur uczyni nadrz dn w stosunku do siatki. W oknie dialogowym pokazanym na rysunku 9.34 moesz wybra , czy i w jaki sposób armatura ma by obleczona siatk. Wybierz opcj Create From Bone Heat (utwórz na podstawie ciepa koci). Jest to nowatorska metoda czenia siatki ze szkieletem — wierzchoki s przypisywane odpowiednim kociom w sposób automatyczny. W wielu prostych przypadkach rigowania nie trzeba robi nic wi cej! Niepotrzebne jest malowanie wag wierzchoków ani ich poprawianie. Od razu moesz przystpi do eksperymentowania z rozmaitymi pozami postaci (patrz rysunek 9.35). Po takich eksperymentach przywró postaci jej spoczynkow poz — zaznacz koci (najlepiej przez wcini cie klawisza A) i za pomoc skrótu Alt+R wyzeruj ich obroty.
312 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.33. Przypisywanie armaturze roli nadrzędnej
RYSUNEK 9.34. Grupowanie wierzchołków w oparciu o ciepło kości
RYSUNEK 9.35. Postać gotowa do koziołkowania
Teraz moesz przystpi do budowy prostej sekwencji animacyjnej ze spacerujc postaci. Póniej, w rozdziale10., sekwencja ta b dzie wykorzystywana przez logiczne mechanizmy silnika gier. Animacja cyklu spacerowego z dwiema klatkami kluczowymi,
PRZYGOTOWYWANIE ELEMENTÓW SCENY DLA SILNIKA GIER~ 313
jak za chwil utworzysz, to tylko niewielka próbka moliwoci Blendera w dziedzinie animacji postaci. Bardziej zaawansowane przykady, wcznie z animowaniem cykli biegowych, znajdziesz w mojej ksice Introducing Character Animation with Blender (Sybex. 2007). Równie silnik gier, z jakim mamy do czynienia w Blenderze, jest w stanie obsuy znacznie bardziej skomplikowane animacje postaci (take te oparte na kinematyce odwrotnej), o czym najlepiej wiadczy wspominana ju gra Yo, Frankie!. Dla naszych celów wystarczy jednak prosta animacja cyklu spacerowego. Aby j utworzy , wykonaj nast pujce czynnoci: 1. Upewnij si , e w oknie Timeline (o czasu) aktywna jest klatka nr 1, w oknie widokowym zaznaczona jest armatura, a z listy Mode (tryb) wybrana jest opcja Pose Mode (Tryb pozowania). Zaznacz lew nog i wcinij najpierw klawisz R, a potem X, aby obrót móg odbywa si tylko wokó globalnej osi X, po czym obró
t nog w przód, tak jak na rysunku 9.36. Na klawiaturze numerycznej wcinij klawisz 3, aby wczy widok z boku, zaznacz praw nog i obró j w ty, tak jak na rysunku 9.37. Post pujc analogicznie, obró lew r k w ty (rysunek 9.38), a praw w przód (rysunek 9.39). Z wcini tym klawiszem Shift zaznacz obie r ce i obie nogi, po czym wcinij klawisz I, aby utworzy klucze dla takiego uoenia koczyn (patrz rysunek 9.40). RYSUNEK 9.36. Lewa noga obrócona w przód
2. Podziel obszar roboczy na dwie cz ci i w jednej z nich otwórz okno Action Editor (Edytor akcji), tak jak na rysunku 9.41. Cztery klucze, które wanie utworzye, powinny by widoczne w klatce pierwszej. Za pomoc klawisza ze strzak w prawo przesu wskanik o 10 klatek do przodu (do klatki nr 11). Tutaj utworzysz drug poz b dc lustrzanym odbiciem poprzedniej, a zrobisz to przy uyciu przycisków schowka znajdujcych si w nagówku okna widokowego. Obie wersje tych przycisków,
314 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.37. Prawa noga obrócona w tył
RYSUNEK 9.38. Lewa ręka obrócona w tył
standardowa i alternatywna, s pokazane na rysunku 9.42. Pierwszy z lewej kopiuje biec poz do schowka, drugi przenosi j ze schowka na armatur , a trzeci tworzy lustrzane odbicie pozy przechowywanej w schowku i dopiero wtedy przenosi j na armatur . Zachowujc nadal zaznaczenie koci wszystkich koczyn, kliknij pierwszy z tych przycisków, aby skopiowa biec poz do schowka. Nast pnie uyj przycisku trzeciego. Posta powinna natychmiast zmieni poz . Wcinij klawisz I, aby utworzy nowe klucze dla zaznaczonych koci (patrz rysunek 9.43). Na koniec wcinij klawisz B, aby wczy tryb zaznaczania ramk, i zaznacz wszystkie klucze w klatce 1. Za pomoc skrótu Shift+D skopiuj te klucze, a nast pnie przesu o 20 klatek w prawo, tak jak na rysunku 9.44. Podczas przesuwania kluczy trzymaj wcini ty klawisz Ctrl, aby wymusi przesuwanie o pen klatk .
PRZYGOTOWYWANIE ELEMENTÓW SCENY DLA SILNIKA GIER~ 315
RYSUNEK 9.39. Prawa ręka obrócona w przód
RYSUNEK 9.40. Kluczowanie ułożenia kończyn
RYSUNEK 9.41. Klucze w edytorze akcji
316 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.42. Przyciski schowka z dwoma zestawami ikon
RYSUNEK 9.43. Kluczowanie odbicia lustrzanego pozy zapisanej w schowku
RYSUNEK 9.44. Kopiowanie kluczy (Shift+D) i przesuwanie ich o 20 klatek
WIAT BLENDERA LATAJCA WIEWIÓRKA FRANKIE A POSTPY W ROZWIJANIU SILNIKA GIER W ostatnim czasie największy postęp w rozwoju blenderowego silnika gier nastąpił podczas prac związanych z realizacją projektu Apricot. Po dwóch krótkich filmach animowanych jest to trzecie wielkie przedsięwzięcie Fundacji Blendera. Tym razem jednak skoncentrowano się na obszarze gier komputerowych. Rezultatem trwających pół roku prac zespołu złożonego z twórców gier i programistów z całego świata jest prototyp gry Yo, Frankie! dostępny teraz na płytach DVD w internetowym sklepie Blendera. Gra została opracowana przy użyciu Blendera i rozpowszechnianej na zasadach open source platformy do tworzenia gier komputerowych Crystal Space. Trzon zespołu Apricot stanowili: Campbell Barton (twórca Blendera i badacz logicznych systemów gier), Christopher Plush (dyrektor artystyczny i główny projektant gry), Dariusz Dawidowski (czołowy projektant gier w zespole Crystal Space), Frank Richter (twórca Crystal Space), Pablo Martin (twórca systemów integrujących Blender z Crystal Space) i Pablo Vazquez (artysta grafik). W pracach tego zespołu uczestniczyli także członkowie Instytutu Blendera: Brecht van Lommel, Margreet Riphagen i Tom Roosendaal. Już we wczesnej fazie prac zespół zdecydował się na wykorzystanie wielu elementów z poprzedniego projektu Fundacji Blendera, jakim był film Big Buck Bunny, dzięki czemu więcej uwagi można było poświęcić projektowaniu samej gry. Głównym bohaterem uczyniono sadystyczną, latającą wiewiórkę o imieniu Frankie. Zmieniono jej tylko trochę rigowanie, aby spełniało wymogi silnika gier, co widać na poniższym rysunku.
PRZYGOTOWYWANIE ELEMENTÓW SCENY DLA SILNIKA GIER~ 317
Oparcie się na rezultatach pracy, która została wykonana już wcześniej na potrzeby filmu, pozwoliło zespołowi skoncentrować wysiłki na samej grze i usprawnianiu dostępnych w Blenderze narzędzi do tworzenia gier. Jednym z celów projektu Apricot było także zbadanie potencjalnych możliwości połączenia Blendera z Crystal Space w jedno supernowoczesne narzędzie do tworzenia gier. Ostatecznie jednak okazało się, że takie połączenie wykracza poza ramy projektu, ale ubocznym efektem tego wątku prac są znaczące udoskonalenia silnika gier w Blenderze obejmujące między innymi sterowanie widokami, obsługę tekstur UV i zarządzanie zasobami. O szczegółach tych i innych udoskonaleń Blendera dokonanych w ramach projektu Apricot możesz przeczytać na oficjalnej stronie gry Yo, Frankie!, www.yofrankie.org.
3. Sekwencja jest ju gotowa. Jeli w oknie Timeline (o czasu) ustawisz pierwsz klatk jako pocztkow (Start), a dwudziest jako kocow (End) i klikniesz przycisk Play (odtwórz) (moesz te ustawi wskanik myszy w oknie widokowym i wcisn
klawisze Alt+A), animacja b dzie odtwarzana w sposób cigy. W oknie edytora akcji nadaj animacji nazw Walk (spacer), jak na rysunku 9.45. RYSUNEK 9.45. Zmiana nazwy animacji
318 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
Przygotowanie rodowiska gry Posta gównego bohatera jest ju gotowa, a zatem moemy zaj si przygotowaniem rodowiska gry. W tym przypadku b dzie to po prostu niebo i labirynt, po którym nasz bohater b dzie spacerowa.
Tworzenie prostego skyboksu W ksice Bounce, Tumble, and Splash! Simulating the Phisical World with Blender 3D pokazaem, jak za pomoc mapowania tekstury mona utworzy niebo jako to animacji. Jednak ta metoda nie nadaje si do zastosowania w rodowisku silnika gier. Dla gry musimy utworzy tzw. skybox, czyli obiekt siatkowy z naoon tekstur nieba. Tekstura moe by tutaj dowolna — niebo namalowane r cznie, sfotografowane lub wygenerowane przez program komputerowy. Wszystko zaley od tego, jaki efekt chcemy uzyska . W kolejnym wiczeniu zobaczysz, jak w prosty sposób mona utworzy niebo przy uyciu tekstury proceduralnej i funkcji wypalania tekstur. Aby utworzy skybox dla naszej gry, wykonaj nast pujce czynnoci: 1. Otwórz now sesj Blendera i tak jak wtedy, gdy rozpoczynae tworzenie postaci, wcz tryb edycji, zaznacz wszystkie wierzchoki szecianu, wcinij klawisz W i wybierz polecenie Subdivide Smooth (Podziel z wygadzaniem), aby utworzy dwudziestoczterocian. Nast pnie w dolnej poowie siatki zaznacz dziewi wierzchoków, tak jak na rysunku 9.46. Kraw dzie wyznaczone przez te wierzchoki powinny utworzy ksztat równoramiennego krzya. Jeli na czarno-biaym rysunku kraw dzie nie s dobrze widoczne, odszukaj jego wersj kolorow we wkadce. Wcinij klawisze Ctrl+E, aby otworzy menu Edge Specials (specjalne dla kraw dzi), i wybierz z niego polecenie Mark Seam (oznacz szew). RYSUNEK 9.46. Zaznaczanie krawędzi w celu utworzenia szwów na siatce podzielonej z wygładzaniem
PRZYGOTOWANIE RODOWISKA GRY~ 319
2. Nast pny etap polega na utworzeniu kombinacji tekstur i wypaleniu ich w celu uzyskania odpowiedniego obrazu. Rozpocznij od przypisania obiektowi materiau. Poniewa na niebie nie powinny by widoczne adne efekty wietlne zwizane z lampami umieszczonymi w scenie, wcz opcj Shadeless (bezcieniowy) w panelu Material (Materia) nalecym do subkontekstu Material buttons (Ustawienia materiau). Materia b dzie skada si z trzech warstw tekstur. Pierwsza tekstura b dzie okrelaa kolor nieba, dlatego nazwaem j Color (kolor). Utwórz j zgodnie z ustawieniami pokazanymi na rysunku 9.47. Powiniene otrzyma gradient liniowy z barwami nieba od horyzontu (po lewej) do zenitu (po prawej). RYSUNEK 9.47. Tekstura Color (kolor)
Odwzorowanie tej tekstury na materiale jest pokazane na rysunku 9.48. (Kolorowe wersje tych rysunków znajduj si we wkadce). Jak wida , typ mapowania jest domylny, czyli Orco (oryginalne wspórz dne), zmieniona jest take pierwsza wspórz dna — z X na Y, aby barwy zmieniay si od dou do góry, a nie od lewej do prawej. W panelu Map To (Mapowanie) wcz opcj Col (kolor), poniewa tekstura ma reprezentowa kolor nieba. Na stosie tekstur w panelu Texture (Tekstura) ta tekstura powinna zajmowa pierwsze miejsce od góry. Na trzecim miejscu b dzie tekstura z chmurami, a zatem wybierz dla niej typ Clouds (chmury). Jej ustawienia s pokazane na rysunku 9.49, a parametry mapowania — na rysunku 9.50. Natomiast w rodku powinna znale si tekstura, która nie b dzie miaa bezporedniego wpywu na kolory nieba, ale b dzie powodowa stopniowe blakni cie chmur w kierunku horyzontu. Ja nadaem jej nazw Stencil (szablon). Sam tekstur pokazano na rysunku 9.51, a jej mapowanie — na rysunku 9.52.
320 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.48. Mapowanie tekstury Color (kolor)
RYSUNEK 9.49. Tekstura Clouds (chmury)
Jeli utworzysz podgld obiektu z naoonym materiaem (przy aktywnym oknie widokowym wcinij klawisze Shift+P), powiniene zobaczy obraz podobny do tego, jaki wida na rysunku 9.53.
PRZYGOTOWANIE RODOWISKA GRY~ 321
RYSUNEK 9.50. Mapowanie tekstury Clouds (chmury)
RYSUNEK 9.51. Tekstura Stencil (szablon)
3. Tekstury proceduralne s ju gotowe. Teraz trzeba je wypali , aby uzyska jeden obraz o odpowiednich wspórz dnych UV. Aby to zrobi , podziel obszar roboczy na dwie cz ci i w jednej z nich otwórz okno UV/Image Editor (Edytor UV/Obrazów). Upewnij si , czy obiekt jest w trybie edycyjnym oraz czy wszystkie cianki ma zaznaczone (sprawd to za pomoc klawisza A), a nast pnie w oknie edytora obrazów wybierz z menu Image (Obraz) polecenie New (nowy), tak jak na rysunku 9.54. W oknie dialogowym New Image (nowy obraz) ustaw Width (szeroko ) i Height
322 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.52. Mapowanie tekstury Stencil (szablon)
RYSUNEK 9.53. Podgląd skyboksu
(wysoko ) na 1024 oraz wcz opcj UV Test Grid (siatka testowa UV). Nast pnie w panelu Mesh (Siatka) nalecym do kontekstu Editing (edytowanie) utwórz now tekstur UV. Tak jak w poprzednim przykadzie z postaci, w oknie edytora obrazów pojawi si niebieski kwadrat reprezentujcy uoone w stos wielokty siatki. Wcinij klawisz E, aby rozwin siatk . Jeli wczeniej wyznaczye odpowiednie szwy, powiniene otrzyma rozwini cie takie jak na rysunku 9.55. I znów, jeli wczysz w oknie widokowym tryb wywietlania obiektów z teksturami, obiekt skyboksu pokryje si testow siatk UV i b dzie wyglda tak, jak pokazano na rysunku 9.56.
PRZYGOTOWANIE RODOWISKA GRY~ 323
RYSUNEK 9.54. Otwieranie nowego obrazu w oknie UV/Image Editor (Edytor UV/Obrazów)
RYSUNEK 9.55. Rozwinięcie siatki skyboksu
W tej chwili na wygld skyboksu maj wpyw dwa czynniki. Pierwszym jest materia z teksturami Color (kolor) i Clouds (chmury), a drugim — tekstura UV z obrazu, który wanie utworzye. O tym, co wida w oknie 3D View (Widok 3D),
324 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.56. Wygląd obiektu w trybie Textured (Z teksturami)
decyduje wybrany tryb wywietlania. Gdyby teraz zrenderowa obraz, zobaczyby materia. Natomiast w silniku gier wszystko b dzie zaleao od jego ustawie (zajmiemy si tym w dalszej cz ci rozdziau), ale w adnym przypadku proceduralne tekstury materiau nie b d widoczne. 4. Czas wi c wypali materia na teksturze UV. Otwórz wi c panel Bake (wypalanie) pokazany na rysunku 9.57. Znajdziesz go w subkontekcie Render buttons (przyciski renderowania). Wcz opcj Textures (tekstury) i kliknij przycisk Bake (wypal). Wypalanie jest waciwie tym samym co renderowanie, z t rónic, e tym razem uzyskany obraz jest rzutowany na tekstur zmapowan we wspórz dnych UV, co wida na rysunku 5.58 powtórzonym równie w kolorowej wkadce. RYSUNEK 9.57. Panel Bake (wypalanie)
PRZYGOTOWANIE RODOWISKA GRY~ 325
RYSUNEK 9.58. Wypalona tekstura nieba
5. Spakuj obraz do pliku .blend. W tym celu w oknie UV/Image Editor (Edytor UV/Obrazów) wybierz z menu Image (Obraz) polecenie Pack Image (spakuj obraz) lub Pack Image as PNG (spakuj obraz jako PNG) albo zapisz obraz w oddzielnym pliku za pomoc polecenia Save As (Zapisz jako), a nast pnie spakuj wszystkie dane zewn trzne przy uyciu odpowiedniego polecenia z menu File (Plik) Blendera. Jeli tego nie zrobisz, wypalona tekstura b dzie niedost pna po zamkni ciu i ponownym otwarciu programu. 6. Domylnie w silniku gier wielokty s widoczne tylko od strony swoich normalnych. Jeli chodzi o skybox, jego siatka powinna by widoczna od wewntrz, a tymczasem wszystkie normalne s skierowane na zewntrz. Aby si o tym przekona , wcz wywietlanie normalnych. W tym celu zaznacz cay obiekt w trybie edycyjnym, a nast pnie otwórz panel Mesh Tools More (wi cej narz dzi siatkowych) i wcz w nim opcj Draw Normals (Rysuj normalne), tak jak na rysunku 9.59. W celu odwrócenia normalnych wcinij klawisz W i wybierz polecenie Flip Normals (Odwró normalne). Rezultat tego zabiegu wida na rysunku 9.60. RYSUNEK 9.59. Włączanie wyświetlania normalnych
326 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.60. Przed odwróceniem i po odwróceniu normalnych
7. Skybox gotowy — niebo w postaci wypalonej tekstury zostao zrzutowane na siatk obiektu. Sam materia jest ju waciwie niepotrzebny. Jeli chcesz, moesz go cakowicie usun , bo i tak skybox b dzie wyglda prawidowo w silniku gier. O relacjach mi dzy materiaami, teksturowanymi ciankami i silnikiem gier b dzie jeszcze mowa pod koniec rozdziau. Na koniec zmie nazw obiektu z Cube (szecian) na Skybox — wpisz j w polu OB panelu Links and Materials (Powizania i materiay) nalecym do kontekstu Editing (edytowanie).
Tworzenie prostego labiryntu W przykadowej grze, któr utworzymy w nast pnym rozdziale, nasz bohater b dzie si porusza po labiryncie. Utworzenie takiego labiryntu nie jest skomplikowane. Po prostu wykonaj nast pujce czynnoci: 1. W nowej sesji Blendera usu domylny szecian, a w jego miejsce utwórz obiekt typu Plane (Kwadrat). Jeli kwadrat jest niewaciwie ustawiony, wcz tryb obiektowy i wcinij klawisze Alt+R, aby wyzerowa wszystkie obroty obiektu. Nast pnie wcz tryb edycji, zaznacz wszystko za pomoc klawisza A i przeskaluj obiekt, stosujc wspóczynnik o wartoci 50. Wcinij klawisz W, wybierz polecenie Subdivide Multi (podziel wielokrotnie), tak jak na rysunku 9.61, zwi ksz parametr Number of Cuts (liczba ci ) do 10 i kliknij OK. W nagówku okna widokowego kliknij przycisk Face select mode (tryb zaznaczania cianek). Jest to ostatni z trzech przycisków pokazanych na rysunku 9.62 w wersji klasycznej i nowej. W trybie zaznaczania cianek kwadrat b dzie wyglda tak, jak pokazano na rysunku 9.63. 2. Wcinij klawisz Shift i nie zwalniajc go, zaznaczaj kolejne cianki zgodnie ze wzorem labiryntu pokazanym na rysunku 9.64. Nast pnie obró nieco scen , aby widzie kwadrat z boku, wcinij najpierw klawisz E, aby wczy funkcj wycigania cianek, potem Z, aby ograniczy wyciganie do jednego kierunku wzdu osi Z, i wycignij zaznaczone cianki w dó, tak jak na rysunku 9.65. W widoku ortogonalnym z boku labirynt powinien wyglda tak, jak pokazano na rysunku 9.66.
PRZYGOTOWANIE RODOWISKA GRY~ 327
RYSUNEK 9.61. Dzielenie przeskalowanego kwadratu
RYSUNEK 9.62. Przyciski trybu zaznaczania w wersji nowej i klasycznej
RYSUNEK 9.63. Podzielony kwadrat po włączeniu trybu zaznaczania ścianek
328 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.64. Zaznaczanie wzoru labiryntu
RYSUNEK 9.65. Wyciąganie pionowych ścian labiryntu
3. Ponownie wcinij klawisz Shift i nie zwalniajc go, zaznacz wszystkie cianki zwrócone ku górze, zarówno na górnym, jak i dolnym poziomie wytoczonego obiektu (patrz rysunek 9.67). Zaznaczenie powinno obejmowa teraz wszystko oprócz pionowych cian labiryntu. Wcinij klawisz P i wybierz polecenie Separate Selected (oddziel zaznaczone), tak jak na rysunku 9.68. W ten sposób oddzielisz zaznaczon cz obiektu od jego reszty (patrz rysunek 9.69). Rysunek 9.70 przedstawia same ciany labiryntu. Jeli chcesz obejrze poszczególne cz ci oddzielnie, zaznacz t , któr chcesz zobaczy , i wcinij klawisz / (ukonik) na klawiaturze numerycznej.
PRZYGOTOWANIE RODOWISKA GRY~ 329
RYSUNEK 9.66. Labirynt w bocznym widoku ortogonalnym
RYSUNEK 9.67. Zaznaczone ścianki widziane pod pewnym kątem
330 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.68. Oddzielanie zaznaczonej części obiektu (klawisz P)
RYSUNEK 9.69. Siatka podzielona na dwa obiekty
RYSUNEK 9.70. Wciśnięcie klawisza ze znakiem ukośnika wyświetla jedną część podzielonego obiektu
PRZYGOTOWANIE RODOWISKA GRY~ 331
4. Aby uatwi sobie póniejsze manipulowanie caym labiryntem i jego cz ciami, nadaj poszczególnym obiektom opisowe nazwy, na przykad Floor (podoga) i Walls (ciany), a nast pnie umie je w jednej grupie. W tym celu zaznacz obiekt Floor (podoga) i w panelu Object and Links (obiekt i powizania) z listy Add to Group (dodaj do grupy) wybierz opcj Add New (dodaj nowy), tak jak na rysunku 9.71. Now grup nazwij Maze (labirynt), po czym zaznacz obiekt Walls (ciany) i dodaj go do tej grupy, tak jak na rysunku 9.72. RYSUNEK 9.71. Tworzenie nowej grupy
RYSUNEK 9.72. Dodawanie obiektu Walls (ściany) do grupy Maze (labirynt)
Model labiryntu jest ju gotowy. Z nast pnego podrozdziau dowiesz si wi cej o funkcjonowaniu materiaów, tekstur i owietlenia w silniku gier. W poczeniu z wiedz nabyt w trakcie dotychczasowej lektury niniejszego rozdziau b dziesz dysponowa
kompletem informacji potrzebnych do utworzenia stosownych tekstur i naoenia ich na podog oraz ciany labiryntu. Takie wanie zadanie otrzymasz do samodzielnego wykonania.
332 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
Ci g dalszy poznawania rodowiska BGE rodowisko silnika gier wcale nie jest bardzo skomplikowane. Podobnie jak w przypadku zwykego renderowania animacji mona tu stosowa warstwy z okna widokowego i w ten sposób decydowa , co ma by widoczne, a co nie (w kontekcie silnika gier warstwy maj jeszcze inne znaczenie, ale o tym opowiem w nast pnym rozdziale). Wcini cie klawisza P w trybie obiektowym uaktywnia silnik gier i nast puje rozpocz cie gry. Wcini cie klawisza Esc koczy gr i powoduje powrót do rodowiska Blendera. Wielu pocztkujcych uytkowników doznaje szoku, gdy po wcini ciu klawisza P nie s w stanie niczego zrobi w Blenderze. O tym i o jeszcze kilku innych sprawach powiniene wiedzie , zanim zaczniesz cokolwiek robi w rodowisku silnika gier.
Umieszczanie obiektów w wiecie gry Zapewne b dziesz chcia rozpocz od umieszczenia przygotowanych wczeniej obiektów w jednym pliku reprezentujcym waciw gr . Moesz to zrobi za pomoc funkcji Append (docz). W przypadku naszej gry zaczniemy od umieszczenia w nowym pliku skyboksu i labiryntu. Doczenie postaci i armatury pozostawi Ci do samodzielnego wykonania. Aby umieci skybox i labirynt w rodowisku gry, wykonaj nast pujce czynnoci: 1. Otwórz now sesj Blendera i za pomoc klawisza X usu domylny szecian. Z menu File (Plik) wybierz polecenie Append or Link (docz lub utwórz cze), tak jak na rysunku 9.73. W oknie przegldarki plików, które si otworzy, odszukaj utworzony wczeniej plik sky.blend. Blenderowa przegldarka traktuje pliki .blend jak systemowe foldery, a zatem otwórz ten plik i w podfolderze Object zaznacz obiekt Skybox (patrz rysunek 9.74). Gdy klikniesz przycisk Load Library (wczytaj bibliotek ), skybox pojawi si w oknie widokowym. RYSUNEK 9.73. Polecenie Append or Link (dołącz lub utwórz łącze)
CI G DALSZY POZNAWANIA RODOWISKA BGE~ 333
RYSUNEK 9.74. Wyszukiwanie obiektu Skybox na dysku twardym
2. Powtórz etap 1. i odszukaj plik z obiektami labiryntu, ale tym razem nie otwieraj podfolderu Object, lecz Group. Przypomnij sobie, e obiekty Walls i Floor umiecie w jednej grupie Maze. Zaznacz t grup , tak jak na rysunku 9.75, a nast pnie kliknij przycisk Load Library (wczytaj bibliotek ). Caa zawarto grupy zostanie umieszczona w przestrzeni 3D. RYSUNEK 9.75. Dołączanie grupy Maze (labirynt)
3. Gdy labirynt i skybox znajd si w jednym oknie widokowym, od razu zauwaysz, e co jest nie tak. Spójrz na rysunek 9.76. W porównaniu z labiryntem skybox nie jest wi kszy od piki do koszykówki! Przecie niebo powinno by duo wi ksze. Powi ksz je wi c co najmniej 50-krotnie, a potem wcinij klawisze Ctrl+A, aby zatwierdzi to skalowanie. RYSUNEK 9.76. Niedopasowana skala
334 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
SKALOWANIE A SILNIK GIER Skalowanie obiektów w środowisku silnika gier może być źródłem kłopotów, jeśli nie jest przeprowadzane w sposób właściwy. Jest to szczególnie istotne, gdy mamy do czynienia z fizyką ciał sztywnych i wykrywaniem kolizji. Ogólnie wszystko w silniku gier powinno być w skali 1. Aby ten warunek spełnić, powinno się skalować obiekty siatkowe w trybie edycji (trzeba wtedy zaznaczyć wszystkie wierzchołki siatki), a jeśli robimy to w trybie obiektowym, należy takie skalowanie natychmiast zatwierdzić wciśnięciem klawiszy Ctrl+A. Właściwości fizyczne — przycisk Actor (Aktor) — powinny być przypisywane siatkom w skali 1. Jeśli przeskalujemy siatkę po przypisaniu jej właściwości fizycznych, otrzymamy nieprawidłowe zakresy wykrywania kolizji. Armatury powinny być skalowane w trybie obiektowym z natychmiastowym zatwierdzeniem przy użyciu klawiszy Ctrl+A. Czasami może to jednak prowadzić do nieprzewidywalnych zmian w przebiegu animacji. Stwierdziłem, że w takich sytuacjach pomaga włączenie trybu edycyjnego, zaznaczenie wszystkich kości i ponowne przeliczenie ich kątów przez wciśnięcie klawiszy Ctrl+N. Często udawało mi się w ten sposób naprawić błędy spowodowane skalowaniem armatury.
Ustawianie opcji materiau Istnieje kilka sposobów wpywania na wygld obiektów w BGE. Najprostszy sposób teksturowania miae okazj pozna w tym rozdziale. Zapewne zauwaye, e nie wspominaem dotychczas o materiaach w kontekcie silnika gier. Jeli ju renderowae w Blenderze sceny nieruchome lub animacje, to moe Ci dziwi , e w prezentowanych tu przykadach tekstury UV nakadane byy bezporednio na siatk , bez uywania materiau. W terminologii Blendera jest to nazywane Textured-Face lub krócej TexFace (teksturowana cianka) i kiedy by to jedyny sposób obsugi tekstur przez silnik gier. Obecnie sytuacja wyglda nieco inaczej. Moliwoci silnika znacznie si poszerzyy i pozwalaj na bardziej intuicyjn prac . Teraz mona stosowa materiay i rozmaite systemy cieniowania (tzw. shadery) umoliwiajce renderowanie realistycznych powierzchni w czasie rzeczywistym. Jednak materiay typu TexFace s nadal uywane. Jeli zaley nam na samej teksturze, a pokryta ni powierzchnia nie powinna reagowa na wiato lamp ani przyjmowa cieni rzucanych przez inne obiekty (tak jak w przypadku skyboksu), teksturowanie metod TexFace jest niezastpione. Mona j stosowa tak, jak robilimy to w tym rozdziale, czyli bez przypisywania obiektowi jakiegokolwiek materiau, ale mona równie uy
materiau z wczon opcj TexFace, pokazan na rysunku 9.77. W obu przypadkach — gdy siatka jest pokryta tekstur UV bez adnego materiau lub gdy materia ma wczon opcj TexFace — jeli siatka jest w trybie edycyjnym, w kontekcie przycisku Editing (edytowanie) dost pny jest panel Texture Face (teksturowanie cianki) pokazany na rysunku 9.78. Panel ten zawiera kilka opcji uytecznych z punktu widzenia silnika gier. Opcja Twoside (dwustronny) sprawia, e tekstura jest widoczna zarówno z przodu, jak i z tyu cianki. Opcja Alpha (alfa) wcza przezroczysto cianki zgodnie z przezroczystoci (kanaem alfa) obrazu stanowicego tekstur . Jeli chcesz, aby owietlenie zastosowane w silniku gier miao wpyw na wygld obiektów, musisz uy materiaów Blendera. Przykadem takiego obiektu moe by bohater naszej gry. Tryb TexFace doskonale nadaje si do malowania tekstury, poniewa umoliwia
CI G DALSZY POZNAWANIA RODOWISKA BGE~ 335
RYSUNEK 9.77. Materiał TexFace
RYSUNEK 9.78. Panel Texture Face (teksturowanie ścianki)
przeprowadzanie tej operacji bezporednio w oknie widokowym i pozwala na bieco obserwowa jej rezultaty. Dlatego wanie uylimy tej metody. Jednak w rzeczywistoci byoby lepiej uy materiau z tekstur UV w kanale koloru, tak jak to si robi w przypadku zwyczajnego renderowania scen statycznych lub animowanych.
Owietlenie w silniku gier Jak ju wspominaem wczeniej, wiato zastosowane w silniku gier nie ma wpywu na obiekty typu TexFace. Jednak materiay w peni reaguj na wiato i to w czasie rzeczywistym. W silniku gier mona uywa wszystkich pi ciu rodzajów lamp — wielokierunkowych, reflektorowych, powierzchniowych, kierunkowych (imitujcych soce) i pósferycznych (imitujcych zachmurzone niebo) — i mona nimi manipulowa
tak jak innymi obiektami. Owietlanie duej liczby obiektów w czasie rzeczywistym wymaga znacznych mocy obliczeniowych i moe prowadzi do opóniania przebiegu gry. Ponadto jako efektów wietlnych zaley w duym stopniu od g stoci siatki, na któr pada wiato, co wida
na rysunku 9.79. Rónice mi dzy pokazanymi przypadkami wynikaj jedynie z liczby podziaów siatki. Im g stsza siatka, tym lepszy efekt wietlny, ale wi ksza te jest liczba wierzchoków i cianek, a to równie ma ujemny wpyw na szybko gry.
336 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
RYSUNEK 9.79. Większa gęstość siatki pozwala uzyskać lepszy efekt oświetleniowy
RYSUNEK 9.79. Ciąg dalszy
RYSUNEK 9.79. Ciąg dalszy
Malowanie efektów wietlnych Efekty wietlne mona „malowa ” bezporednio na siatce, a robi si to przy uyciu funkcji malowania wierzchoków dost pnej w menu Mode (tryb) okna widokowego (patrz rysunek 9.80). Malowanie wierzchoków dziaa bezporednio na siatk : kademu wierzchokowi mona nada inny kolor, który b dzie widoczny nawet wtedy, gdy obiekt ma przypisan tekstur lub materia. Mieszanie si kolorów wierzchoków z kolorami tekstury lub materiau mona wykorzysta do symulowania efektów owietleniowych w rodowisku gry. Jeli owietlenie obiektu jest stae, to mona tak symulacj zastosowa , a to wpynie korzystnie na szybko gry. Jeli jednak owietlenie obiektu ma by zmienne, lepsze efekty da zastosowanie odpowiedniej lampy.
PODSUMOWANIE~ 337
RYSUNEK 9.80. Tryb Vertex Paint (Malowanie wierzchołków)
Podsumowanie Modeluj, riguj i teksturuj trójwymiarowe postacie zgodnie z wymogami silnika gier. Do eksperymentowania z silnikiem gier najlepiej nadaje si zrigowana posta
o prostej siatce zoonej z niewielkiej liczby wieloktów. Modelowanie, rigowanie i animowanie przy uyciu funkcji okna Action Editor (Edytor akcji) mona przeprowadzi
stosunkowo atwo i szybko. Opanuj to Podczas tworzenia postaci gównego bohatera naszej gry zastosowalimy teksturowanie metod TexFace, a zatem posta ta nie mogaby by owietlana lampami w czasie rzeczywistym podczas gry. Napraw to — utwórz dla tej postaci materia zawierajcy t sam zmapowan ju tekstur UV, któr utworzye wczeniej. Utwórz proste rodowisko gry zoone z labiryntu i skyboksu, stosuj c mapowanie tekstur. Do utworzenia interesujcego rodowiska gry cz sto wystarcz proste modele pokryte odpowiednio spreparowanymi teksturami. Doskonaym sposobem na przemycenie tekstur proceduralnych do rodowiska silnika gier jest ich wypalanie. Opanuj to
Pokryj interesujc tekstur podog i ciany labiryntu.
Umie obiekty w rodowisku gry i ustaw opcje materiaów oraz owietlenia w silniku gier. W zarzdzaniu elementami zoonych projektów due znaczenie ma umiej tno doczania obiektów i ich grup do pliku .blend. Natomiast waciwe rozumienie interakcji mi dzy materiaami a wiatem w silniku gier pozwala nadawa obiektom i ich otoczeniu wygld zgodny z oczekiwaniami projektantów gry. Opanuj to W trakcie lektury tego rozdziau doczae do gry labirynt i skybox, a nast pnie skalowae je, aby pasoway do siebie pod wzgl dem rozmiarów. Teraz docz do nich posta gównego bohatera. Zastosuj grupowanie, aby za jednym razem doczy siatk i armatur . Dostosuj wymiary postaci do pozostaych elementów gry i nie zapomnij o zatwierdzeniu tej operacji. Sprawd, czy po skalowaniu animacja postaci wyglda prawidowo. Jeli s z tym jakie problemy, przelicz ponownie kty skr cenia koci w trybie edycyjnym.
338 ~ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER
Rozdzia 10.
Uruchamianie silnika gier Wiesz ju, jak przygotowa model postaci i proste elementy scenerii gry, aby speniay wymogi rodowiska BGE. Moesz wi c przystpi do drugiego etapu tworzenia gry, czyli do programowaniu interakcji z uytkownikiem. Silnik gier, z jakim mamy do czynienia w Blenderze, umoliwia realizacj tego zadania na kilka sposobów. W tym rozdziale poznasz metod opart o gotowe narz dzia do projektowania gier, zwane w Blenderze blokami logicznymi. Zalet bloków logicznych jest to, e pozwalaj programowa interaktywno gry w sposób graficzny za pomoc specjalnego interfejsu. Dzi ki temu nawet kto, kto nie zna si na programowaniu, moe tworzy gry. Oczywicie wi ksze moliwoci daje wczenie w to caej pot gi Pythona, o czym przekonasz si w rozdziale 11., „czenie pot gi Pythona z moliwociami silnika gier”. Stosowanie Pythona w BGE i tak do pewnego stopnia opiera si na blokach logicznych, a zatem bez wzgl du na sposób, w jaki zamierzasz podej do tworzenia gier w Blenderze, z systemem bloków logicznych b dziesz musia si zapozna . Z tego rozdziau dowiesz si , jak:
sterowa postaciami i scenami przy uyciu bloków logicznych, tworzy zoone interakcje za pomoc waciwoci, komunikatów i stanów, manipulowa teksturami w celu uzyskania dynamicznego tekstu i dwuwymiarowej animacji, wzbogaca gr efektami dwi kowymi.
Posugiwanie si blokami logicznymi Bloki logiczne w BGE decyduj o tym, jak uytkownik steruje okrelonymi zdarzeniami w grze i jak te zdarzenia z kolei steruj innymi zdarzeniami. Za pomoc tych bloków moesz zmusi posta , by reagowaa na sygnay pynce z klawiatury, zmieni poziom trudnoci gry, gdy gracz zgromadzi odpowiedni liczb punktów, a nawet moesz obdarzy
przeciwników gównego bohatera elementami sztucznej inteligencji (AI — Artificial Intelligence). W ksice Bounce, Tumble, and Splash! Simulating the Phisical World with Blender 2D (Sybex, 2008) opisaem stosowanie bloków logicznych w symulacjach zachowa cia sztywnych. Symulacje te byy póniej wykorzystywane w animacjach. Tutaj zamierzam pog bi ten temat i uzupeni o szczegóy zwizane z uyciem bloków w kontekcie armatur, waciwoci i innych elementów specyficznych dla interaktywnego rodowiska
340 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
gry komputerowej. Zagadnienia zwizane z ciaami sztywnymi i fizyk gry potraktuj tym razem marginesowo. Jeli interesuj Ci bardziej wyszukane interakcje mi dzy ciaami sztywnymi i chciaby przenosi zachowania takich cia ze rodowiska BGE do zwykych animacji realizowanych w Blenderze, zajrzyj do wspomnianej wyej ksiki. Koncepcja bloków logicznych jest prosta. Ich celem jest realizacja zwizków przyczynowo-skutkowych mi dzy zdarzeniami i wzajemnych oddziaywa mi dzy obiektami w rodowisku gry. W tym rozdziale nauczysz si korzysta ze zwizków logicznych wbudowanych w system bloków BGE. Natomiast w nast pnym rozdziale poznasz sposoby poszerzania tych zwizków za pomoc skryptów Pythona i zobaczysz, e moliwoci w tej dziedzinie s wr cz nieograniczone.
Wprowadzenie do systemu bloków logicznych Jak ju wspominaem, system bloków logicznych umoliwia czenie jednostek logicznych z obiektami3D. Kady blok logiczny jest czony z jednym obiektem. Bloki te mog jednak oddziaywa na wi cej ni jeden obiekt i mog si ze sob „komunikowa ” (b dzie o tym mowa w podrozdziale „Waciwoci, komunikaty i stany”). Liczba moliwych kombinacji jest tak wielka, e nie da si poda jednego waciwego sposobu ustawiania logiki gry. Gdy zrozumiesz zasad dziaania systemu bloków logicznych, b dziesz intuicyjnie wyczuwa, który blok naley przypisa do danego obiektu. Po umieszczeniu postaci w scenie naleaoby da graczowi moliwo poruszania t postaci. Poniewa w realizacji ruchów caej postaci i jej koczyn gówn rol odgrywa kociec, czyli armatura, sensowne jest przyczenie odpowiednich bloków logicznych wanie do armatury postaci. Aby rozpocz prac z blokami logicznymi, wcz kontekst Logic (logika) przez wcini cie klawisza F4 lub klikni cie pierwszego od lewej przycisku w nagówku okna Buttons Window (Okno przycisków) — ikona tego przycisku przypomina Pac-Mana. Nast pnie zaznacz w scenie obiekt Armature (zrób to w trybie obiektowym), aby otworzy panel pokazany na rysunku 10.1. RYSUNEK 10.1. Okno przycisków z włączonym kontekstem Logic (logika)
Pierwsza wiartka tego panelu suy mi dzy innymi do sterowania fizyk cia sztywnych. Obiektom, które maj podlega dziaaniu si, naley przypisa status Actor (Aktor), ale o tym b dzie jeszcze mowa w kolejnych fragmentach rozdziau. W tej cz ci panelu okrela si take granice (Bounds) wykrywania kolizji i ustawia waciwoci (Properties) obiektów. Pozostae trzy wiartki (kolumny) panelu s przeznaczone dla bloków logicznych, które dziel si na trzy rodzaje. Kady z nich zajmuje oddzieln wiartk panelu. S to nast pujce rodzaje bloków:
Sensors (Czujniki) — zajmuj pierwsz kolumn i obsuguj przyczynow stron logiki gry. Ich zadaniem jest identyfikowanie sygnaów wyzwalajcych zdarzenia.
POSUGIWANIE SI BLOKAMI LOGICZNYMI~ 341
Actuators (Akcje) — zajmuj ostatni kolumn i w odpowiedzi na sygnay przekazywane przez czujniki realizuj okrelone zadania. Controllers (Kontrolery) — zajmuj kolumn rodkow i cz czujniki z akcjami. W prostych przypadkach mog wydawa si zb dne, ale tak naprawd s sercem logiki BGE. Peni rol bramek logicznych z wieloma wejciami od strony czujników. Skrypty Pythona, jeli s stosowane, przejmuj rol wanie kontrolerów.
PORUSZANIE POSTACI Prosty ruch spacerowy mona skonfigurowa za pomoc wszystkich trzech typów bloków logicznych. Aby to zrobi , wykonaj nast pujce czynnoci: 1. W kolumnie czujników kliknij przycisk Add (Dodaj) znajdujcy si obok przycisku Armature (Koci), aby utworzy nowy czujnik zwizany z obiektem armatury. Wspomniane przyciski s dost pne dopiero po zaznaczeniu obiektu armatury w oknie widokowym. Klikni cie przycisku Add (Dodaj) spowoduje wywietlenie bloku logicznego, takiego jak na rysunku 10.2. Domylnym typem czujnika jest Always (Cigo), co oznacza, e b dzie on zawsze wczony. Jednak tym razem b dzie nam potrzebny czujnik o innym dziaaniu. Poniewa posta ma by sterowana za pomoc klawiatury, wybierz czujnik typu Keyboard (Klawiatura). Lista dost pnych czujników jest pokazana na rysunku 10.3. W polu tekstowym obok tej listy moesz wpisa nazw bloku logicznego. Nie jest to obowizkowe, ale uatwia póniejsze operowanie blokami. RYSUNEK 10.2. Przyłączanie czujnika do obiektu armatury
2. Kliknij szary przycisk obok etykiety Key (klawisz). Na przycisku pojawi si napis Press a key (wcinij klawisz). Klawisz, który teraz wciniesz, zostanie przypisany do czujnika. Wcinij wi c klawisz ze strzak do góry; na przycisku powinien pojawi
si napis Uparrow (strzaka w gór ), tak jak na rysunku 10.4. 3. W kolumnie kontrolerów kliknij przycisk Add (Dodaj), aby utworzy nowy kontroler. Pojawi si blok logiczny, taki jak na rysunku 10.5. Domylnym typem jest tutaj And (I), co oznacza, e akcja podczona do takiego kontrolera z prawej strony b dzie uruchamiana tylko wtedy, gdy spenione zostan kryteria we wszystkich czujnikach przyczonych z lewej. Jest tu równie trzydzieci kwadratów podobnych do tych, które w nagówku okna widokowego reprezentuj warstwy. Tutaj reprezentuj one stany. Kady nowy kontroler ma domylnie przypisany stan pierwszy, co wida na rysunku. Przez wczanie i wyczanie poszczególnych stanów moesz wpywa na to, kiedy dany blok logiczny b dzie uywany (o stanach b dzie jeszcze mowa w dalszej cz ci rozdziau). Pocz czujnik z kontrolerem.
342 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.3. Czujnik typu Keyboard (Klawiatura)
RYSUNEK 10.4. Czujnik Keyboard (klawiatura) po przypisaniu klawisza ze strzałką w górę
RYSUNEK 10.5. Dodawanie bloku kontrolera
W tym celu kliknij mae kóeczko z prawej strony czujnika i nie zwalniajc przycisku myszy, przesu jej wskanik na podobne kóeczko z lewej strony kontrolera. Oba kóeczka poczy przerywana linia, co b dzie oznaczao, e bloki logiczne s ze sob sprz one.
POSUGIWANIE SI BLOKAMI LOGICZNYMI~ 343
4. Aby skompletowa cig bloków logicznych, utwórz jeszcze blok akcji. Domylnie b dzie to akcja typu Motion (ruch). Jak wida na rysunku 10.6, lista typów zdarze wyzwalanych przez blok akcji jest dosy duga. W naszym przypadku waciwym typem b dzie Action (akcja), poniewa chcemy, aby posta poruszaa si zgodnie z sekwencj spacerow (akcj) zdefiniowan w poprzednim rozdziale. Zapewne pami tasz akcj o nazwie Walk (spacer) obejmujc klatki od 1 do 20, któr tworzylimy w rozdziale 9., „Przygotowywanie scen dla silnika gier”. Wpisz jej nazw w polu AC, a w polach Sta (pocztek) i End (koniec) wpisz numery klatek pocztkowej i kocowej. RYSUNEK 10.6. Dodawanie akcji typu Action (akcja)
5. Z rozwijanej listy z trybami odtwarzania akcji, znajdujcej si na lewo od pola AC, wybierz opcj Loop Stop (Z zatrzymaniem). W tym trybie akcja jest odtwarzana tylko raz. Jeli wybierzesz tryb Loop End (Do ko ca), akcja b dzie odtwarzana tak dugo, jak dugo blok b dzie aktywny, a po jego wyczeniu odtwarzanie b dzie kontynuowane do ostatniej klatki. Natomiast w trybie Loop Stop (Z zatrzymaniem) akcja jest przerywana w chwili wyczenia bloku i w naszym przykadzie wanie o to chodzi. Ustawienia bloku Action (akcja) pokazane s na rysunku 10.7. RYSUNEK 10.7. Ustawienia dla akcji Walk (spacer)
344 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
6. Podcz akcj do kontrolera w taki sam sposób, w jaki czye czujnik z kontrolerem. Jeli teraz wczysz silnik gier (klawisz P) i wciniesz klawisz ze strzak do góry, posta powinna zacz wykonywa akcj spacerow. Pierwszy etap konstruowania mechanizmu odpowiedzialnego za sterowanie postaci masz za sob. 7. Na razie jednak posta maszeruje w miejscu. Aby zacz a si równie przemieszcza , musisz doda jeszcze akcj typu Motion (ruch), tak jak to pokazano na rysunku 10.8. Jeli u Ciebie osie armatury s skierowane tak samo jak u mnie, ruch do przodu b dzie oznacza przemieszczanie postaci w kierunku ujemnych wartoci osi Y. Blok akcji Motion (ruch) zawiera trzy kolumny wartoci. Kada z tych kolumn odpowiada jednej z osi ukadu wspórz dnych. W kolejnoci od lewej do prawej s to osie X, Y i Z. A zatem w drugiej kolumnie wiersza Loc (pooenie) wpisz warto ujemn. Pr dko postaci b dzie waciwa, jeli wpiszesz -0.05. Przycisk L widoczny po prawej stronie powinien by wcini ty, bo wtedy wszystkie wartoci z danego wiersza odnosz si do lokalnego ukadu wspórz dnych. RYSUNEK 10.8. Akcja Motion (ruch)
8. Aby umoliwi postaci wykonywanie zwrotów w prawo, dodaj czujnik reagujcy na wcini cie klawisza ze strzak w prawo i pocz go za porednictwem nowego kontrolera z takim samym jak poprzednio blokiem typu Action (akcja) i blokiem Motion (ruch) o ujemnej wartoci w wierszu Rot (obrót) i kolumnie Z (patrz rysunek 10.9). Analogicznie zestaw bloki dla obrotu w lewo i cofania si . RYSUNEK 10.9. Układ bloków logicznych dla skrętu w prawo
POSUGIWANIE SI BLOKAMI LOGICZNYMI~ 345
Jeli teraz wciniesz klawisz P, posta powinna posusznie reagowa na Twoje polecenia wydawane za pomoc klawiatury. Jej ruch nie b dzie jednak wyglda naturalnie — posta b dzie moga bez problemu przenika przez ciany labiryntu i inne przeszkody, a ponadto b dzie sprawiaa wraenie, jakby unosia si w powietrzu. Aby to wszystko poprawi , musisz przypisa jej pewne waciwoci dynamiczne.
PRZYPISYWANIE POSTACI WACIWOCI DYNAMICZNYCH Gdy tworzysz nowy obiekt, pewne podstawowe waciwoci fizyczne s mu przypisywane automatycznie. W tym domylnym stanie obiekt nie b dzie reagowa na dziaanie takich si jak grawitacja, ale bdzie stanowi przeszkod dla innych tego typu obiektów. Wczenie opcji Actor (Aktor) sprawia, e dla danego obiektu obliczane s siy wzajemnych oddziaywa z najbliszym otoczeniem. Z kolei wybranie opcji Dynamic (Dynamika) zmusza obiekt do poruszania si pod wpywem dziaajcych si. Opcja Ghost (Duch) czyni obiekt „przezroczystym” dla innych obiektów, ale nie wycza systemu wykrywania kolizji. Jest ona dost pna zarówno dla obiektów statycznych, jak i dynamicznych. Aby cakowicie wyczy wykrywanie kolizji z innymi obiektami, naley dla danego obiektu wybra opcj No collision (bez kolizji). Jeli obiekt jest zdefiniowany jako dynamiczny, mona mu przypisa parametry okrelajce jego mas i wspóczynniki tarcia. Podobne waciwoci maj obiekty zaklasyfikowane do kategorii cia sztywnych (opcja Rigid Body), wtedy jednak ich reakcj na dziaajce siy jest nie tylko ruch post powy, ale take obrotowy, dzi ki czemu wszelkie upadki i odbicia od napotkanych przeszkód wygldaj bardziej naturalnie. W przypadku symulacji ruchów cia sztywnych duy wpyw na zachowanie obiektów ma te wybór typu granic wykrywania zderze. Wszystko to opisaem dokadnie w ksice Bounce, Tumble, and Splash!, której przeczytanie polecam wszystkim zainteresowanym symulacjami zachowa cia sztywnych. W przypadku bohatera naszej gry opcja Rigid Body nie b dzie potrzebna. Jego posta
powinna osi na pododze i traktowa ciany labiryntu jako przeszkody, ale nie powinna si przewraca ani upada (nie mamy zdefiniowanych cykli animacyjnych dla takich ruchów). A zatem powinnimy jej przypisa waciwoci dynamiczne, ale bez waciwoci ciaa sztywnego. Aby to zrealizowa , wykonaj nast pujce czynnoci: 1. Poniewa siatka jest podporzdkowana armaturze, wystarczy zagwarantowa
dynamiczne zachowanie armatury. Wcz wi c tryb obiektowy, zaznacz armatur i w panelu otwieranym za pomoc przycisku kontekstowego Logic (logika) ustaw typ obiektu jako Dynamic (Dynamika) i wcz opcj Actor (Aktor), tak jak na rysunku 10.10. Wartoci parametrów moesz na razie pozostawi takie, jakie s. Dynamika armatury jest zatem okrelona. Aby uproci zadanie dla silnika gier, moesz cakowicie wyczy wykrywanie kolizji dla siatki, poniewa jest to ju przypisane do armatury. Wybierz wi c dla siatki opcj No collision (bez kolizji), tak jak na rysunku 10.11.
346 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.10. Przypisywanie właściwości dynamicznych armaturze
RYSUNEK 10.11. Wyłączanie kolizji dla siatki
POSUGIWANIE SI BLOKAMI LOGICZNYMI~ 347
2. Jeli teraz uruchomisz silnik gier (klawisz P), posta powinna opa na podog labiryntu. Tymczasem, jak wida na rysunku 10.12, posta opada zbyt g boko. Powodem tego s zbyt mae granice wykrywania kolizji. Jeli wywietlisz posta
w trybie Wireframe (Kontury), zobaczysz jej granice wykrywania kolizji w postaci okr gu narysowanego lini przerywan (patrz rysunek 10.13). Armatury mog mie tylko sferyczne granice wykrywania kolizji, a ich wielko mona ustali
za pomoc parametru Radius (promie). Jeli chcesz zobaczy , co si dzieje po uruchomieniu silnika gier, wcz wczeniej opcj Show Physics Visualization (poka wizualizacj fizyki) w menu Game (Gra), tak jak na rysunku 10.14. W rodowisku silnika b d wtedy wywietlane wszystkie granice kolizji, co zostao pokazane na rysunku 10.15. Ten sam rysunek znajdziesz te w kolorowej wkadce. Jak wida , armatura prawidowo wykrywa kolizj z podog labiryntu, ale zasi g wykrywania tej kolizji jest zbyt may. RYSUNEK 10.12. Postać zapada się w podłogę labiryntu
RYSUNEK 10.13. Obszar wykrywania kolizji dla armatury
348 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.14. Opcja Show Physics Visualization (pokaż wizualizację fizyki)
RYSUNEK 10.15. Tryb gry z włączoną wizualizacją fizyki
3. Aby rozwiza ten problem, zwi ksz promie granicy wykrywania kolizji dla armatury, tak aby przerywany okrg obj ca posta (patrz rysunek 10.16). Ja musiaem ustawi warto parametru Radius (promie) na 1.6. WIZUALIZACJA FIZYKI Opcja Show Physics Visualization (pokaż wizualizację fizyki) w menu Game (Gra), znajdującym się w nagłówku okna User Preferences (Ustawienia użytkownika), jest jednym z najbardziej przydatnych narzędzi do wyszukiwania błędów, jakie mamy do dyspozycji podczas pracy z BGE. Wykrywanie kolizji często wymaga bardzo dokładnego ustawienia. Wyświetlanie granic obszarów, w których kolizje są wykrywane przez poszczególne obiekty, znakomicie ułatwia dobór zarówno kształtów tych obszarów, jak i ich rozmiarów.
POSUGIWANIE SI BLOKAMI LOGICZNYMI~ 349
RYSUNEK 10.16. Ustalanie granic wykrywania kolizji
Ustawianie kamery Jeli przed wcini ciem klawisza P wczysz widok z kamery, albo gdy tworzysz gr w postaci samodzielnego pliku wykonywalnego, gra b dzie wywietlana tak, jak widzi j aktywna kamera. Istnieje kilka sposobów, aby zmusi kamer , by patrzya cigle na gównego bohatera. Najprostsza metoda polega na skierowaniu kamery w stron armatury i przypisaniu jej do tej armatury w roli obiektu podrz dnego. Wtedy ruchy kamery s bezporednio uzalenione od ruchów armatury. W niektórych przypadkach moe to by dobre rozwizanie, chocia uzyskany efekt jest raczej mao naturalny. Zazwyczaj chodzi jednak o to, aby kamera ledzia bohatera z pewnego dystansu i elastycznie reagowaa na wszelkie zmiany jego pooenia. Do takiego wanie sterowania kamer suy blok logiczny akcji typu Camera (kamera). Akcj Camera (kamera) moesz przypisa do obiektu kamery w sposób pokazany na rysunku 10.17. W tym przypadku uyem czujnika typu Always (Cigo), poniewa akcja Camera (kamera) powinna by cigle aktywna. Blok tej akcji zawiera pola edycyjne, w których mona okreli nazw obserwowanego obiektu oraz odlego minimaln, na jak moe si do tego obiektu zbliy , i maksymaln, na jak moe si od niego oddali , a take wysoko (Height), na jakiej powinna pozostawa . Ustalenie tych parametrów tak jak na rysunku pozwoli Ci uzyska gadki i bardziej naturalny ruch kamery ni wtedy, gdyby j przypisa bezporednio do ledzonego obiektu.
350 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.17. Zestaw bloków logicznych kierujących kamerę w stronę armatury
Waciwoci, komunikaty i stany Poza czujnikami, kontrolerami i akcjami system bloków logicznych zawiera jeszcze kilka dodatkowych elementów rozszerzajcych jego moliwoci. S to waciwoci, komunikaty i system stanów opracowany niedawno w ramach projektu Yo, Frankie!. Waciwoci (properties) su do przechowywania wartoci w rodowisku silnika gier. Peni tu rol analogiczn do tej, jak peni zmienne w zwykych j zykach programowania. Komunikaty (messages) umoliwiaj wymian informacji mi dzy blokami logicznymi, jeli nawet te nie s ze sob poczone. Przydaj si , gdy trzeba zsynchronizowa rozmaite akcje lub gdy jeden blok powinien przekaza informacje do wielu innych bloków. Stany zapewniaj dodatkowy poziom kontroli nad blokami logicznymi, umoliwiajc ich grupowe wczanie i wyczanie.
Wprowadzanie do gry zych charakterów Gra, któr tworzysz, jest prost gr labiryntow, w której gówny bohater powinien zebra
jak najwi cej skarbów, czyli obiektów w ksztacie stoka, ale przeszkadza mu w tym maj li czarownicy. W tym podrozdziale zajmiemy si sterowaniem wanie tymi postaciami. Nasz system sterowania b dzie uproszczon wersj systemu zaproponowanego przez czonka spoecznoci GlenderArtists.org o pseudonimie Mmph! Tamten system, zoony z duej liczby bloków logicznych, stanowi interesujcy przykad realizacji sztucznej inteligencji (AI) i warto go pozna w caoci (http://blenderartists.org/forum/showthread.php?t=100512). Autor wyszed daleko poza typowe zastosowania bloków logicznych, jako e do tworzenia systemów sztucznej inteligencji najlepiej nadaj si skrypty Pythona. Jednak uproszczona wersja tego rozwizania, jak zastosujemy do sterowania wrogimi czarownikami, b dzie doskona okazj do pokazania, jak dziaaj waciwoci i jak mona ich uy do sterowania zachowaniami bohaterów gry. Aby wykona ponisze wiczenie, moesz wykorzysta plik badguy_nologic.blend lub po prostu doczy obiekt o nazwie BadGuy do swojego pliku gry. Ostateczny rezultat
wiczenia jest zamieszczony w pliku badguy_logic.blend, natomiast ustawienia wst pne pokazano na rysunku 10.18. Wzy cieek s zwykymi szecianami rozcigni tymi do wysokoci porównywalnej z wysokoci czarowników. Jak zwykle podczas pracy z silnikiem gier, skalowanie przeprowad w trybie edycyjnym, aby zachowa skal obiektu równ 1. W panelu Mesh (Siatka) utworzyem pust tekstur dla tych szecianów, aby uczyni je bezcieniowymi w rodowisku silnika gier. Czerwony kolor nadaem im przez malowanie wierzchoków. Proponuj Ci utworzy najpierw jeden w ze, przypisa mu odpowiednie bloki logiczne, a potem skopiowa go trzykrotnie. Bloki logiczne s kopiowane wraz z obiektem, wi c unikniesz zestawiania tych bloków oddzielnie dla kadego w za.
WACIWOCI, KOMUNIKATY I STANY~ 351
RYSUNEK 10.18. Zły czarownik i cztery węzły ścieżek
BLOKI LOGICZNE WZÓW CIE EK W zy cieek posu nam do sterowania ruchem czarowników. Posta czarownika b dzie kierowana w stron okrelonego w za i gdy do niego dotrze, system sterujcy skieruje j do nast pnego w za. Po dotarciu do ostatniego w za zostanie skierowana do pierwszego i cay cykl rozpocznie si od nowa. W zom musisz przypisa pewne waciwoci fizyczne. Kady powinien by aktorem i duchem (patrz rysunek 10.19), aby inne obiekty mogy przez niego przechodzi , ale by równie kolizje z tymi obiektami mogy by rejestrowane. Jak wida na wspomnianym rysunku, w ze cieki ma dwie waciwoci. Do ich dodawania suy przycisk Add Property (dodaj waciwo ). Typ waciwoci ustalasz przez wybranie odpowiedniej pozycji z rozwijanej listy w wierszu odpowiadajcym danej waciwoci. W nast pnych polach wiersza moesz wpisa nazw i warto pocztkow
352 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.19. Fizyka i właściwości węzłów ścieżki
waciwoci. Przycisk D suy do wczania i wyczania wywietlania wartoci danej waciwoci w trybie gry, jeli przed uruchomieniem silnika gier wczona zosta opcja Show Debug Properties (Pokazuj debugowane proporcje1) w menu Game (Gra). To menu jest dost pne w nagówku okna User Preferences (Ustawienia uytkownika). Pierwsza waciwo ma nazw visible (widoczny) i jest typu cakowitego, o czym informuje opcja Int wybrana z listy rozwijanej. Warto pocztkowa jest równa 0. Ta waciwo posuy nam do przeczania widocznoci w za cieki w rodowisku silnika gier, jeli b dziemy musieli szuka powodów niewaciwego zachowania czarowników. Drug waciwo nazwaem pathnode (w ze cieki). Jej zadaniem jest tylko przechowywanie informacji o przeznaczeniu obiektu. Warto tej waciwoci nigdy nie b dzie odczytywana (sprawdzane b dzie tylko istnienie tej waciwoci dla danego obiektu), a zatem mona pozostawi jej domylny typ zmiennoprzecinkowy (Float) i warto pocztkow równ 0.000. Ukad bloków logicznych przeczajcych widoczno w za jest pokazany na rysunku 10.20. Czujnik typu Keyboard (klawiatura) reaguje na wcini cie klawisza I. Gdy ten klawisz zostanie wcini ty, nastpi uruchomienie akcji typu Property (Proporcja). Akcje tego typu wyst puj w trzech odmianach: Assign (przypisz), Add (dodaj) i Copy (kopiuj). Odmiana Assign (przypisz) pozwala przypisa danej waciwoci okrelon warto , Add (dodaj) zwi ksza lub zmniejsza warto waciwoci, a Copy (kopiuj) suy do kopiowania wartoci z innej waciwoci. W naszym przypadku zastosujemy opcj Add (dodaj) z parametrem Value (warto ) równym +1. Wcini cie klawisza I spowoduje wi c zwi kszenie wartoci waciwoci visible o jeden. Pozostae czujniki maj ustawiony typ Property (Proporcja). Su one do wyzwalania akcji, gdy dana waciwo przyjmie okrelon warto . Pierwszy z nich uczyni to, gdy waciwo visible przyjmie warto 0. Wyzwalana przez niego akcja typu Visibility (Widzialno) ma wczon opcj Invisible (niewidoczny), a zatem domylnie w ze cieki b dzie niewidoczny, poniewa warto pocztkowa waciwoci visible jest równa 0. Drugi czujnik reaguje na warto waciwoci visible równ 1 i wyzwala wtedy akcj Visibility (Widzialno) z wczon opcj Visible (widoczny). Ostatni czujnik czeka, a warto waciwoci visible zwi kszy si do 2 — wtedy uruchamia akcj typu Property (Proporcja) z ustawion opcj Assign (przypisz), która przypisuje waciwoci warto 0. W ten sposób przecznik wraca do stanu wyjciowego. 1
Oczywicie chodzi o waciwoci, a nie o jakie bliej nieokrelone proporcje. To samo dotyczy nazwy akcji przywoywanej w nast pnych akapitach — przyp. tum.
WACIWOCI, KOMUNIKATY I STANY~ 353
RYSUNEK 10.20. Przełącznik widoczności węzła
Po zestawieniu bloków logicznych dla pierwszego w za skopiuj jego obiekt trzy razy i rozstaw poszczególne egzemplarze, tak jak na rysunku. Zmie ich nazwy na 1, 2, 3 i 4 zgodnie z kolejnoci, w jakiej je ustawie.
BLOKI LOGICZNE CZAROWNIKÓW Aby uproci opis systemu logicznego sterujcego ruchami czarowników, podzieliem go na trzy etapy. Najpierw naley skonfigurowa fizyk i waciwoci obiektów. Odpowiednie ustawienia s pokazane na rysunku 10.21. Podobnie jak gówny bohater, czarownicy s dynamicznymi aktorami, ale bez cech typowych dla cia sztywnych. Maj dwie waciwoci typu cakowitego. Pierwsza z nich, o nazwie targ (cel), reprezentuje w ze, do którego czarownik ma si kierowa . Druga, inc (rosnco), b dzie suy do okrelania, czy czarownik ma w drowa od w za o niszym numerze do w za o wyszym numerze, czy te na odwrót. Waciwo wizard (czarownik) ma umoliwia innym obiektom, a szczególnie gównemu bohaterowi, identyfikacj tych obiektów jako wrogich czarowników. I na koniec waciwo bump (odbicie) b dzie okrela , czy po wykryciu kolizji z innym obiektem czarownik powinien odwróci kierunek swojego ruchu. Ukad logiczny dla podstawowego ruchu czarownika w kierunku zgodnym z numeracj w zów jest pokazany na rysunkach 10.22, 10.23, 10.24 i 10.25. Wszystkie cztery rysunki przedstawiaj ten sam ukad logiczny, ale na kadym z nich otwarte s inne w zy, dzi ki czemu moesz zobaczy ich ustawienia. Na rysunku 10.22 wida , e czujnik Always (Cigo) poczony jest z akcj Motion (Ruch). To zapewnia cigy ruch czarownika do przodu. Na rysunku 10.23 czujnik typu Property (Proporcja) wyzwala akcj Edit Object (Edycja obiektu) z wybran opcj Track to (podaj do) i obiektem docelowym o nazwie 1 (pole OB). Czujnik uaktywnia si , gdy warto waciwoci targ wynosi 1. A zatem gdy warto waciwoci targ jest równa 1, czarownik kieruje si (i porusza) w stron obiektu o nazwie 1. Podobne cigi bloków s utworzone dla przypadków, w których warto waciwoci targ jest równa 2, 3 i 4.
354 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.21. Fizyka i właściwości czarownika
RYSUNEK 10.22. Układ logiczny ruchu czarownika
RYSUNEK 10.23. Układ logiczny kierowania czarownika do węzła
RYSUNEK 10.24. Układ logiczny wybierania kolejnego węzła
WACIWOCI, KOMUNIKATY I STANY~ 355
RYSUNEK 10.25. Układ logiczny przejścia od ostatniego do pierwszego węzła
Rysunek 10.24 przedstawia sposób zwi kszania wartoci waciwoci targ. Czujnik Ray (Promie ) reaguje na zderzenie czarownika z w zem i wyzwala wtedy akcj Property (Proporcja) typu Add (dodaj), która zwi ksza warto waciwoci targ o jeden (+1). Gdy waciwo ta osiga warto 5, uruchamiana jest akcja Property (Proporcja) typu Assign (przypisz) przypisujca waciwoci warto 1 i czarownik znów zaczyna poda
w kierunku w za o numerze 1. Pozostaa jeszcze do omówienia realizacja odwracania kierunku ruchu czarownika ze zgodnego z ruchem wskazówek zegara na przeciwny. Jak ju wspominaem, informacja o tym ma by zakodowana w wartoci waciwoci inc. Zmiana tej wartoci, a tym samym odwrócenie kierunku ruchu czarownika powinno nastpi po jego zderzeniu si z obiektem majcym przypisan waciwo bump (maj j wszyscy czarownicy). Kady czarownik jest obiektem dynamicznym, a zatem zderzenia mi dzy nimi mog prowadzi do wyrzucania ich z wyznaczonej trasy i wpychania w miejsca, z których nie b d w stanie trafi
do waciwego w za. W takich sytuacjach pomocne bywa losowe zmienianie kierunku ruchu. Pozwala ono nie tylko uwalnia si obiektom z puapek, w jakich si znalazy, ale równie wprowadza element nieprzewidywalnoci ich ruchu, co dodatkowo zwi ksza atrakcyjno gry. Aby co takiego zrealizowa , dodaj do sceny obiekt Empty (Pusty) i skonfiguruj dla niego bloki logiczne tak, jak pokazano na rysunku 10.26. Zastosowany tu czujnik typu Random (Przypadek) emituje sygna wyjciowy rednio co 100 klatek. Sygna ten uruchamia akcj typu Message (Wiadomo) z parametrem Subject (temat) o wartoci switch (przeczanie). Z kolei czujnik pokazany na rysunku 10.27 uaktywnia si w chwili wysyania powyszej wiadomoci. W kompletnym zestawie bloków logicznych ruchu czarownika czujnik ten wywouje zmniejszenie lub zwi kszenie wartoci waciwoci targ, aby odwróci dotychczasowy kierunek ruchu. RYSUNEK 10.26. Układ logiczny losowego wysyłania komunikatów przez obiekt Empty (Pusty)
RYSUNEK 10.27. Czujnik czarownika reagujący na komunikaty
356 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
Peny zestaw bloków logicznych dla ruchu czarownika jest pokazany na rysunku 10.28. Poza omówionymi ju blokami s tu take takie, które maj sterowa czarownikiem podajcym w przeciwnym kierunku — zgodnie z malejcym (decrementing) porzdkiem w zów. Liczba bloków jest tu zbyt dua, aby je pokaza wszystkie rozwini te, a rozbudowany system powiza mi dzy nimi równie nie uatwia analizy caoci. Jeli jednak chcesz pozna wszystkie szczegóy tego systemu logicznego, znajdziesz go w pliku game.blend na pycie doczonej do ksiki. RYSUNEK 10.28. Pełna logika ruchu czarownika
Gdy patrzy si na plansz gry z góry, szybko daj si zauway saboci algorytmu sterowania czarownikami. Czarownikom do cz sto zdarza si utkn w jednym miejscu na duszy czas, a poza tym ich ruch jest zbyt przewidywalny. Jeli jednak zrozumiae opisane tu techniki, nie powiniene mie problemów z opracowaniem bardziej wyrafinowanego ukadu sterowania tymi obiektami.
Zbieranie skarbów i gromadzenie punktów Jeli otworzysz plik game.blend zamieszczony na pycie doczonej do ksiki, zobaczysz peny ukad gry, taki jak na rysunku 10.29 (wersja kolorowa znajduje si we wkadce). Na planszy umieciem trzech czarowników, przy czym jeden z nich porusza si w kierunku odwrotnym ni dwaj pozostali (warto pocztkow jego waciwoci inc ustawiem na 1, a pozostaym przypisaem 0). Znajdziesz tam równie osiem ótych stoków i trzy zielone kule. Celem gry jest zebranie stoków i unikanie spotka z czarownikami. Jeli zbierzesz wszystkie stoki, ujrzysz komunikat z gratulacjami i gra si zakoczy. Jeli spotkasz si z czarownikiem, gra si zakoczy, ale kocowy komunikat nie b dzie ju tak miy. Zielone kule umoliwiaj wykonywanie podskoków w celu obejrzenia ukadu labiryntu i sprawdzenia, gdzie znajduj si stoki. Kule te daj take ochron przed zymi mocami czarowników — oczywicie tylko przez okrelony czas. Aby zrealizowa te funkcje, trzeba wyposay w odpowiedni logik stoki i kule, a take doda nowe bloki logiczne do obiektu Empty (Pusty). Realizacja tymczasowej ochrony uzyskiwanej po zebraniu kuli b dzie wymagaa uycia stanów w ukadzie logicznym gównego bohatera.
WACIWOCI, KOMUNIKATY I STANY~ 357
RYSUNEK 10.29. Ostateczny układ gry
UKADY LOGICZNE STO KA, KULI I OBIEKTU PUSTEGO Logika stoka jest bardzo prosta, co wida na rysunku 10.30. Czujnik typu Near (Blisko) z parametrem Dist (Odlego) o wartoci 0.25 okrela, czy posta jest wystarczajco blisko, aby stoek móg by zabrany. Posta gównego bohatera jest rozpoznawana na podstawie waciwoci o nazwie char (posta ). Gdy oba warunki zostan spenione, czujnik uruchomi dwie akcje. Pierwsza usuwa stoek ze sceny. Jest to akcja typu Edit Object (Edycja obiektu) z parametrem End Object (usu obiekt). Druga akcja jest typu Message (Wiadomo). Wysya ona komunikat o treci cone_touch (dotkni cie stoka) przeznaczony dla obiektu Empty (Pusty), który na tej podstawie zwi kszy licznik punktów o jeden (patrz rysunek 10.31).
358 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.30. Logika stożka
RYSUNEK 10.31. Logika obiektu pustego
Logika kuli jest niemal taka sama jak logika stoka (zostaa pokazana na rysunku 10.32). Inna jest tu tylko tre wysyanego komunikatu. W tym przypadku jest to ball_touch (dotkni cie kuli). Komunikat ten przejmuje armatura gównego bohatera, gdzie wczany jest stan ochrony przed czarownikami. RYSUNEK 10.32. Logika kuli
KORZYSTANIE ZE STANÓW O stanach wspominaem ju przy okazji opisywania kontrolerów, ale do tej pory jeszcze z nich nie korzystalimy. Stany su do okrelania, które kontrolery powinny by aktywne w danej chwili. Kady kontroler i zwizane z nim czujniki oraz akcje mog by przypisane do jednego z trzydziestu stanów, które mona uaktywnia w dowolnych kombinacjach. Do wczania i wyczania stanów su akcje typu State (stan). Panel stanów pokazany jest na rysunku 10.33. Kady z trzydziestu szarych kwadratów reprezentuje jeden stan. Ciemniejszy kolor kwadratu (na rysunku pierwszy kwadrat w górnym rz dzie) oznacza, e stan jest zaznaczony i zwizane z nim bloki logiczne s wywietlane. Zaznaczanie stanów odbywa si tak samo jak zaznaczanie warstw w oknie widokowym — jeli chcesz zaznaczy kilka stanów, musisz je klikn lewym przyciskiem myszy przy wcini tym klawiszu Shift. Kropka wewntrz kwadratu oznacza, e dany stan ma przypisane bloki logiczne. Na rysunku wida , e trzy pierwsze stany w górnym rz dzie maj przypisane bloki, a pozostae nie. Kropkami czarnymi oznaczane s stany wchodzce w skad pocztkowej maski stanów. Takie stany s uaktywniane w chwili
WACIWOCI, KOMUNIKATY I STANY~ 359
RYSUNEK 10.33. Panel stanów
rozpocz cia gry. Do ich szybkiego zaznaczania suy przycisk Ini (pocztkowe). Natomiast przycisk All (wszystkie) umoliwia szybkie zaznaczenie wszystkich stanów. Po lewej stronie znajduje si przycisk State (stan), który jest waciwie list rozwijan. Zawiera ona mi dzy innymi polecenie Store init state (zapisz stan pocztkowy), które zapisuje zaznaczone stany jako mask pocztkow. Do utworzenia efektu tymczasowej ochrony przed czarownikami potrzebne nam b d trzy stany. Pierwszy b dzie zawiera logik gównego bohatera stworzon do tej pory oraz logik tego, co ma si dzia po zetkni ciu z zielon kul. Stan ten b dzie uaktywniany w chwili rozpocz cia gry. Jak wida na rysunku 10.34, zetkni cie si gównego bohatera z zielon kul powoduje wyczenie stanu drugiego — akcja State (stan) z funkcj Sub (odejmij) — i wczenie stanu trzeciego — akcja State (stan) z funkcj Add (dodaj). RYSUNEK 10.34. Bloki logiczne głównego bohatera przypisane do stanu pierwszego
Stan drugi, pokazany na rysunku 10.35, b dzie zawiera logik koczenia gry, gdy bohater zderzy si z czarownikiem. Ten stan równie b dzie aktywny od samego pocztku, bo reprezentuje domylne warunki gry. Wyczenie go umoliwi bohaterowi kolidowanie z czarownikami bez konsekwencji w postaci zakoczenia gry. RYSUNEK 10.35. Bloki logiczne głównego bohatera przypisane do stanu drugiego
Trzeci stan b dzie zawiera czujnik Always (Cigo) poczony z akcj Motion (Ruch) realizujc podskoki gównego bohatera. Podskoki b d trway tak dugo, jak dugo stan ten b dzie aktywny. Czujnik Delay (opónienie) z wartoci opónienia ustawion na 1000 klatek b dzie uruchamia dwie akcje typu State (stan), z których pierwsza b dzie wcza ponownie stan drugi, a druga wyczy swój wasny stan, czyli trzeci. Ukad logiczny tego stanu jest pokazany na rysunku 10.36.
360 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.36. Bloki logiczne głównego bohatera przypisane do stanu trzeciego
Jeli zaznaczysz wszystkie trzy stany, b dziesz móg obejrze ich logik w caej okazaoci. Po wywietleniu wszystkich stanów ukad bloków logicznych dla gównego bohatera wyglda tak jak na rysunku 10.37. RYSUNEK 10.37. Pełny układ logiczny głównego bohatera
Tworzenie efektów specjalnych za pomoc tekstur Efekty specjalne mona tworzy take za pomoc tekstur, ale dla niezbyt wprawnych uytkowników Blendera techniki takie mog by nieznane. W tym podrozdziale poka , jak mona utworzy dynamiczny tekst i animowan tekstur .
Tworzenie tekstu dynamicznego Trójwymiarowy tekst mona zastosowa w rodowisku silnika gier, ale wczeniej trzeba go przeksztaci w siatk . W tym celu wystarczy wczy tryb obiektowy i wcisn
klawisze Alt+C. Gdy ju to zrobisz, sprawd, czy normalne s zwrócone we waciw stron . Moe si bowiem okaza , e po wczeniu silnika gier tekst nie b dzie widoczny. Taki tekst mona wykorzystywa w grach, ale jeli ma to by tekst dynamiczny, czyli taki, którego tre zmienia si w trakcie gry w zalenoci od jej przebiegu, musimy zastosowa
inne rozwizanie. Zamiast tekstu siatkowego musimy uy odpowiedniej tekstury.
TWORZENIE EFEKTÓW SPECJALNYCH ZA POMOC TEKSTUR~ 361
Do utworzenia tekstu teksturowego potrzebna jest czcionka zapisana w postaci odpowiednio przygotowanego obrazu. Przykad takiej czcionki znajdziesz w pliku arialbd.tga zamieszczonym na pycie doczonej do ksiki. Oczywicie moesz te samodzielnie przygotowa odpowiedni obraz, przeksztacajc w tekstur dowoln czcionk TrueType za pomoc aplikacji FTBlender, która te jest na pycie doczonej do ksiki.
PRZYGOTOWYWANIE CZCIONKI Przygotowanie czcionki jest proste, jeli robi si to w systemie Windows przy uyciu programu FTBlender. Po rozpakowaniu pliku FTBlender.zip otrzymasz dwa pliki o nazwach ftblender.exe i ftblender.blend. W tym samym folderze umie plik z wybran przez siebie czcionk TrueType (patrz rysunek 10.38). Nast pnie kliknij dwukrotnie plik ftblender.blend, aby go otworzy , po czym uruchom zawarty w nim skrypt — po prostu wcinij klawisze Alt+P. Wywoany w ten sposób program ftblender.exe automatycznie wygeneruje waciwy obraz dla wskazanej czcionki. Na koniec wcinij klawisz F2, aby zapisa ten obraz w formacie Targa (patrz rysunek 10.39). RYSUNEK 10.38. Folder z czcionką TrueType i programem FTBlender
RYSUNEK 10.39. Zrasteryzowana czcionka zapisana w pliku Targa
362 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
TWORZENIE TEKSTU DYNAMICZNEGO PRZY U YCIU TEKSTUROWANEJ CIANKI Aby utworzy tekst dynamiczny przy uyciu teksturowanej cianki, wykonaj nast pujce czynnoci: 1. Dodaj do sceny paszczyzn . Najlepiej b dzie, jeli zrobisz to w widoku z kamery (klawisz 0 na klawiaturze numerycznej) po uprzednim wczeniu opcji Aligned to View (zgodnie z widokiem) w sekcji Add new objects (dodaj nowe obiekty) nalecej do kontekstu Edit Methods (metody edycji) okna User Preferences (Ustawienia uytkownika). Ostatecznie powiniene otrzyma paszczyzn tak jak na rysunku 10.40. Nie skaluj jej. RYSUNEK 10.40. Dodawanie płaszczyzny do sceny
2. Podziel obszar roboczy i otwórz dodatkowo okno UV/Image Editor (Edytor UV/Obrazów). W oknie widokowym wcz tryb edycji. W oknie edytora obrazów wybierz polecenie Image/Open (Obraz/Otwórz) i otwórz przygotowany wczeniej plik Targa. W oknie widokowym wcz tryb wywietlania Textured (Z teksturami) — moesz to zrobi
przy uyciu klawiszy Alt+Z. Obszar roboczy powinien teraz wyglda tak jak na rysunku 10.41. W oknie widokowym powinna by widoczna paszczyzna z naoon tekstur czcionki. 3. W trybie edycyjnym przeskaluj mapowanie tak, aby na paszczynie widoczny by tylko znak @. Ramk mapowania dopasuj dokadnie do znaku i w razie potrzeby odwró j, aby znak nie by widoczny do góry nogami (patrz rysunek 10.42). Wane jest, aby zrobi to w trybie edycyjnym i nie zmienia ksztatu paszczyzny w trybie obiektowym. 4. Upewnij si , e cianka paszczyzny jest aktywna. W tym celu wcz tryb zaznaczania cianek i kliknij ciank prawym przyciskiem myszy. O tym, czy cianka jest aktywna, wiadczy widoczna na niej siatka biaych punkcików. Sprawd to dokadnie, bo aktywno cianki jest warunkiem koniecznym powodzenia na tym etapie.
TWORZENIE EFEKTÓW SPECJALNYCH ZA POMOC TEKSTUR~ 363
RYSUNEK 10.41. Nakładanie tekstury z czcionką na płaszczyznę
RYSUNEK 10.42. Mapowanie płaszczyzny na symbolu @
Jeli cianka jest aktywna, w kontekcie przycisku Editing (edytowanie) dost pny jest panel Texture Face (teksturowana cianka). Opcje tego panelu ustaw tak, jak pokazano na rysunku 10.43. Szczególnie wane jest wczenie opcji Text (Tekst) i Alpha (alfa). RYSUNEK 10.43. Ustawienia w panelu Texture Face (teksturowana ścianka)
364 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
5. W trybie obiektowym kliknij przycisk kontekstowy Logic (logika) i dodaj paszczynie now waciwo typu String (acuch). Nazw waciwoci zmie na Text (tekst), a w polu wartoci wpisz tekst, który ma by widoczny w grze. Ja wpisaem MyText, co wida na rysunku 10.44. Z kolei na rysunku 10.45 wida , jak wpisany cig znaków jest wywietlany w oknie widokowym. Przeszkadza tutaj znak @ na paszczynie, ale tym si nie przejmuj — w rodowisku silnika gier nie b dzie widoczny. RYSUNEK 10.44. Właściwość Text (tekst)
RYSUNEK 10.45. Tekst dynamiczny
Tworzenie animowanych tekstur Jeli przyjrzysz si z bliska postaciom czarowników z naszej gry (popatrz na rysunek 10.46 lub po prostu uruchom gr z pyty doczonej do ksiki), zauwaysz, e mi dzy ich r kami widoczne s wyadowania elektryczne. Efekt ten wykonaem w formie animowanej tekstury naoonej na pojedyncz ciank .
TWORZENIE EFEKTÓW SPECJALNYCH ZA POMOC TEKSTUR~ 365
RYSUNEK 10.46. Zelektryfikowany czarownik
Proces tworzenia tekstur UV dla silnika gier (i nie tylko) ju poznae, ale musisz te wiedzie , e rónym cz ciom siatki tego samego modelu mona przypisa róne tekstury. Gdy rozwijasz siatk przy uyciu klawisza E w oknie UV/Image Editor (Edytor UV/Obrazów), tylko zaznaczone cianki s rozwijane i bior udzia w mapowaniu. Na rysunku 10.47 pokazana jest siatka czarownika zaznaczona w trybie edycyjnym. Do zaznaczenia nie naley tylko paszczyzna czca r ce czarownika. Rozwini cie tej siatki jest pokazane na rysunku 10.48 wraz z tekstur. Animowane tekstury dziaaj na zasadzie kodowania klatek animacji w jednym obrazie. W omawianym przykadzie klatki obraz z tekstur zawiera 10 klatek uoonych jedna przy drugiej. Jedna z klatek tej „elektrycznej” animacji jest pokazana na rysunku 10.49. Pozostaych 9 podobnych obrazów wykonaem w GIMP-ie i zapisaem w plikach PNG z kanaami alfa (widoczna na rysunku szachownica reprezentuje przezroczysto ). Kady obraz ma szeroko 420 pikseli. Aby odtworzy t animacj w silniku gier, trzeba wszystkie obrazy umieci jeden obok drugiego w tym samym pliku. Rozmieszczenie obrazów musi by bardzo precyzyjne — z dokadnoci do jednego piksela. Uzyskana w ten sposób tekstura ma szeroko
4200 pikseli. Na rysunku 10.50 pokazany jest model czarownika z aktywn i zaznaczon ciank uku elektrycznego, a na rysunku 10.51 wida okno UV/Image Editor (Edytor UV/Obrazów) z otwartym obrazem animowanej tekstury. Zauwa, e tylko pierwsza „klatka” animacji, czyli fragment obrazu o szerokoci 420 pikseli, jest mapowana na ciank . Dokadne ustawienie mapowania w oknie UV/Image Editor (Edytor UV/Obrazów) jest moliwe po wybraniu opcji Image Properties (waciwoci obrazu) z menu View (Widok).
366 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.47. Zaznaczona siatka sylwetki czarownika
RYSUNEK 10.48. Mapowanie tekstury czarownika
TWORZENIE EFEKTÓW SPECJALNYCH ZA POMOC TEKSTUR~ 367
RYSUNEK 10.49. Oryginalny obraz łuku elektrycznego
RYSUNEK 10.50. Aktywna i zaznaczona ścianka łuku elektrycznego
RYSUNEK 10.51. Mapa UV łuku elektrycznego
Jeli wtedy zaznaczysz jaki wierzchoek, moesz ustali jego pooenie przez wpisanie odpowiednich wspórz dnych X i Y. W tym konkretnym przypadku wierzchoki z lewej strony powinny mie wspórz dn X równ 0, a dla wierzchoków po prawej wspórz dna ta powinna wynosi 420.
368 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
Aby zakoczy tworzenie animowanej tekstury, trzeba jeszcze otworzy okno dialogowe Real-time Properties (parametry czasu rzeczywistego) dost pne równie za porednictwem menu View (Widok) i dokona w nim ustawie zgodnie z rysunkiem 10.52. Opcje Anim (Animacja) i Tiles (kafelki) powinny by obie wczone. Parametry Start (pocztek) i End (koniec) powinny mie wartoci, odpowiednio: 1 i 10, jako e animacja ma dziesi klatek. Parametr Speed (szybko ) mona ustawi na 12 (12 klatek na sekund wystarczy dla tego typu animacji). W kolumnie Tiles (kafelki) warto X powinna wynosi 10, bo to b dzie oznaczao, e dziesi klatek jest uoonych poziomo jedna obok drugiej. I ostatnia ju czynno to ustawienie opcji w panelu Texture Face (teksturowana cianka) zgodnie z rysunkiem 10.53. Oprócz oczywistych opcji Tiles (kafelki) i Alpha (alfa) trzeba te wczy opcj Twoside (dwustronnie), jeli tekstura ma by widoczna zarówno z przodu, jak i z tyu cianki. RYSUNEK 10.52. Parametry czasu rzeczywistego
RYSUNEK 10.53. Ustawienia w panelu Texture Face (teksturowana ścianka)
Gdy zrobisz to wszystko i wciniesz klawisz P, aby uruchomi silnik gier, animowana tekstura zacznie y swoim wasnym yciem.
PRACA Z DWIKIEM W BGE~ 369
WIAT BLENDERA GRA BORO-TORO WYKONANA PRZY UYCIU BGE
ZDOBYWA NAGRODY
Jedną z nagród w konkursie Dare to Be Digital 2008 (organizowany w Zjednoczonym Królestwie konkurs na najlepszą grę komputerową stworzoną przez studentów) zdobyła Boro-Toro — pięknie zaprojektowana gra platformowa z poziomym przewijaniem i obsługą kontrolera Wii. Grę skonstruowali — przy użyciu biblioteki Bullet wbudowanej w Blendera — studenci uniwersytetu w Wolverhampton zrzeszeni pod nazwą DarkMatter Designs. Każdy członek zespołu odpowiadał za określony obszar projektowania i produkcji gry. Zgodnie z regulaminem konkursu prace trwały 10 tygodni, a uczestniczyli w nich: Adam Westwood (planowanie całości, projektowanie i wykonywanie tekstur oraz elementów interfejsu), Graham Ranson (programowanie), Matthew Booton (programowanie i komponowanie), Owen Schwehr (animacja i grafika) oraz Yves Wheeler (programowanie). Gdy rozpoczynali realizację swojego projektu, nie mieli żadnego doświadczenia w posługiwaniu się Blenderem. Cały przebieg pracy dokumentowali na swoim wideoblogu, który można obejrzeć w serwisie YouTube pod adresem: www.youtube.com./darkmatterdesigns Zwiastun gry, wywiad z jednym z jej twórców oraz łącze do samej gry znajdziesz na stronie: www.blendernation.com/2008/09/17/boro-toro-blender-game-a-winner-in-british-dare-to-bedigital-contest/ Jako zdobywczyni jednej z trzech głównych nagród gra Boro-Toro została nominowana do nagrody Brytyjskiej Akademii Sztuk Filmowych i Telewizyjnych (BAFTA) w kategorii gier wideo. Wyniki mają być ogłoszone w marcu 2009.
Praca z d wikiem w BGE
adne narz dzie do tworzenia gier nie byoby kompletne, gdyby nie umoliwiao czenia efektów wizualnych z dwi kowymi. W Blenderze opcja taka oczywicie istnieje i jest nawet mocno rozbudowana. Teraz wanie chciabym Ci zaprezentowa podstawy tworzenia trójwymiarowych efektów akustycznych. Aby utworzy prosty efekt dwi kowy, wykonaj nast pujce czynnoci: 1. Uruchom now sesj Blendera i pozostaw domylny szecian na swoim miejscu. Aby móc operowa dwi kami w BGE, musisz otworzy ich pliki w Blenderze. Podziel wi c obszar roboczy na dwie cz ci i w jednej z nich otwórz okno edytora dwi ku przez wybranie opcji Audio Window (okno audio) z menu rozwijanego przyciskiem Window type (typ okna), tak jak na rysunku 10.54. 2. Z menu rozwijanego w nagówku okna Audio wybierz polecenie Open New (Otwórz) i za pomoc przegldarki plików odszukaj na dysku twardym skopiowany wczeniej z pyty plik o nazwie bubbles.wav. Po otwarciu pliku jego zawarto b dzie wyglda
tak jak na rysunku 10.55. 3. W oknie widokowym zaznacz szecian i skonfiguruj dla niego ukad logiczny odtwarzajcy dwi ki. Zastosuj czujnik typu Always (Cigo), kontroler And (I) oraz akcj Sound (Dwik) z nazw pliku otwartego w oknie Audio wpisan w polu SO. Jako tryb odtwarzania wybierz Loop Ping Pong (p tla ping-pong), tak jak na rysunku 10.56. Dwi k b dzie odtwarzany cyklicznie, na przemian w obu kierunkach. Dzi ki temu nie b d syszane gwatowne przejcia mi dzy kolejnymi cyklami odtwarzania. Wcinij klawisz P, a usyszysz bulgotanie bbelków.
370 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
RYSUNEK 10.54. Otwieranie okna Audio
RYSUNEK 10.55. Plik .wav w oknie Audio
RYSUNEK 10.56. Układ logiczny odtwarzania dźwięku
4. Aby utworzy efekt dwi ku 3D, dodaj prosty ukad logiczny sterujcy ruchem szecianu. Zastosuj cztery czujniki typu Keyboard (Klawiatura) dla klawiszy ze strzakami i pocz je z akcjami Motion (Ruch) przesuwajcymi szecian wzdu osi X i Y. Taki wanie ukad jest pokazany na rysunku 10.57. Teraz b dziesz móg „jedzi ” szecianem po caej scenie. 5. Na koniec otwórz panel Sound (dwi k) nalecy do subkontekstu Sound block buttons (przyciski bloku dwi kowego) i pokazany na rysunku 10.58. (Dost p do tego panelu moesz uzyska take w efekcie czterokrotnego wcini cia klawisza F12). Tutaj znajdziesz parametry dwi ku zapisanego w pliku .wav, który wczeniej otworzye. Kliknij przycisk, aby uzyska efekt dwi ku 3D.
PODSUMOWANIE~ 371
RYSUNEK 10.57. Logika ruchu sześcianu
RYSUNEK 10.58. Włączanie dźwięku 3D
Ustawienia dwi ku 3D s ju gotowe. Jeli teraz uruchomisz silnik gier, okae si , e nat enie tego dwi ku wzrasta wraz ze zblianiem si szecianu do kamery. Aby zaobserwowa ten efekt, musisz przed uruchomieniem silnika wczy widok z kamery (klawisz 0 na klawiaturze numerycznej). Teraz, gdy znasz ju podstawy manipulowania dwi kiem w rodowisku BGE, moesz spróbowa poeksperymentowa samodzielnie. Szczególnie pouczajce mog by testy poszczególnych opcji dost pnych w akcji Sound (Dwik). Szersze moliwoci w zakresie operowania dwi kiem umoliwia Python i jego GameLogic API, ale tymi zagadnieniami zajmiemy si w rozdziale 11.
Podsumowanie Steruj postaciami i caymi scenami za pomoc bloków logicznych. Interaktywne sterowanie obiektami umoliwia rozbudowany system bloków logicznych. Przy uyciu czujników, kontrolerów i akcji mona wywoywa rozmaite zdarzenia w odpowiedzi na rónego typu sygnay wejciowe. Opanuj to W tym rozdziale zobaczye, jak mona zmusi posta , by maszerowaa do przodu i skr caa w prawo. Utwórz podobn posta , która b dzie potrafia równie skr ca w lewo i maszerowa do tyu. Twórz zoone interakcje przy uyciu waciwoci, komunikatów i stanów. System bloków logicznych, z jakim mamy do czynienia w rodowisku BGE, umoliwia (podobnie jak j zyki programowania) przechowywanie rozmaitych wartoci w formie waciwoci, wymian informacji mi dzy blokami za pomoc komunikatów i wczanie
372 ~ROZDZIA 10. URUCHAMIANIE SILNIKA GIER
oraz wyczanie okrelonych bloków przy uyciu stanów. Dzi ki tym funkcjom mona tworzy nawet bardzo zoone systemy interakcyjne; jedynym ograniczeniem jest graficzna natura samych bloków logicznych. Opanuj to Zmodyfikuj ukad logiczny sterowania czarownikiem, aby kierunek jego ruchu zmienia si po kadym zderzeniu z gównym bohaterem lub z innym czarownikiem. Stosuj tekstury do tworzenia dynamicznych tekstów i dwuwymiarowych animacji na potrzeby gier. Za pomoc tekstur mona w BGE tworzy rozmaite efekty specjalne. Przykadami takich efektów mog by teksty dynamiczne o treci aktualizowanej przez bloki logiczne oraz animacje tworzone przy uyciu specjalnie mapowanych tekstur i odpowiednio dobranych parametrów. Opanuj to Utwórz dwuwymiarow animacj cyklu spacerowego, stosujc metod opisan w tym rozdziale. Wykorzystaj ortogonalne renderingi maszerujcej postaci, któr tworzye w ramach wiczenia z rozdziau 9., a nast pnie umie te renderingi w jednym obrazie (moesz to zrobi w dowolnym programie graficznym, na przykad w Photoshopie lub GIMP-ie). Obraz zrzutuj na paszczyzn , aby w rodowisku BGE otrzyma pask sylwetk maszerujcej postaci. Wzbogacaj swoje gry efektami d wikowymi. Dwi kami mona manipulowa w BGE za pomoc akcji typu Sound (Dwik). Istnieje te specjalna funkcja, która automatycznie uzalenia nat enie dwi ku od odlegoci jego róda od kamery. Opanuj to Gotowe i darmowe pliki z rozmaitymi dwi kami znajdziesz w internecie pod adresem www.freesounds.org. Wyszukaj kilka interesujcych efektów i post pujc wedug wskazówek z ostatniego przykadu, dodaj dwi ki 3D do obiektów poruszajcych si w przestrzeni trójwymiarowej.
Rozdzia 11.
czenie potgi Pythona z moliwociami silnika gier W rozdziale 10., „Uruchamianie silnika gier”, miae okazj zobaczy , jak pot nym narz dziem do tworzenia interaktywnych wizualizacji i gier jest blenderowy silnik gier (BGE). Dzi ki systemowi bloków logicznych nawet artyci niemajcy adnego dowiadczenia w programowaniu mog „programowa ” funkcje interaktywne. Jednak system ten ma te swoje ograniczenia. Gdy ukad logiczny wymaga stosowania wielu bloków i pocze mi dzy nimi, cao staje si mao czytelna i trudno jest znale
ewentualne b dy. Bloki logiczne nie mog korzysta z zewn trznych danych i wiele polece Blendera nie ma swoich odpowiedników w postaci tych bloków. Na szcz cie silnik gier doskonale wspópracuje z Pythonem, a to, jak ju wiemy, znacznie poszerza nasze moliwoci. Z tego rozdziau dowiesz si , jak:
zast powa zoone ukady bloków logicznych kilkoma wierszami kodu Pythona, przy uyciu Pythona tworzy efekty niemoliwe do uzyskania za pomoc samych bloków logicznych, tworzy niepowtarzalne scenerie gier z efektami dwi kowymi i wieloma oknami widokowymi.
Od bloków logicznych do Pythona W wielu przypadkach bloki logiczne w zupenoci wystarczaj do zaprogramowania logicznych aspektów gry. Zalet tych bloków jest to, e ich stosowanie nie wymaga umiej tnoci programowania. Nie oznacza to wcale, e nie korzystaj z nich programici — bloki pozwalaj na szybk prac i obsuguj wiele istotnych funkcji Blendera. S jednak sytuacje, w których potrzebna jest wi ksza elastyczno . Widzielimy ju przecie, e nawet przy niezbyt rozbudowanej grze system bloków szybko stawa si niepor czny i trudny do rozszyfrowania. Poza tym wiele funkcji jest w tym systemie niedost pnych, a wi c i tak trzeba si ga po Pythona, aby je zaprogramowa . Równie zwarta natura bloków, która z jednej strony jest ich zalet, czasami okazuje si wad, poniewa nie zezwala na korzystanie z zasobów zewn trznych i wtedy równie trzeba korzysta z pot gi Pythona. Zaimplementowany w BGE interpreter Pythona umoliwia programowanie caych systemów logiki gier bezporednio w tym j zyku. Jednak duym uproszczeniem byoby stwierdzenie, e skryptami Pythona mona cakowicie zastpi bloki logiczne.
374 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
Tak naprawd w ten sposób mona tylko poszerzy moliwoci systemu bloków. Przy pisaniu skryptów nadal musisz korzysta z bloków logicznych, ale moesz ograniczy
ich liczb i wyposay je w nowe funkcje.
Sterowanie postaci za pomoc Pythona Z punktu widzenia systemu bloków logicznych skrypt Pythona w BGE peni rol kontrolera. Jednak zamiast prostych operacji logicznych, typu AND, OR czy XOR, kontroler skryptowy moe przyjmowa sygnay od dowolnej liczby czujników i uruchamia waciwe akcje na podstawie instrukcji zawartych w kodzie skryptu. Dlatego wszystkie czujniki i akcje, do których skrypt powinien mie dost p, musz by podczone do tego samego kontrolera. W przykadzie z rozdziau 10. do sterowania ruchem postaci uylimy czterech czujników dla klawiszy ze strzakami: w gór , w dó, w lewo i w prawo. Sam zrigowan posta znajdziesz w pliku character.blend na pycie doczonej do ksiki. Z tego pliku moesz korzysta w trakcie czytania niniejszego podrozdziau. Kocowy rezultat w postaci ukadu bloków i skryptu jest zapisany w pliku character_python.blend. Aby powtórzy ukad sterowania z rozdziau 10. w wersji skryptowej, musimy uy
tych samych czterech czujników. Potrzebne b d równie pewne akcje. Poprzednio uywalimy odr bnych akcji Motion (Ruch) dla ruchu do przodu, skr tu w prawo, skr tu w lewo i ruchu do tyu. Teraz wystarczy nam jedna taka akcja, bo za pomoc skryptu moemy zmienia jej ustawienia w zalenoci od potrzeb. Ta jedna akcja b dzie obsugiwa
wszystkie cztery przypadki. Potrzebna b dzie te akcja dla sekwencji Walk (spacer), ale i jej ustawienia b d mogy by modyfikowane za pomoc skryptu. Nowy ukad bloków pokazano na rysunku 11.1. Jak wida , kolumna czujników jest niemal identyczna z t, jaka bya w ukadzie bez skryptu. W rozwini tym pierwszym czujniku wida , e w polu Key (klawisz) ma ustawion opcj Uparrow (strzaka w gór ). Podobne ustawienia maj pozostae czujniki. W kolumnie akcji jest jeden blok Motion (Ruch) i jeden blok Action (akcja). Zauwa jednak, e z wyjtkiem nazw tych bloków w obu przypadkach pozostawiono ustawienia domylne. RYSUNEK 11.1. Cel
NAZYWANIE BLOKÓW LOGICZNYCH Zauważ, że opisywane tu czujniki i akcje mają nazwy opisowe. Oczywiście, nazwy te mogą być dowolne, a jedyny warunek, jaki muszą spełniać, to niepowtarzalność (zresztą dba o to sam Blender). Jednak ze względu na to, że Python odwołuje się do bloków logicznych poprzez ich nazwy, dobrze jest, jeśli mają one charakter opisowy, bo wtedy skrypt staje się czytelniejszy.
OD BLOKÓW LOGICZNYCH DO PYTHONA~ 375
Jednak najwi ksze zmiany wida w kolumnie rodkowej. Z caego stosu kontrolerów pozosta tylko jeden z opcj Controller Type (Rodzaj kontrolera) ustawion na Python i wpisan nazw odpowiedniego skryptu; w tym przypadku jest to move.py. Jeli spróbujesz od razu wpisa nazw skryptu (jeszcze przed jego utworzeniem), Blender bezceremonialnie j odrzuci. Zaakceptuje tylko nazw pliku otwartego w edytorze tekstu. Otwórz wi c okno edytora i z listy dost pnych plików wybierz polecenie ADD New (Dodaj nowy). Nowemu plikowi nadaj nazw move.py (ruch), a nast pnie wró do kontrolera i wpisz t nazw w polu Script (skrypt). Po tych wst pnych przygotowaniach i poczeniu czujników oraz akcji z kontrolerem skryptowym moesz zabra si do pisania skryptu.
MODU GAMELOGIC Korzystanie z Pythona w rodowisku BGE umoliwia modu o nazwie GameLogic. Gdy uruchamiasz skrypt w tym rodowisku, modu GameLogic jest importowany automatycznie. Wi kszo funkcji specyficznych dla silnika gier jest dost pna w postaci metod zdefiniowanych w tym module. Modu ten nie naley do gównego API Blendera. Jego wasne API znajdziesz pod adresem www.blender.org/documentation/248PythonDoc/GE/ Przy wyszukiwaniu funkcji dost pnych dla danego obiektu warto skorzysta
z paradygmatu obiektowoci Pythona i uywa do tego celu instrukcji dir(). Za chwil wanie to zrobimy. CHWYTLIWE NAZWY Jeśli będziesz przeglądał pythonowe API silnika gier, na pewno zauważysz, że wiele nazw jest poprzedzonych przedrostkiem złożonym z liter KX i znaku podkreślenia. To pozostałość z wczesnej fazy rozwoju silnika gier w Blenderze. Pierwsza wersja silnika miała bowiem chwytliwą — dosłownie — nazwę Ketsji wymawianą tak jak catchy (chwytliwy). Twórca silnika i zarazem autor jego nazwy, Erwin Coumans, użył przedrostka KX_ do oznaczenia, że dana klasa należy do API silnika Ketsji. Od tamtych czasów nazwa silnika się zmieniła, ale przedrostek w nazwach klas pozostał.
W skrypcie kontrolera warto ju na pocztku skróci nazw moduu GameLogic przez przypisanie go do zmiennej o bardziej por cznej nazwie, na przykad GL. W takich prostych przypadkach, jak nasz, nie jest to moe takie wane, ale w dugich skryptach liczba odwoa do tego moduu moe by na tyle dua, e skrócenie jego nazwy okae si bardzo wygodne. Dlatego w pierwszym wierszu umie instrukcj GL – GameLogic
Nast pnie musisz uzyska dost p do bloku logicznego, z którego skrypt jest wywoywany, i przypisa go do zmiennej. W skryptach odwoujcych si do czujników i akcji jest to konieczne, a mona to zrobi za pomoc metody getCurrentController(). Zwrócony przez ni blok przypisz do zmiennej cont w sposób nast pujcy: cont = GL.getCurrentController()
376 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
Kady kodowany blok ma swojego waciciela (owner), a jest nim obiekt, do którego blok jest przypisany. Obiekt aktywny w chwili tworzenia nowego bloku staje si automatycznie jego wacicielem. W naszym przykadzie jest to obiekt armatury (patrz rysunek 11.1) i do niego te musisz uzyska dost p. Jak to zrobi ? Oczywicie naley uy metody, która zwróci odpowiedni obiekt. Problem jednak polega na tym, e trzeba tak metod znale . Otó s na to dwa sposoby. Pierwszy sprowadza si do przegldania caego API, a drugi polega na uyciu funkcji dir(), o której ju wspominaem. Aby z niej skorzysta , dodaj tymczasowo nast pujcy wiersz kodu: print dir(cont)
Teraz masz trzywierszowy skrypt o nazwie move.py zwizany z kontrolerem typu Python, który z kolei jest poczony z czujnikami typu Keyboard (Klawiatura) i akcjami pokazanymi na rysunku 11.1. Umie okno Blendera tak, aby widoczne byo take okno konsoli, po czym uruchom silnik gier (klawisz P). W trybie gry wcinij jeden z klawiszy ze strzakami. W ten sposób uruchomisz skrypt i instrukcja print wywietli w oknie konsoli nast pujce wartoci zwracane przez funkcj dir() (bez podziau na wiersze): ['getActuator', 'getActuators', 'getExecutePriority', 'getName', 'getOwner', 'getScript', ´'getSensor', 'getSensors', 'getState', 'isA', 'setExecutePriority ', 'setScript']
Jest to lista wszystkich metod dost pnych dla kontrolerów. Obszar poszukiwa zosta wi c mocno zaw ony. Jako e tym razem chodzi o dost p do obiektu armatury, który jest wacicielem kontrolera, jest oczywiste, e poszukiwan metod moe by
tylko getOwner(). A zatem kolejny wiersz kodu powinien mie nast pujc posta : own = cont.getOwner()
CZUJNIKI I AKCJE Masz ju dost p do kontrolera i jego waciciela. Teraz musisz uzyska dost p do czujników i akcji. I znów odpowiedni metod wybierz z listy uzyskanej przy uyciu funkcji dir(). Jeli chodzi o czujniki, moesz wybra metod getSensors(), która zwraca list wszystkich czujników, albo metod getSensor()dla kadego czujnika oddzielnie. Wybierz drugi sposób i przypisz poszczególne czujniki do zmiennych o wymownych nazwach, tak jak w poniszym kodzie: #Sensors forward = cont.GetSensor("forward") right = cont.GetSensor("right") left = cont.GetSensor("left") back = cont.GetSensor("back")
Analogicznie postp z akcjami: #Actuators motion = cont.getActuator("motion") action = cont.getActuator("action")
OD BLOKÓW LOGICZNYCH DO PYTHONA~ 377
PROGRAMOWANIE GRY W PYTHONIE Teraz, gdy ju wszystkie potrzebne bloki logiczne s dost pne z poziomu skryptu, moesz przystpi do programowania ruchów postaci. Na pocztek ustal wartoci zmiennych, które b d przechowywa pewne parametry ruchu. Ustal wi c warto zmiennej speed, która b dzie decydowa o szybkoci poruszania si postaci, oraz zmiennej rspeed, która okreli szybko , z jak posta b dzie si obraca . Zmiennym walk i turn przypisz wartoci zerowe, poniewa w chwili rozpocz cia gry posta nie powinna ani maszerowa (walk), ani si obraca (turn). speed = 0.07 rspeed = 0.02 walk = 0 turn = 0
Przy tworzeniu bloków Motion (Ruch) i Action (akcja) wi kszo ich opcji pozostaa nieustawiona. Mówiem wtedy, e zrobimy to za pomoc skryptu i wanie w tej chwili jest dobry moment na to, by ustawi opcje moduu Action (akcja). Zajrzyj do rozdziau 10., jeli nie pami tasz znaczenia poszczególnych opcji, a nast pnie uyj funkcji dir(action), aby zobaczy , jakie metody s dost pne dla tego bloku. Blok Action (akcja) powinien uruchamia sekwencj Walk (spacer), któr tworzylimy w rozdziale 9., „Przygotowywanie scen dla silnika gier”. Akcja ta powinna rozpoczyna
si klatk 1. i koczy klatk 20. Trzeba te wybra tryb odtwarzania Loop Stop (Z zatrzymaniem). Do tego suy metoda setType(), której argumentem powinna by liczba cakowita reprezentujca okrelony tryb. Tryb Play (Odtwórz) reprezentuje liczba 0, Property (Proporcja) — liczba 1, Flipper (Autowracajcy) — liczba 2, Loop Stop (Z zatrzymaniem) — liczba 3 i Loop End (Do ko ca) — liczba 4. Kod ustalajcy opcje bloku Action (akcja) powinien wyglda nast pujco: action.setAction("Walk") action.setStart(1) action.setEnd(20) action.setType(3)
Prawdziwie „logiczna” cz kodu jest prosta. Jeszcze raz uyj funkcji dir(), aby uzyska
list metod odpowiednich dla czujników. Metoda isPositive()suy do sprawdzania, czy dany czujnik jest aktywny. Na przykad w poniszym kodzie metoda forward.isPositive() zwróci warto True (prawda), jeli wanie wciskany jest klawisz ze strzak w gór . W zalenoci od stanów poszczególnych czujników zmiennym walk i turn przypisywane b d odpowiednie wartoci: if forward.isPositive(): walk = speed if back.isPositive(): walk = bspeed if left.isPositive(): turn = rspeed if right.isPositive(): turn = -rspeed
378 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
Kolejna instrukcja warunkowa if uaktywnia blok Action (akcja), gdy posta jest w ruchu, i wycza go, gdy posta si zatrzymuje. Przy operowaniu blokami wykonawczymi (z ostatniej kolumny) za pomoc Pythona wan rol odgrywa metoda addActiveActuator ´(nazwa, aktywno). Za kadym razem, gdy zmieniasz warto jakiego parametru w tych blokach, musisz wywoa t metod , aby nowa warto zostaa uwzgl dniona. Gdy drugi argument metody ma warto 0, blok jest nieaktywny. Aby zatem wraz z uaktywnieniem si któregokolwiek czujnika rozpocz o si odtwarzanie sekwencji Walk (spacer), musisz doda nast pujc instrukcj warunkow: if forward.isPositive() or back.isPositive() or left.isPositive() or right.isPositive(): GL.addActiveActuator(action,1) else: GL.addActiveActuator(action,0)
Metod addActiveActuator()b dziesz musia wywoa ponownie, aby uaktywni blok Motion (Ruch) po zmianie jego parametrów. Jeszcze raz uyj funkcji dir(), aby przyjrze
si metodom dost pnym dla tego typu bloków. W tym momencie potrzebne b d metody do ustalania pr dkoci zmian pooenia i kta obrotu, czyli setDLoc() oraz setDRot(). Kolejno trzech pierwszych argumentów tych metod pokrywa si z kolejnoci odpowiednich pól edycyjnych w bloku Motion (Ruch). Czwarty argument okrela, czy ruch odbywa si wzgl dem lokalnego ukadu odniesienia (wtedy warto tego argumentu powinna wynosi 1), czy globalnego (argument powinien by wtedy równy 0). Aby ustawi
te wszystkie opcje, wpisz nast pujce linie kodu: motion.setDLoc(0,0,walk,1) motion.setDRot(0,turn,0,1) GL.addActiveActuator(motion,1)
I to ju wszystko, jeli chodzi o sterowanie ruchem postaci. Wcinij klawisz P i sprawd, czy wszystko dziaa tak, jak powinno. Rzu te okiem na okno konsoli i skontroluj, czy nie ma tam jakich ostrzee lub komunikatów o b dach.
Potga Pythona na usugach BGE Skoro znasz ju podstawy sterowania ruchem postaci za pomoc skryptów Pythona, nie powiniene mie problemów z odtworzeniem innych funkcji bloków logicznych przy uyciu skryptów. W zg bianiu tego tematu na pewno pomocne b dzie zarówno API silnika gier, jak i funkcja dir(). Moemy wi c przej do kolejnego zagadnienia. W tym podrozdziale poka Ci, jak przy uyciu Pythona mona uzyskiwa efekty trudne lub wr cz niemoliwe do osigni cia za pomoc samych bloków logicznych.
Tworzenie maszyny teleportacyjnej przy uyciu Pythona Rozmieszczanie obiektów w trójwymiarowej przestrzeni za pomoc kodu Pythona jest bardzo atwe. Kolejny przykad b dzie polega na teleportowaniu obiektów z jednego miejsca w inne przez uaktywnienie okrelonego czujnika. Ukad sceny jest pokazany na rysunku 11.2. Znajdziesz go te w pliku portals_nologic.blend na pycie doczonej do ksiki. Kompletna wersja z ukadem logicznym, fizyk i doczonym skryptem znajduje si w pliku portals.blend.
POTGA PYTHONA NA USUGACH BGE~ 379
RYSUNEK 11.2. Kula i pierścienie maszyny teleportacyjnej
OBIEKTY I BLOKI LOGICZNE Scena zawiera pi obiektów typu Torus i jeden obiekt Icosphere (IcoKula). Wszystkie obiekty znajduj si na paszczynie Y, a ich wspórz dne X i Z s nast pujce (poczwszy od kuli): [–10, 10], [–10, 0], [0, 10], [0, 0], [10, 10] i [10, 0]. Wszystkie obiekty s uoone parami jeden nad drugim. Ich nazwy to: Sphere, Torus1, Torus2, Torus3, Torus4 i Torus5 (patrz rysunek 11.3). RYSUNEK 11.3. Rozmieszczenie obiektów
380 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
Maszyna teleportacyjna ma dziaa w sposób nast pujcy: kula jako ciao sztywne spada pod wpywem grawitacji i w momencie „przejcia” przez lecy niej piercie jest przenoszona (teleportowana) do górnego piercienia w drugiej kolumnie. Std opada na piercie dolny i ponownie jest przenoszona do nast pnej kolumny. Zatrzymuje si dopiero na ostatnim piercieniu. Rozpocznij od przypisania kuli cech ciaa sztywnego. W tym celu wcz kontekst przycisku Logic (logika) i z listy rozwijanej Object type (typ obiektu) wybierz opcj Rigid Body (ciao sztywne), tak jak na rysunku 11.4. Pozostae ustawienia mog pozosta
domylne. RYSUNEK 11.4. Przypisywanie kuli cech ciała sztywnego
Jeli teraz wciniesz klawisz P, kula opadnie na dolny piercie, Torus1. Zderzenie tych obiektów powinno uruchomi skrypt z zaprogramowan funkcj teleportacji. Trzeba wi c przygotowa odpowiedni ukad bloków logicznych. Skrypt teleportujcy b dzie uruchamiany przez czujnik przypisany do kuli, oczywicie za porednictwem kontrolera. Gdy czujnik zarejestruje kolizj z piercieniem, uruchomi skrypt przypisany do kontrolera. Zapewne pami tasz z rozdziau 10., e obiekty rozpoznaj si wzajemnie dzi ki unikatowym waciwociom, jeli takie im przypiszemy. Dlatego zacznij od dodania kademu piercieniowi waciwoci typu Int (liczba cakowita) o nazwie port i wartoci zgodnej z nazw obiektu (patrz rysunek 11.5), czyli Torus1 powinien mie
t warto równ 1, Torus2 — 2, Torus3 — 3 itd. Otwórz edytor tekstu i dodaj nowy tekst o nazwie portal.py. Do obiektu Sphere dodaj czujnik typu Collision() i kontroler Python, a nast pnie pocz je tak jak na rysunku 11.6. Czujnikowi nadaj nazw hitportal (portal zderzeniowy) i skonfiguruj go tak, aby uaktywnia si w momencie zderzenia kuli z obiektem majcym waciwo port. Kontroler ustaw tak, aby wywoywa skrypt o nazwie portal.py.
KOD DLA MASZYNY TELEPORTACYJNEJ Teraz, gdy obiekty i bloki logiczne s ju gotowe, moesz skupi swoj uwag na samym skrypcie. Tak jak poprzednio zacznij od przypisania moduu GameLogic do zmiennej o krótszej nazwie. Nast pnie zastosuj metody udost pniajce kontroler i jego waciciela, tak jak w poniszym fragmencie kodu: GL = GameLogic cont = GL.getCurrentController() own = cont.getOwner()
POTGA PYTHONA NA USUGACH BGE~ 381
RYSUNEK 11.5. Dodawanie właściwości port do obiektu Torus1
RYSUNEK 11.6. Układ logiczny kuli
W ten sposób zapewnie sobie dost p do obiektu Sphere, bo to wanie on jest wacicielem kontrolera. Jednak potrzebny Ci b dzie dost p równie do pozostaych obiektów w scenie. Najpierw uyj metody GameLogic.getCurrentScene(), która zwraca biec scen . Ta z kolei dysponuje metod getObjectList() zwracajc kolekcj obiektów. Uyem tu terminu kolekcja, poniewa obiekt zwracany przez t metod nie jest list, jak sugeruje jej nazwa, lecz specjalnie skonstruowan klas podobn raczej do pythonowego sownika. Takie niekonsekwencje wyst puj w Pythonie do cz sto i mi dzy innymi dlatego warto posugiwa si funkcj dir() oraz sprawdza w dokumentacji API, jakie metody s dost pne i jakiego typu wartoci zwracaj. Kolekcja zwracana przez metod getObjectList()udost pnia swoje skadniki poprzez klucze, którymi s nazwy obiektów 3D. Zauwa jednak, e nazwy obiektów w BGE róni si nieco od tych, z jakimi mamy do czynienia w samym Blenderze — kada z nich jest tutaj poprzedzana przedrostkiem OB. Za pomoc poniszego kodu przypisz obiekty 3D typu Torus do zmiennych o odpowiednich nazwach:
382 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
torus1 torus2 torus3 torus4
= = = =
GL.getCurrentScene().getOjectList()["OBTorus1"] GL.getCurrentScene().getOjectList()["OBTorus2"] GL.getCurrentScene().getOjectList()["OBTorus3"] GL.getCurrentScene().getOjectList()["OBTorus4"]
NAZWY OBIEKTÓW W MODULE GAMELOGIC Gdy w skryptach Pythona odwołujesz się do obiektów 3D za pośrednictwem modułu GameLogic, musisz do ich nazw dodawać przedrostek OB. Jest to spowodowane niespójnością sposobu, w jaki BGE obsługuje nazwy obiektów 3D. Niestety nie jest to jedyny przejaw tej niespójności. W pewnych przypadkach do nazw siatek trzeba dodawać przedrostek ME. Warto o tym wszystkim pamiętać, aby uniknąć błędów spowodowanych niewłaściwym traktowaniem nazw obiektów lub siatek przez silnik gier.
Nast pnie musisz odwoa si do czujnika odpowiedzialnego za wykrywanie kolizji i pobra od niego obiekt, który zderzy si z kul. Odpowiednie metody znajdziesz, jak zwykle, za pomoc funkcji dir(). Na licie zwróconej przez t funkcj wywoan z czujnikiem jako argumentem b dzie metoda getHitObject(). To wanie ona zwraca obiekt uczestniczcy w kolizji. W prezentowanych niej liniach kodu obiekt ten zosta przypisany do zmiennej o nazwie hit. col = cont.getSensor("hitportal") hit = col.getHitObject()
Teraz musisz sprawdzi , który piercie zatrzyma kul , aby wiedzie , do którego piercienia naley j przenie . Musisz wi c sprawdzi warto waciwoci port obiektu hit. Jeli wartoci t b dzie 1, kula powinna znale si nieco poniej górnego piercienia w drugiej kolumnie. Jeli t wartoci b dzie 3, kula powinna wyldowa pod ostatnim górnym piercieniem. W poniszym kodzie zapis place[2] odnosi si do wspórz dnej Z pooenia obiektu (kuli bd piercienia). Odejmowanie wartoci 0,8 oznacza umieszczanie kuli poniej górnego piercienia. if hit: if hit.port == 1: place = torus2.getPosition() place[2] – 0.8 own.setPosition(place) if hit.port == 3: place = torus4.getPosition() place[2] – 0.8 own.setPosition(place)
Jeli teraz uruchomisz BGE, rezultat moe by niezgodny z Twoimi oczekiwaniami. Przy zastosowanych do tej pory ustawieniach kula zderzy si z pierwszym piercieniem, a dziaajce wtedy siy mog zmieni jej trajektori na tyle, e do zderzenia z nast pnym piercieniem w ogóle nie dojdzie. Aby temu zaradzi , wcz opcj Ghost (Duch) dla pierwszego i trzeciego piercienia.
POTGA PYTHONA NA USUGACH BGE~ 383
Tworzenie ekranu logowania W tym podrozdziale utworzymy prosty ekran logowania z polami dla nazwy uytkownika i hasa. Python b dzie potrzebny do przetwarzania wpisywanych danych w celu sprawdzenia ich poprawnoci, a take do realizacji innych funkcji ekranu. W naszym przykadzie nazwa uytkownika i haso b d przechowywane w samym skrypcie jako elementy sownika, ale ogólnie mog one by równie pobierane z zewn trznej bazy danych (aby dowiedzie si , jak to zrobi , musisz zajrze do dokumentacji Pythona). Zestawienie elementów ekranu, bez skryptu i bloków logicznych, znajduje si w pliku login_nologic.blend na pycie doczonej do ksiki. Natomiast gotowy ekran powitalny znajdziesz w pliku login.blend.
OBIEKTY I BLOKI LOGICZNE Aby rozpocz , rozmieciem w przestrzeni 3D obiekty niezb dne do utworzenia ekranu logowania, tak jak na rysunku 11.7. Gównymi elementami s tu trzy paszczyzny pokolorowane technik malowania wierzchoków, z których dwie b d peniy rol pól edycyjnych dla nazwy uytkownika i hasa. Na tych polach umieciem teksturowane paszczyzny z tekstem dynamicznym, podobne do tej z rozdziau 10. Na lewych kocach pól umieciem biae kóka, których uyjemy do sygnalizacji, które pole jest aktywne i gotowe do przyj cia danych. Utworzyem te drug scen o nazwie Welcome (witaj) pokazan na rysunku 11.8. Ta scena zawiera tylko jedn paszczyzn z tekstem dynamicznym. RYSUNEK 11.7. Scena z elementami ekranu logowania
384 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
RYSUNEK 11.8. Druga scena dla ekranu powitalnego
Obiektom z tekstem dynamicznym nazwy uytkownika i hasa przypisz waciwoci — zgodnie z rysunkiem 11.9. Kady z nich powinien mie waciwo o nazwie Text, która b dzie przechowywa wpisywany tekst. Pola z wartociami tych waciwoci pozostaw puste. Obiektowi z nazw uytkownika przypisz równie waciwo o nazwie username (nazwa uytkownika), a obiektowi z hasem dodaj waciwo password (haso). Pozostaym obiektom tekstów dynamicznych dodaj tylko waciwo Text z wartociami w postaci tekstów, które maj by wywietlane. Bloki logiczne potrzebne do przetwarzania wprowadzanych danych b d zwizane z kamer. Jest to moja arbitralna decyzja, bo równie dobrze mona wybra dowolny inny obiekt w scenie albo utworzy w tym celu specjalny obiekt pusty. Skoro kamera ma by wacicielem caej logiki procesu przetwarzania danych wejciowych, trzeba jej przypisa niezb dne waciwoci. Zrób to zgodnie z rysunkiem 11.10. Waciwo
o nazwie input (wejcie) ma by typu String (acuch), bo b dzie przyjmowa cigi znaków wprowadzane za pomoc klawiatury. Drug waciwo , typu Bool (logiczna), nazwaem keystrokelog (rejestr wciskanych klawiszy). B dzie ona suy do informowania czujnika Keyboard (Klawiatura), e ma traktowa sygnay wejciowe jak acuch znaków. Warto domyln tej waciwoci ustaw na True (prawda). Peny ukad logiczny dla procesu weryfikacji hasa jest pokazany na rysunku 11.11. Skada si on z pi ciu czujników, kontrolera uruchamiajcego skrypt Control.py i akcji Scene, której zadaniem b dzie wczenie ekranu powitalnego, gdy haso b dzie zgodne z nazw uytkownika.
POTGA PYTHONA NA USUGACH BGE~ 385
RYSUNEK 11.9. Właściwości obiektów z tekstami dynamicznymi dla nazwy użytkownika i hasła
RYSUNEK 11.10. Właściwości kamery
RYSUNEK 11.11. Bloki logiczne związane z kamerą
386 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
Zanim przystpisz do pisania skryptu Control.py, przyjrzyj si uwanie tym pi ciu czujnikom podczonym do kontrolera skryptowego. Wszystkie s pokazane na rysunku 11.12. Pierwszy czujnik jest typu Always (Cigo), jego zadanie to cige podtrzymywanie dziaania skryptu. Temu czujnikowi nadaem nazw init (pocztkowy), poniewa ma on równie zapewni wykonanie inicjujcej cz ci kodu natychmiast po uruchomieniu gry. Nazwa ta nie ma tu wi kszego znaczenia, bo w skrypcie nie ma adnych odwoa do tego czujnika. Drugi czujnik jest typu Mouse (Mysz), reaguje na zdarzenie typu Mouse over any (mysz nad) i ma nazw mouse. Zapewne odgade, e ten czujnik uaktywnia si , gdy wskanik myszy jest przesuwany na jakikolwiek z widocznych obiektów. Nast pnym jest znany ju czujnik Keyboard (Klawiatura), ale zamiast konkretnego klawisza ma wczon opcj All keys (Dowolny). W polu LogToggle (przecznik rejestru) tego czujnika wpisana jest warto keystrokelog (rejestr wciskanych klawiszy), a jak zapewne pami tasz, jest to nazwa waciwoci kamery o domylnej wartoci True (prawda). Takie ustawienie przecznika rejestru oznacza, e kolejne znaki wprowadzane za pomoc klawiatury b d skadane w jeden acuch. Pole Target (cel) okrela waciwo , w której ten acuch ma by przechowywany. Jak wida , w tym przypadku jest to waciwo o nazwie input (wejcie). RYSUNEK 11.12. Bliższe spojrzenie na czujniki
POTGA PYTHONA NA USUGACH BGE~ 387
Do wywietlania acucha litera po literze potrzebny jest czujnik reagujcy na kad zmian zawartoci tego acucha. Wanie tak zachowuje si czujnik Property (Proporcja) typu Changed (Zmiana) skojarzony z waciwoci input (wejcie). Przy takich ustawieniach czujnik ten uaktywni si po kadej zmianie wartoci waciwoci input (wejcie), czyli — za spraw czujnika Keyboard (Klawiatura) — po kadym wcini ciu klawisza. Ostatnim jest czujnik Mouse (Mysz) reagujcy na klikni cie lewym przyciskiem myszy. Nazwaem go po prostu mouseclick (klikni cie). PRZECHWYTYWANIE DANYCH Z KLAWIATURY W PYTHONIE W prezentowanym tu przykładzie informacje pochodzące z klawiatury przyjmowane są przez układ bloków logicznych z czujnikiem Keyboard (Klawiatura) na czele. To samo jest możliwe w samym Pythonie, a odpowiednie funkcje są dostępne w module GameKeys. Jest to jeden z trzech modułów składających się na API silnika gier. Pozostałe dwa to znany już GameLogic i Rasterizer, o którym będzie mowa w dalszej części rozdziału. W API silnika gier znajdziesz listę kodów, za pomocą których możesz odczytywać stan każdego klawisza. Moduł GameKeys umożliwia też ustawianie parametrów czujnika Keyboard (Klawiatura) — służy do tego metoda setKey(). Przykładowo aby zmusić czujnik Keyboard (Klawiatura) do reagowania na wciśnięcie klawisza F1, wystarczy napisać: sensor.setKey(GameKeys.F1KEY)
SKRYPT DLA EKRANU LOGOWANIA Podobnie jak w poprzednich przykadach zacznij od utworzenia skrótu dla nazwy moduu GameLogic. Nast pnie uyj funkcji hasattr(), aby sprawdzi , czy obiekt GameLogic ma przypisany atrybut o nazwie init. Atrybuty su do przechowywania i udost pniania okrelonych wartoci w czasie trwania biecej sesji gry. Przy pierwszym wykonywaniu skryptu obiekt GameLogic nie ma jeszcze adnego atrybutu, a zatem kod obj ty instrukcj if i zawierajcy szereg czynnoci inicjacyjnych zostanie wykonany. W ramach tych czynnoci importowana jest metoda showMouse() z moduu Rasterizer. Nast pnie jest ona wywoywana z argumentem o wartoci 1, aby w trakcie gry wskanik myszy by widoczny na ekranie. Potem tworzone s atrybuty GL.password i GL.name z pustymi acuchami jako wartociami. Te atrybuty b d istnie podczas caej sesji gry. Na koniec tworzony jest atrybut GL.init z wartoci pocztkow None. To zapobiegnie ponownemu wykonaniu tych instrukcji, poniewa funkcja hasattr() przy nast pnym wywoaniu b dzie zwracaa warto True. GL = GameLogic if not hasattr(GL, "init"): from Rasterizer import showMouse showMouse(1) GL.password = "" GL.name = "" GL.init = None
I znów tak jak w poprzednich przykadach przypisz biecy kontroler, jego waciciela oraz zwizane z nim czujniki i akcje do odpowiednich zmiennych. Wszystko to zrobisz za pomoc nast pujcego kodu:
388 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
cont = GL.getCurrentController() own = cont.getOwner() mouse = cont.getSensor("mouse") mouseclick = cont.getSensor("mouseclick") scene = cont.getActuator('scene')
JEDNOKROTNE WYKONYWANIE KODU I TRWAO ZMIENNYCH W BGE Skrypty pisane dla BGE są wykonywane, gdy uaktywniają się związane z nimi czujniki. Skrypty związane z czujnikiem typu Always (Ciągłość) są wykonywane bezustannie. Oczywiście zwykłe zmienne nie przenoszą swoich wartości do kolejnego cyklu wykonywania skryptu, a zatem gdy piszemy skrypty dla silnika gier i chcemy pewne wartości przechowywać w sposób trwały, musimy skorzystać z innego rozwiązania. Polega ono na przypisywaniu tych wartości do obiektu GameLogic w postaci jego atrybutów. Atrybuty mogą mieć dowolne nazwy, a ich wartości są dostępne dla wszystkich skryptów wykonywanych w czasie trwania gry. Tworzenie atrybutu jest bardzo proste i sprowadza się do zastosowania instrukcji o następującej składni: GameLogic.nazwaatrybutu = warto. Takie rozwiązanie problemu trwałości zmiennych stanowi również rozwiązanie problemu jednokrotnego wykonywania fragmentu kodu. Za pomocą funkcji hasattr() sprawdzamy, czy obiekt GameLogic ma przypisany określony atrybut. Jeśli funkcja zwraca 0 (False), kod jest wykonywany w całości. Wystarczy jednak umieścić w skrypcie instrukcję tworzącą taki atrybut, aby podczas następnych wykonań skryptu określony jego fragment był pomijany, ponieważ funkcja hasattr() będzie wtedy zwracać wartość 1 (True). W taki właśnie sposób został użyty atrybut init w skrypcie ekranu logowania.
Jeszcze raz wydobd kolekcj (która nie jest pythonow list) obiektów z biecej sceny za pomoc metody getObjectList(): object_list = GL.getCurrentScene().getObjectList()
Teraz musisz zdefiniowa funkcj sprawdzajc, czy wprowadzona przez uytkownika kombinacja nazwy i hasa jest poprawna. Definicja funkcji musi wystpi wczeniej ni jej wywoanie. Nasza funkcja b dzie mie nazw validate_pass (sprawdzanie) oraz dwa argumenty: name (nazwa) i passwd (haso). Zwraca b dzie warto logiczn True (prawda) lub False (fasz). Na samym pocztku funkcja ta tworzy sownik o nazwie passwords (hasa), w którym kluczami s nazwy uytkownika, a wartociami — hasa. Na potrzeby niniejszego przykadu utworzyem krótki sownik przez bezporednie wpisanie nazw i hase. Jeli chcesz uzyska takie dane z zewn trznych zasobów, musisz napisa odpowiedni funkcj . Zagadnienie uzyskiwania dost pu do zewn trznych baz danych wykracza poza ramy tej ksiki, ale odpowiednie informacje s dost pne w dokumentacji Pythona. Pozosta cz funkcji wypenia konstrukcja try/except. Python najpierw spróbuje wykona cz try, a jeli to si nie powiedzie, przejdzie do wykonania cz ci except. W cz ci try sprawdzana jest zgodno parametru passwd z wartoci klucza name w sowniku passwords. Jeli wszystko si zgadza, metoda setScene() ustawi jako biec scen Welcome (witaj). Linia GL.addActiveActuator(scene,True) jest potrzebna, aby uaktywni akcj scene. W cz ci except zerowane s wartoci waciwoci password i name oraz usuwane teksty z obu pól edycyjnych.
POTGA PYTHONA NA USUGACH BGE~ 389
def validate_pass(name, passwd): passwords = {"myname":"mypass", "bobp":"bobspass"} try: if passwords[name] == passwd: scene.setScene('Welcome') GL.addActiveActuator(scene,True) except: GL.password = "" GL.name = "" password_input.Text = "" username_input.Text = ""
Czas wreszcie na gówny kod skryptu. W zasadzie mona go podzieli na dwie cz ci, z których pierwsza jest wykonywana, gdy biec scen jest Scene, a druga jest wykonywana wtedy, gdy nastpi zmiana sceny na Welcome. Gdy aktywna jest gówna scena gry, pobierane s z niej wszystkie obiekty, a nast pnie kady z nich jest przypisywany do oddzielnej zmiennej. Dodatkowo do zmiennej mask przypisywany jest cig pusty. if GL.getCurrentScene().getName() == "Scene": field1 = object_list["OBfield1"] field2 = object_list["OBfield2"] button = object_list["OBbutton"] circle1 = object_list["OBCircle1"] circle2 = object_list["OBCircle2"] username_input = object_list["OBUsernameText"] password_input = object_list["OBPasswordText"] cam = object_list["OBcamera"] mask = ""
Nast pnie obsugiwany jest przypadek, w którym wskanik myszy znajduje si nad jakim obiektem. Wtedy speniony b dzie warunek if mouse.isPositive() i obiekt zwrócony przez metod getHitObject()zostanie przypisany do zmiennej hit_object. Metoda getHitObject()naley do czujnika typu Mouse (Mysz) i zwraca obiekt, na którym aktualnie znajduje si wskanik myszy. if mouse.isPositive(): hit_object = mouse.getHitObject()
Jeli wskanik myszy znajdzie si w obr bie pola edycyjnego, pole powinno si uaktywni , o czym ma wiadczy biae kóko, a wprowadzane dane powinny by
umieszczane w odpowiedniej zmiennej. Jeli wskazane zostanie pole z nazw uytkownika, w jego lewej cz ci powinno pojawi si biae kóko, a wpisany tekst powinien zosta
zinterpretowany jako nazwa uytkownika. Analogicznie — jeli wskazane zostanie pole hasa, wpisywany w nim tekst powinien by interpretowany jako haso. Kod obsugujcy mysz robi jeszcze jedn rzecz, a mianowicie wraz z uaktywnieniem pola edycyjnego usuwa jego dotychczasow zawarto . W rezultacie przesuni cie wskanika poza pole i z powrotem spowoduje wyczyszczenie tego pola. Nie jest to rozwizanie najlepsze i naleaoby je zmieni , ale ze wzgl du na prostot postanowiem je zostawi . Zwró
uwag na rónice w obsudze obu pól: field1 (pole nazwy uytkownika) i field2 (pole hasa). W pierwszym przypadku warto cam.input jest przypisywana zarówno do GL.name (atrybut moduu GameLogic przechowujcy nazw uytkownika), jak i do username_input.Text
390 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
(tekst dynamiczny zwizany z polem nazwy uytkownika). W przypadku hasa warto
cam.input jest przypisywana do atrybutu GL.password, ale nie jest bezporednio przypisywana do tekstu dynamicznego. Poredniczy w tym zmienna mask, do której wprowadzany jest acuch zoony z tylu gwiazdek, ile znaków liczy haso. Dzi ki temu haso nie jest widoczne na ekranie. if hit_object == field1: if field1.active == 0: cam.input = "" circle1.setVisible(1) circle2.setVisible(0) field1.active = 1 field2.active = 0 username_input.Text = GL.name = cam.input elif hit_object == field2: if field2.active == 0: cam.input = "" circle1.setVisible(0) circle2.setVisible(1) field1.active = 0 field2.active = 1 GL.password = cam.input for x in range(len(GL.password)): mask = mask + "*" password_input.Text = mask
W cz ci else obsugiwany jest przypadek, w którym wskanik myszy znajduje si poza jakimkolwiek obiektem. Wtedy oba biae kóka powinny by niewidoczne, a oba pola — nieaktywne. else: circle1.setVisible(0) circle2.setVisible(0) field1.active = 0 field2.active = 0
Kolejna instrukcja warunkowa sprawdza, czy wystpio klikni cie. Jeli tak, nast puje sprawdzenie, czy obiektem wskazywanym przez mysz jest przycisk (button). Jeli i to jest prawd, wywoywana jest zdefiniowana wczeniej funkcja validate_pass() w celu sprawdzenia, czy nazwa uytkownika i haso s prawidowe. if mouseclick.isPositive(): if hit_object == button: validate_pass(username_input.Text, GL.password)
Pierwsza instrukcja if sprawdzaa, czy biec scen jest gówna scena ekranu logowania. W ramach drugiej cz ci tej instrukcji (elif) obsugiwana jest sytuacja po zmianie sceny na Welcome. Jedyne, co trzeba wtedy zrobi , to uzyska dost p do obiektu tekstowego OBWelcome i doczy do niego zawarto atrybutu GL.name, aby uytkownik zosta powitany imiennie. elif GL.getCurrentScene().getName() == "Welcome": list = GL.getCurrentScene().getObjectList() list["OBWelcome"].Text = "Welcome, " + GL.name+"!"
POTGA PYTHONA NA USUGACH BGE~ 391
Obsuga okien widokowych Poza moduami GameLogic i GameKeys API silnika gier zawiera jeszcze modu o nazwie Rasterizer odpowiedzialny za wywietlanie gry na ekranie monitora. Umoliwia on mi dzy innymi wywietlanie wielu okien widokowych jednoczenie. Najlepiej zobaczysz to na przykadzie prostej gry dla dwóch osób. W pliku viewports_nonpython.blend znajdziesz gotow scen dla takiej gry z caym ukadem logicznym, ale bez skryptu. Scena, na której toczy si gra, jest pokazana na rysunku 11.13. Ten sam rysunek znajduje si równie w kolorowej wkadce. Widoczne tu obiekty maj nazwy RedCube (kostka czerwona) i BlueCube (kostka niebieska). Kady z nich ma przypisan oddzieln kamer o odpowiedniej nazwie: RedCamera (kamera czerwona) i BlueCamera (kamera niebieska). Kamery moesz dodawa do sceny tak samo jak inne obiekty — po prostu wcinij klawisz spacji i wybierz polecenie Add/Camera (Dodaj/Kamera). RYSUNEK 11.13. Dwie kostki i związane z nimi kamery
Logika gry jest prosta. Zastosowane w niej elementy poznae ju w rozdziale 10. Kada kostka moe porusza si do przodu i obraca w lewo oraz w prawo. Do sterowania kostk niebiesk su klawisze E, S i D, kostk czerwon moesz porusza za pomoc klawiszy O, K i L. Z kad kamer zwizany jest blok logiczny akcji, który ma za zadanie kierowa kamer w stron waciwej kostki. Poczony ukad logiczny dla czerwonej kostki i jej kamery moesz obejrze na rysunku 11.14. RYSUNEK 11.14. Bloki logiczne dla czerwonej kostki i jej kamery
392 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
Scena zawiera jeszcze jedn kamer o nazwie OverviewCamera (kamera ogólna) umieszczon wysoko nad plansz gry — wida j w lewym górnym rogu rysunku 11.15. Obraz pola gry przekazywany przez t kamer jest pokazany na rysunku 11.16. Aby zobaczy taki obraz na ekranie, przytrzymaj wcini ty klawisz Ctrl i wcinij klawisz 0 na klawiaturze numerycznej, aby uaktywni t kamer . Jeli to zrobisz, póniej kade wcini cie klawisza 0 na klawiaturze numerycznej b dzie wcza wanie t kamer . RYSUNEK 11.15. Kamera ogólna umieszczona wysoko nad planszą
Na koniec to, co najwaniejsze: skrypt o nazwie viewports.py zwizany z kontrolerem typu Python, który z kolei jest poczony z czujnikiem Always (Cigo) przypisanym do obiektu Plane (Kwadrat). Ten ukad bloków logicznych pokazany jest na rysunku 11.17. Mogem go przypisa do kadego innego obiektu, ale paszczyzna stanowica plansz jest równie odpowiednia. Zasadnicza cz niniejszego przykadu zawiera si wanie w skrypcie viewports.py. Na pocztku importowany jest modu obsugujcy wywietlanie gry na ekranie. Jest to modu o nazwie Rasterizer. Zaimportujesz go tak samo jak kady inny, czyli za pomoc nast pujcej instrukcji: import Rasterizer
Aby w dost pnym obszarze roboczym utworzy kilka okien widokowych, trzeba najpierw uzyska wysoko i szeroko tego obszaru. Korzystajc z moduu Rasterizer, mona to zrobi w nast pujcy sposób: height = Rasterizer.getWindowHeight() width = Rasterizer.getWindowWidth()
POTGA PYTHONA NA USUGACH BGE~ 393
RYSUNEK 11.16. Widok z kamery ogólnej
RYSUNEK 11.17. Kontroler skryptu viewports.py
Nast pne wiersze kodu powiniene zna ju z poprzednich przykadów. Po uzyskaniu dost pu do kamer zainstalowanych w scenie s one przypisywane do zmiennych: scene = GameLogic.getCurrentScene() obList = scene.getObjectList() redcam = obList["OBRedCamera"] bluecam = obList["OBBlueCamera"] overview = obList["OBOverviewCamera"]
Do ustalenia wymiarów okien widokowych naley uy metody setViewport() odpowiedniej kamery. Cztery argumenty tej metody reprezentuj nast pujce parametry okna widokowego: pooenie lewej kraw dzi liczone od lewej do prawej i mogce przyjmowa wartoci z przedziau od zera do cakowitej szerokoci obszaru roboczego; pooenie dolnej kraw dzi liczone od dou do góry i mogce przyjmowa
wartoci z przedziau od zera do cakowitej wysokoci obszaru roboczego; pooenie prawej kraw dzi liczone od lewej do prawej i mogce przyjmowa wartoci z przedziau
394 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
od zera do cakowitej szerokoci obszaru roboczego (jeli ta liczba jest mniejsza od wartoci pierwszego parametru, okno jest niewidoczne); pooenie górnej kraw dzi liczone od dou do góry i mogce przyjmowa wartoci z przedziau od zera do cakowitej wysokoci obszaru roboczego (jeli ta liczba jest mniejsza od wartoci drugiego parametru, okno jest niewidoczne). Okno przekazujce obraz z kamery ogólnej ma by umieszczone na pozostaych dwóch oknach, a zatem trzeba uy metody setOnTop(), która sprawi, e okno b dzie stale na wierzchu. Aby wszystkie okna widokowe dziaay, trzeba je uaktywni przez wywoanie — dla kadego z nich oddzielnie — metody enableViewport(True). bluecam.setViewport(0, 0, width/2, height) redcam.setViewport(width/2, 0, width, height) overview.setViewport(width/4, 0, width*3/4, height*1/3) overview.setOnTop() bluecam.enableViewport(True) redcam.enableViewport(True) overview.enableViewport(True)
Jeli teraz wczysz tryb gry, ujrzysz obszar roboczy podzielony na dwa okna widokowe z naoonym na nie trzecim oknem, tak jak na rysunku 11.18. Ten sam rysunek znajdziesz te w kolorowej wkadce. RYSUNEK 11.18. Gra z trzema oknami widokowymi
Obsuga d wiku przy uyciu Pythona Dzi ki lekturze rozdziau 10. poznae podstawowe sposoby obsugi dwi ku w rodowisku BGE za pomoc bloków logicznych. Teraz zobaczysz, jak mona to robi jeszcze wydajniej za pomoc skryptów Pythona.
POTGA PYTHONA NA USUGACH BGE~ 395
Rozpocznij od zestawienia bloków logicznych dla domylnego szecianu zgodnie z rysunkiem 11.19. Ukad zawiera akcj typu Sound (Dwik) znan ju z rozdziau 10. Akcja ta jest poczona z kontrolerem typu Python, do którego przypisany jest skrypt volume.py (jak zwykle, skrypt musisz utworzy wczeniej w edytorze tekstowym). Z lewej strony do kontrolera podczone s trzy czujniki. Pierwszy z nich jest typu Always (Cigo). Drugi czujnik, typu Keyboard (Klawiatura), reaguje na wciskanie klawisza U, co ma powodowa zwi kszanie nat enia dwi ku. Trzeci czujnik te jest typu Keyboard (Klawiatura), ale reaguje na wciskanie klawisza D, co ma powodowa zmniejszanie nat enia dwi ku. RYSUNEK 11.19. Czujniki i akcje połączone z kontrolerem skryptu volume.py
W przeciwiestwie do przykadu z rozdziau 10. przycisk 3D Sound (dwi k 3D) w panelu Sound (dwi k) nalecym do subkontekstu Sound block buttons (przyciski bloku dwi kowego) powinien pozosta wyczony (patrz rysunek 11.20). RYSUNEK 11.20. Przycisk 3D Sound (dźwięk 3D) wyłączony
A oto kod skryptu volume.py. Aby unikn skokowych zmian nat enia siy przy cyklicznych wywoaniach skryptu, warto tego parametru musisz przechowywa jako atrybut obiektu GameLogic, zabezpieczajc si przed powrotem do wartoci pocztkowej za pomoc instrukcji warunkowej z funkcj hasattr(). Zakres dopuszczalnych wartoci siy dwi ku rozciga si od 0 do 1, a zatem jako warto pocztkow moesz wybra
rodek tego przedziau, czyli 0,5.
396 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
GL = GameLogic if not hasattr(GL, "init"): GL.vol = 0.5 GL.init = None
Jak zwykle, musisz uzyska dost p do kontrolera, jego waciciela, akcji i czujników. Zrób to w sposób nast pujcy: cont = GL.getCurrentController() own = cont.getOwner() play = cont.getActuator("playsound") volumeup = cont.getSensor("volumeup") volumedown = cont.getSensor("volumedown")
Tak jak w poprzednich przypadkach odwoywania si do czujników z poziomu skryptu uyj metody isPositive(), aby sprawdzi , czy dany czujnik jest aktywny. Do zwi kszania i zmniejszania siy dwi ku za pomoc klawiatury wystarcz nast pujce dwie instrukcje warunkowe: if volumeup.isPositive(): if GL.vol < 1.0: GL.vol = GL.vol + 0.01 if volumedown.isPositive(): if GL.vol > 0.0: GL.vol = GL.vol - 0.01
WIAT BLENDERA WIZUALIZACJA POPULACJI RYB PRZY UYCIU BGE Niezwykłym przykładem praktycznej użyteczności Pythona i BGE może być wizualizacja populacji ryb zrealizowana przez Centrum Rybołówstwa przy UBC (University of British Columbia) i studentów tej uczelni uczestniczących w programie Masters of Digital Media. Celem tego ambitnego przedsięwzięcia było zebranie i odpowiednie zaprezentowanie olbrzymiej ilości danych statystycznych na temat fauny morskiej oraz wpływu rybołówstwa na populacje ryb. Dane były bardzo interesujące i badacze z Centrum Rybołówstwa szukali sposobu na ich prezentację w formie zrozumiałej dla szerszego grona ludzi niebędących ani biologami, ani statystykami. Efektem tej współpracy jest dynamiczne trójwymiarowe środowisko podwodne z animowanymi ławicami ryb o liczebności odzwierciedlającej aktualne dane. Użytkownik może wybrać określony gatunek ryb, określić parametry polityki rybackiej i natychmiast obserwować skutki wprowadzonych zmian — wszystko dzieje się w czasie rzeczywistym. Członkowie zespołu z UBC mają nadzieję, że ten niecodzienny mariaż technologii gier komputerowych z technikami wizualizacji danych statystycznych okaże się pomocny w kształtowaniu przyszłej polityki rybołówstwa morskiego. Więcej o tym przedsięwzięciu możesz przeczytać w serwisie BlenderNation.com pod adresem www.blendernation.com/fish-population-data-visualisation-internships-at-great-northernway-campus-vancouver/ Twórcy tej wizualizacji przygotowali też dwa nagrania wideo, jedno z prezentacją całego przedsięwzięcia, a drugie z pokazem niektórych technik modelowania i animowania ryb. Materiały te są dostępne pod adresami: http://mdm.gnwc.ca/?q=blog/20080329/is-not-movie http://mdm.gnwc.ca/?q=blog/20080219/blender-tutorial
INNE RÓDA WIEDZY~ 397
Now warto siy dwi ku przeka do akcji Sound (Dwik) za pomoc metody setGain(). Na koniec, jak zwykle, gdy trzeba zatwierdzi zmiany w ustawieniach akcji, wywoaj metod GL.addActiveActuator() z akcj play jako pierwszym argumentem i wartoci True jako argumentem drugim. play.setGain(GL.vol) GameLogic.addActiveActuator(play, True)
Jeli uruchomisz silnik gier (klawisz P), b dziesz móg sterowa si bulgoccego dwi ku za pomoc klawiszy U i D. Kompletny plik z tym przykadem ma nazw soundcube_volume.blend i znajduje si na pycie doczonej do ksiki.
Inne róda wiedzy Jeli przeczytae t ksik do koca, powiniene mie teraz solidne podstawy do dalszego zg biania najbardziej zaawansowanych funkcji Blendera. Jednak wystarczy rzuci okiem na pythonowe API Blendera lub silnika gier, aby si przekona , jak wiele rzeczy jest jeszcze do opanowania. Moliwoci Blendera s naprawd olbrzymie i wci poszerzane. W jednej ksice nie sposób opisa ich wszystkich dokadnie. Nawet tak wski temat, jak stosowanie Pythona w rodowisku BGE, trudno omówi szczegóowo w jednym rozdziale. Dlatego powiniene si gn po dodatkowe róda wiedzy. Pierwszym miejscem, do którego powiniene si skierowa , jest sklep internetowy Fundacji Blendera. Tam znajdziesz wiele ksiek i materiaów szkoleniowych, które w duym stopniu zaspokoj Twój gód wiedzy. Mi dzy innymi moesz tam naby drugie wydanie ksiki The Official Blender GameKit, w której Carsten Wartman opisuje szczegóowo najnowsze funkcje silnika gier i pomaga pozna wszelkie zakamarki tego rodowiska. Dost pna jest tam równie pyta z gr Yo,Frankie!. To bez wtpienia najbardziej zaawansowana gra, jaka do tej pory zostaa wykonana przy uyciu Blendera i jego silnika gier. Ale najwi ksz wartoci owej pyty jest to, e zawiera wszystkie oryginalne pliki ródowe i inne zasoby wygenerowane w trakcie tworzenia gry. Zawiera te wiele znakomicie opracowanych materiaów szkoleniowych i instruktaowych. Po prostu trzeba j mie . Niezastpionym ródem wiedzy na temat Blendera jest te portal BlenderArtists.org, a szczególnie jego forum — zawsze mona tam spotka znawców danego zagadnienia, którzy odpowiedz na kade pytanie i pomog swoimi wskazówkami uzyska niemal kady efekt. Jeli interesujesz si tworzeniem gier typu FPS (First-Person Shooter), zobacz, jak zrobi to Social w opracowanym przez siebie szablonie takiej gry: http://blenderartists.org/forum/showthread.php?t=85219 Jeli chcesz stworzy gr sieciow lub interaktywne rodowisko internetowe, zainteresuj si pakietem BZoo, który zawiera gotowe szablony elementów takiej gry opracowane specjalnie pod ktem BGE. Opis pakietu i materiay do pobrania znajdziesz pod adresem: http://bzooworld.org/
398 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
Kolejny adres to witryna z materiaami instruktaowymi na temat tworzenia efektów czsteczkowych, takich jak dym czy pomie, w rodowisku BGE: http://gameblender.wikia.com/wiki/Special_Effects_Tutorials Wiele doskonaych materiaów szkoleniowych znajdziesz równie na stronach: www.blendenzo.com/indexTuts.html http://bgetutorials.wordpress.com/tutorials/ Warto równie ledzi zawarto witryny BlenderNation.com, bo tam mona znale
najwiesze informacje o zmianach w samym Blenderze i dost pnych materiaach szkoleniowych. A jeli opracowae przydatne narz dzie, interesujc wizualizacj lub efektown gr , zaprezentuj swoje dzieo spoecznoci blenderowej. Moesz to zrobi na przykad za porednictwem takich witryn jak BlenderArtist.com lub BlenderNation.com. Spoeczno blenderowa zawsze ch tnie pomaga w rozwijaniu niestandardowych zastosowa tego niezwykego programu. Tak czy inaczej, mam nadziej , e niniejsza ksika pozwoli Ci na realizacj wielu ambitnych projektów. Miego blenderowania!
Podsumowanie Zastpuj zoone ukady bloków logicznych prostymi skryptami Pythona. Przy uyciu kontrolera skryptowego czcego czujniki z akcjami zrealizujesz to samo, co za pomoc bloków logicznych, ale efektywniej i bardziej elegancko. Python pozwala na znacznie lepsze zorganizowanie ukadów logicznych. Opanuj to Poszerz moliwoci ruchowe postaci z pierwszego przykadu w tym rozdziale. Przygotuj odpowiedni animacj i za pomoc skryptu oraz niezb dnych bloków logicznych spraw, aby po wcini ciu klawisza W posta machaa r k. Przy uyciu Pythona twórz efekty, których nie mógby utworzy za pomoc
samych bloków logicznych. Bloki logiczne nie obsuguj wszystkich funkcji silnika gier. Nawet tak prosta rzecz, jak ustawianie obiektów w scenie, wymaga uycia Pythona. Wymagaj tego równie bardziej zoone operacje, w których potrzebne staje si uycie zmiennych i danych o rozmaitych strukturach. Opanuj to Utwórz i zaimplementuj skrypt, który zmusi standardowy szecian do podania za wskanikiem myszy po caym oknie widokowym. Twórz niekonwencjonalne rodowiska gry z efektami d wikowymi i wieloma oknami widokowymi. Sterowanie si dwi ku w czasie rzeczywistym czy dzielenie ekranu na kilka widoków moe znacznie poprawi interakcyjno i atrakcyjno gry bd wizualizacji. Przy uyciu Pythona uzyskanie takich efektów nie jest wcale trudne. Opanuj to Do ruchomego szecianu z poprzedniego wiczenia dodaj drugi, nieruchomy, który b dzie emitowa dwi k o nat eniu zwi kszajcym si do 1, gdy oba obiekty zbli si do siebie na minimaln odlego , i malejcym do 0, gdy obiekty maksymalnie si oddal.
PODSUMOWANIE~ 399
Dodatki
400 ~ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER
Dodatek A
Rozwi zania Rozdzia 1. Konfigurowanie rodowiska pracy Ustaw opcje dostpne w oknie User Preferences (Ustawienia uytkownika). Okno to zawiera szereg opcji, które cz sto s pomijane przez uytkowników, szczególnie dotyczy to ustawie View & Controls (widok i kontrolki), Edit Methods (metody edycji) i Themes (motywy). Opanuj to Skonfiguruj Blendera zgodnie z wasnymi potrzebami i upodobaniami, a nast pnie zapisz t konfiguracj jako domyln, aby bya uaktywniana przy kadym uruchomieniu programu. Rozwi zanie Po skonfigurowaniu interfejsu Blendera wcinij klawisze Ctrl+U, aby zapisa nowe ustawienia w pliku .Blend.blend. Umie ten plik w folderze .blender i otwórz Blendera. Wszystkie zmiany w ustawieniach b d uwzgl dnione (przykadowy plik .Blend.blend znajdziesz na pycie doczonej do ksiki). Uyj mniej znanych metod zaznaczania, grupowania i organizowania elementów 3D, aby przyspieszy prac. Istnieje wiele sposobów zaznaczania i grupowania obiektów oraz innych elementów w przestrzeni 3D, które mog znaczco zwi kszy szybko
i efektywno pracy. Opanuj to Przy uyciu metod opisanych w tym rozdziale zaznacz cianki kuli tak jak na poniszym rysunku.
402 ~ DODATEK A ROZWI ZANIA
Takie zaznaczenie powiniene umie wykona przez klikni cie mysz (przy wcini tym odpowiednim klawiszu) i zastosowanie waciwego skrótu klawiszowego. Ten sam efekt mona uzyska kilkoma sposobami. Rozwi zanie Przytrzymaj wcini ty klawisz Alt i kliknij prawym przyciskiem myszy jedn z poprzecznych kraw dzi w górnej p tli cianek. Nast pnie wcinij klawisze Shift+G i wybierz opcj Perimeter (obwód). Poznaj zasady rz dz ce obecnym interfejsem Blendera, aby lepiej przygotowa si na nadchodz ce zmiany. Blender rozwija si nieustannie i w Twoim interesie jest poszukiwanie informacji o wszystkich nowociach, szczególnie teraz, gdy zapowiadana wersja 2.5 ma przynie znaczce zmiany nie tylko w wygldzie, ale i funkcjonalnoci programu. Opanuj to Dowiedz si moliwie najwi cej o stanie prac nad zmian kodu zdarze w wersji 2.5 i zapowiadanych zmianach interfejsu. Rozwi zanie Informacje na ten temat znajdziesz przede wszystkim na stronach www.blender.org i http://wiki.blender.org/index.php/BlenderDev/Blender2.5. Informacje o wszelkich post pach w rozwijaniu Blendera ukazuj si regularnie take na stronie www.blendernation.com. Dyskusje twórców tego programu moesz przeledzi w archiwach list dyskusyjnych dost pnych pod adresem http://lists.blender.org/pipermail/bf-committers/, a skompilowane wersje najnowszych wyda Blendera dla rónych systemów operacyjnych s do pobrania na stronie www.graphicall.org. Pen tre raportu Williama Reynisha na temat interfejsu Blendera znajdziesz pod adresem http://download.blender.org/documentation/bc2008/evolution_of_blenders_ui.pdf.
Rozdzia 2. Rze bienie i tworzenie nowej topologii obiektu Korzystaj z narzdzi rze biarskich Blendera. Wielopoziomowa rozdzielczo
i rozmaite narz dzia rzebiarskie umoliwiaj modelowanie nawet bardzo zoonych i szczegóowych obiektów 3D. Opanuj to W doskonaleniu umiej tnoci rzebiarskich nic nie zastpi praktycznych
wicze. W oparciu o podane w tym rozdziale wskazówki wykonaj jeszcze trzy inne rzeby gów ludzkich. Spróbuj wyrzebi gow starszej osoby, kobiety i m czyzny. Korzystaj przy tym z obrazów pomocniczych umieszczanych w tle widoków ortogonalnych, tak jak to robilimy w tym rozdziale, ale spróbuj take swobodnego rzebienia w oparciu o dowoln fotografi . Gdy opanujesz rzebienie gów, zacznij eksperymentowa z caymi postaciami. Staraj si , aby Twoje rzeby oddaway indywidualny charakter kadej postaci.
ROZDZIA 2. RZEBIENIE I TWORZENIE NOWEJ TOPOLOGII OBIEKTU~ 403
Rozwi zanie Przeanalizuj zawarto pliku baby.blend i zwró uwag na sposób modelowania ksztatów twarzy. Wzorujc si na tym przykadzie, utwórz zupenie nowy model, a gdy skoczysz, zamie swoje dzieo na forum www.blenderartists.org/forum w dziale Focused Critique, aby podda je ocenie innych. Wnikliwe i krytyczne wskazówki pomog Ci skorygowa ewentualne b dy. Uywaj funkcji Retopo do przeksztacania form rze biarskich w topologicznie poprawne obiekty. Funkcja Retopo umoliwia tworzenie modeli o ksztatach identycznych z innymi obiektami, ale o innej topologii. Dzi ki temu moliwe jest zast powanie wysokorozdzielczych obiektów rzebionych takimi, których geometria jest oparta na regularnych p tlach kraw dziowych, a wi c dajcymi si atwo deformowa , animowa i renderowa . Opanuj to Sporód modeli wykonanych w ramach poprzedniego wiczenia wybierz ten, który Ci si najbardziej podoba, i przy uyciu funkcji Retopo utwórz nowy model o tym samym ksztacie, ale o mniejszej liczbie wieloktów i geometrii bazujcej na p tlach kraw dzi. Staraj si przy tym, aby nowa siatka bya moliwie najprostsza, ale jednoczenie maksymalnie odzwierciedlaa ksztat siatki oryginalnej. Rozwi zanie Przeanalizuj zawarto pliku baby_retopo.blend i zwró uwag na struktur nowej topologii modelu. Wzorujc si na tym przykadzie, utwórz now topologi wybranego modelu, a gdy skoczysz, zamie swoje dzieo na forum www.blenderartists.org/forum w dziale Focused Critique, aby podda je ocenie innych. Wnikliwe i krytyczne wskazówki pomog Ci skorygowa ewentualne b dy. Stosuj wypalanie map normalnych, aby przenie szczegóy rze by na model z uproszczon topologi . Wypalanie map normalnych umoliwia gromadzenie informacji o wektorach normalnych na powierzchni szczegóowych obiektów rzebionych i przechowywaniu ich w postaci dwuwymiarowych tekstur zwanych mapami normalnych. Mapy te mona nakada jako tekstury UV na uproszczone modele w celu wywoania zudzenia duej szczegóowoci ich powierzchni. Opanuj to Wzorujc si na przykadzie zaprezentowanym w tym rozdziale, spróbuj wypali map normalnych z obiektu wyrzebionego w pierwszym wiczeniu na obiekcie, który utworzye przy uyciu funkcji Retopo w wiczeniu poprzednim. Rozwi zanie Prawidowa mapa normalnych powinna sprawi , e zrenderowany model o uproszczonej siatce b dzie wyglda niemal tak samo jak oryginalny obiekt rzebiony. O skali tego podobiestwa najlepiej wiadczy zamieszczony w tym rozdziale rysunek przedstawiajcy trzy wersje gowy dziecka. Gdy skoczysz, zamie swoje dzieo na forum www.blenderartists.org/forum w dziale Focused Critique, aby podda je ocenie innych. Wnikliwe i krytyczne wskazówki pomog Ci skorygowa
ewentualne b dy.
404 ~ DODATEK A ROZWI ZANIA
Rozdzia 3. Zwikszanie realizmu scen za pomoc odpowiednich tekstur i materiaów Uywaj efektywnie narzdzi do mapowania tekstur. Blender dysponuje jednymi z najlepszych narz dzi do mapowania tekstur UV. Jeli je opanujesz, b dziesz móg nakada paskie obrazy na trójwymiarowe modele dokadnie tak, jak sobie zaplanujesz. Opanuj to Na pycie doczonej do ksiki odszukaj plik o nazwie engine.blend i otwórz go. Utwórz szwy, rozwi siatk i wyeksportuj ukad cianek do GIMP-a. Na koniec naó testow siatk UV na model. Rozwi zanie Gotowe rozwini cie siatki znajduje si na pycie w pliku engine_unwrap.blend. cz tekstury, aby uzyska rozmaite efekty powierzchniowe. Umiej tne posugiwanie si teksturami UV i funkcj wypalania tekstur pozwoli Ci tworzy bezszwowe tekstury imitujce najrozmaitsze powierzchnie. Bardzo pomocna jest przy tym znajomo programu do edycji obrazów, na przykad GIMP-a. Opanuj to Wykorzystaj zamieszczon na pycie tekstur metal_texture.jpg lub inn pobran z internetu bd przygotowan wasnor cznie i przy uyciu metod poznanych w tym rozdziale utwórz bezszwow tekstur koloru oraz map nierównoci dla modelu engine.blend. Rozwi zanie Jedno z moliwych rozwiza znajdziesz w pliku engine_tex.blend na pycie doczonej do ksiki. Wykorzystuj maksymalnie moliwoci dostpnego w Blenderze systemu materiaów i twórz zoone materiay oraz cieniowania. Generowanie tekstur to tylko pierwszy etap tworzenia realistycznych materiaów. Kluczowe znaczenie ma te waciwe ich mapowanie i ustawianie parametrów materiaów. Opanuj to Obie tekstury, które utworzye w poprzednim wiczeniu, wcz do jednego materiau, aby decydoway o kolorze i nierównociach powierzchni. Przez odpowiednie ustawienie waciwoci cieniowania nadaj materiaowi przekonujco metaliczny wygld. Rozwi zanie Jedno z moliwych rozwiza znajdziesz w pliku engine_mat.blend na pycie doczonej do ksiki.
ROZDZIA 4. KOMPONOWANIE WIDEOKLIPÓW PRZY U YCIU WZÓW~ 405
Rozdzia 4. Komponowanie wideoklipów przy uyciu wzów Zaimplementowany w Blenderze system w zów jest niezwykle elastycznym i pot nym narz dziem do czenia wielu obrazów i nagra wideo w celu uzyskania rozmaitych efektów. System umoliwia mi dzy innymi tworzenie masek green screen, które z kolei su do oddzielania postaci pierwszoplanowych od ta i wkomponowywania ich w inne sceny. Uywaj systemu wzów do tworzenia masek green screen. Jeli z góry wiadomo, e filmowany obiekt b dzie przenoszony do innego otoczenia, zwykle stosuje si popularn technik zwan green screen, polegajc na filmowaniu pierwszego planu na tle jednobarwnego ekranu. To umoliwia atwe i szybkie usuwanie ta przy uyciu odpowiednich w zów operujcych na poszczególnych kanaach koloru. Opanuj to Wykorzystujc ukad w zów utworzony w ramach wicze wykonywanych w tym rozdziale, dodaj do obrazu pierwszoplanowego to, aby uzyska
w peni skomponowany obraz, taki jak na rysunku 4.64. Uyj do tego celu pliku sky_map.jpg zapisanego na pycie doczonej do ksiki. Rozwi zanie Jedno z moliwych rozwiza tego wiczenia znajdziesz w pliku greenscreen_final.blend. Do tworzenia animowanych masek elementów niepo danych uywaj krzywych i haczyków. Niejednolite to w materiale oryginalnym moe prowadzi do powstania niewaciwej maski. W celu wyeliminowania takich niedoskonaoci stosuje si tzw. maskowanie elementów niepodanych (garbage matting). W miejscach, w których maska musi czy si z konturami planu pierwszego, konieczne moe by r czne jej animowanie. Opanuj to Za pomoc krzywej animowanej przy uyciu haczyków utwórz jeszcze jedn mask dla przykadowego materiau wideo, aby zakry niepodane elementy po prawej stronie kadru. Rozwi zanie Jedno z moliwych rozwiza tego wiczenia znajdziesz w pliku greenscreen_final.blend. Aby usun niekorzystne przebarwienie, manipuluj kanaami koloru. Gdy czysz nagrania zarejestrowane w rónych warunkach owietleniowych, musisz si liczy
z koniecznoci dopasowania ich kolorystyki. Jest to szczególnie istotne w przypadku nagra wykonywanych technik green screen. Ziele ekranu cz sto przelewa si na obiekty pierwszoplanowe, a to w ostatecznej kompozycji nie wyglda najlepiej. Aby ten niekorzystny efekt wyeliminowa , moesz zmodyfikowa kanay koloru takiego nagrania. Dzi ki dobraniu odpowiednich proporcji mi dzy wartociami w kanaach R, G i B zwykle udaje si tego typu problemy rozwiza .
406 ~ DODATEK A ROZWI ZANIA
Opanuj to Do kompozycji wykonanej w ramach pierwszego wiczenia „Opanuj to” wprowad delikatne fioletowe przebarwienia w najjaniejszych obszarach postaci na pierwszym planie. Powiniene uzyska rezultat podobny do tego z rysunku 4.65. Rozwi zanie Jedno z moliwych rozwiza tego wiczenia znajdziesz w pliku greenscreen_final.blend.
Rozdzia 5. Edytor wideo (VSE) Importuj, edytuj i renderuj wideo przy uyciu edytora VSE. VSE, czyli Video Sequence Editor (Edytor wideo), jest pot nym, wieloplatformowym narz dziem do edycji wideo. Jedn z jego najwi kszych zalet jest to, e bez wi kszych problemów obsuguje szerok gam formatów graficznych, filmowych i dwi kowych zarówno na wejciu, jak i na wyjciu. Opanuj to Zaimportuj plik idol_clip.mov z pyty doczonej do ksiki. Za pomoc cieki Transform (transformacja) utwórz animacj obrotu obrazu. Wyrenderuj przetworzone w ten sposób wideo jako seri obrazów JPEG. Rozwi zanie Zaznacz ciek wideo i dodaj ciek Transform (transformacja). W panelu Effect (efekt) ustaw parametr rot Start (pocztek obrotu) na 0.0, a rot End (koniec obrotu) na 360. Uksztatuj krzyw IPO dla tej cieki tak, aby osigaa wartoci od 0 do 1. W panelu Format nalecym do subkontekstu Render buttons (przyciski renderowania) wybierz z listy rozwijanej opcj Jpeg, a nast pnie kliknij przycisk Anim (Animuj). Twórz przejcia, nakadki i inne efekty. VSE oferuje wiele gotowych efektów i przej , dzi ki którym mona szybko i atwo tworzy proste kompozycje wideo. Bez problemu mona te wykorzystywa przezroczysto zdefiniowan w scenach 3D. Opanuj to W filmie end_zone_clip.avi utwórz napis o treci Checkmate (szach i mat). Napis powinien si pojawi , gdy kwesti t wypowiada robot. Wyrenderuj film wraz z dwi kiem jako plik .avi. Rozwi zanie Utwórz pen kopi przygotowanej wczeniej sceny Check (szach) i nadaj jej nazw Checkmate (szach i mat). Zmie napis i dopasuj rozmiar paszczyzny stanowicej jego to. Dodaj ciek nowej sceny, tak jak robie to dla sceny Check, i ustaw j w odpowiednim miejscu. Dodaj take ciek typu Alpha Over (alfa nad). W panelu Format wybierz z listy rozwijanej opcj FFMpeg, a jako kodeki wybierz dla wideo Xvid, a dla audio — MP3. W czaj do filmów sceny 3D bezporednio lub po skomponowaniu za pomoc
systemu wzów. VSE umoliwia czenie sekwencji wideo z animowanymi scenami przygotowanymi w oknie 3D View (Widok 3D) i scenami skomponowanymi w oknie Node Editor (edytor w zów). W sumie tworzy to niezwykle pot ny i w peni zintegrowany system kompozycyjno-edycyjny.
ROZDZIA 6. PYTHON DLA NIECIERPLIWYCH~ 407
Opanuj to Kompozycj green screen utworzon w ramach wiczenia z rozdziau 4. otwórz w oknie VSE, a nast pnie pocz j z dowoln ciek wideo, tworzc mi dzy nimi przejcie typu Wipe (przecieranie). Uzyskan sekwencj wyrenderuj w formacie, jaki uznasz za stosowny. Rozwi zanie Skomponowan scen moesz doczy do nowego pliku .blend za pomoc polecenia Append or Link (docz lub utwórz cze) z menu File (Plik), tak samo jak kady inny blok danych. W edytorze wideo dodaj ciek sceny — po prostu wcinij klawisz spacji i wybierz opcj Scene (Scena). W podobny sposób dodaj ciek wideo (moesz wybra jedno z nagra zamieszczonych na pycie doczonej do ksiki). Tym razem po wcini ciu klawisza spacji musisz wybra Movie (film), Image Sequence (sekwencja obrazów) lub Movie + Audio (film + dwi k), w zalenoci od rodzaju nagrania. Zaznacz pierwsz ciek , a nast pnie wcinij klawisz Shift i zaznacz drug. Teraz wcinij klawisz spacji i wybierz opcj Wipe (przecieranie). Na koniec w subkontekcie Render buttons (przyciski renderowania) wcz opcj Do Sequence (utwórz sekwencj ) i kliknij przycisk Anim (Animuj), aby wyrenderowa ca sekwencj . Przykad filmu utworzonego w ten sposób znajduje si w pliku comp_seq.mov na pycie doczonej do ksiki.
Rozdzia 6. Python dla niecierpliwych Poznaj podstawy jzyka Python. Python jest j zykiem skryptowym powszechnie stosowanym w wielu dziedzinach programowania komputerowego. Jest atwy w uyciu, czytelny i umoliwia szybkie tworzenie programów. Opanuj to Postaraj si o dobr literatur na temat Pythona, a szczególnie jego skadni. Moesz rozway zakup jednej z ksiek, które zaprezentowaem na pocztku rozdziau. Za pomoc wyszukiwarki Google znajd kilka witryn internetowych z dobrze opracowanymi informacjami o typach danych i operatorach Pythona. Rozwi zanie Znakomita ksika Marka Pilgrima Dive Into Python (Apress, 2004) ma dodatkowo t zalet , e mona j pobra za darmo ze strony internetowej www.diveintopython.org w wielu popularnych formatach. Wszystko, co musisz wiedzie
o samym Pythonie i jego skadni, znajdziesz w oficjalnej dokumentacji tego j zyka, dost pnej na stronie www.python.org. Naucz si korzysta z powoki Pythona i rodowiska IDLE. Najszybszy dost p do Pythona daje okno jego powoki, b dce cz ci rodowiska programistycznego IDLE. Tutaj moesz wydawa pojedyncze polecenia i sprawdza wartoci zmiennych. Opanuj to Z tego rozdziau dowiedziae si , e nie mona poczy acucha z liczb cakowit za pomoc operatora +. Nie mona równie dodawa acuchów, tak jak dodaje si liczby. Jednak w niektórych przypadkach mona wartoci numeryczne traktowa jako typ acuchowy (przynajmniej formalnie). Si gnij do róde wiedzy zgromadzonych w ramach pierwszego wiczenia „Opanuj to” i poszukaj informacji o rzutowaniu typów w Pythonie. Dowiedz si , jak mona acuch "5" zmieni w liczb cakowit, któr b dzie mona doda do innej liczby.
408 ~ DODATEK A ROZWI ZANIA
Rozwi zanie Niektóre proste typy danych mona konwertowa na typ acuchowy za pomoc funkcji str(). Podobnie funkcja int() umoliwia konwersj na liczb cakowit. To wanie tej funkcji musisz uy , aby acuch doda do liczby cakowitej. Powysze zadanie rozwiesz wi c w nast pujcy sposób: >>print 2 + int("5") >>7
Poznaj podstawowe cechy skadni Pythona. Python jest j zykiem programowania o duych moliwociach z wieloma wbudowanymi typami danych, rozbudowanymi opcjami sterowania przebiegiem programu i uytecznymi funkcjami. Jedn z jego cech charakterystycznych jest uzalenienie reprezentacji struktur logicznych od wci
linii kodu. Opanuj to Utwórz zmienn my_list i przypisz jej list [1,2,1,3,1,4]. Wywoaj funkcj dir()z t list jako argumentem. Jak mylisz, która z metod wypisanych przez funkcj dir()nadaje si do usuni cia jednego z elementów listy? Poeksperymentuj z tymi metodami, które uznasz za waciwe, i spróbuj usun z listy liczb 2. Jako wynik powiniene otrzyma list [1,1,3,1,4]. Spróbuj te znale metod , która zwróci liczb wystpie cyfry 1 w tej licie. Rozwi zanie Wród metod zwracanych przez funkcj dir()wywoan z argumentem typu lista s remove() i count(). Pierwsza z nich usuwa wskazane elementy z listy, a druga zlicza wystpienia danego elementu w licie. Aby usun
liczb 2 z podanej w zadaniu listy oraz zliczy wystpienia liczby 1, napisz nast pujcy skrypt: >>my_list = [1,2,1,3,1,4] >>my_list.remove(2) >>print my_list >>[1,1,3,1,4] >>my_list.count(1) >>3
Rozdzia 7. Skrypty Pythona w Blenderze Edytuj i uruchamiaj skrypty w Blenderze. Blender ma wbudowany edytor tekstu, w którym moesz pisa skrypty lub komentarze. Edytor jest wyposaony w funkcje numerowania linii i kolorowania elementów skadni Pythona. Opanuj to Naucz si posugiwa edytorem tekstu dost pnym w Blenderze. Otwórz okno Text Editor (Edytor tekstu) i z menu Text (Tekst) wybierz polecenie Script Templates/Object Editing (szablony skryptów/edytowanie obiektu), aby otworzy
szablon skryptu do edycji obiektów. Uruchom ten skrypt (wcinij klawisze Alt+P). Nast pnie odszukaj ten fragment kodu, który odpowiada za wypisanie liczby obiektów w scenie, i zmie go tak, aby bya wypisywana liczba obiektów zaznaczonych.
ROZDZIA 8. W O WIELU GOWACH, CZYLI INNE ZASTOSOWANIA PYTHONA W BLENDERZE~ 409
Rozwi zanie Zmiany wymaga wiersz 18. Aby zobaczy , jakie metody i waciwoci udost pnia obiekt o nazwie scn.objects, uyj funkcji dir(). Sporód wszystkich pozycji zwróconych przez t funkcj wybierz waciwo o nazwie selected (zaznaczone). Wspomniany wiersz powinien mie nast pujc posta : print 'Scene selected object count', len(sce.objects.selected)
Poznaj API Blendera. Jeli b dziesz uywa Pythona do pisania skryptów dla Blendera, API stanie si Twoim wiernym kompanem. Dua cz nauki pisania skryptów polega na opanowaniu sztuki sprawnego korzystania z API. Opanuj to W korzystaniu z API wane jest, aby wiedzie , do czego su poszczególne moduy i klasy. Otwórz teraz spis klas i spróbuj odpowiedzie
na nast pujce pytania. Której klasy naley uy do pracy z obiektem tekstowym w przestrzeni 3D? Która metoda b dzie odpowiednia do wprowadzenia acucha tekstowego dla tego obiektu? Rozwi zanie Przede wszystkim potrzebny b dzie modu Text3d, a nie Text. Klasa odpowiednia dla takiego tekstu ma tak sam nazw jak modu, czyli Text3d, a do wprowadzania acucha znaków suy metoda setText(). Utwórz skrypt interaktywny. Pythonowe API Blendera zawiera narz dzia do tworzenia graficznych interfejsów, dzi ki którym moliwe jest wydawanie polece i ustawianie parametrów w sposób interaktywny. Opanuj to Zmie zaprezentowany w tym rozdziale przykadowy generator stoków skaczcych, aby zamiast stoków generowa podskakujce napisy. Pozostaw moliwo ustawiania koloru, pooenia pocztkowego, szybkoci i wysokoci podskoków, ale zamiast ustawiania rozmiarów wprowad moliwo wpisywania tekstu tworzonych napisów. Rozwi zanie Rozwizanie tego wiczenia znajdziesz w pliku text_exercise.blend zamieszczonym na pycie doczonej do ksiki.
Rozdzia 8. W o wielu gowach, czyli inne zastosowania Pythona w Blenderze Reguluj krzywe IPO za pomoc sterowników pythonowych. Sterowniki pythonowe (PyDrivers) umoliwiaj ustawianie krzywych IPO w oparciu o matematyczne wyraenia zapisane w Pythonie. Takie rozwizanie jest znacznie elastyczniejsze od sterowników tradycyjnych, poniewa dopuszcza stosowanie wielu wartoci wejciowych i skomplikowanych funkcji obliczajcych warto wyjciow. Opanuj to Napisz sterownik pythonowy, który uzaleni czerwon skadow koloru materiau od odlegoci mi dzy dwiema ko mi armatury. Przy odlegociach mniejszych od jednej jednostki Blendera materia powinien by czarny. Przy odlegociach
410 ~ DODATEK A ROZWI ZANIA
wi kszych od trzech jednostek materia powinien by czerwony. Aby napisa odpowiedni skrypt, b dziesz musia przestudiowa fragment API powi cony moduowi Pose oraz klasie Vector z moduu Mathutils. B dziesz musia uzyska dost p do obiektu Pose i zawartych w nim koci (potrzebne b d wspórz dne gówek koci), aby okreli
odlego mi dzy nimi. Po odj ciu pooenia jednej koci od pooenia drugiej musisz obliczy dugo uzyskanego w ten sposób wektora. Potem pozostanie Ci ju tylko wykona proste operacje arytmetyczne, aby odwzorowa otrzyman warto na kolor materiau. Rozwi zanie Pene rozwizanie tego zadania znajdziesz w pliku PyDriverSolution.blend, ale sam pythonowy sterownik dla krzywej IPO decydujcej o skadowej R koloru materiau powinien wyglda nast pujco (oczywicie naley go zapisa w jednym wierszu): ((ob('Armature').getPose().bones['Bone.001'].head-ob('Armature').getPose().bones ´['Bone'].head).length-1)/2
Twórz skrypty Pythona dla wzów i wizów. Pythonowe w zy i wi zy oferuj jeszcze g bsz integracj Pythona ze rodowiskiem Blendera i umoliwiaj definiowanie wasnych w zów i wi zów przy uyciu caej pot gi Pythona. Opanuj to Utwórz wi zy zmuszajce obiekt do pozostawania na linii czcej dwa obiekty docelowe. Trzeci obiekt docelowy wykorzystaj do wyznaczenia na tej linii miejsca, w którym obiekt podlegajcy wi zom powinien si znajdowa , aby wszystkie cztery obiekty tworzyy ksztat podobny do litery T. Obiekt z wi zami powinien znajdowa si na przeci ciu odcinków tworzcych ten ksztat. Jeli obiekt sterujcy zostanie przesuni ty poza koniec odcinka czcego dwa pierwsze obiekty docelowe, obiekt z wi zami powinien pozosta przy najbliszym kocu odcinka. Do wykonania tego zadania b dzie potrzebna znajomo pewnych wzorów trygonometrycznych. Przyda si te przestudiowanie dokumentacji klasy Vector zdefiniowanej w module Mathutils API Blendera. Rozwi zanie Rozwizanie tego wiczenia znajdziesz w pliku PyConstraintSolution. blend zamieszczonym na pycie doczonej do ksiki. Uyj czy skryptowych i skryptów typu space handler, aby osi gn jeszcze wikszy poziom interaktywnoci. cza skryptowe i skrypty typu space handler to sposób na uruchamianie skryptów przez zdarzenia generowane w Blenderze i umieszczanie elementów interfejsu bezporednio w oknie widokowym. Opanuj to Zmodyfikuj space hendler z ostatniego przykadu, tak aby tworzy przycisk kwadratowy zamiast okrgego. Nie zapomnij o dopasowaniu pooenia wskanika myszy do nowego ksztatu przycisku. Zmie równie dziaanie przycisku, aby przecza tryby widoku Solid (Solidny) na Wireframe (Kontury) i na odwrót. Rozwi zanie Rozwizanie tego wiczenia znajdziesz w pliku SquareSpaceHandler. blend zamieszczonym na pycie doczonej do ksiki.
ROZDZIA 9. PRZYGOTOWYWANIE SCEN DLA SILNIKA GIER~ 411
Rozdzia 9. Przygotowywanie scen dla silnika gier Modeluj, riguj i teksturuj trójwymiarowe postacie zgodnie z wymogami silnika gier. Do eksperymentowania z silnikiem gier najlepiej nadaje si zrigowana posta
o prostej siatce zoonej z niewielkiej liczby wieloktów. Modelowanie, rigowanie i animowanie przy uyciu funkcji okna Action Editor (Edytor akcji) mona przeprowadzi
stosunkowo atwo i szybko. Opanuj to Podczas tworzenia postaci gównego bohatera naszej gry zastosowalimy teksturowanie metod TexFace, a zatem posta ta nie mogaby by owietlana lampami w czasie rzeczywistym podczas gry. Napraw to — utwórz dla tej postaci materia zawierajcy t sam zmapowan ju tekstur UV, któr utworzye wczeniej. Rozwi zanie Rozwizanie tego wiczenia znajdziesz w pliku character_mat.blend zamieszczonym na pycie doczonej do ksiki. Utwórz proste rodowisko gry zoone z labiryntu i skyboksu, stosuj c mapowanie tekstur. Do utworzenia interesujcego rodowiska gry cz sto wystarcz proste modele pokryte odpowiednio spreparowanymi teksturami. Doskonaym sposobem na przemycenie tekstur proceduralnych do rodowiska silnika gier jest ich wypalanie. Opanuj to
Pokryj interesujc tekstur podog i ciany labiryntu.
Rozwi zanie Rozwizanie tego wiczenia znajdziesz w pliku game_objects.blend zamieszczonym na pycie doczonej do ksiki. Umie obiekty w rodowisku gry i ustaw opcje materiaów oraz owietlenia w silniku gier. W zarzdzaniu elementami zoonych projektów due znaczenie ma umiej tno doczania obiektów i ich grup do pliku .blend. Natomiast waciwe rozumienie interakcji mi dzy materiaami a wiatem w silniku gier pozwala nadawa
obiektom i ich otoczeniu wygld zgodny z oczekiwaniami projektantów gry. Opanuj to W trakcie lektury tego rozdziau doczae do gry labirynt i skybox, a nast pnie skalowae je, aby pasoway do siebie pod wzgl dem rozmiarów. Teraz docz do nich posta gównego bohatera. Zastosuj grupowanie, aby za jednym razem doczy siatk i armatur . Dostosuj wymiary postaci do pozostaych elementów gry i nie zapomnij o zatwierdzeniu tej operacji. Sprawd, czy po skalowaniu animacja postaci wyglda prawidowo. Jeli s z tym jakie problemy, przelicz ponownie kty skr cenia koci w trybie edycyjnym. Rozwi zanie Rozwizanie tego wiczenia znajdziesz w pliku game_objects.blend zamieszczonym na pycie doczonej do ksiki.
Rozdzia 10. Uruchamianie silnika gier Steruj postaciami i caymi scenami za pomoc bloków logicznych. Interaktywne sterowanie obiektami umoliwia rozbudowany system bloków logicznych. Przy uyciu czujników, kontrolerów i akcji mona wywoywa rozmaite zdarzenia w odpowiedzi na rónego typu sygnay wejciowe.
412 ~ DODATEK A ROZWI ZANIA
Opanuj to W tym rozdziale zobaczye, jak mona zmusi posta , by maszerowaa do przodu i skr caa w prawo. Utwórz podobn posta , która b dzie potrafia równie skr ca w lewo i maszerowa do tyu. Rozwi zanie Peny ukad logiczny dla armatury, wcznie z obrotem w lewo i maszerowaniem do tyu, znajdziesz w pliku game.blend zamieszczonym na pycie doczonej do ksiki. Twórz zoone interakcje przy uyciu waciwoci, komunikatów i stanów. System bloków logicznych, z jakim mamy do czynienia w rodowisku BGE, umoliwia (podobnie jak j zyki programowania) przechowywanie rozmaitych wartoci w formie waciwoci, wymian informacji mi dzy blokami za pomoc komunikatów i wczanie oraz wyczanie okrelonych bloków przy uyciu stanów. Dzi ki tym funkcjom mona tworzy nawet bardzo zoone systemy interakcyjne; jedynym ograniczeniem jest graficzna natura samych bloków logicznych. Opanuj to Zmodyfikuj ukad logiczny sterowania czarownikiem, aby kierunek jego ruchu zmienia si po kadym zderzeniu z gównym bohaterem lub z innym czarownikiem. Rozwi zanie Najprociej zrobisz to, dodajc armaturze gównego bohatera waciwo o nazwie bump (zderzenie). Kady czarownik zosta tak skonfigurowany, e po zderzeniu z obiektem o takiej waciwoci zmienia kierunek ruchu. Oczywicie taki efekt zaobserwujesz tylko wtedy, gdy gówny bohater b dzie chroniony moc przej t od zielonej kuli, w przeciwnym razie jego spotkanie z czarownikiem spowoduje zakoczenie gry. Stosuj tekstury do tworzenia dynamicznych tekstów i dwuwymiarowych animacji na potrzeby gier. Za pomoc tekstur mona w BGE tworzy rozmaite efekty specjalne. Przykadami takich efektów mog by teksty dynamiczne o treci aktualizowanej przez bloki logiczne oraz animacje tworzone przy uyciu specjalnie mapowanych tekstur i odpowiednio dobranych parametrów. Opanuj to Utwórz dwuwymiarow animacj cyklu spacerowego, stosujc metod opisan w tym rozdziale. Wykorzystaj ortogonalne renderingi maszerujcej postaci, któr tworzye w ramach wiczenia z rozdziau 9., a nast pnie umie te renderingi w jednym obrazie (moesz to zrobi w dowolnym programie graficznym, na przykad w Photoshopie lub GIMP-ie). Obraz zrzutuj na paszczyzn , aby w rodowisku BGE otrzyma pask sylwetk maszerujcej postaci. Rozwi zanie Rozwizania tego wiczenia szukaj w plikach z folderu texture walk zamieszczonego na pycie doczonej do ksiki. Wzbogacaj swoje gry efektami d wikowymi. Dwi kami mona manipulowa w BGE za pomoc akcji typu Sound (Dwik). Istnieje te specjalna funkcja, która automatycznie uzalenia nat enie dwi ku od odlegoci jego róda od kamery.
ROZDZIA 11. CZENIE POTGI PYTHONA Z MO LIWOCIAMI SILNIKA GIER~ 413
Opanuj to Gotowe i darmowe pliki z rozmaitymi dwi kami znajdziesz w internecie pod adresem www.freesounds.org. Wyszukaj kilka interesujcych efektów i post pujc wedug wskazówek z ostatniego przykadu, dodaj dwi ki 3D do obiektów poruszajcych si w przestrzeni trójwymiarowej. Rozwi zanie Jedno z moliwych rozwiza tego wiczenia znajdziesz w pliku soundcube.blend zamieszczonym na pycie doczonej do ksiki.
Rozdzia 11. czenie potgi Pythona z moliwociami silnika gier Zastpuj zoone ukady bloków logicznych prostymi skryptami Pythona. Przy uyciu kontrolera skryptowego czcego czujniki z akcjami zrealizujesz to samo, co za pomoc bloków logicznych, ale efektywniej i bardziej elegancko. Python pozwala na znacznie lepsze zorganizowanie ukadów logicznych. Opanuj to Poszerz moliwoci ruchowe postaci z pierwszego przykadu w tym rozdziale. Przygotuj odpowiedni animacj i za pomoc skryptu oraz niezb dnych bloków logicznych spraw, aby po wcini ciu klawisza W posta machaa r k. Rozwi zanie Rozwizanie tego wiczenia znajdziesz w pliku character_wave.blend zamieszczonym na pycie doczonej do ksiki. Przy uyciu Pythona twórz efekty, których nie mógby utworzy za pomoc
samych bloków logicznych. Bloki logiczne nie obsuguj wszystkich funkcji silnika gier. Nawet tak prosta rzecz, jak ustawianie obiektów w scenie, wymaga uycia Pythona. Wymagaj tego równie bardziej zoone operacje, w których potrzebne staje si uycie zmiennych i danych o rozmaitych strukturach. Opanuj to Utwórz i zaimplementuj skrypt, który zmusi standardowy szecian do podania za wskanikiem myszy po caym oknie widokowym. Rozwi zanie Rozwizanie tego wiczenia znajdziesz w pliku mouse_cube.blend zamieszczonym na pycie doczonej do ksiki. Twórz niekonwencjonalne rodowiska gry z efektami d wikowymi i wieloma oknami widokowymi. Sterowanie si dwi ku w czasie rzeczywistym czy dzielenie ekranu na kilka widoków moe znacznie poprawi interakcyjno i atrakcyjno gry bd wizualizacji. Przy uyciu Pythona uzyskanie takich efektów nie jest wcale trudne. Opanuj to Do ruchomego szecianu z poprzedniego wiczenia dodaj drugi, nieruchomy, który b dzie emitowa dwi k o nat eniu zwi kszajcym si do 1, gdy oba obiekty zbli si do siebie na minimaln odlego , i malejcym do 0, gdy obiekty maksymalnie si oddal. Rozwi zanie Rozwizanie tego wiczenia znajdziesz w pliku volume_objects.blend zamieszczonym na pycie doczonej do ksiki.
414 ~ DODATEK A ROZWI ZANIA
Dodatek B
Hierarchie moduów i klas pythonowego API Blendera W tym dodatku znajdziesz pen list moduów, submoduów i klas pythonowego API Blendera wraz z krótkimi opisami ich funkcji. Szczegóowe opisy poszczególnych metod i waciwoci zawarte s w dokumentacji tego API zamieszczonej na pycie doczonej do ksiki (plik 248PythonDoc.tar.bz2) oraz w internecie, na stronie www.blender.org/documentation/248PythonDoc/.
Hierarchia moduów Ponisza lista stanowi wykaz wszystkich moduów i submoduów pythonowego API Blendera. W kilku przypadkach nazwy moduów i submoduów przytaczane w dokumentacji róni si od rzeczywistych nazw tych obiektów. W poniszym wykazie zachowano nazewnictwo przyj te w dokumentacji.
API_intro — przegld zawartoci API
API_related — specjalne funkcje API
Armature — submodu Blender.Armature
BGL — submodu Blender.BGL (opakowanie biblioteki OpenGL)
BezTriple — submodu Blender.BezTriple
Blender — gówny modu Blendera
Bpy — modu bpy
Bpy_config — ten modu umoliwia bezporedni dost p do ustawie Blendera
Bpy_data — modu bpy.data
Camera — submodu Blender.Camera
Constraint — submodu Blender.Constraint
Curve — submodu Blender.Curve
Draw — submodu Blender.Draw
Effect — submodu Blender.Effect
Font — submodu Blender.Text3d.Font
Geometry — submodu Blender.Geometry
Group — submodu The Blender.Group
416 ~ DODATEK B HIERARCHIE MODUÓW I KLAS PYTHONOWEGO API BLENDERA
IDProp — modu IDProp
Image — submodu Blender.Image
Ipo — submodu Blender.Ipo
IpoCurve — submodu Blender.IpoCurve
Key — submodu Blender.Key
Lamp — submodu Blender.Lamp
Lattice — submodu Blender.Lattice
LibData — submodu bpy.libraries
Library — submodu Blender.Library
Material — submodu Blender.Material
Mathutils — submodu Blender.Mathutils
Mesh — submodu Blender.Mesh
MeshPrimitives — submodu Blender.Mesh.Primitives
Metaball — submodu Blender.Metaball
Modifier — submodu Blender.Modifier
NLA — submodu Blender.Armature.NLA
NMesh — submodu Blender.NMesh (wycofywany — zast puje go modu Mesh)
Noise — submodu Blender.Noise
Object — submodu Blender.Object
Particle — submodu Blender.Particle
Pose — submodu Blender.Object.Pose
Radio — submodu Blender.Scene.Radio
Registry — submodu Blender.Registry
Render — submodu Blender.Scene.Render
Scene — submodu Blender.Scene
Sound — submodu Blender.Sound
Sys — submodu Blender.sys
Text — submodu Blender.Text
Text3d — submodu Blender.Text3d
Texture — submodu Blender.Texture
Theme — submodu Blender.Window.Theme
TimeLine — submodu Blender.Scene.TimeLine
Types — sownik do sprawdzania typów obiektów blenderowych i pythonowych
Window — submodu Blender.Window
World — submodu Blender.World
HIERARCHIA KLAS~ 417
Hierarchia klas Ponisza lista stanowi wykaz wszystkich klas pythonowego API Blendera. Nazwy klas skadaj si z dwóch cz ci. Na lewo od kropki jest nazwa moduu lub submoduu, w którym klasa jest zdefiniowana, a na prawo — nazwa konkretnej klasy. Informacje o metodach i waciwociach zwizanych z dan klas znajdziesz w dokumentacji API.
Armature.Armature — udost pnia dane dotyczce armatury
Armature.Bone — udost pnia dane dotyczce koci
Armature.BonesDict — ma struktur sownika i udost pnia koci armatury
Armature.Editbone — stanowi opakowanie danych editbone i jest uywana wycznie
do manipulowania armatur w trybie edycyjnym BGL.Buffer — jest blokiem pami ci okrelonym i zainicjowanym przez uytkownika BezTriple.BezTriple — udost pnia najwaniejsze dane o wszystkich obiektach typu BezTriple Bpy_data.libBlockSeq — umoliwia manipulowanie typami danych, czyli obiektami bpy.data (s to sceny, obiekty, siatki, krzywe, metakule, materiay, tekstury, obrazy, kratownice, lampy, kamery, krzywe IPO, wiaty, czcionki, teksty, dwi ki, grupy, armatury, akcje) Camera.Camera — udost pnia dane dotyczce kamery Constraint.Constraint — udost pnia dane dotyczce konkretnych wi zów Constraint.Constraints — udost pnia sekwencj wi zów danego obiektu Curve.CurNurb — udost pnia punkty kontrolne krzywych Curve.Curve — udost pnia dane dotyczce krzywej Curve.SurfNurb — udost pnia punkty kontrolne powierzchni Draw.Button — reprezentuje przycisk interfejsu Effect.Effect — udost pnia dane dotyczce efektu czsteczkowego Font.Font — udost pnia obiekty typu Font Group.Group — umoliwia dost p do grup obiektów w Blenderze IDProp.IDArray — udost pnia waciwoci ID tak, jak elementy tablicy IDProp.IDGroup — umoliwia dost p do podrz dnych waciwoci ID w sposób iteracyjny i za pomoc operatora [] Image.Image — udost pnia obrazy w Blenderze Ipo.Ipo — udost pnia dane IPO dowolnego obiektu w Blenderze IpoCurve.IpoCurve — udost pnia szczegóowe dane dotyczce konkretnej krzywej IPO Key.Key — obiekt z klatkami kluczowymi (kratownica, obiekt typu NMesh lub krzywa) b dzie zawiera obiekt typu Key reprezentujcy klatk kluczow Key.KeyBlock — kady obiekt typu Key ma doczon list obiektów typu KeyBlock, z których kady reprezentuje klatk kluczow
418 ~ DODATEK B HIERARCHIE MODUÓW I KLAS PYTHONOWEGO API BLENDERA
Lamp.Lamp — udost pnia dane dotyczce lampy
Lattice.Lattice — udost pnia dane dotyczce kratownicy
LibData.LibData — umoliwia dost p do danych z okrelonej biblioteki
LibData.Libraries — udost pnia ujednolicony sposób manipulowania bibliotekami
Material.Material — udost pnia materia
Mathutils.Euler — udost pnia dane dotyczce obrotów w Blenderze
Mathutils.Matrix — udost pnia dane dotyczce macierzy
Mathutils.Quaternion — udost pnia dane dotyczce kwaternionów
Mathutils.Vector — udost pnia dane dotyczce wektorów
Mesh.MCol — skada si z czterech wartoci cakowitych reprezentujcych
skadowe RGBA Mesh.MEdge — udost pnia dane dotyczce kraw dzi Mesh.MEdgeSeq — umoliwia sekwencyjny i iteracyjny dost p do kraw dzi siatki Mesh.MFace — udost pnia dane dotyczce cianki Mesh.MFaceSeq — umoliwia sekwencyjny i iteracyjny dost p do cianek siatki Mesh.MVert — udost pnia dane dotyczce wierzchoka Mesh.MVertSeq — umoliwia sekwencyjny i iteracyjny dost p do wierzchoków siatki Mesh.Mesh — udost pnia dane dotyczce siatki Metaball.MetaElemSeq — umoliwia sekwencyjny i iteracyjny dost p do elementów metakuli Metaball.Metaball — udost pnia dane dotyczce metakul Metaball.Metaelem — umoliwia bezporedni dost p do elementów metakuli Modifier.ModSeq — umoliwia dost p do listy modyfikatorów konkretnego obiektu Modifier.Modifier — umoliwia dost p do danych modyfikatora zwracanego przez ModSeq NLA.Action — udost pnia dane dotyczce akcji (sekwencji animacyjnej) NLA.ActionStrip — umoliwia dost p do cieki konkretnej akcji NLA.ActionStrips — udost pnia obiekty typu ActionStrip dla konkretnego obiektu NMesh.NMCol — jest list zoon z czterech liczb cakowitych [r, g, b, a], reprezentujcych skadowe RGBA koloru NMesh.NMEdge — zawiera dane opisujce kraw d siatki NMesh.NMFace — zawiera dane opisujce ciank siatki NMesh.NMVert — zawiera dane opisujce wierzchoek siatki NMesh.NMesh — udost pnia dane dotyczce siatki Object.Object — udost pnia dane dotyczce obiektów w Blenderze Object.Property — udost pnia dane dotyczce waciwoci obiektu uywanych przez silnik gier
HIERARCHIA KLAS~ 419
Particle.Particle — udost pnia dane dotyczce czsteczki
Pose.Pose — udost pnia dane dotyczce pozy
Pose.PoseBone — udost pnia dane dotyczce koci tworzcych poz
Pose.PoseBonesDict — ma struktur sownika i udost pnia koci tworzce poz
Radio.Radio — stanowi opakowanie kontekstu radiosity w biecej scenie
Render.RenderData — udost pnia kontekst renderowania sceny
Renderlayer.RenderLayer — udost pnia warstwy renderingu
Scene.Scene — udost pnia dane dotyczce sceny
Scene.SceneObjects — umoliwia dost p do obiektów sceny
Sound.Sound — udost pnia dane dotyczce dwi ku
Text.Text — udost pnia dane dotyczce tekstu
Text3d.Text3d — umoliwia dost p do obiektów typu Font w Blenderze
Texture.MTex — czy materia z tekstur
Texture.Texture — udost pnia dane dotyczce tekstury
Theme.Theme — umoliwia dost p do motywów interfejsu Blendera
Theme.ThemeSpace — dla kadej przestrzeni roboczej Blendera istnieje odr bny
submotyw (z wyjtkiem okna skryptów, ale wkrótce ma to by uzupenione) Theme.ThemeUI — submotyw UI, do którego dost p mona uzyska za pomoc theme.get(t), gdzie t moe mie warto 'ui' lub -1 TimeLine.TimeLine — stanowi opakowanie kontekstu osi czasu w biecej scenie World.World — udost pnia dane dotyczce wiata w Blenderze
420 ~ DODATEK B HIERARCHIE MODUÓW I KLAS PYTHONOWEGO API BLENDERA
Dodatek C
Ewolucja interfejsu uytkownika programu Blender Zacznik zawiera peny tekst pracy Williama Reynisha powi conej ewolucji interfejsu Blendera, zaprezentowanej na konferencji Blender Conference w 2008 roku; tre
wystpienia zostaa udost pniona na stronie internetowej www.blender.org. Dokument zosta przygotowany w zwizku z wprowadzeniem nowego kodowania systemu zdarze w wersji 2.5, które moe skutkowa wieloma zmianami w interfejsie programu. Tekst Reynisha stanowi istotny krok w stron okrelenia kierunku tych zmian. Jako niezwykle dowiadczony animator i jeden z czoowych twórców uczestniczcych w otwartym projekcie filmowym Big Buck Bunny William Reynish zdoby ogromn wiedz na temat mocnych i sabych stron Blendera w profesjonalnym rodowisku produkcyjnym. Drobne utrudnienia, na które natrafia niedowiadczony uytkownik sp dzajcy dugie godziny, aby dotrzyma rygorystycznych terminów, mog by naprawd frustrujce. W zwizku z tym obserwacje Williama dotyczce zalet i wad interfejsu Blendera stanowi doskonay punkt wyjcia do rozwaa na temat moliwoci jego usprawnienia. Zamieszczam ten tekst tutaj w caoci, aby uatwi Ci poznanie kierunków oraz powodów zmian, jakie w najbliszej przyszoci czekaj Blendera. Nie jest to dokumentacja programu, a wszystkie sugestie tu zawarte nie powinny by utosamiane z ostatecznymi rozwizaniami, jakie zostan zastosowane w wersji 2.5. Naley ten tekst traktowa raczej jako prób spojrzenia za kulisy tego, co b dzie miao wpyw na ostateczn posta nowej wersji programu. Oryginalna wersja prezentowanego raportu jest dost pna w formacie PDF na stronie http://download.blender.org/documentation/bc2008/evolution_of_blenders_ui.pdf W tym miejscu chc podzi kowa Williamowi nie tylko za ten raport, ale równie za udost pnienie mi wielu oryginalnych plików ródowych.
Ewolucja interfejsu Blendera Niniejszy artyku ma na celu przyblienie byych, obecnych i planowanych zmian w programie Blender. Wykorzystanie w nim niezachodzcych na siebie okien okazao si pomysem lepszym od wielu innych rozwiza i zainspirowao twórców innych aplikacji, takich jak Apple Motion czy Luxology Modo. W miar upywu lat pojawiao si jednak wiele problemów i niedogodnoci zwizanych z programem. Zbliajce si wydanie wersji 2.5 Blendera stanowi doskona okazj do radykalnych zmian i zaimplementowania nowoczesnego, elastycznego i atwego w obsudze interfejsu, który zachowa w sobie najwaniejsze rozwizania sprawdzone w przeszoci.
422 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
Zmiany te maj przyczyni si do zwi kszenia atrakcyjnoci programu wród profesjonalistów i uatwi jego obsug dla wi kszej rzeszy uytkowników. W artykule przedstawiono analiz wyzwa stawianych przed programem, a take zebrano konkretne propozycje oczekiwanych rozwiza.
Analiza Zanim zajmiemy si modyfikowaniem interfejsu Blendera, warto dokadnie zapozna
si z jego aktualnym modelem oraz histori jego ewolucji. Na samym pocztku Blender by pomylany jako warsztatowe narz dzie dla grafików niewielkiego studia animacji w Holandii. Fakt, e twórcy programu byli take jego uytkownikami, a caa aplikacja zostaa zaprojektowana na potrzeby maego studia, w którym wszyscy cile ze sob wspópracowali, mia istotny wpyw na posta interfejsu Blendera. Jak wspomniano na stronie www.blender.org, kluczowe znaczenie dla pierwotnego ksztatu programu miay nast pujce zaoenia:
Powinien by jak najbardziej niemodalny i pozwala uytkownikom na natychmiastowy dost p do kadej cz ci aplikacji — rozwizanie optymalne dla pracujcych samodzielnie artystów i niewielkich zespoów, dla których wana jest wielozadaniowo . Powinien by zbudowany na niezachodzcych na siebie oknach oraz wielopoziomowej strukturze, co uwalniaoby twórców od koniecznoci przesuwania okien w celu odsaniania ukrytych zawartoci. Powinien by szybki i wydajny, a take posiada konsekwentny schemat regu i klawiszy dostpu, które nie b d zmienia si w zalenoci od kontekstu. Ma by zintegrowanym narzdziem, pozwalajcym na wykonanie wszystkich etapów pracy wycznie w jednym programie, zapewniajcym w ten sposób optymalizacj toku pracy przez wyeliminowanie koniecznoci cz stego przeczania si mi dzy rónymi aplikacjami.
Innymi sowy, ju od samego pocztku interfejs Blendera mia by niemodalny, elastyczny i szybki, a jego innowacyjno miaa rzuca nowe wiato na interfejsy uytkownika. Poniewa Blender by narz dziem warsztatowym, testowanie nowych pomysów nie byo drogie, a dzi ki temu, e twórcy sami korzystali z programu, byli w stanie natychmiast sprawdza skuteczno swoich rozwiza. Podczas gdy w innych programach dono do podziau na poszczególne tryby (patrz moduy do Softimage XSI czy Cinema 4D) lub nawet na osobne aplikacje (na przykad moduy Modeler i Layout programu LightWave), w Blenderze postawiono na pen integracj struktury danych oraz interfejsu uytkownika. Takie podejcie pozwala uytkownikom na wizualizacj i edycj kadej cz ci danych w dowolnym momencie. Ma take wpyw na szybko Blendera — korzystanie z wielu programów jednoczenie (konieczno importowania, eksportowania i dostosowywania zawartoci mi dzy poszczególnymi aplikacjami) jest bowiem bardzo czasochonne. Posiadajc narz dzie, które skupia w sobie wszystkie potrzebne funkcje, twórcy mog pracowa szybciej i wydajniej (patrz rysunek C.1).
EWOLUCJA INTERFEJSU BLENDERA~ 423
RYSUNEK C.1. Przykład wielozadaniowości Blendera 2.48 — animacja i renderowanie wykonywane są jednocześnie
Zalety Przed omówieniem konkretnych propozycji zmian w interfejsie Blendera warto przyjrze
si tym rozwizaniom, które si sprawdziy i nie wymagaj adnych poprawek. Pierwsza kwestia to korzystanie z niezachodzcych na siebie okien. W zoonych aplikacjach, jakimi s programy do tworzenia grafiki 3D, konieczna jest moliwo
ogldania efektów pracy w wielu widokach. Korzystanie z osobnych okien znacznie wpywaoby na wydajno , poniewa im wi cej czasu powi ca si na rozmieszczanie elementów interfejsu, tym mniej pozostaje go na rzeczywist prac (rysunek C.2). Kolejna sprawa to niemodalno . Modalne interfejsy uytkowników nie sprawdzaj si z wielu powodów. Jef Raskin, twórca pierwszego interfejsu uytkownika systemu Macintosh i autor ksiki The Human Interface, tumaczy dlaczego: Nie moemy na dugo skupi uwagi zarówno na stanie systemu (lub trybie), jak i na naszym zadaniu, co czsto prowadzi do sytuacji, e wykonujemy czynno waciw dla danego trybu (przykadowo w aplikacji), podczas gdy faktycznie znajdujemy si ju w innym trybie (powiedzmy na pulpicie). Aby wyeliminowa t niedogodno, musimy odej od powszechnie stosowanych modalnych interfejsów budowanych na zasadzie „pulpit i aplikacje”. [...] Interfejs czowiek-maszyna jest modalny w odniesieniu do danego bodca, jeli (1) aktualny stan interfejsu nie jest obiektem skupienia uwagi uytkownika oraz (2) interfejs wykonuje jedn sporód wielu moliwych odpowiedzi na bodziec w zalenoci od aktualnego stanu systemu. Inaczej mówic, interfejs modalny wymaga od uytkownika, aby przed wykonaniem dziaania skoncentrowa si na stanie, w jakim znajduje si aplikacja. W ten sposób przenosi punkt skupienia uwagi uytkownika z zadania, które ma wykona , na samo narz dzie.
424 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
RYSUNEK C.2. Porównanie zawiłej struktury „pływającego” interfejsu z prostotą niezachodzących na siebie okien
Modalno moe odnosi si nie tylko do oczywistego faktu wykorzystywania trybów Blendera, takich jak Object (Obiektowy), Edit (Edycyjny) lub Pose (Pozowania), ale take do ogólnie rozumianej interakcji mi dzy uytkownikiem a systemem. W niektórych programach do grafiki 3D zmiana waciwoci materiau moe wiza si z koniecznoci otwarcia nowego okna, blokujcego uytkownikowi widok, zmian niektórych ustawie, a na kocu powrotem do gównego programu. Zmiany zostan zastosowane dopiero po zakoczeniu modyfikacji i nacini ciu przycisku OK. Taka sytuacja jest waciwa dla modalnego systemu pracy, odciga bowiem uwag uytkownika od biecych zada i przenosi j na inne, tymczasowe czynnoci. To oczywiste zatem, e takie podejcie jest mao wydajne — wie si z cz stymi zmianami kontekstu, co samo w sobie zaprzta gow i wymaga skupienia si na samym programie, a nie na wykonywanej pracy. Ju od samego pocztku interfejs Blendera by zaprojektowany w taki sposób, aby unikn modalnej interakcji. Aby zmodyfikowa waciwoci materiau, zamiast przechodzi do innego trybu lub zmiany kontekstu, wystarczy w oknie przycisków wybra opcj Material (Materia) i wykona zmiany. To wszystko. Efekt jest natychmiastowy — nie trzeba przecza kontekstów ani klika przycisku OK (rysunek C.3).
EWOLUCJA INTERFEJSU BLENDERA~ 425
RYSUNEK C.3. Na górnym diagramie pokazano, w jaki sposób nie zachowuje się program Blender. U dołu widać, że zmiana ustawień materiału odbywa się na tym samym poziomie, co edycja pozostałych elementów
Dzi ki podejciu polegajcemu na niestosowaniu trybów w Blenderze wszystkie dziaania mona wykonywa jednoczenie, bez koniecznoci przeczania aplikacji i przeskakiwania mi dzy kontekstami.
426 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
Kolejna kwestia to spójno — Blender zosta zaprojektowany niezwykle konsekwentnie. Jest to o tyle istotne, e pozwala wykorzysta skonno czowieka do nabywania nawyków. Jeli wi c uytkownik przyzwyczai si do korzystania z jednego obszaru w aplikacji, nie powinien mie problemów z obsug innego obszaru, bo po prostu wykorzysta nabyt wiedz i przyzwyczajenia. Jednym z przykadów takiej konsekwencji w Blenderze s skróty klawiszowe: w widoku 3D do chwytania i skalowania su odpowiednio klawisze G i S. Konwencja ta obowizuje niemal w caym programie — w edytorach UV, IPO, wideo, a nawet w edytorze w zów. Takie powielanie konwencji ma miejsce w caym Blenderze, co znacznie uatwia nauk programu, a take przyspiesza prac . Uytkownik nie musi bowiem po kadej zmianie edytora przystosowywa si do nowego kontekstu. Ostatni, wart przyblienia mocn stron interfejsu Blendera jest jego wieloplatformowa natura. Przy kodowaniu tego interfejsu wykorzystano API biblioteki OpenGL, której gównym przeznaczeniem jest grafika trójwymiarowa. Poniewa specyfikacja OpenGL jest obecna w architekturach wszystkich systemów, wygld i obsuga Blendera s wsz dzie jednakowe, niezalenie od tego, czy program pracuje pod systemem Windows, Linux, Mac, czy nawet Solaris firmy Sun. Dzi ki temu Blender jest najbardziej uniwersalnym programem do grafiki 3D, niemajcym sobie równych pod wzgl dem zgodnoci z rónymi systemami operacyjnymi. To wszystko sprawia, e nawet w przypadku pracy w rodowisku wieloplatformowym pewne jest, e Blender b dzie zawsze dziaa tak samo. Jeeli wi c uytkownik korzysta ze stacji roboczej z systemem Linux, komputera z Windowsem oraz laptopa z systemem Mac, przeczanie mi dzy tymi trzema platformami b dzie niezauwaalne. Po raz kolejny objawia si tutaj ograniczenie do minimum koniecznoci skupienia si na kontekcie — w tym przypadku na systemie operacyjnym (rysunek C.4). RYSUNEK C.4. Blender uruchomiony pod różnymi systemami operacyjnymi — na wszystkich wygląda dokładnie tak samo
Wszystkie omówione powyej zalety sprawiaj, e Blender wyrónia si sporód innych programów, przez co jest doskonaym narz dziem dla artystów. W toku dalszych prac nad programem nie naley rezygnowa z tych rozwiza.
EWOLUCJA INTERFEJSU BLENDERA~ 427
Wady Przedstawione przed chwil zaoenia pokazuj, e na podstawowym poziomie interfejs Blendera jest bardzo dobrze zaprojektowany i wysoce wydajny. Jeli jednak przyjrzymy si dokadniej implementacji tych podstawowych zaoe, zauwaymy pewne problemy. Dla przykadu zajmijmy si panelami z kontekstu Editing (edytowanie) (rysunek C.5). RYSUNEK C.5. Panele Mesh Tools (Narzędzia do siatki) i Mesh Tools More (więcej narzędzi siatkowych) w oknie przycisków
Wygld i rozmieszczenie przycisków oraz pól jest tu okropny — nie da si tego inaczej okreli . Przede wszystkim ukad jest nielogiczny. Nie wynika z niego, e lista rozwijana Corner Cut Type (typ podziau naronika) — na rysunku wida wybran opcj Innervert (wewn trzne wierzchoki) — odnosi si jedynie do polece Fractal (podziel fraktalowo) i Subdivide (Podziel). Nie jest take jasne, e pole Limit (granica) dotyczy polecenia Rem Doubles (Usu podwójne) ani e warto Treshold (próg) nie jest zwizana z adnym narz dziem widocznym na panelu — odnosi si do polecenia Select Similar (zaznacz podobne), które znajduje si w zupenie innym miejscu. Oprócz braku logiki wida tu take brak konsekwencji: niektóre narz dzia do edycji siatki znajduj si tylko na tych panelach, inne umieszczono w menu Mesh (Siatka) w oknie 3D, a jeszcze inne mona znale w obydwu miejscach. Ponadto niektóre funkcje dost pne z menu Mesh (Siatka) maj ustawienia w panelu Mesh (Siatka). Taki brak logiki i konsekwencji ma ujemny wpyw na produktywno , poniewa uytkownik nie moe liczy na to, e powizane ze sob funkcje b d dost pne w tym samym miejscu. Musi powi ci czas na przeszukiwanie interfejsu i odnajdywanie potrzebnych narz dzi. Kolejny problem, który wida na tych panelach, polega na tym, e obejmuj one wiele zupenie niezwizanych ze sob elementów. A zatem s tu ustawienia pozwalajce na zmian waciwoci zaznaczonej siatki — Auto Smooth (Auto-wygadz.), Double Sided (Obustronny) itp., s równie narzdzia do modyfikacji siatki i w kocu s te ustawienia narzdzi suce do zmiany sposobu dziaania tych ostatnich (rysunek C.6).
428 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
RYSUNEK C.6. Panele siatkowe zawierają chaotycznie dobrane elementy
Zamieszczenie tylu rónych rodzajów elementów interfejsu w jednym miejscu jest zarówno nieintuicyjne, jak i mao wydajne. Prowadzi bowiem do tego, e okno przycisków jest dokadnie tym, co wynika z jego nazwy: zbiorem zupenie dowolnie dobranych i wrzuconych w jedno miejsce przycisków, pól i suwaków. Taki brak konsekwencji ma zgubny wpyw na wydajno pracy, co trafnie tumaczy Jef Riskin: Gdy zaczynamy poznawa now dla nas funkcj interfejsu, proces ten mona podzieli na dwie fazy, z których pierwsza stopniowo przechodzi w drug. W fazie pierwszej — fazie nauki — jestemy zaciekawieni now funkcj, próbujemy j zrozumie i nad ni zapanowa. Jeli funkcja jest dobrze zaprojektowana i jeli stosujemy j czsto, istnieje szansa, e wejdziemy w faz drug — faz automatyzacji — w czasie której ksztatuje si nawyk, a stosowanie funkcji nie wymaga od nas zastanawiania i staje si odruchowe. Funkcje interfejsu s projektowane po to, aby pomóc nam w wykonywaniu rónych zada . Jeli dana funkcja odciga nas od zadania i zmusza do skupienia si na niej samej (czym innym jest awaria oprogramowania, ale nawet chwilowe trudnoci mog skierowa nasze myli na inne tory), to znaczy, e przeszkadza w wykonaniu zadania i uniemoliwia wejcie do fazy automatyzacji. Gównym celem wszystkich projektantów powinno by tworzenie takich interfejsów, które pozwalayby uytkownikom wyrabia automatyczne odruchy w odniesieniu do wszystkich zada . Takie interfejsy byyby atwe do opanowania i obsugi, duo bardziej wydajne i o wiele przyjemniejsze od tych dzisiejszych. Naszym celem powinno by stworzenie przejrzystego systemu, w którym uytkownik potrafi przewidzie , gdzie znajduj si potrzebne funkcje, co pozwoli mu wyrobi
automatyczne odruchy.
EWOLUCJA INTERFEJSU BLENDERA~ 429
Ostatni kwesti, któr chc w tym miejscu poruszy , jest niepotrzebne komplikowanie niektórych operacji. Przykadem niech b dzie edycja wielu obiektów: zaómy, e uytkownik chce wywietli wszystkie swoje obiekty z nakadk Wireframe (Kontury). Przy jednym obiekcie jest to proste: wystarczy klikn przycisk Wire (Kontury) w sekcji Draw Extra (rysuj dodatkowo) w panelu Draw (rysowanie). W przypadku wielu obiektów staje si to jednak skomplikowanym procesem. Jednym sposobem jest zaznaczenie wszystkich obiektów po kolei i wykonywanie dla kadego z nich danych zmian. Nie sprawia to kopotów, gdy scena skada si z trzech mapek; jednak gdy jest ich 300, staje si to ju bardzo niepraktyczne. Drug metod jest skopiowanie (skrót Ctrl+C) zestawu atrybutów aktywnego obiektu do pozostaych zaznaczonych obiektów. Problem polega na tym, e w przypadku niektórych ustawie kopiowanie jest zablokowane, a ponadto stanowi ono dodatkowy krok, który odciga uwag od samego procesu modyfikowania atrybutów i kae skoncentrowa si uytkownikowi na kopiowaniu ustawie, które ju wczeniej zmieni dla innych obiektów (rysunek C.7). RYSUNEK C.7. Praca z wieloma obiektami to prawdziwy koszmar, jeśli jest ich zbyt wiele
Jest to take niekonsekwencja w samym programie: czasami bowiem mona wykonywa operacje dotyczce wielu obiektów jednoczenie. Usuwanie, kopiowanie, przetwarzanie itp. mog si bowiem odnosi do tylu obiektów, ile wskae uytkownik. Wymienione powyej kwestie to przykady najsabszych punktów w interfejsie Blendera. Okno przycisków jest zaprojektowane bez adu, konsekwencji i logiki. Ponadto istnieje wiele obszarów, które mona poprawi , a które pozytywnie wpyn na tok pracy, mi dzy innymi na edycj wielu obiektów.
430 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
Cele projektowe Zanim zajm si omówieniem poszczególnych poprawek, postaram si wymieni cechy idealnego interfejsu, na których naley oprze zmiany. Interfejs Blendera powinien wi c by :
Niemodalny i ogranicza do minimum konieczno przeczania kontekstów, aby zapewni pynny tok pracy. Nieliniowy, aby pozwala uytkownikom na wykonywanie operacji w dowolnej kolejnoci. Logiczny, aby wykorzystywa inteligencj czowieka i ogranicza bdzenie po interfejsie. Szybki i zapewnia bezporednie wykonywanie operacji przyspieszajce zakoczenie zadania bez koniecznoci przeskakiwania mi dzy rónymi trybami. Elastyczny i oferowa uytkownikom kilka elastycznych narz dzi pozwalajcych wykona wiele operacji zamiast mnóstwa skomplikowanych narz dzi do wykonania pojedynczych czynnoci. Innowacyjny i oferowa nieszablonowe, niespotykane dotd rozwizania. Prosty, poniewa regua „Nie komplikuj, gupku” w duym stopniu odnosi si wanie do interfejsów uytkownika.
Jeli uwzgl dni si te zaoenia, wydanie Blendera w wersji 2.5 stanie si doskonaym momentem do pooenia solidnych fundamentów na przyszo — takich, które w najbliszym czasie nie b d wymagay adnych modyfikacji, oraz takich, które b d dostosowane do zmieniajcych si i przybywajcych funkcji. Konieczne jest take wyrane rozgraniczenie mi dzy narzdziami, ustawieniami narzdzi oraz waciwociami, a take sprawienie, aby interfejs sta si bardziej przejrzysty dla uytkownika, który b dzie zawsze wiedzia, co si dzieje — zwaszcza gdy b dzie musia czeka . Naley take skupi si na prostocie obsugi. Jef Raskin pisze: Wbrew powszechnie panujcej opinii nie jestemy ani nowicjuszami, ani ekspertami w odniesieniu do caych systemów lub aplikacji — przez fazy nauki i automatyzacji przechodzimy w mniejszym lub wikszym stopniu niezalenie od samej funkcji lub zestawu podobnych funkcji. Jeli nauka jednej z nich wyrabia automatyczny nawyk i przenosi go na cay zestaw podobnych funkcji lub znacznie skraca czas potrzebny do ich opanowania, moemy powiedzie, e cay zestaw funkcji jest spójny. Dzi ki zwi kszeniu spójnoci i zastosowaniu bardziej logicznych rozwiza moemy uatwi oraz przyspieszy korzystanie z programu. Istnia kiedy co prawda pogld, e prostota obsugi jest wana jedynie dla tzw. noobów, ale zosta on podwaony przez Jefa Raskina. Jest to bowiem czynnik tak samo istotny dla profesjonalistów, jak i uytkowników korzystajcych z programu hobbistycznie. Tak naprawd to zawodowcy maj nawet mniej czasu na poznawanie funkcji i nie mog sobie pozwoli na marnowanie go przez róne niekonsekwencje i dziwactwa, odcigajce uwag od wykonywanej pracy. Ostatnim zagadnieniem, które chc poruszy , jest kolejne nieporozumienie — tym razem dotyczce moliwoci dopasowywania programu do indywidualnych potrzeb. Niektórzy sdz, e rozwizaniem wi kszoci problemów zwizanych z interfejsem jest
EWOLUCJA INTERFEJSU BLENDERA~ 431
pozwolenie uytkownikowi na jego modyfikowanie. Pogld ten wywodzi si z zaoenia, e jeli interfejs jest mao skuteczny, wystarczy go samemu dostosowa do wasnych wymaga. Takie podejcie jest niewaciwe z kilku powodów:
uytkownik nie moe modyfikowa czego, czego jeszcze w peni nie pozna — nie wpywa to w aden sposób na proces poznawania interfejsu, aplikacja staje si mniej „przewidywalna”, poniewa nie zawsze b dzie reagowa
w ten sam sposób, odciga uwag uytkownika od wykonywanego zadania i kae mu si skupi na samej obsudze aplikacji, a tego staramy si przecie unikn , ujemnie wpywa na wieloplatformowo Blendera, poniewa nie mona liczy , e b dzie on dziaa tak samo pod rónymi systemami, moliwo indywidualizacji interfejsu nie jest tosama z jego elastycznoci, 99 procent uytkowników i tak b dzie korzysta z ustawie domylnych.
Nie chodzi o to, e indywidualizacja zawsze jest zym wyjciem — moliwo zmiany skrótów klawiszowych, tak aby pasoway do innych aplikacji 3D, takich jak Maya lub Softimage XSI, moe pomóc uytkownikom tych programów przystosowa si do Blendera. Faktem jest jednak, e w przypadku kadej próby takiego modyfikowania interfejsu absolutnie konieczne jest zachowanie staych ustawie domylnych. Indywidualizacja moe mie swoje plusy, ale nie rozwizuje podstawowych problemów. Przyszed czas na omówienie konkretnych propozycji zmian w interfejsie Blendera, które maj wpyn na jego popraw .
Waciwoci Gówna krytyka interfejsu Blendera w niniejszym artykule dotyczya wad okna przycisków i to wanie do tego elementu odnosi si pierwsza propozycja. Przyjrzyjmy si jeszcze raz panelom Mesh Tools (Narzdzia do siatki) i Mesh Tools More (wi cej narz dzi siatkowych) uytym w ramach jednego z wczeniejszych przykadów.
432 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
Wszystkie niekonsekwencje, brak logiki i nieintuicyjne rozwizania zwizane z tymi panelami wynikaj z dwóch przyczyn:
projektanci nie skupili si dostatecznie na interfejsie uytkownika, wszystkie panele powinny spenia regu : Panele musz by kwadratowe.
Powodem, dla którego panele powinny mie równe wymiary, jest to, e mog by
one wtedy rozmieszczane poziomo lub pionowo (rysunek C.8). RYSUNEK C.8. Panele można rozmieszczać poziomo lub pionowo
Na pierwszy rzut oka jest to doskonae rozwizanie. Pojawia si jednak pewien problem — nie wszystkie panele musz zawiera tak sam liczb kontrolek i podobnych im elementów. Z tego wzgl du niektóre panele b d bardzo ubogie, podczas gdy pozostae mog by przepenione wieloma, poupychanymi z braku miejsca, malutkimi przyciskami (rysunek C.9). Rozpatrywane okno przycisków wyglda przez to fatalnie. Twórcy programu nie myl ju o tym, aby nowy przycisk umieci w odpowiednim kontekcie, lecz po prostu szukaj dla niego wolnego miejsca. W takiej sytuacji, gdy o rozmieszczeniu kontrolek nie decyduje logika, lecz dost pno wolnego miejsca, uzyskujemy bezadny, niespójny i nielogiczny ukad w panelach — taki, jaki mamy dzisiaj.
EWOLUCJA INTERFEJSU BLENDERA~ 433
RYSUNEK C.9. Nie wszystkie panele zawierają taką samą liczbę kontrolek
Takie podejcie nie tylko utrudnia uytkownikowi odnajdywanie tego, czego szuka, ale take burzy ca koncepcj stosowania paneli. Matt Ebb, gówny autor zmian interfejsu w Blenderze 2.3, pisze: …przyciski s tak porozrzucane po caym oknie, e wykonanie tak prostego zadania jak skonfigurowanie procesu renderowania wie si z koniecznoci zagldania do wielu paneli w oknie przycisków. Wymaga to nie tylko niepotrzebnego klikania mysz i szukania odpowiednich opcji, ale take utrudnia ukrycie tych elementów, które nie s potrzebne. Zamknicie panelu w celu ukrycia niektórych, niewykorzystywanych przez uytkownika przycisków spowoduje take schowanie tych przycisków, do których chcielibymy mie dostp. Rozwizaniem tych problemów jest zmienna wysoko paneli. Dzi ki moliwoci modyfikowania wysokoci paneli mona je dostosowa odpowiednio do zawartoci, przez co rozmieszczenie kontrolek stanie si bardziej logiczne i spójne (a w efekcie zwi kszy si szybko i wydajno pracy). Zmienna wysoko paneli jest rozwizaniem przyszociowym. Pozwoli bowiem programistom bardzo atwo rozszerza panele, aby pomieciy dodatkowe funkcje (rysunek C.10). RYSUNEK C.10. Panele o stałych rozmiarach (po lewej) kontra panele o zmiennej wysokości (po prawej)
434 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
Taka koncepcja ma jednak jedn wad — nie sprawdzi si w poziomych ukadach paneli. Nie ma bowiem moliwoci rozmieszczenia obok siebie paneli o rónej wysokoci w sposób, który nie spowoduje utraty miejsca lub „wyrzucenia” zawartoci panelu poza obszar ekranu. W rzeczywistoci niektóre panele w Blenderze zostay ju zaprojektowane zgodnie z regu zmiennej wysokoci. Dotyczy to zwaszcza paneli o dynamicznej zawartoci, zawierajcych na przykad wi zy lub modyfikatory, w których takie rozwizania s ju stosowane (rysunki C.11 i C.12). RYSUNEK C.11. Panele o zmiennej wysokości nie są przystosowane do układów poziomych
RYSUNEK C.12. Przykłady istniejących już paneli o zmiennej wysokości
W efekcie oznacza to, e poziome ukady przycisków s coraz mniej akceptowane przez uytkowników — ustawianie wi zów, modyfikatorów i list koci w takich ukadach jest ju prawie niemoliwe. Podstawowym problemem wicym si z wycofaniem ukadów poziomych jest to, e niektórzy uytkownicy wyrobili ju sobie automatyczne nawyki zwizane z ich stosowaniem i kada zmiana oznacza nauk od nowa. W Blenderze 2.5 zmieni si jednak bardzo duo, a powi cenie poziomych ukadów przycisków pozwoli na zaprojektowanie bardziej przejrzystego, spójnego i logicznego interfejsu, który wprowadzi program w przyszo . Prawd jest take, e mniej trudnoci sprawia przeszukiwanie listy elementów uoonej pionowo, poniewa atwiej jest przeglda list zoon z elementów tekstowych wyrównanych do lewej strony. Matt Ebb, ekspert w dziedzinie typografii, tumaczy to nast pujco: Wyrazy w wikszoci jzyków europejskich maj z reguy ksztat prostoktów [= = = = = =], co oznacza, e najlepszy stopie upakowania zapewnia ukadanie ich jeden na drugim. W takiej sytuacji oko moe z atwoci ledzi lini tekstu rozpoczynajcego si od lewej strony, poniewa
EWOLUCJA INTERFEJSU BLENDERA~ 435
szybko rozpoznaje ksztat pocztków wyrazów. Jeli te wyrazy s ustawione obok siebie poziomo, odlegoci midzy nimi s nierówne, a oko musi czyta je wszystkie od lewej do prawej, aby znale waciwe. Przegldanie jest duo szybsze, jeli rozpoznawanie wyrazów opiera si na okreleniu ich ksztatu, a nie na rozkadaniu ich na poszczególne znaki. Jest to podstawowa zasada typografii i skadu. To wanie z tego powodu kolumny w gazetach s ukadane pionowo. Dzi ki temu duo atwiej si je przeszukuje i o wiele szybciej czyta. Dodatkow zalet pionowych paneli jest to, e lepiej pasuj do coraz powszechniej stosowanych monitorów panoramicznych. Przy panelu ustawionym z boku ekranu rozmiar pozostaej cz ci ekranu cigle ma proporcje odpowiednie do pracy, podczas gdy uycie panelu poziomego spowoduje nienaturalne wyduenie obszaru roboczego i w efekcie marnotrawstwo miejsca (rysunek C.13). RYSUNEK C.13. Nowoczesny monitor panoramiczny — okno właściwości ustawione po prawej stronie ekranu
Przyjrzyjmy si teraz zawartoci okna przycisków. W obecnej postaci obejmuje ono cztery grupy funkcyjne: Narz dzia
Narz dzie definiuje si jako element interfejsu, który wymaga dziaania uytkownika — nie wykonuje zadania samoistnie, ale pomaga w jego realizacji. Narz dzie moe by wi c aktywne przez pewien czas, a do momentu, gdy uytkownik przestanie z niego korzysta . Przykady: Transform (Transformacja), Extrude (Wytocz), Subdivide (Podziel), Spin (Wiruj), Pinch (cinij), Draw (rysuj), Bevel (Zaokrglanie krawdzi), Mirror (Odbicie). Ustawienia narz dzi Opcje odnoszce si do aktualnie uywanego narz dzia. Pozwalaj uytkownikowi na przykad ustawi o transformacji lub okreli liczb podziaów. Przykady: Degree (stopie), Steps (liczba podziaów).
436 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
Akcje
Waciwoci
Akcje to polecania, których efekt dziaania jest natychmiastowy. Nigdy nie s aktywne. Przykady: Delete (Usu ), Set Smooth (Wygad). Waciwoci to ogromna wi kszo zawartoci okna przycisków. S to wartoci (przyciski opcji, pola wyboru, pola liczbowe oraz listy) przechowywane w blokach danych w celu czenia i ponownego wykorzystywania. W Blenderze 2.5 wszystkie waciwoci b d animowalne, wi c kada warto b dzie posiada
wasn krzyw IPO. Przykady: Materials (Materiay), Particles (Czsteczki), Constraints (Wizy), Bones (Koci), Modifiers (Modyfikatory).
Cho funkcje tych grup bardzo si róni, wszystkie zostay umieszczone w jednym oknie przycisków, co sprawia wraenie chaosu. Poprzez rozdzielenie tych elementów moemy sprawi , e interfejs stanie si duo bardziej przejrzysty i czytelny, co z kolei wpynie na szybko obsugi programu i uatwi jego nauk . Oznacza to, e okno przycisków w postaci, jak znamy, przestanie istnie . Zostanie zastpione przez edytor waciwoci (rysunek C.14). RYSUNEK C.14. Nowy edytor właściwości obiektu
W nowym oknie uytkownicy b d mogli edytowa dowoln warto zwizan z zawartoci sceny. B dzie ono obejmowa ustawienia:
transformacji i wywietlania obiektów (przechowywane w bloku danych Object [Obiekt]),
EWOLUCJA INTERFEJSU BLENDERA~ 437
wi zów (przechowywane w bloku danych Object [Obiekt]), modyfikatorów (przechowywane w bloku danych Object [Obiekt]), siatki i warstw UV (przechowywane w bloku danych Mesh [Siatka]), materiaów (przechowywane w bloku danych Material [Materia]), tekstur (przechowywane w bloku danych Texture [Tekstura]), fizyki (przechowywane w bloku danych Object [Obiekt]), czsteczek (przechowywane w bloku danych Particles [Czsteczki]), czy skryptowych (przechowywane w bloku danych Object [Obiekt]), wiata (przechowywane w bloku danych World [ wiat]), renderingu (przechowywane w bloku danych Scene [Scena]).
Aby maksymalnie ograniczy klikanie mysz, adna z tych kategorii nie powinna by subkontekstem innej. Oznacza to, e poszczególne karty b d miay swoje ustalone pozycje. Takie rozwizanie jest idealne dla optymalnego wykorzystania pami ci czowieka, poniewa uytkownik zawsze, nawet z zamknitymi oczami, b dzie wiedzia, gdzie klikn . Aby unikn wodzenia wzrokiem po ekranie, stae powinno by take rozmieszczenie przycisków. Microsoft Word jest przykadem na to, e znikajce czasami menu moe by przyczyn potwornego bólu gowy. W celu maksymalnego wykorzystania moliwoci pami ciowych czowieka, a zarazem stworzenia niezawodnego interfejsu panele nigdy nie powinny si przemieszcza ani zmienia kolejnoci (z wyjtkiem przypadków na wyrane yczenie uytkownika), a znajdujce si na nich przyciski nie powinny pojawia si i znika . Mona je za to logicznie pogrupowa , a na panelach umieci
trójktne przyciski pozwalajce uytkownikowi ukry panel, który go w danej chwili nie interesuje. Wi cej informacji na temat sprawdzonych praktyk w zakresie rozmieszczania przycisków w obrbie paneli znajduje si w opracowaniu Buttons Information Architecture dost pnym pod adresami: http://wiki.blender.org/index.php/ButtonsIAGuidelines http://wiki.blender.org/index.php/BlenderDev/UIAlignRulesGuides http://wiki.blender.org/index.php/ButtonsDev/DependGuide
Narzdzia Narz dzia definiuje si jako elementy interfejsu, które s aktywne przez okrelony czas i wymagaj dziaania uytkownika. Z tego powodu naley dokadniej zastanowi
si nad ich rozmieszczeniem w interfejsie. Najpowaniejszym problemem zwizanym z narz dziami dost pnymi w obecnym Blenderze jest to, e s one wysoce modalne. Przykadowo podczas korzystania z narz dzia Loop Cut (ci cie wzdu p tli) uytkownik nie moe korzysta z jakiejkolwiek innej funkcji programu. Obsuga programu jest przez to liniowa, poniewa uytkownik moe wykonywa tylko jedn czynno w danym czasie (rysunek C.15).
438 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
RYSUNEK C.15. Przykłady narzędzi dostępnych w Blenderze
Sytuacja wyglda jeszcze gorzej w przypadku narz dzi, dla których uytkownik musi skonfigurowa ustawienia przed ich uyciem. Takim przykadem jest narz dzie Spin (Wiruj), a take sam proces dodawania nowych obiektów. Schemat post powania wyglda miej wi cej tak: Obiekt -> Ustawienie -> Akcja Naley zaznaczy obiekt, skonfigurowa ustawienia i rozpocz korzystanie z narz dzia. Jest to niezwykle powolny i m czcy sposób dziaania, poniewa uytkownik musi na przykad zdecydowa , ile wierzchoków b dzie zawiera sfera, jeszcze przed jej dodaniem. Taka metoda nie pozwala na eksperymenty, a co gorsza, pociga za sob cz ste cofanie operacji i wykonywanie ich od nowa a do uzyskania podanego efektu, co oczywicie wie si ze strat czasu (rysunek C.16). RYSUNEK C.16. Przykłady narzędzi, których stosowanie opiera się na schemacie Obiekt -> Ustawienie -> Akcja
Aby rozwiza ten problem, narz dzia w Blenderze powinny by stosowane wedug schematu: Obiekt -> Akcja -> Ustawienie Jeli uytkownik b dzie mia moliwo zmiany ustawie narz dzia ju po jego wczeniu, nie b dzie musia cofa operacji oraz ponownie konfigurowa i wcza
narz dzia. Wystarczy wybra narz dzie i wykona zmiany, których efekt b dzie natychmiast widoczny. Ponadto zniknie konieczno klikania przycisku OK lub zatwierdzania zmian — narz dzie b dzie bowiem cakowicie interaktywne (rysunek C.17).
EWOLUCJA INTERFEJSU BLENDERA~ 439
RYSUNEK C.17. Narzędzia wraz z interaktywnymi ustawieniami poniżej
Przedstawione przykady dotyczyy gównie narz dzi do edycji siatki. Takie same rozwizania naley jednak zastosowa take w przypadku modelowania, manipulowania obiektami, rzebienia, malowania wag itd.
Zaleno od kontekstu Mimo e modalno i zmiany kontekstu s uznawane za cechy negatywnie wpywajce na produktywno , bardzo wane jest, aby zoptymalizowa sytuacje, w których s one konieczne. Przykadem takich zmian kontekstu jest przeczanie mi dzy trybami obiektowym, edycyjnym i malowaniem wag, a take wybieranie poszczególnych elementów w oknie Outliner (organizator) lub typów obiektów w widoku 3D. W obecnej wersji stopie zalenoci od kontekstu jest bardzo niski: po zaznaczeniu siatki karta z ustawieniami waciwoci lampy pozostaje aktywna (klikanie nie przynosi adnego efektu). Nie tylko jest to mylce, lecz take powoduje marnotrawstwo miejsca i niepotrzebnie zwi ksza baagan w interfejsie. Okno Outliner (organizator) moe by bardzo skutecznie wykorzystywane jako mechanizm zaznaczania zaleny od kontekstu — obejmuje ono bowiem nie tylko obiekty, ale równie bloki danych siatki, materiay, modyfikatory i inne grupy danych. Poniewa w edytorze waciwoci wywietlane b d jedynie pozycje znajdujce si niej w hierarchii od zaznaczanego w oknie Outliner (organizator) bloku danych, atwe stanie si przeczanie kontekstu zalenie od danych. Po klikni ciu obiektu w widoku 3D lub w oknie Outliner (organizator) wszystkie bloki (siatki, materiay, modyfikatory itp.) powizane z obiektem
440 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
wywietla si b d w edytorze waciwoci. Zaznaczenie bloku danych siatki w obr bie obiektu spowoduje wywietlenie tych danych, a take materiaów, gdy s one powizane z siatkami. Podobnie klikni cie pozycji Scene (Scena) w oknie Outliner (organizator) spowoduje otworzenie okna Scene Properties (Waciwoci sceny) (rysunek C.18). RYSUNEK C.18. Właściwości zależne od kontekstu
Zwi kszenie zalenoci od kontekstu powoduje, e uytkownik widzi na ekranie tylko to, co jest mu potrzebne. Jeli rzebi, w oknie Tools (Narzdzia) pojawi si narz dzia rzebiarskie, a jeli przejdzie do trybu edycyjnego, w tym samym oknie wywietl si narz dzia do edycji siatki.
EWOLUCJA INTERFEJSU BLENDERA~ 441
Edycja wielu obiektów Jak ju wspomniaem wczeniej, edycja wielu obiektów jest procesem niepotrzebnie skomplikowanym, który naley uproci i przyspieszy . W miejscu, w którym obecnie wida jedynie waciwoci aktywnego obiektu, mogyby by wywietlane waciwoci wszystkich obiektów zaznaczonych. Jeli b d posiaday wspóln warto , b dzie ona wywietlana normalnie. W przeciwnym wypadku rónica b dzie sygnalizowana kresk. W takiej sytuacji przypisanie nowej wartoci do wielu obiektów b dzie polegao po prostu na jej wpisaniu (rysunek C.19).
RYSUNEK C.19. Panel właściwości przy zaznaczonych wielu obiektach. Paski lub kreski na przyciskach oznaczają, że w obrębie wybranych obiektów istnieją różnice. Przyciski opcji mogą pokazywać nawet, które opcje w zaznaczonych obiektach są ustawione
Informacje zwrotne Jednym z najbardziej podstawowych zada graficznego interfejsu jest informowanie uytkownika o operacjach wykonywanych przez aplikacj . Ma on suy jako komunikator mi dzy uytkownikiem a funkcjami programu. Z tego wzgl du informacje zwrotne oraz komunikacja z uytkownikiem s tak istotne, a niestety w Blenderze nie zawsze funkcjonuje to prawidowo. Informacje zwrotne maj szczególne znaczenie wtedy, gdy uytkownik musi czeka — w czasie renderowania, wypalania, oblicze fizyki lub wizania siatki. W trakcie wi kszoci tych operacji komunikacja zawodzi — uytkownik nie wie, co si dzieje, jak dugo musi czeka , i nie zna post pu wykonywanego zadania (rysunek C.20).
442 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
RYSUNEK C.20. Prosty pasek postępu — przejrzysty i widoczny z daleka nawet wtedy, gdy pójdziesz zrobić sobie kawę
Dodanie w caej aplikacji standardowych pasków post pu informujcych uytkownika, jak dugo i na co musi czeka , sprawi, e okresy bezczynnoci stan si mniej uciliwe i denerwujce. Wprowadzi take spokój, poniewa b dzie wiadomo, e aplikacja si nie „zawiesia” ani nie wystpi aden bd. Skoro mowa o poprawie komunikacji z uytkownikiem, warto wspomnie take o podwietlaniu elementów. W obecnej wersji Blendera po najechaniu kursorem na przycisk zostaje on podwietlony. Jest to dobre rozwizanie, dzi ki któremu interfejs staje si bardziej przewidywalny, a uytkownik wie, e klikni cie podwietlonego przycisku rzeczywicie wywoa efekt. Przeniesienie tego pomysu i zastosowanie go w odniesieniu do obiektów, wierzchoków, kraw dzi i paszczyzn w widoku 3D w podobny sposób zwi kszy przewidywalno , zwaszcza w obszarach o duym nagromadzeniu obiektów, gdy uytkownik moe nie by do koca pewny, co zaznacza.
Metoda „przeci gnij i upu ” Wielk zalet tej metody jest fakt, e stanowi ona doskonay odpowiednik rzeczywistego „chwytania” przedmiotów. Nastanie ery myszy i kursorów w latach 80. sprawio, e zaznaczanie elementów na ekranie stao si moliwe nie tylko przez wpisywanie nazwy lub wybieranie z listy, lecz take przez ich klikanie. Taki rodzaj bezporedniego manipulowania jest znacznie szybszy ni wybieranie obiektów z listy, poniewa nie wymaga od uytkownika zapami tywania ich nazw, a take ogranicza wielko samego interfejsu — nie jest bowiem konieczne rezerwowanie miejsca na takie listy. W Blenderze klikni ciem myszy mona zaznaczy obiekt, ale nie mona mu w ten sposób przypisa materiaów, waciwoci, tekstur, wi zów czy modyfikatorów. Rozsdne wydaje si zastosowanie tej metody zarówno w oknie Outliner (organizator), jak i w widoku 3D oraz edytorze waciwoci, tak aby uytkownik móg przeciga materiay z okna Outliner (organizator) na obiekty w widoku 3D lub wartoci z edytora waciwoci na elementy w oknie Outliner (organizator) itp. Znacznie przyspieszyoby to proces definiowania tego rodzaju powiza. Metod „przecignij i upu ” mona take wykorzysta do okrelania relacji rodzic – dziecko — w oknie Outliner (organizator) wystarczyoby przecign jeden obiekt nad drugi, aby sta si on jego dzieckiem.
Projekt graficzny Co prawda graficzny wygld elementów nie jest tak istotny jak ich funkcje, jednak take w tej kwestii interfejs wymaga pewnych poprawek. Po pierwsze, wiele typów przycisków wyglda identycznie — na przykadzie przedstawionym poniej wida , e niemoliwe
EWOLUCJA INTERFEJSU BLENDERA~ 443
jest odrónienie przycisków opcji od przycisków akcji, chocia ich funkcje s zupenie róne. Wie si to ze spowolnieniem pracy, poniewa uytkownik musi dokadnie przyglda si przyciskom, aby znale ten waciwy (rysunek C.21). RYSUNEK C.21. Trudno w to uwierzyć, ale po lewej stronie znajdują się przyciski opcji, a po prawej przyciski akcji
Bardziej zrónicowany model nie tylko przyspieszy korzystanie z interfejsu, ale take uatwi jego poznawanie. Posta elementów interfejsu b dzie bowiem bardziej odpowiada
ich zastosowaniu. Przyciski akcji mona zaprojektowa w taki sposób, aby ich wygld przypomina, e su do wykonywania akcji, natomiast wygld przycisków opcji powinien sugerowa , e moliwe jest zaznaczenie tylko jednej pozycji (rysunek C.22).
RYSUNEK C.22. Takie kontrolki są łatwo rozróżnialne, a dodatkowo w dużo większym stopniu niż dawniej odpowiadają swojemu przeznaczeniu; wyraźnie widać, że wartość w polu liczbowym można zwiększyć lub zmniejszyć za pomocą strzałek; przyciskowi akcji nadano głębię, co sugeruje, że można go kliknąć; połączenie przycisków opcji podpowiada, że można włączyć tylko jeden z nich
Jak ju wczeniej wspominaem, kontrolki nigdy nie powinny znika (optymalne rozwizanie dla pami ci proceduralnej i przestrzennej czowieka). Moe si jednak zdarzy , e z danego przycisku nie mona aktualnie korzysta i jest on nieaktywny. O takiej sytuacji naley poinformowa uytkownika. Istotne jest take bardziej przejrzyste przedstawienie wspózalenoci mi dzy przyciskami, tak aby po wczeniu lub wyczeniu nadrz dnej kontrolki uytkownik widzia, e przycisk staje si aktywny lub nieaktywny. Dobrym wyjciem jest zwi kszenie przezroczystoci lub wyszarzenie przycisku, dzi ki czemu b dzie mniej wyrazisty.
444 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
W Blenderze 2.5 wszystko ma by animowalne. Domylnie tak cech maj mie
wszystkie wartoci dost pne dla uytkownika — nawet te, które kryj si za przyciskami opcji i pól wyboru. A skoro tak, to powinien istnie sposób na wstawianie klatek kluczowych oraz na wizualne okrelenie, czy dany przycisk jest zautomatyzowany (animowany przy uyciu krzywej IPO, co uniemoliwia modyfikowanie odpowiedniej wartoci), czy te ma przypisan klatk kluczow (rysunek C.23).
RYSUNEK C.23. Odmiany kontrolek w zależności od ich stanu. Środkowe pole jest nieaktywne (niedostępne), natomiast pole po prawej ma przypisany klucz w bieżącej klatce
Ostatnim problemem jest niedostateczne wykorzystanie w Blenderze pasków przewijania. Co prawda, nie sprawdzaj si one w widoku 3D, gdy mamy do czynienia z wieloma osiami ruchu, lecz s bardzo przydatne w przypadku dugich list. Podczas gdy pierwszy interfejs Blendera posiada stae przyciski, które prawie zawsze mieciy si na ekranie, wspóczesny program zawiera tyle paneli i dynamicznej zawartoci (na przykad wi zy i modyfikatory), e zarzdzanie dugimi listami musi by duo atwiejsze. Paski przewijania, oprócz tego, e pozwalaj na przesuwanie listy w gór i w dó, wskazuj równie, która cz listy jest aktualnie widoczna, a take jak wiele znajduje si poza wywietlanym obszarem. Aby zapewni maksymalne wykorzystanie przestrzeni i unikn baaganu, paski przewijania powinny by moliwie najciesze i jak najmniej rozbudowane (rysunek C.24). RYSUNEK C.24. Paski przewijania
EWOLUCJA INTERFEJSU BLENDERA~ 445
Podsumowanie Wydanie Blendera w wersji 2.5 stanowi najlepsz jak do tej pory okazj do rozwini cia interfejsu uytkownika. Zaproponowane w niniejszym artykule poprawki mog sprawi , e Blender stanie si programem duo szybszym, prostszym i bardziej elastycznym. Oto krótkie zestawienie najwaniejszych propozycji zmian:
naley wyranie rozdzieli waciwoci, narz dzia i ustawienia narz dzi, a tym samym sprawi , aby kady z tych elementów dziaa bardziej intuicyjnie i przewidywalnie, schemat dziaania Obiekt -> Ustawienie -> Akcja naley zastpi duo wydajniejszym: Obiekt -> Akcja -> Ustawienie, okno Outliner (organizator) mona wykorzysta jako mechanizm zaznaczania zaleny od kontekstu, edycja wielu obiektów powinna znowu pozwala na zarzdzanie zoonymi projektami, naley zapewni dodatkowe informacje zwrotne, które poprawiyby uyteczno
programu, zastosowanie metody „przecignij i upu ” w caej aplikacji moe zwi kszy
szybko i atwo obsugi, wyrazisty projekt graficzny uatwi poznawanie programu i uatwi odnajdywanie przycisków, a to z kolei wpynie na wydajno pracy.
446 ~ DODATEK C EWOLUCJA INTERFEJSU U YTKOWNIKA PROGRAMU BLENDER
Dodatek D
Informacje o płycie dołączonej do książki Niniejszy dodatek obejmuje następujące tematy:
zawartość dołączonej płyty CD, wymagania systemowe, korzystanie z płyty, rozwiązywanie problemów.
Zawartość płyty CD1 Jeśli potrzebujesz pomocy w zainstalowaniu programów zamieszczonych na płycie CD, zapoznaj się z treścią instrukcji znajdujących się w części „Korzystanie z płyty CD” niniejszego dodatku.
Pliki do rozdziałów Wszystkie pliki potrzebne do wykonania ćwiczeń i zrozumienia treści zamieszczonych w książce znajdują się w folderze Chapter Files (pliki do rozdziałów). Jest on podzielony na podfoldery odpowiadające poszczególnym rozdziałom. Aby otworzyć pliki z rozszerzeniem .blend, musisz mieć zainstalowaną najnowszą wersję programu Blender. Dla celów niniejszej książki należy korzystać z wersji 2.48, którą można zainstalować z dołączonej płyty lub pobrać ze strony internetowej www.blender.org.
Program Blender 2.48 Na płycie znajdują się pliki instalacyjne programu Blender 2.48. Można je uruchomić w systemach Windows oraz Mac OS X, zarówno w architekturze Intel, jak i PPC. Dla użytkowników systemu Linux oraz innych systemów na bazie Uniksa zamieszczono kod źródłowy w pliku archiwum. Użytkownicy wymienionych systemów, którzy chcieliby uzyskać pliki wykonywalne właściwe dla ich systemu i architektury, mogą je znaleźć w sekcji zasobów na stronie internetowej www.blender.org.
1
Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/blemis_p.zip
448 ~ DODATEK D INFORMACJE O PYCIE DO CZONEJ DO KSI KI
Program GIMP Na pycie znajduj si pliki instalacyjne programu GIMP. Mona je uruchomi
w systemach Windows oraz Mac OS X, zarówno w architekturze Intel, jak i PPC. Dla uytkowników systemów Linux i innych zamieszczono plik archiwum z kodem ródowym.
Wymagania systemowe Upewnij si , e Twój komputer spenia minimalne wymagania systemowe przedstawione poniej. Jeli wi kszo z nich nie zostanie speniona, korzystanie z programów i plików zamieszczonych na pycie moe by utrudnione. Najnowsze i najbardziej szczegóowe informacje na ten temat znajduj si w pliku Przeczytaj zamieszczonym na pycie doczonej do ksiki.
Komputer klasy PC z zainstalowanym systemem Microsoft Windows 98, Windows 2000, Windows NT4 (z pakietem SP4 lub nowszym), Windows Me, Windows XP lub Windows Vista. Komputer Macintosh z systemem Apple OS X lub nowszym. Komputer klasy PC z systemem Linux z jdrem 2.4 lub nowszym. Poczenie z internetem. Nap d CD-ROM.
Najnowsze informacje na temat wymaga systemowych znajduj si na stronie www.blender.org.
Korzystanie z CD Aby zainstalowa programy zamieszczone na CD, wykonaj nast pujce czynnoci: 1. Wó pyt do nap du CD-ROM komputera. Pojawi si okno z umow licencyjn. UWAGA Użytkownicy systemu Windows: okno interfejsu nie pojawi się, jeśli wyłączono funkcję automatycznego uruchamiania. W takim przypadku kliknij menu Start i wybierz polecenie Uruchom (w systemie Windows Vista wybierz Start/Wszystkie programy/Akcesoria/Uruchom). W wyświetlonym oknie wprowadź D:\Start.exe. (Zamień odpowiednio literę D, jeśli napęd CD-ROM jest oznaczony innym symbolem. Literę przypisaną do napędu CD możesz sprawdzić, otwierając okno Mój Komputer). Kliknij OK.
UWAGA Użytkownicy systemu Mac: na pulpicie pojawi się ikona płyty CD; kliknij ją dwukrotnie, aby otworzyć płytę, a następnie dwukrotnie kliknij ikonę Start.
ROZWI ZYWANIE PROBLEMÓW~ 449
2. Przeczytaj umow licencyjn, a nast pnie kliknij przycisk Akceptuj, aby rozpocz
korzystanie z pyty. Pojawi si okno interfejsu pyty CD. Z poziomu tego okna jednym klikni ciem lub dwoma klikni ciami mona uzyska dost p do zawartoci pyty.
Rozwi zywanie problemów Wydawnictwo dooyo wszelkich stara, aby zamieszczone programy dziaay na wi kszoci komputerów przy minimalnych wymaganiach systemowych. Niestety, komputery mog si róni i z pewnych powodów niektóre programy mog nie dziaa
prawidowo. Dwie najbardziej prawdopodobne przyczyny to ilo pami ci RAM niewystarczajca do dziaania programów lub uruchomienie innych aplikacji, które maj wpyw na instalacj bd dziaanie programu. Jeli wywietli si komunikat „Zbyt mao pami ci” lub „Nie mona kontynuowa instalacji”, skorzystaj z jednej z poniszych wskazówek, a nast pnie ponownie uruchom program: Wy cz wszystkie uruchomione programy antywirusowe. Programy instalacyjne mog czasami naladowa dziaanie wirusów, przez co komputer b dnie uzna, e zosta zaatakowany. Zamknij wszystkie uruchomione programy. Im wi cej aplikacji jest otwartych, tym mniej pami ci pozostaje dla pozostaych programów. Ze wzgl du na to, e instalatory zazwyczaj aktualizuj pliki i programy, pozostawienie uruchomionych aplikacji moe zakóci przebieg instalacji. Zakup i zainstaluj w komputerze dodatkow pami RAM. Jest to ostateczne i niewtpliwie najdrosze rozwizanie. Dodatkowa pami pozwoli jednak przyspieszy
prac komputera i umoliwi jednoczesne dziaanie wi kszej liczby programów.
450 ~ DODATEK D INFORMACJE O PYCIE DO CZONEJ DO KSI KI
Skorowidz #BPYCONSTRAINT, 271 *, 226 **, 288 __call__(), 266 __init__(), 266 3D Sound, 395 3D Transform Widget, 27 3D View, 24, 38, 145, 146 3Dd View, 24 6DOF, 27
A Action, 377, 378 Action Editor, 313 Actor, 334, 345 Actuators, 341 Add, 197 Add Level, 60, 63 Add Modifier, 298 Add Multires, 60 Add New, 331 Add New Layer, 68 Add new objects, 28 Add Property, 351 Add Sequence Strip, 178, 191, 192, 195, 196, 205 Add to Group, 38, 331 AI, 339 akcje, 376 Action, 343 Camera, 349 Edit Object, 357 Message, 357 Motion, 344, 374 Sound, 369, 395 Visibility, 352 Walk, 343 aktywacja czy skryptowych, 279 Alpha Over, 166, 191, 205 Alpha Over Drop, 191 alpha overlays, 191
Alpha Under, 191 Always, 359 analiza kanaów kolorów, 142 Anchored, 56 and, 225 AND, 374 Anim, 205 animacja maski elementów niepodanych, 152 animacja postaci, 308 animowana maska elementów niepodanych, 145 animowane tekstury, 364 API, 213, 214, 237 API Blendera, 215, 237 Append or Link, 332 append(), 223 Application Programming Interface, 214 Apricot, 316 argumenty, 229 Armature, 238, 308 Around Selection, 27 atrybuty, 388 Audacity, 188 Audio, 370 Audio mixing buffer, 36 Audio Window, 369 Auto Depth, 26 Auto Keyframe, 29 Auto Perspective, 27 Auto Refresh, 146 Auto Run Python Scripts, 36 Auto Save, 34 Auto Save Temp Files, 34 automatyczna g bia, 26 automatyczne klatki kluczowe, 29
B Background Image, 58, 146 Bake, 92, 94, 119, 324 Bezier Circle, 147 BezTriple, 247, 248
452 ~SKOROWIDZ
BGE, 206, 237, 295 BGL, 252, 285 BGL.glBlendFunc(), 285 BGL.glEnable(), 285 binarny plik wykonywalny, 212 Blender, 46 Blender Game Engine, 295 Blender OpenGL, 285 Blender.Redraw(), 245, 254 blok akcji, 343 bloki logiczne, 339, 373 akcje Action, 343 blok akcji, 343 czarownik, 353 czujniki, 340, 341 Logic, 340 logika, 340 maszyna teleportacyjna, 379 nazwy, 374 poruszanie postaci, 341 przypisywanie postaci waciwoci dynamicznych, 345 ruch spacerowy, 341 sterowanie fizyk cia sztywnych, 340 ustawianie kamery, 349 w zy cieek, 351 wykrywanie kolizji, 340 blokowanie widoku, 38 Blur, 170 b dy wyciekania pami ci, 258 Border Select, 296 Boro-Toro, 369 Brightness-Contrast, 122 Brush, 56 bufor g bokoci, 90 bufor miksowania dwi ku, 36 bufor Z, 90 Bullet, 295 button_event(), 255 BVH, 238
C C, 212 Camera, 349 chmury, 319, 320 Chroma Vectorscope, 190 cigi znaków, 222 ci cie cieek, 185 class, 230 Clear Seam, 117
Clip Alpha, 36 Clip Start, 38 Clock Wipe, 194 Clouds, 98, 320 Cog, 133 Color Generator, 195 ColorBand, 36 ColorRamp, 141, 142, 143 Combine RGBA, 168 Composite Nodes, 138 console, 221 constraints, 270 Continue, 26 Controller Type, 375 Controllers, 341 Convert Premul, 166, 167 Convertor, 142 Copy Location, 270 Create From Bone Heat, 311 Cross, 192, 195 cross fade, 192 Crystal Space, 316 cyzelowanie, 74 czcionki, 361 mi dzynarodowe, 30 teksturowane, 30 TrueType, 361 czujniki, 340, 341, 376 Always, 359 Delay, 359 Keyboard, 370, 387 Ray, 355 czyszczenie wideoklipu, 168
D def, 228 definiowanie funkcje, 254 klasy, 230 Delay, 359 Desaturate, 122, 123 dict, 222 Dilate/Erode, 170 dir(), 231, 376 DNA, 48 Do Clipping, 298 Do Composite, 205 Do Sequence, 205, 206 doConstraints(), 274
SKOROWIDZ~ 453
dodawanie akcje Action, 343 blok kontrolera, 342 haczyk do naronika, 150 kompozycja scen, 205 materia, 126, 244 modyfikatory, 298 napisy do sekwencji wideo, 199 obiekty tekstowe, 201 paska siatka, 202 cieka ze scen, 204 tekstury do siatki, 92 tekstury UV, 102, 118 w ze Render Layers, 158 w ze Set Alpha, 166 w ze wejciowy, 139 wi zy skryptowe, 272 dokumentacja Pythona, 215 Dolly, 26 domylna konfiguracja interfejsu Blendera, 24 dopasowywanie jasnoci i kontrastu, 124 Double Wipe, 194 Draw, 55, 62, 64, 73, 78 Add, 78 Create(), 253 Draw(), 258 Exit(), 255, 258 MOUSEX, 287 MOUSEY, 287 Number(), 256 PupBlock(), 275 PushButton(), 256 Redraw(), 258 Register(), 250, 258 Slider(), 256 Sub, 78 Draw Extra/X-ray, 85 Draw Mode, 68 Draw Normals, 242, 244, 325 drop frames, 181 Duplicate Layer, 122 Duplicate with object, 29 due kursory, 25 DVCProHD, 136 dynamic nodes, 265 dzielenie z wygadzaniem, 304 dwi k, 369 efekty, 369 odtwarzanie, 369 p tla ping-pong, 369 Python, 394 dwi k 3D, 371, 395
E Edge Alt-Select Mode, 91 Edge select mode, 41 Edit, 233 Edit Methods, 28, 146, 200 Edit Object, 357 edycja dwi k, 185 skrypty, 233 tekst, 201 edytor akcji, 313 edytor IDLE, 219 edytor krzywych IPO, 176, 249, 263 edytor sekwencji wideo, 135 edytor tekstu, 220, 233 biae spacje, 234 Comment, 234 Convert whitespace, 234 formatowanie skryptów, 235 komentarze, 234 szablony, 235 Uncomment, 234 Unindent, 233 usuwanie wci cia, 233 wczytywanie szablonu skryptu, 235 Edytor UV/Obrazów, 105 edytor w zów, 138 edytor wideo, 175 Add Header, 177 Add Sequence Strip, 178, 197 Buttons Window, 177 Chroma Vectorscope, 189, 190 ci cie cieek, 185 dodawanie kompozycji scen, 205 dodawanie napisów do sekwencji wideo, 199 edycja dwi ku, 185 edytor krzywych IPO, 176 efekty, 197 Filter, 184, 187 filtry, 184 Flip Time, 184 Flip X, 184 Flip Y, 184 Format, 181 Glow, 197 Histogram, 189 Image Preview, 177, 189 Image Sequence, 178 importowanie filmów, 178 importowanie sekwencji obrazów, 178 Ipo Curve Editor, 187
454 ~SKOROWIDZ
edytor wideo IPO Frame locked, 196 kanay, 184 klatki opuszczone, 181 kodeki, 175, 180 komponowanie, 191 konfiguracja Sequence, 176 kopiowanie, 185 krzywe IPO, 187 Luma Waveform, 189, 190 manipulowanie ciekami sekwencji wideo, 182 metacieki, 199 moduy dodatkowe, 197 monitor przebiegu jasnoci, 189, 190 Movie + Audio, 178, 180, 185 Movie + Audio (HD), 200 nakadki alfa, 191 obsuga, 175 obsuga znaczników, 188 okno przycisków, 177 Old Movie, 199 operacje na ciekach, 182 Plugin, 197 podgld obrazu, 177 powiata, 197 przejcia, 192 sekwencer, 186 Sequence, 176, 177, 189 Sequencer, 186 Sequencer buttons, 184, 186 Sound block buttons, 186 sprz one klatki IPO, 196 sterowanie transformacjami za pomoc krzywej IPO, 198 stopniowe przenikanie, 192 Strobe, 184 szybko odtwarzania, 180, 181 cieki dwi kowe, 182 cieki przenikania, 192 cieki sekwencji wideo, 182 cieki transformacji, 197 cieki wizyjne, 182 Timeline, 177 transformacje, 196 trójwymiarowe sceny Blendera, 199 tryb histogramu, 189 tryby wywietlania, 189 tworzenie przej , 191 wektoroskop barw, 189, 190 zanikanie, 192 zanikanie do czerni, 195
zaznaczanie plików w przegldarce, 179 zaznaczanie cieki, 182 znaczniki klatek, 188 edytor waciwoci, 50 edytowanie, 308 efekty dwi kowe, 369 efekty dwi kowe 3D, 370 efekty Glow, 197 efekty Old Movie, 199 efekty specjalne, 360 efekty wietlne, 336 egzemplarz klasy, 214 ekran logowania, 383 skrypt, 387 elif, 228 Emulate 3 Button Mouse, 27 Enable Script Links, 279 enableViewport(), 394 etykiety narz dzi, 24 EV_BT_CANCEL, 255 EV_BT_OK, 255 EvenOdd, 269 event(), 250, 255 except, 281 extend(), 223, 241
F Face Dot Size, 34 Face select mode, 41, 326 False, 222 FFMpeg, 206 File Paths, 36 Flatten, 56 Flip Normals, 325 float, 222 floating selection, 105 Font Size, 30 for, 227 format BVH, 238 format maski, 145 formatowanie skryptów, 235 fps, 180 FPS, 397 frame rate, 180 FrameChanged, 280 frames per second, 180 from, 240 FTBlender, 361 Full Copy, 201
SKOROWIDZ~ 455
grupy, 331 gry FPS, 397 GUI, 216, 250, 255 gui(), 255
funkcje, 228 argumenty, 229 definiowanie, 254 wywoanie, 228
G Gain, 187 gaki oczne, 71 GameKeys, 391 GameLogic, 375, 391 ekran logowania, 383 nazwy obiektów, 382 GameLogic.getCurrentScene(), 381, 393 Gamma Cross, 192 garbage matting, 141, 144 geometria ta, 58 gesty myszy, 44 getHitObject(), 382 getObjectList(), 381, 388 Ghost, 345, 382 GIMP, 100, 101, 105 GL, 375 GL.addActiveActuator(), 388, 397 glBlendFunc(), 285 glEnable(), 285 Global Pivot, 26 Global Scene, 24 globalny rodek transformacji, 26 Glow, 197, 198 glRasterPos2i(), 256 gowa dziecka, 58 gniazda, 266 GNU General Public License, 212 Google Summer of Code, 81 GPL, 212 Grab, 56, 65, 73 Grab/Move, 26 granica czenia, 298 granice wykrywania kolizji, 349 Graphical User Interface, 216 Grease Pencil, 29, 66, 67, 68, 83 klatki animacji, 71 green screen, 136 grupa w zów, 165 grupowanie, 38 grupowanie w zów, 163 grupowanie wierzchoków w oparciu o ciepo koci, 312
H haczyki, 149 has_key(), 274 hasattr(), 387, 395 Histogram, 189 hooks, 149 Hotspot, 28
I IDLE, 216 otwieranie pliku, 219 uruchamianie skryptów, 219 IDProperties, 283, 285 if, 227, 228 ikony, 32 Image.Load(), 286 import, 240 importowanie filmy, 178 moduy, 239 sekwencje obrazów, 178 Inflate, 55, 73, 75 informacje o obiekcie, 24 int, 221 Integrated DeveLopment Environment, 216 interaktywno , 239 interaktywno w oknie widokowym, 283 interfejs Blendera, 48 interfejs programowania aplikacji, 213, 214 internacjonalizacja, 30 International Fonts, 30 interpolacja, 245 interpreter Pythona, 213 Invert Zoom, 27 Ipo, 245, 246 IPO, 245 Ipo Curve Editor, 187, 249, 263 IPO Frame locked, 187, 196 IpoCurve, 245, 247 Iris Wipe, 194 isPositive(), 377
456 ~SKOROWIDZ
J jasno , 124 jednokrotne wykonywanie kodu, 388 j zyk C, 212 interpretowany, 212 kompilowany, 212 Python, 211, 213 skryptowy, 212, 214
K kamera, 349 kanay, 184 kanay koloru, 168 Keyboard, 341, 342, 352, 387 kierunki normalnych, 244 klasy, 214, 230 definiowanie, 230 dost p do waciwoci, 231 Mesh, 240 metody, 230 waciwoci, 230 klatki animacji, 71 klatki opuszczone, 181 klucz, 224 klucz ksztatu, 262 kluczowanie haczyków, 153 kluczowanie uoenia koczyn, 315 kod zdarze, 47 kod ródowy, 212 kodeki, 136, 180 DVCProHD, 136 Windows, 36 Xvid, 180 kolekcje, 381 kolory, 245 komentarze, 234 komin lokomotywy, 100 komponowanie, 173, 191 komponowanie wideoklipów, 135 kompozycyjny system w zów, 135 komunikaty, 350 konfiguracja rodowiska pracy, 23 konfiguracja warstwy renderingu, 163 konsola, 221 kontrast, 124 kopiowanie warstwy, 123 koci, 308
kredka woskowa, 29, 66 krotki, 222, 223 krycie, 107 krzywe interpolacyjne, 245 krzywe IPO, 187, 247 punkty kontrolne, 248 krzywe w trybie Solid, 149 ksztatowanie maski, 153
L labirynt, 326 Lamp, 254 lampa, 254 Language & Font, 30 Large Cursors, 25 Layer, 56, 66, 78 Left Mouse, 27 liczby, 221, 222 cakowite, 221, 222 naturalne, 221 porzdkowe, 221 zmiennoprzecinkowe, 222 Links and Materials, 60, 116, 117, 125, 201 list, 222 lista trójek Béziera, 247 listy, 222, 223 append(), 223 dodawanie elementów, 223 dost p do elementów, 223 extend(), 224 wycinki, 223 Litster Colin, 133 Load Library, 333 Load Tablet Overlay, 290 LocRotScale, 152 Logic, 340 logika kuli, 358 logika obiektu pustego, 358 logika stoka, 357 Loop End, 343 Loop Ping Pong, 369 Loop Select, 101 Loop Stop, 343 Luma Waveform, 190
acuchy, 218, 222 cza skryptowe, 278 wykonywanie skryptów „w locie”, 278
SKOROWIDZ~ 457
cza space handler, 278 czenie materiaów za pomoc w za miksujcego, 131
M makaron, 136 MakeCamera(), 252, 257 MakeCone(), 253, 254 malowanie, 308 malowanie efektów wietlnych, 336 malowanie tekstury, 304 Malowanie tekstury, 95 manipulator transformacji 3D, 27 manipulatory, 45 stosowanie, 45 manipulowanie kanaami koloru, 168 manipulowanie krzywymi IPO, 239 manipulowanie obiektami, 43, 239 manipulowanie siatkami, 239 Map Image, 93 Map Input, 126 Map To, 128, 319 mapa normalnych, 93 mapowanie Orco, 128 mapowanie tekstury, 98, 320, 321 wygadzanie szwów przez wypalanie tekstur, 114 mapowanie UV, 98, 100, 305 szwy, 101 wytyczanie szwów, 102 mapowanie wejcia, 126 Mark Seam, 101, 117 maska, 135 maska elementów niepodanych, 156, 157, 159 animacja, 152 renderowanie, 156 maska green screen, 135, 143 pulling, 136 tworzenie, 136 w zy kompozycyjne, 136 wydobywanie, 136 maskowanie niepodanych elementów, 141, 144, 160 maskowanie obszarów wokó postaci, 154 maszyna teleportacyjna, 378, 380 bloki logiczne, 379 kod, 380 obiekty, 379 Material, 244 Material Linked To, 28
materiay, 38, 97 bezcieniowe z kolorow tekstur UV, 115 Python, 244 TexFace, 334 struktura w zowa, 125 w zy, 125 median point, 27 menu, przyborników, 25 Merge Limit, 298 Mesh, 239, 240, 242 Mesh Tools More, 91, 101, 242, 325 messages, 350 metal, 106 metacieki, 199 MetaVR, 238 metody, 214, 230 metody edycji, 28, 200 metody pracy, 37 miksowanie dwi ku, 36 Milo Motion Control, 167 Mini Axis, 27 Mipmaps, 36 mipmapy, 36 Mirror, 83, 86, 298, 300 modeling cage, 87 modelowanie postaci, 296 modelowanie w wielopoziomowej rozdzielczoci, 54 Modifiers, 86, 303 moduy, 231, 239 modyfikatory Mirror, 298 Subsurf, 296, 303 Modyfikatory, 303 MOSEX, 287 Motion, 344, 370, 374, 377 motywy, 31 MOUSEY, 287 mov, 180 Movie + Audio, 178, 180, 185 Movie + Audio (HD), 200 MP3, 185, 206 Mult, 197 Multiply, 163 Multires, 60, 63 multires meshes, 54
N nagrania wideo typu green screen, 136 nakadki alfa, 165, 191
458 ~SKOROWIDZ
narz dzia Border Select, 296 Draw, 55, 62, 64, 73, 78 Flatten, 56 Grab, 56, 65, 73 Grease Pencil, 66, 67, 83 Inflate, 55, 73, 75 Layer, 56, 66, 78 Pinch, 55, 74, 76 Rotate, 107 Scale, 107 Smooth, 55, 65, 74, 76 narz dzia rzebiarskie, 55 nawigowanie w przestrzeni 3D, 26 nazwa widoku, 25 nazwy, 375 nazwy bloków logicznych, 374 ndPan, 28 ndRot, 28 new(), 242 Node Editor, 129, 130, 138 Node Group, 165 nodes system, 135 noodle, 136 Normal Map, 93 normal map-baking, 90 nos, 74 NTSC, 180 Number of Cuts, 326
O obiekty, 214, 230 dost p do waciwoci, 231 grupowanie, 38 manipulatory, 45 manipulowanie, 43 metody, 230 Python, 239 rzebienie, 53 tworzenie, 230 umieszczanie w scenie, 242 waciwoci, 230 zaznaczanie, 38 obiekty 3D, 239 obiekty tekstowe, 201 Object, 38 Object and Links, 38, 331 Object buttons, 38 Object Center Size, 28 Object Info, 24
Object-Oriented Programming, 214 Objects of Same Type, 152 obracanie, 45 obraz ta, 58, 146 obsuga cigów znaków, 222 obsuga edytora sekwencji wideo, 175 obsuga okien widokowych, 391 obszar wykrywania kolizji dla armatury, 347 Occlude background geometry, 37, 58 oczy, 74 odbicie, 298 odejmowanie kanau, 142 oderwane zaznaczenie, 105 odtwarzanie dwi ków, 369 okno audio, 369 okno dialogowe z przyciskami, 275 okno konsoli, 221 okno skryptów, 236 okrg Béziera, 147 Old Movie, 199 Onion Skin, 68, 71 OOP, 214 Opacity, 107 opcje Blendera, 23 preferencje uytkownika, 24 User Preferences, 24 opcje materiau, 334 Open on Mouse Over, 25 open source, 212 OpenGL, 35, 252, 285 operacje na ciekach, 182 operatory, 225 *, 226 porównania, 225 przypisanie, 225 opónienie otwarcia przybornika, 25 Options, 276 opuszczone klatki, 181 or, 225 OR, 374 Orco, 128, 319 ostre kanty, 74 o czasu, 71, 177, 313 owietlenie w silniku gier, 335 oznaczanie szwu, 92, 306
P Pack Image, 325 Pack Image as PNG, 325 Paint, 83, 308
SKOROWIDZ~ 459
PAL, 180 pami RAM, 54 Pan View, 27 panele, 25 parametry czasu rzeczywistego, 368 parametry widoku, 38, 40, 61 pasek barw, 36 Paste on MMB, 27 p dzel, 56 p tle, 227 for, 227 while, 228 Pin Floating Panels, 26 Pinch, 55, 74, 76 Plain Menus, 26 Plane, 326 Playback FPS, 25 pliki wykonywalne, 212 Plugin, 197 pynne przejcia, 192 podgld skyboksu, 322 podlisty, 223 Podziel z wygadzaniem, 58 ponowne tworzenie topologii, 81, 83 porównania, 225 poruszanie postaci, 341 Pose Mode, 313 postaci, 296 animacja, 308 przypisywanie waciwoci dynamicznych, 345 ruch, 341 powiata, 197 pot gowanie, 288 Powizania i materiay, 60, 116, 125 powieki, 77 powielanie w za materiau, 129 powoka Pythona, 217 interfejs wiersza polece, 218 wiersz zach ty, 218 poziomy rozdzielczoci, 54 pozyskiwanie Pythona, 217 premultiplikacja, 165, 166 print, 219 programowanie gry w Pythonie, 377 programowanie zorientowane obiektowo, 214, 230 programy, 212 open source, 212 properties, 350 proporcje transformacji, 264 proporcje widoku, 61 przechowywanie danych w rejestrze, 280
przechwytywanie danych z klawiatury, 387 przecieranie, 192 koowe, 194 podwójne, 194 pojedyncze, 194 zegarowe, 194 przejcia, 191, 192 cross fade, 192 przecieranie, 192 Wipe, 192 przecznik widocznoci w za, 353 przenikanie, 192 gamma, 192 przenoszenie danych, 280 przesuwanie, 45 przyciganie elementów sceny do siatki, 26 przygotowanie scen dla silnika gier Blendera, 295 przypisanie, 225 przypisywanie armaturze roli nadrz dnej, 312 przypisywanie kuli cech ciaa sztywnego, 380 przypisywanie waciwoci dynamicznych armaturze, 346 punkty kontrolne, 147 krzywe IPO, 248 PyConstraints, 270 PyDrivers, 262 PyNodes, 265 Python, 211, 213 and, 225 API, 214, 215, 231 API Blendera, 237 BezTriple, 247, 248 BGL, 252 b dy wyciekania pami ci, 258 bool, 222 budowanie interfejsu, 249 button_event(), 255 cigi znaków, 222 class, 230 def, 228 definiowanie funkcji, 254 dict, 222 dir(), 231 dodawanie materiau, 244 dokumentacja, 215 dost p do waciwoci, 231 dwi k, 394 event(), 250, 255 float, 222 for, 227 from, 240
460 ~SKOROWIDZ
Python funkcje, 228 funkcje odwieania, 258 GameLogic, 375 GUI, 255 gui(), 255 IDLE, 216, 219 if, 227, 228 import, 240 importowanie moduów, 239 int, 221 interaktywno , 239 interpolacja, 245 interpreter, 213 Ipo, 245 IpoCurve, 245, 247 klasy, 214, 230 kolekcje, 381 kolory, 245 komentarze, 234 krotki, 222, 223 liczby, 221, 222 listy, 222, 223 logiczna struktura interfejsu, 252 acuchy, 218, 222 manipulowanie krzywymi IPO, 239 manipulowanie obiektami, 239 manipulowanie siatkami, 239 Material, 244 materiay, 244 Mesh, 240 metody, 214, 230 moduy, 231, 239 moduy tekstowe, 235 moduy w fazie przejciowej, 240 obiekty, 214, 230, 239 obiekty siatkowe, 240 obsuga dwi ku, 394 operatory, 225 operatory porównania, 225 or, 225 p tle, 227 podlisty, 223 powoka, 217 print, 219 programowanie gry, 377 programowanie zorientowane obiektowo, 230 programy, 212 przechowywanie danych w rejestrze, 280 przechwytywanie danych z klawiatury, 387 przypisanie, 225
PyDrivers, 262 rejestr, 280 silnik gier Blendera, 373 skadnia, 221 skrypty, 212 sowniki, 222, 224 sterowanie postaci, 374 sterowanie przebiegiem programu, 227 sterowniki pythonowe, 262 stosowanie w rodowisku Blendera, 220 struktura interfejsu, 252 struktury danych, 221 submoduy, 240 rodowisko programistyczne, 216 tworzenie maszyny teleportacyjnej, 378 tworzenie siatki, 240 type(), 218, 226 typy danych, 221 umieszczanie obiektu w scenie, 242 uruchamianie skryptów, 219, 242 usprawnianie Blendera, 261 ustawianie wartoci domylnych, 240 wartoci domylne, 240 wartoci logiczne, 222 wci cia, 227 w zy pythonowe, 265 while, 228 wiersz polece, 217 wi zy pythonowe, 270 waciwoci, 230 wycinki, 223 wyraenia logiczne, 225 zapobieganie b dom wyciekania pami ci, 258 zdarzenia, 250 zdarzenia przycisków, 250 zintegrowane rodowisko programistyczne, 216 zmienne, 211, 226, 253 Python Shell, 217 Python Software Foundation, 216
Q QuickTime MPEG-4, 180
R RAM, 54 range(), 227 Rasterizer, 387, 391, 392 Rasterizer.getWindowHeight(), 392 Rasterizer.getWindowWidth(), 392
SKOROWIDZ~ 461
Ray, 355 realizm scen, 97 Real-time Properties, 368 recalcNormals(), 242 Recent Files, 34 Rectangle Select, 108 Redraw(), 242 Region to Loop, 41 Registry, 280 Registry.GetKey(), 281 Registry.SetKey(), 281 rejestr, 280 aktualizacja, 281 obsuga, 281 Render buttons, 119, 145, 206 Render Layers, 138, 139, 156, 157, 162, 163 renderowanie pliki wideo z dwi kiem, 206 sekwencje, 205 Retopo, 81 bufor Z, 90 problemy, 90 siatka stelaowa, 89 Retopo All, 83 Right Mouse, 27 Rigid Body, 345 rigowanie, 308 rigowanie krzywej, 149 RNA, 48 Rotate, 26, 107 Rotate View, 27 Rotation Angle, 27, 37 rotoskopia, 144 rozmiar czcionki, 30 rozwini cie siatki skyboksu, 323 rozwini cie UV, 102 rozwój Blendera, 283 Ruch, 370 ruch spacerowy, 341 Run Python Script, 242 rysowanie, 68 rzebienie, 53 cyzelowanie, 74 doskonalenie rzeby, 65 Draw, 55, 62, 73 Flatten, 56 gaki oczne, 71 gowa dziecka, 58 Grab, 56, 65, 73 Grease Pencil, 66 Inflate, 55, 73, 75
Layer, 56, 66, 78 modelowanie w wielopoziomowej rozdzielczoci, 54 narz dzia, 55 nos, 74 p dzel, 62 Pinch, 55 powieki, 77 proces, 62 przesuwanie fragmentów siatki, 65 przygotowanie, 58 rysowanie, 68 skróty klawiszowe edycji symetrycznej, 65 Smooth, 55, 65 tryb Wireframe, 66 tworzenie pomocniczych szkiców, 66 usta, 74, 76 uszy, 77 warstwy, 66 wst pne ksztatowanie siatki, 62 wymagania sprz towe, 54
S Save UV Face Layout, 102 Save Versions, 34 Scale, 26, 107 scena, 201 scena globalna, 24 script links, 278 Scriptlinks, 278 Scripts, 236 Scripts Window, 236 Sculpt, 55, 65 Sculpt Mode, 54, 61 seams, 101 See3D, 207 sekwencje wideo, 135 Select, 116 Select Grouped, 40 Select Images, 179 Select Linked, 40 Select Movie, 179 Select Similar Edges, 116 Select Vertex Path, 42 Selected to Active, 93 self, 266 Sensors, 340 Separate RGBA, 141, 168 Sequencer buttons, 196 Set Alpha, 166
462 ~SKOROWIDZ
Set Smooth, 60 setKey(), 387 setOnTop(), 394 Shaders, 38 shape key, 262 Show Debug Properties, 352 Show Physics Visualization, 348 siatka, 203 siatka multires, 54 siatka o wielu poziomach rozdzielczoci, 54 siatka stelaowa, 89 siatka testowa UV, 322 silnik gier Blendera, 237, 295 akcje, 376 animowanie postaci, 308 atrybuty, 388 bloki logiczne, 339 bloki logiczne czarowników, 353 bloki logiczne w zów cieek, 351 czcionki, 361 czujniki, 376 dodawanie waciwoci, 351 dwi k, 369 efekty dwi kowe, 369 efekty specjalne, 360 efekty wietlne, 336 elementy sceny, 295 GameKeys, 391 GameLogic, 375 gromadzenie punktów, 356 kamera, 349 komunikaty, 350 logika kuli, 358 logika obiektu pustego, 358 logika stoka, 357 malowanie efektów wietlnych, 336 malowanie tekstury, 304 modelowanie postaci, 296 nazwy, 375 obsuga dwi ku przy uyciu Pythona, 394 odwracanie kierunku ruchu, 355 okna widokowe, 391 owietlenie, 335 podgld skyboksu, 322 programowanie gry w Pythonie, 377 Python, 373 Rasterizer, 391, 392 rigowanie, 308 sceny, 295 skalowanie obiektów, 334
skybox, 318 stany, 350, 358 sterowanie postaci za pomoc Pythona, 374 rodowisko gry, 318 tekst teksturowy, 361 tekstury UV, 365 TexFace, 334 trwao zmiennych, 388 tworzenie animowanych tekstur, 364 tworzenie efektów specjalnych za pomoc tekstur, 360 tworzenie elementów sceny, 295 tworzenie labiryntu, 326 tworzenie maszyny teleportacyjnej, 378 tworzenie tekstu dynamicznego, 360 tworzenie tekstu dynamicznego przy uyciu teksturowanej cianki, 362 tworzenie tekstur UV, 365 umieszczanie obiektów w wiecie gry, 332 uruchamianie, 339 ustawianie kamery, 349 ustawianie opcji materiau, 334 w zy cieek, 350 wizualizacja populacji ryb, 396 waciwoci, 350 wymiary okien widokowych, 393 wywietlanie gry na ekranie, 392 zbieranie skarbów, 356 zmienne, 388 Similar to Selection, 116 Single Wipe, 194 skala kolorów, 142, 143 skalowanie, 45 skalowanie obiektów w rodowisku silnika gier, 334 Sketch in 3D, 68 skadnia j zyka Python, 221 skróty klawiszowe edycji symetrycznej, 65 skrypty, 212, 213, 233 API Blendera, 237 edycja, 233 formatowanie, 235 interfejs, 249 okno skryptów, 236 szablony, 235 uruchamianie, 219, 233, 242 skrypty interaktywne, 239 skrypty space handler, 283 cz rysujca, 285 cz zdarzeniowa, 286 uruchamianie, 288
SKOROWIDZ~ 463
skybox, 318 slices, 223 sowniki, 222, 224 klucz, 224 warto , 224 Smooth, 55, 65, 74, 76 Smooth View, 27 sockets.input, 266 sockets.output, 266 Solid, 296 Sound, 369, 370, 395 space handler, 278, 283 SpaceNavigator, 27, 290 Specials, 296 Speed Control, 196 spoeczno twórców Blendera, 51 sprz one klatki IPO, 187, 196 Stamp, 206 stany, 350, 358 stela, 87 stemplowanie, 206 Stencil, 321 sterowanie fizyk cia sztywnych, 340 sterowanie postaci za pomoc Pythona, 374 sterowanie przebiegiem programu, 227 sterowanie trybem przycigania elementów sceny do siatki, 26 sterowanie widokiem, 37 sterowniki IPO, 262 sterowniki pythonowe, 262 sterowanie interpolacj, 262 tworzenie, 264 stopniowe przenikanie, 192 stosowanie Pythona w rodowisku Blendera, 220 str, 222 string, 218 struktury danych, 221 Sub, 197 Subdivide, 149 Subdivide Smooth, 58, 296, 303, 318 sublists, 223 submoduy, 240 subpowierzchnia, 296, 303 Subsurf, 296, 303 swobodne panele, 26 Symmetry, 62 System & OpenGL, 35 system bloków logicznych, 340 system w zów, 125, 135, 143 system zdarze, 48 szkicowanie kredk, 71
sztuczna inteligencja, 339 szwy, 101, 116 usuwanie, 117 wygadzanie przez wypalanie tekstur, 114 szybko odtwarzania, 25, 180, 181
S cieki Cross, 195 cieki dwi kowe, 182 cieki plików, 36 cieki przenikania, 192 cieki Speed Control, 196 cieki wizyjne, 182 rodowisko gry, 318 rodowisko pracy, 23 ustawianie opcji Blendera, 23 rodowisko programistyczne Pythona, 216 wiata OpenGL, 35
T tablet, 289 tekst, 201 dynamiczny, 360 teksturowy, 361 Tekstura, 56 teksturowana cianka, 334, 363 teksturowanie komina lokomotywy, 100 tekstury, 97 Clouds, 98 mapowanie, 98 mapowanie UV, 98 metal, 106 obrazkowe, 98 proceduralne, 98, 318, 321 tworzenie efektów specjalnych, 360 wygadzanie szwów przez wypalanie tekstur, 114 wypalanie, 119 tekstury UV, 97, 99, 305 dodawanie, 102, 118 TexFace, 334 Text, 233 Text Editor, 220 Texture, 56, 319 Texture Face, 334, 363 Texture Paint, 95, 304, 308 Textured, 305 Textured-Face, 334 Themes, 31 Timeline, 71, 177, 313
464 ~SKOROWIDZ
Tool Tips, 24 Toolbox click-hold delay, 25 toolboxes, 25 Trackball, 26 Transform Properties, 264 Transform: Drag Immediately, 29 transformacje, 45, 196 trójwymiarowy tekst, 360 True, 222 TrueType, 361 trwao zmiennych, 388 try, 281 tryb edycji symetrycznej, 77 tryb malowania tekstury, 309 tryb pozowania, 313 tryb rysowania, 68 tryb rzebienia, 54, 61 tryb Vertex Paint, 337 tryb Wireframe, 66 Turntable, 26 tworzenie animowana maska elementów niepodanych, 145 animowane tekstury, 364 efekty dwi kowe, 369 efekty dwi kowe 3D, 370 ekran logowania, 383 elementy sceny dla silnika gier, 295 labirynt, 326 maska green screen, 135 maszyna teleportacyjna, 378 materiay, 244 materiay o strukturze w zowej, 125 obiekty, 230 obrazy, 307 okrg Béziera, 147 przejcia, 191 scena, 201 siatka, 240 skrypty interaktywne, 239 skybox, 318 sterowniki pythonowe, 264 cianki przez wyciganie kraw dzi, 85 rodowisko gry, 318 tekst dynamiczny, 360 tekst dynamiczny przy uyciu teksturowanej cianki, 362 tekst teksturowy, 361 tekstury UV, 97 warstwy, 107 warstwy renderingu, 163
w zy materiaowe, 126 w zy pythonowe, 266 w zy Separate RGBA, 141 w zy Viewer, 140 wi zy pythonowe, 270 tworzenie nowej topologii, 53, 81 type(), 218, 226 typy danych, 221 bool, 222 dict, 222 float, 222 int, 221 krotki, 222, 223 liczby, 221 list, 222 listy, 222, 223 acuchy, 222 sowniki, 222, 224 str, 222 tup, 222 wartoci logiczne, 222
U umieszczanie obiektu w scenie, 242 umieszczanie obiektu w wiecie gry, 332 Undo, 29 uruchamianie silnika gier, 339 uruchamianie skryptów, 219, 233 skrypt space handler, 288 Use Background Image, 58, 146 Use Nodes, 138 Use Textured Fonts, 30 User Preferences, 23, 24 Auto Save, 34 Edit Methods, 28 File Paths, 36 Language & Font, 30 System & OpenGL, 35 Themes, 31 View & Controls, 24 usprawnianie Blendera za pomoc Pythona, 261 usta, 74, 76 ustalanie granic wykrywania kolizji, 349 ustawianie kamery, 349 ustawianie opcji Blendera, 23 ustawianie opcji materiau, 334 ustawienia armatury, 310 ustawienia uytkownika, 24 Ustawienia uytkownika, 23 ustawienie napisu, 204
SKOROWIDZ~ 465
usuwanie kolory z mapy nierównoci, 123 szwy, 117 wiat, 157 wci cie kodu, 233 usuwanie zabarwie, 168 Combine RGBA, 169 manipulowanie kanaami koloru, 168 wycieki koloru, 168 wyczanie w zów, 173 uszy, 77 urednianie wspórz dnych pooenia, 277 UV Test Grid, 91, 322 UV/Image Editor, 61, 91, 102, 305, 323, 365 UVs, 102 UVsphere, 71
V Veenvliet Dolf, 289 Vertex Groups, 116, 117 Vertex Paint, 337 Vertex select mode, 41 View & Controls, 24, 28 View Locking, 38 View Name, 25 View Properties, 38, 40, 61 Viewer Node, 140 Virtual Reality Scene Generator, 238 Visibility, 352 VLC, 180 VRSG, 238 VSE, 135, 175
W warstwy, 66 tworzenie, 107 warstwy renderingu, 156, 158, 163 konfiguracja, 163 tworzenie, 163 wartoci logiczne, 222 warto , 224 wczytywanie sekwencje obrazów ta, 146 szablony skryptu, 235 w zy AlphaOver, 166 Blur, 170 ColorRamp, 141, 143 dynamiczne, 265
filtrujce, 170 miksujce, 131 Render Layers, 156 Separate RGBA, 141 Set Alpha, 166 cieki, 350, 351 wizjer, 140 w zy kompozycyjne, 135, 136 ColorRamp, 141, 143 dodawanie w za wejciowego, 139 edytor w zów, 138 gniazda wejciowe, 136 czenie w zów, 137 makaron, 136 maskowanie niepodanych elementów, 144 Node Editor, 138 poczenia mi dzy w zami, 136 Render Layers, 139 Separate RGBA, 141 Viewer, 140 wizjer, 140 wydobywanie maski green screen, 138 w zy konwertujce Combine RGBA, 168 Separate RGBA, 168 w zy materiaowe, 125 edytor w zów, 129 powielanie w za, 129 tworzenie, 126 w ze miksujcy, 131 w zy pythonowe, 265 gniazda, 266 tworzenie, 266 while, 228 wideo, 135 green screen, 136 Widok 3D, 145 widoki, 37 wielopoziomowa rozdzielczo siatek, 54, 60 wi zy pythonowe, 270 skrypt, 271 tworzenie, 270 wi zy skryptowe, 272 Win Codecs, 36 Window type, 233 Window.GetAreaSize(), 286 Window.QAdd(), 288 Window.QHandle(), 288 wipe, 192 Wireframe, 66, 296 wizjer, 140
466 ~SKOROWIDZ
wizualizacja fizyki, 348 wizualizacja populacji ryb, 396 wklejanie, 235 waciwoci, 230, 350 waciwoci dynamiczne postaci, 345 waciwoci identyfikacyjne, 283, 285 wczanie dwi k 3D, 371 wywietlanie normalnych, 325 World buttons, 202 wybór sceny, 204 wyciganie koci, 310 wycieki koloru, 168 wycinanie, 235 wycinki, 223 wydobywanie maski green screen, 136, 138 wygadzanie szwów przez wypalanie tekstur, 114 wykaczanie maski, 170 wykonywanie skryptów „w locie”, 278 wykrywanie kolizji, 340 wyczanie w zów, 173 wymiary okien widokowych, 393 wymuszanie zgodnoci klatek IPO z klatkami aktualnej sekwencji, 188 wypalanie map normalnych, 90 Bake, 94 mapa normalnych, 93 materia, 95 oznaczanie szwów, 92 zapisywanie obrazów, 95 wypalanie tekstury, 119 wyraenia logiczne, 225 wywietlanie normalnych, 325 wytyczanie szwów, 102 wywoanie funkcji, 228
X X-Axis Mirror, 308 XOR, 374 Xvid, 180, 206
Z zaamania, 74 zanikanie, 192 zanikanie do czerni, 195 zapisywanie automatyczne, 34 modele trójwymiarowe, 48 rozwini cia UV, 104 zmiany opcji, 37 zaznaczanie, 38, 116 elementy podobne, 43 haczyki na podstawie typu obiektu, 153 kraw dzie, 41 p tle, 41 piercienie, 41 ramka prostoktna, 40 sekwencja obrazów, 139 szwy, 117 cieki, 182 tryb edycji, 41 zaznaczanie plików w przegldarce, 179 Zaznaczenie prostoktne, 108 zdarzenia, 47, 250 przyciski, 250 zgrubne modelowanie siatki, 60 zielony ekran, 136 zintegrowane rodowisko programistyczne, 216 zmiana nazwy animacji, 317 zmiana typu punktów kontrolnych na wektorowe, 148 zmienne, 211, 226, 253 globalne, 226, 229 lokalne, 226, 229 zmniejszanie wycigni tych cianek, 298 znaczniki klatek, 188 zwi kszanie kontrastu, 143
UMOWA LICENCYJNA U YTKOWNIKA OPROGRAMOWANIA WILEY PUBLISHING, INC. WA NE. Przed rozpocz ciem korzystania z doczonego do niniejszej ksiki („Ksika”) pakietu (pakietów) oprogramowania naley uwanie przeczyta ponisze zasady i warunki. Niniejsza umowa licencyjna („Umowa”) zostaje zawarta mi dzy uytkownikiem a firm Wiley Publishing, Inc. („WPI”). Przez otwarcie doczonego pakietu (pakietów) oprogramowania uytkownik potwierdza, e zapozna si z treci i akceptuje ponisze zasady i warunki. Jeli uytkownik nie wyraa zgody na przestrzeganie poniszych postanowie, powinien natychmiast zwróci Ksik wraz z nieotwartym pakietem (pakietami) oprogramowania do punktu zakupu w celu zwrotu penej kwoty. 1. Udzielenie licencji. WPI udziela uytkownikowi (osobie fizycznej lub podmiotowi prawnemu) niewycznej licencji na uytkowanie jednej kopii zaczonego programu (programów) komputerowego („Oprogramowania”) wycznie na uytek wasny lub do celów biznesowych, na jednym stanowisku komputerowym (niezalenie, czy jest to standardowy komputer, czy stacja robocza b dca cz ci sieci komputerowej). Za wykorzystywanie Oprogramowania na komputerze uznaje si fakt zaadowania go do pami ci tymczasowej lub zainstalowania go w pami ci trwaej (na przykad dysk twardy, CDROM lub inne urzdzenie do przechowywania danych). WPI zastrzega sobie wszelkie prawa nieudzielone uytkownikowi wyranie w niniejszej Umowie. 2. Prawo wasnoci. WPI jest wacicielem wszystkich praw, tytuów i korzyci, wcznie z prawami autorskimi, zwizanych z kompilacj Oprogramowania zapisanego na dysku (dyskach) lub pycie CD („Nonik oprogramowania”). Prawa autorskie do poszczególnych programów zapisanych na Noniku oprogramowania s wasnoci autorów lub innych wacicieli praw autorskich do poszczególnych programów. WPI oraz licencjodawcy pozostaj wacicielami Oprogramowania i wszystkich zwizanych z nim praw wasnoci. 3. Ograniczenia dotycz ce uytkowania i przenoszenia praw. (a) Uytkownik ma prawo do (i) wykonania wycznie jednej kopii Oprogramowania w celu archiwizacji lub sporzdzenia kopii zapasowej; lub (ii) przeniesienia Oprogramowania na pojedynczy dysk twardy pod warunkiem, e orygina zostanie zachowany wycznie w celach archiwizacji lub jako kopia zapasowa. Uytkownik nie moe (i) wypoycza lub dzierawi Oprogramowania, (ii) kopiowa ani reprodukowa Oprogramowania w sieci LAN lub innym systemie sieciowym, ani udost pnia go w systemie subskrypcji lub systemie BBS, (iii) modyfikowa , zmienia ani tworzy pochodnych prac bazujcych na Oprogramowaniu. (b) Uytkownikowi nie wolno przeprowadza inynierii wstecznej Oprogramowania, dekompilowa go lub rozkada na czynniki pierwsze. Uytkownik moe przenie na stae Oprogramowanie wraz z dokumentacj, pod warunkiem usuni cia wszystkich kopii Oprogramowania oraz zobowizania si adresata do przestrzegania zasad i warunków niniejszej Umowy. Jeli Oprogramowanie byo aktualizowane, przeniesienie musi obejmowa
najnowsz aktualizacj oraz wszystkie poprzednie wersje. 4. Ograniczenia dotycz ce stosowania poszczególnych programów. Uytkownika obowizuj wymagania i ograniczenia wyszczególnione oddzielnie dla kadego programu w zaczniku About the CD-ROM niniejszej Ksiki. Ograniczenia te zostay take przedstawione w poszczególnych umowach licencyjnych zapisanych na Noniku oprogramowania. Warunki mog obejmowa wymóg, aby po upywie okrelonego okresu uytkownik uici opat rejestracyjn za kontynuowanie korzystania z programu. Otwierajc pakiet (pakiety) Oprogramowania, uytkownik zobowizuje si do przestrzegania postanowie licencji i ogranicze zwizanych z poszczególnymi programami, wyszczególnionymi w zaczniku About CD-ROM oraz zapisanymi na Noniku oprogramowania. Jakiekolwiek materiay zawarte na Noniku oprogramowania lub zamieszczone w niniejszej Ksice nie mog by rozpowszechniane, w formie oryginalnej lub zmienionej, dla celów komercyjnych.
5. Ograniczona gwarancja. (a) WPI udziela gwarancji, e Oprogramowanie oraz Nonik oprogramowania s wolne od wad materiaowych i wykonawczych w normalnym zakresie uytkowania, na okres sze dziesi ciu (60) dni od daty zakupu Ksiki. Jeli w okresie gwarancyjnym do WPI wpynie powiadomienie o wadach materiaowych lub wykonawczych, WPI ma obowizek wymiany uszkodzonego Nonika oprogramowania. (b) WPI ORAZ AUTOR KSI KI NIE UDZIELAJ ADNYCH INNYCH GWARANCJI, JAWNYCH LUB DOMNIEMANYCH, W TYM, LECZ NIE WY CZNIE, DOMNIEMANYCH GWARANCJI U YTECZNOCI HANDLOWEJ I PRZYDATNOCI DO OKRELONEGO CELU, W ODNIESIENIU DO OPROGRAMOWANIA, PROGRAMÓW, ZAWARTEGO KODU RÓDOWEGO ORAZ/LUB TECHNIK OPISANYCH W KSI CE. WPI NIE GWARANTUJE, E FUNKCJE OROGRAMOWANIA SPENI WYMAGANIA U YTKOWNIKA ANI E OPROGRAMOWANIE BDZIE DZIAA BEZBDNIE. (c) Niniejsza ograniczona gwarancja przyznaje uytkownikowi okrelone prawa, przy czym uytkownik moe take mie inne uprawnienia wynikajce z prawodawstwa lokalnego. 6. Odszkodowania. (a) Cakowita odpowiedzialno WPI i jedyne odszkodowanie przysugujce uytkownikowi z tytuu roszcze wynikych z wad materiaowych lub wykonawczych s ograniczone do wymiany Nonika oprogramowania, który naley zwróci do WPI wraz z kopi dowodu zakupu pod adres: Software Media Fulfillment Department, Attn.: Mastering Blender, Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN 46256. Mona take zadzwoni pod numer 1-800-762-2974. Naley przyj od czterech do szeciu tygodni jako czas transportu przesyki. Niniejsza ograniczona gwarancja nie obowizuje, jeli wada Nonika wynika na skutek wypadku, zaniedbania lub nieprawidowego uycia. Kady wymieniony Nonik oprogramowania zostanie obj ty gwarancj obowizujc do koca pierwszego okresu gwarancyjnego lub przez okres 30 dni, przy czym obowizuje ten termin, który upywa póniej. (b) W adnym wypadku WPI ani autor nie ponosz odpowiedzialnoci za jakiekolwiek inne straty (wcznie, ale nie tylko, z utrat zysków, zakóceniami w prowadzeniu dziaalnoci, utrat informacji firmowych lub innymi stratami finansowymi) wynikajce z korzystania lub niemonoci korzystania z Ksiki lub Oprogramowania, nawet w przypadku powiadomienia WPI o ewentualnoci powstania takich strat. (c) Ze wzgl du na fakt, e niektóre prawodawstwa nie zezwalaj na wyczenie lub ograniczenia odpowiedzialnoci za szkody wtórne lub uboczne, powysze ograniczenia mog nie mie zastosowania. 7. Ograniczone prawa rz du Stanów Zjednoczonych. Uywanie, powielanie i ujawnianie Oprogramowania przez lub w imieniu rzdu Stanów Zjednoczonych Ameryki, jego agencji i/lub organów („Rzd Stanów Zjednoczonych”) podlega ograniczeniom zawartym w artykule (c)(1)(ii) klauzuli Rights in Technical Data and Computer Software przepisów DFARS 252.227-7013 oraz w artykuach (c)(1) i (2) ustale Commercial Computer Software — Restricted Rights przepisów FAR 52.227-19 oraz równowanych klauzulach suplementu agencji NASA do przepisów FAR. 8. Postanowienia ogólne. Niniejsza Umowa stanowi cao porozumienia mi dzy stronami oraz uniewania i zast puje wszystkie wczeniejsze umowy pisemne i ustne zawarte mi dzy nimi. Jakiekolwiek zmiany niniejszej Umowy musz by sporzdzone na pimie i podpisane przez obie strony. Niniejsza Umowa jest nadrz dna wobec jakichkolwiek innych dokumentów, które mogyby ustanawia
przepisy pozostajce z ni w sprzecznoci. Jeli jedno lub kilka postanowie niniejszej Umowy zostanie uznanych przez sd lub trybuna orzekajcy za niewane, niezgodne z prawem lub w jakikolwiek inny sposób strac swoj moc prawn, pozostaje to bez wpywu na wszystkie pozostae postanowienia Umowy.
Zawartość płyty CD-ROM Płyta dołączona do książki zawiera:1 instalatory Blendera 2.48 dla systemów Windows i Macintosh oraz tarball dla Linuksa i innych odmian Uniksa, pliki .blend z materiałami do ćwiczeń.
1
Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/blemis_p.zip
Galeria
Rysunek górny (będący powtórzeniem rysunku 1.13 z rozdziału 1.) przedstawia alternatywny zestaw ikon, jaki został zamieszczony na płycie dołączonej do książki. Rysunki środkowy i dolny (powtórzenie rysunku 1.14 z rozdziału 1.) ukazują różnice w wyglądzie nagłówków okien Blendera po zmianie ikon z domyślnych na alternatywne.
Rysunek górny (powtórzenie rysunku 1.24 z rozdziału 1.) przedstawia efekt zastosowania funkcji zaznaczającej Region to Loop (obszar na pętlę). Rysunek środkowy (powtórzenie rysunku 1.25 z rozdziału 1.) przedstawia zaznaczenia pętli i pierścienia wykonane w trybie zaznaczania wierzchołków. Rysunek dolny (powtórzenie rysunku 1.26 z rozdziału 1.) przedstawia te same zaznaczenia wykonane w trybie zaznaczania krawędzi.
Pierwszy rysunek (powtórzenie rysunku 1.27 z rozdziału 1.) przedstawia zaznaczenie pierścienia wykonane w trybie zaznaczania ścianek. Drugi rysunek (powtórzenie rysunku 1.29 z rozdziału 1.) przedstawia manipulatory transformacji. Trzeci rysunek (powtórzenie rysunku 1.30 z rozdziału 1.) przedstawia wygląd tych manipulatorów w trakcie przekształcania obiektu.
Rysunek górny (będący powtórzeniem rysunku 2.66 z rozdziału 2.) przedstawia mapowanie obrazu testowego na siatce rozwiniętej we współrzędnych UV. Rysunek dolny (powtórzenie rysunku 2.68 z rozdziału 2.) przedstawia teksturę uzyskaną przez wypalenie mapy normalnych.
Te trzy obrazki (będące powtórzeniem rysunku 2.71 z rozdziału 2.) przedstawiają renderingi trzech siatek. U góry po lewej widać oryginalną siatkę wyrzeźbioną w trybie wielopoziomowej rozdzielczości. Siatka u góry po prawej jest jej uproszczoną wersją powstałą w wyniku ponownego zdefiniowania topologii. Obrazek dolny przedstawia siatkę uproszczoną z nałożoną na nią wypaloną mapą normalnych.
Obraz © 2008 Colin Litster
Rysunek górny (będący powtórzeniem rysunku 3.2 z rozdziału 3.) przedstawia model lokomotywy z nałożonymi materiałami UV. Odbicia nieba na lśniących elementach parowozu wzmacniają realizm sceny. Rysunek dolny (w wersji czarno-białej prezentowany był pod koniec rozdziału 3.) wykonany został przez Colina Litstera i przedstawia efekt zastosowania tekstur UV w połączeniu z materiałami o strukturze węzłowej.
Rysunek górny (będący powtórzeniem rysunku 3.5 z rozdziału 3.) przedstawia zaznaczenie krawędzi mających stanowić szwy rozwinięcia UV. Rysunek dolny (powtórzenie rysunku 3.8 z rozdziału 3.) przedstawia siatkę komina i jej rozwinięcie we współrzędnych UV.
Te obrazki (będące powtórzeniem rysunków 3.34 i 3.35 z rozdziału 3.) przedstawiają usuwanie pierwotnych szwów rozwinięcia i wyznaczanie nowych.
Rysunek górny (będący powtórzeniem rysunku 3.39 z rozdziału 3.) przedstawia wypaloną teksturę z widocznymi szwami z pierwszego mapowania. Rysunek dolny (powtórzenie rysunku 3.49 z rozdziału 3.) przedstawia tę samą teksturę, ale po usunięciu szwów w GIMP-ie.
Rysunek górny (będący powtórzeniem rysunku 4.1 z rozdziału 4.) przedstawia cztery klatki z krótkiej sekwencji wideo wykonanej techniką green screen i zamieszczonej na płycie dołączonej do książki. Rysunek dolny (powtórzenie rysunku 4.10 z rozdziału 4.) przedstawia układ węzłów rozbijający obraz na poszczególne kanały koloru.
Rysunek górny (będący powtórzeniem rysunku 4.20 z rozdziału 4.) przedstawia okrąg Béziera dodany do trójwymiarowej sceny. Rysunki dolne (powtórzenie rysunku 4.26 z rozdziału 4.) ukazują krzywą przed zastosowaniem trzykrotnego podziału prawej krawędzi i po zastosowaniu tego podziału.
Rysunek górny (będący powtórzeniem rysunku 4.28 z rozdziału 4.) przedstawia dodawanie nowego haczyka do punktu kontrolnego krzywej. Rysunek dolny (powtórzenie rysunku 4.56 z rozdziału 4.) ukazuje zestaw węzłów umożliwiających nałożenie pierwszoplanowej postaci na kolorowe tło.
Te obrazy (będące powtórzeniem rysunku 4.57 z rozdziału 4.) ilustrują znaczenie prawidłowego ustawienia premultiplikacji. U góry widać wyraźnie białą obwódkę wzdłuż wszystkich krawędzi sylwetki oraz białe linie w obszarze tła.
Na górnym rysunku (będącym powtórzeniem rysunku 4.58 z rozdziału 4.) widać wyraźnie zielone zabarwienie krawędzi sylwetki. Rysunek dolny (powtórzenie rysunku 4.61 z rozdziału 4.) ukazuje efekt osłabienia kanału zielonego.
Rysunek górny (będący powtórzeniem rysunku 4.63 z rozdziału 4.) przedstawia obraz z włączonym kanałem alfa. Do włączania tego kanału służy przycisk zaznaczony w nagłówku okna UV/Image Editor (Edytor UV/Obrazów). Rysunek dolny (powtórzenie rysunku 4.64 z rozdziału 4.) przedstawia ten sam obraz, ale z nowym tłem.
Dwa górne rysunki (będące powtórzeniem rysunku 4.65 z rozdziału 4.) przedstawiają kompozycję przed skorygowaniem i po skorygowaniu kolorystyki przez dodanie fioletowego zabarwienia w obszarach najjaśniejszych. Rysunek dolny (powtórzenie rysunku 5.14 z rozdziału 5.) przedstawia ścieżki rozcięte w sposób niedestrukcyjny (Shift+K). Zwróć uwagę na półprzezroczyste rozszerzenia tych ścieżek — jest to informacja, że cięcie było niedestrukcyjne.
Te obrazy ukazują różnicę między domyślnym odwzorowaniem krzywej IPO na przedział 100-klatkowy a odwzorowaniem jej na pełny zakres sekwencji. Na rysunku górnym (kolorowa wersja rysunku 5.19 z rozdziału 5.) bieżąca, 95., klatka krzywej IPO odpowiada klatce 232. sekwencji dźwiękowej, co stanowi 95 procent całego zakresu tej sekwencji. Na rysunku dolnym (kolorowa wersja rysunku 5.21 z rozdziału 5.) numer bieżącej klatki krzywej IPO jest taki sam jak numer bieżącej klatki sekwencji, czyli 95.
Ta kolorowa wersja rysunku 5.22 z rozdziału 5. przedstawia różnice w wyglądzie histogramu dla trzech różnych klatek sekwencji wideo. Zauważ, że ciemniejszym klatkom odpowiadają wyższe wartości na lewym końcu histogramu.
Pierwsza ilustracja (powtórzenie rysunku 5.23 z rozdziału 5.) przedstawia okno edytora wideo w trybie Chroma Vectorscope (wektoroskop barw). Poszczególne punkty grafu oznaczają barwę i nasycenie pikseli obrazu wideo. Druga ilustracja (powtórzenie rysunku 5.25 z rozdziału 5.) przedstawia okno edytora wideo w trybie Luma Waveform (monitor przebiegu jasności). Poszczególnym rzędom pikseli obrazu wideo odpowiadają krzywe reprezentujące ich poziomy jasności. Zwróć uwagę na środkowe części tych krzywych, gdzie światło jest blokowane przez postać stojącą na pierwszym planie.
Pierwszy i drugi rysunek (powtórzenie rysunku 9.20 z rozdziału 9.) stanowią ilustrację procesu wyznaczania szwów na siatce postaci. Szew jest tu oznaczony kolorem pomarańczowym. Trzeci rysunek (powtórzenie rysunku 9.46 z rozdziału 9.) przedstawia krawędzie zaznaczone w celu wyznaczenia szwów potrzebnych do rozwinięcia skyboksu.
Cztery panele widoczne na rysunku górnym (powtórzenie rysunku 9.47 z rozdziału 9.) zawierają ustawienia dla tekstury gradientowej. Rysunek dolny (powtórzenie rysunku 9.48 z rozdziału 9.) przedstawia panele z ustawieniami mapowania tej tekstury na materiale.
Rysunek górny (będący powtórzeniem rysunku 9.58 z rozdziału 9.) przedstawia wypaloną teksturę proceduralną po zmapowaniu na siatkę skyboksu. Rysunek dolny (będący powtórzeniem rysunku 10.15 z rozdziału 10.) przedstawia postać głównego bohatera gry w trybie Wireframe (Kontury) z włączoną wizualizacją fizyki. Zbyt mały obszar wykrywania kolizji sprawia, że postać grzęźnie w podłodze.
Rysunek górny (będący powtórzeniem rysunku 10.29 z rozdziału 10.) przedstawia scenografię prostej gry z labiryntem, skyboksem, czarownikami i skarbami. Rysunek środkowy (będący powtórzeniem rysunku 11.13 z rozdziału 11.) przedstawia środowisko innej gry z dwoma kolorowymi sześcianami i wieloma kamerami. Rysunek dolny (będący powtórzeniem rysunku 11.18 z rozdziału 11.) przedstawia obraz gry widziany z różnych kamer. Widok z lewej strony pochodzi z kamery śledzącej ruchy sześcianu niebieskiego, a widok po prawej — z kamery śledzącej sześcian czerwony. Trzecie okno widokowe zawiera obraz z trzeciej kamery ustawionej nad planszą gry.
Obraz © 2008 Soenke Maeter
Ten fascynujący obraz z okładki został zatytułowany Reaching Out, a jego autorem jest Soenke Maeter, zwycięzca konkursu Blender World Cup w 2008 roku. Więcej na temat tego obrazu i sposobu, w jaki został wykonany, możesz przeczytać pod adresem www.itsartmag.com/features/reachingout.