pydev-blender-pl.pdf

(6308 KB) Pobierz
Witold Jaworski
do Blendera 2.5
Pisanie skryptów w języku Python,
z wykorzystaniem Eclipse IDE
883104784.041.png
Programowanie dodatków do Blendera 2.5 - wersja 1.01
Copyright Witold Jaworski, 2011.
wjaworski@samoloty3d.pl
Recenzent: Jarek Karpiel
Chciałbym także podziękować Dawidowi Ośródce, za jego uwagi.
zależnych 3.0 Unported .
ISBN: 978-83-931754-1-3
883104784.042.png
Rozdział 1 Instalacja oprogramowania
3
Spis treści
Copyright Witold Jaworski, 2011.
 
4
Przygotowania
Wprowadzenie
Językiem skryptów Blendera jest Python. W tym języku zrealizowano wiele przydatnych dodatków do tego pro-
gramu. Niestety, w Blenderze brakuje czegoś w rodzaju zintegrowanego środowiska programisty (ang.
integrated development environment — w skrócie IDE ). „W standardzie” znajdziesz tylko zaadaptowany do
podświetlania składni Pythona edytor tekstowy, oraz konsolę. To wystarcza do tworzenia prostych skryptów, ale
zaczyna przeszkadzać, gdy tworzysz większe programy. Szczególnie uciążliwy jest brak „okienkowego” debu-
ggera. W 2007r opracowałem artykuł, w którym proponowałem użycie w tym charakterze dwóch programów:
Open Source: SPE (edytor) i Winpdb (debugger). Ten artykuł został potem opublikowany na blenderwiki przez
Jeffa Blanka.
W 2009r postanowiono, że przepisywana „od podstaw” nowa wersja Blendera (2.5) będzie miała zupełnie nowe
API. Ten Blender ma „wczepionego” Pythona w wydaniu 3.x, podczas gdy poprzednie wersje używały wydań z
serii 2.x. W dodatku twórcy Pythona także zdecydowali się w wersji 3.x zerwać wsteczną zgodność kodu. W
efekcie biblioteka „okienek”, w której napisano SPE i Winpdb — wxPython , oparta na wxWidgets — działała w
Pythonie 2.x, a nie działa w Pythonie 3.x. Co gorsza, jakoś nikt nie pracuje nad jej aktualizacją. Wygląda na to,
że w ten sposób obydwa narzędzia stały się niedostępne dla Blendera w wersji 2.5 i następnych (2.6, …).
Postanowiłem więc zaproponować nowe środowisko programisty, także oparte wyłącznie o oprogramowanie
Open Source. Tym razem mój wybór padł na IDE Eclipse , wzbogacone o dodatek do pracy ze skryptami Py-
thona: PyDev . Obydwa produkty są rozwijane już od 10 lat, i same w sobie nie zależą od Pythona. (Dzięki temu
nie są narażone na taką wsteczną niezgodność kodu, jak SPE i Winpdb). Nim napisałem to opracowanie, za-
adaptowałem do API Blendera 2.5 za pomocą Eclipse i PyDev wszystkie moje skrypty. W niektórych przypad-
kach oznaczało to konieczność przepisania ich od nowa. Na podstawie tych doświadczeń sądzę, że to nowe
środowisko jest lepsze od poprzedniego.
Uważam, że narzędzia programisty najlepiej przedstawiać na przykładzie pracy nad jakimś konkretnym skryp-
tem. Zdecydowałem się więc opisać tu proces tworzenia wtyczki Blendera, służącej do fazowania wybranych
krawędzi siatki. (Chodzi o odtworzenie działania polecenia Bevel z Blendera 2.49). Poziom narracji wymaga
przeciętnej znajomości Pythona i Blendera. Do zrozumienia fragmentu o tworzeniu wtyczki (Rozdział 4) trzeba
także znać podstawowe pojęcia programowania obiektowego, takie jak: „klasa”, „obiekt”, „instancja”, „dziedzi-
czenie”. Gdy jest to potrzebne (pod koniec tego rozdziału) wyjaśniam kilka bardziej zaawansowanych pojęć. (Na
przykładzie API dla wtyczek tłumaczę, co to jest „interfejs” i „klasa abstrakcyjna”). Ta książka wprowadza w
praktyczne podstawy pisania rozszerzeń Blendera. Nie opisuję tu wszystkich zagadnień. Przestawiam za to
m e t o d y, które stosuję, by je poznawać. Używając ich, będziesz mógł samodzielnie opanować resztę tego API
(np. tworzenie własnych paneli lub menu).
Programowanie dodatków do Blendera 2.5 — wersja 1.01
www.samoloty3d.pl
 
Rozdział 1 Instalacja oprogramowania
5
Konwencje zapisu
Wskazówki dotyczące klawiatury i myszki oparłem na założeniu, że masz standardowe:
klawiaturę — w normalnym układzie amerykańskim, 102 klawisze;
myszkę — wyposażoną w dwa przyciski i kółko przewijania (które daje się także naciskać: wtedy
działa jak trzeci, środkowy przycisk).
Wywołanie polecenia programu będę zaznaczał następująco:
Menu Polecenie
- taki zapis oznacza wywołanie z menu „Menu” polecenia „Polecenie”. W przypadku
bardziej zagnieżdżonych menu może wystąpić więcej strzałek!
Panel:Przycisk
- taki zapis oznacza naciśnięcie w oknie dialogowym lub panelu "Panel" przycisku
„Przycisk”.
Naciśnięcie klawisza na klawiaturze:
Alt - K
- myślnik pomiędzy znakami klawiszy oznacza jednoczesne naciśnięcie obydwu klawi-
szy na klawiaturze. W tym przykładzie trzymając wciśnięty Alt , naciskasz K ;
G , X
- przecinek pomiędzy znakami klawiszy oznacza, że je naciskasz (i zwalniasz!) po kolei.
W tym przykładzie najpierw G , a potem X (tak, jak gdybyś chciał napisać wyraz „gx”).
Naciśnięcie klawisza myszki:
LPM
- lewy przycisk myszy
PPM
- prawy przycisk myszy
SPM
- środkowy przycisk myszy ( naciśnięte kółko przewijania)
KM
- kółko przewijania (pełni tę rolę, gdy jest obracane )
Na koniec: jak mam się do Ciebie zwracać? Zazwyczaj w poradnikach używa się formy bezosobowej („teraz
należy zrobić”). To jednak, mówiąc szczerze, czyni czytany tekst mniej zrozumiałym. Aby ta książka była jak
najbardziej czytelna, zwracam się do Czytelnika w krótkiej, drugiej osobie („teraz zrób”). Czasami używam także
osoby pierwszej („teraz zrobiłem”, „teraz zrobimy”). Tak jest mi łatwiej. Podczas pisania i debugowania kodu w
tym opracowaniu traktowałem nas — czyli Ciebie, drogi Czytelniku, i siebie, piszącego te słowa — jako jeden
zespół. Może trochę wyimaginowany, ale w jakiś sposób prawdziwy. Przecież pisząc tę książkę ja także się
wiele nauczyłem, bo wiedziałem, że każde zagadnienie mam Ci porządnie przedstawić!
Copyright Witold Jaworski, 2011.
883104784.001.png 883104784.002.png 883104784.003.png 883104784.004.png 883104784.005.png 883104784.006.png 883104784.007.png 883104784.008.png 883104784.009.png 883104784.010.png 883104784.011.png 883104784.012.png 883104784.013.png 883104784.014.png 883104784.015.png 883104784.016.png 883104784.017.png 883104784.018.png 883104784.019.png 883104784.020.png 883104784.021.png 883104784.022.png 883104784.023.png 883104784.024.png 883104784.025.png 883104784.026.png 883104784.027.png 883104784.028.png 883104784.029.png 883104784.030.png 883104784.031.png 883104784.032.png 883104784.033.png 883104784.034.png 883104784.035.png 883104784.036.png 883104784.037.png 883104784.038.png 883104784.039.png 883104784.040.png
 
Zgłoś jeśli naruszono regulamin