Autor: Ralf Kirschner
Wielu Czytelników „Linux Magazine” zna zapewne terminy „manga” i „anime” – pierwotnie odnosiły się one do japońskich komiksów i seriali animowanych, takich jak Dragon Ball czy Pokemon. Dziś jednak manga i anime są zjawiskami globalnymi, kreowanymi przez artystów na całym świecie, nie tylko w Japonii.

Rysunek 1: Przykładowa animacja demonstruje najważniejsze funkcje OpenToonz.
Jeśli chcemy sami poeksperymentować z animacją, nie musimy ograniczać się do ołówka i papieru. OpenToonz [1] to otwarte narzędzie, które spełnia najwyższe standardy animacji. Program został opracowany we współpracy ze znanymi studiami tworzącymi animacje, takimi jak Studio Ghibli [2], słynące z takich tytułów, jak „W Krainie bogów”, „Księżniczka Mononoke”,, „Ruchomy zamek Hauru”, „Mój sąsiad Totoro” czy „Nausicaa z Doliny Wiatru”.
OpenToonz możemy znaleźć w repozytoriach pakietów najpopularniejszych dystrybucji Linuksa, więc instalacja nie powinna nastręczać żadnych problemów. Aby przetestować program na przykładowej scenie, pobieramy testową animację jako archiwum ZIP ze strony projektu [3] (plik nosi nazwę OpenToonz_sample.zip). Możemy też obejrzeć animację na YouTube bez instalowania OpenToonz [4]. Na Rysunku 1 widzimy OpenToonz z oficjalnym przykładem, w którym występuje pies o imieniu Dwanko.

Rysunek 2: Punkt początkowy animacji: Przesuwanie tła z różnymi prędkościami tworzy efekt paralaksy.

Rysunek 3: Koniec animacji: Animacja psa wzmacnia efekt ruchu.
Podstawowa terminologia
Klasyczny przepływ pracy podczas tworzenia zaczyna się od scenariusza i projektu postaci. Następnie na podstawie scenariusza tworzony jest scenorys, który zawiera co najmniej jeden rysunek dla każdego ujęcia i pokazuje pozycję kamery, ruch postaci oraz rodzaj tła. Istnieje również tzw. arkusz ekspozycji, zwany w skrócie arkuszem X (ma taż wiele innych nazw, takich jak arkusz parametrów kamery czy „dope sheet”). Jest to rodzaj skryptu, w którym klatka po klatce definiujemy każde pojedyncze ujęcie. Przykład widać w prawym górnym rogu Rysunku 1.
Animatorzy często unikają tworzenia rysunków pośrednich, łącząc inteligentne kadrowanie z ruchem kamery na zdjęciach. Na przykład w scenach dialogowych grafik musi jedynie animować ruch ust. Rysunki są podzielone na różne warstwy – to kolumny w arkuszu ekspozycji.
Chociaż OpenToonz jest narzędziem do animacji 2D, nie musimy rezygnować z trójwymiarowości. Używając efektu paralaksy, możemy z łatwością dodać do animacji nieco głębi. Efekt paralaksy występuje, gdy obiekty na pierwszym planie poruszają się szybciej niż obiekty w tle. Rysunek 2 i Rysunek 3 ilustrują ten efekt, pokazując pierwszą i ostatnią klatkę sekwencji animacji w widoku 3D OpenToonz.
Zwykle do stworzenia tego efektu 3D używane są co najmniej trzy płaszczyzny: płaszczyzna chmur z tyłu, jedna lub więcej płaszczyzn roślinności pośrodku i płaszczyzna podłoża z przodu. Jednak w Rysunku 3 w obszarze płaszczyzny roślinności znajduje się również płaszczyzna z psem Dwankiem chodzącym na tylnych łapach i z rzutowanym cieniem poruszającym się lekko w przód i w tył, co wzmacnia wrażenie zróżnicowania przestrzennego.
Jak pokazuje Rysunek 4, ruch Dwanka można zdefiniować za pomocą zaledwie sześciu różnych rysunków. Każdy rysunek jest utrzymywany przez trzy klatki, po czym następuje kolejna poza. Cały ten proces przebiega w pętli. Iluzję biegnącego psa tworzy również płaszczyzna ruchomego podłoża. Możliwa jest również zmiana współrzędnych Z dla poszczególnych płaszczyzn i kamery, co jeszcze bardziej zwiększy efekt ruchu.
Na koniec warto wspomnieć o tzw. klatkach kluczowych: są to te klatki animacji, które definiują punkty końcowe łagodnego przejścia. Wyobraźmy sobie prostą animację uśmiechu: dwie klatki kluczowe to początek (np. symbol ust w postaci poziomej kreski) oraz koniec (zakrzywiona linia z końcami skierowanymi ku górze). Wszystkie klatki między tymi dwiema to klatki pośrednie. Zazwyczaj klatki pośrednie generowane są automatycznie przez oprogramowanie. W praktyce właściwe operowanie klatkami kluczowymi to jedna z najważniejszych umiejętności każdego animatora.

Rysunek 4: Wystarczy sześć póz, by stworzyć wrażenie ruchu.

Rysunek 5: X-Sheet kontroluje czas wszystkich elementów sceny.
Pulpit
OpenToonz jest podzielony na obszary robocze. Każdy z nich zawiera inną kolekcję okien, które program wyświetla w specjalnych miejscach na ekranie. Lista przestrzeni roboczych pojawia się po prawej stronie głównego okna, pod paskiem menu. Niektóre predefiniowane przestrzenie robocze to Drawing (rysowanie), Palette (paleta), Animation (animacja), Xsheet (arkusz ekspozycji) oraz Browser (przeglądarka). Możemy też zdefiniować własne przestrzenie robocze, łącząc okna potrzebne do wykonania danego zadania. Prawie wszystkie przestrzenie robocze zawierają okno przeglądarki, a pod nim pasek flipbooka, elementy sterujące odtwarzaniem i liczbą klatek na sekundę, zestaw narzędzi z elementami rysunkowymi oraz okno arkusza ekspozycji.
Kolejnym ważnym oknem jest Function editor (edytor funkcji), który pokazano na Rysunku 1 w lewym dolnym rogu. Edytora funkcji używamy, aby powiązać obiekty i przekształcenia efektów z wartościami kluczowymi i pasującymi interpolacjami za pomocą tabeli lub edytora graficznego. Lewa strona edytora funkcji pokazuje tabelę wartości transformacji. Po prawej stronie znajduje się interpolacja bieżącego segmentu transformacji wraz z hierarchiczną reprezentacją dostępnych obiektów i efektów.
Wartości zdefiniowane w klatkach kluczowych są podświetlone na żółto. Pomiędzy nimi znajdują się wartości obliczone przez odniesienie do metody interpolacji. Każda kolumna reprezentuje pojedynczy parametr powiązany z animacją, a każdy wiersz pokazuje wartość parametru dla danej klatki. Puste komórki reprezentują stałe wartości, które nie zmieniają się, kiedy nie ma odpowiednich definicji klatek kluczowych.

Rysunek 6: Schemat kolorów Dwanko. Jasno zdefiniowany schemat ułatwia rysowanie różnych póz.
Folder Stage zawiera podfoldery dla zdefiniowanych kamer, tabeli, pegbarów oraz warstw. Pegbar to rodzaj linijki, która grupuje kilka nałożonych na siebie warstw i zapewnia ich wspólne przekształcenie.
Folder FX zawiera podfoldery dla każdego efektu. Każdy folder zawiera parametry transformacji powiązane z kluczami. Drzewo obiektów i efektów używa różnych ikon do wskazania, czy obiekt lub efekt jest animowany i który parametr się zmienia. Ikona ze strzałką wskazuje animowany obiekt lub efekt. Zamknięty folder oznacza nieanimowany obiekt lub efekt. Ikona z kropkowaną linią prostą symbolizuje parametry nieanimowane, a ikona z ciągłą linią krzywą oznacza parametry animowane.
Możemy zapisać dane transformacji i załadować je jako plik CURVE, co oznacza, że można je wyeksportować do innych scen. Możemy też wyeksportować dane w postaci pliku DAT do wykorzystania w innych programach.
Animacje
Innymi ważnymi oknami są okna X-Sheet i Level Strip, pokazane w Rysunek 5. X-Sheet, który pozwala kontrolować czas wszystkich elementów w scenie, jest zorganizowany w formie tabeli. Każda kolumna zawiera poziom animacji, a każdy wiersz reprezentuje zestaw wszystkich poziomów, które będą wyświetlane w ramce. Każda komórka reprezentuje zawartość kolumny w określonej ramce.
Do sceny można załadować wiele różnych elementów, w tym poziomy animacji, obrazy tła i nakładki oraz klipy wideo. Przeglądarka umożliwia przeglądanie i sprawdzanie zawartości. W razie potrzeby można odtwarzać animację i modyfikować zawartość sceny.
Ponieważ złożonych animacji tworzy się jedynie przez przesuwanie poszczególnych obiektów i warstw w samym edytorze funkcji, pojawi się również okno Level Strip, które widać po prawej stronie Rysunku 5. Obrazy, które wybierzemy w Level Strip, pojawią się w oknie przeglądarki. Kliknięcie wiersza w X-Sheet powoduje, że dana klatka pojawia się w oknie przeglądarki i aktualizuje wyświetlanie kontrolek odtwarzania i szybkości klatek na pasku Flipbook. W nagłówku kolumny okna X-Sheet możemy ukryć poszczególne poziomy i kontrolować ich krycie za pomocą filtrów kolorów.

Rysunek 7: Pierwszy projekt możemy skonfigurować z poziomu ekranu startowego – przy lewej krawędzi okna pojawi się pasek narzędzi.
Na Rysunku 1 w prawym dolnym rogu widać okno Stage Schematic, czyli schemat sceny. Zawiera ono węzły dla wszystkich obiektów użytych w scenie, co pozwala zmienić sposób połączeń między obiektami. Schemat przedstawia również kamerę i w razie potrzeby pozwala zdefiniować więcej kamer.
Definiowanie poziomów
Domyślnie okno schematu stołu montażowego zawiera węzeł tabeli i węzeł kamery. Węzły kolumn lub warstw pojawiają się automatycznie, gdy tylko załadujemy lub utworzymy nowe treści. Pegbary, kamery i węzły obiektów można dodać w dowolnym momencie, a program automatycznie połączy pegbary z tabelą animacji. Po wybraniu danego obiektu możemy rozmieścić jego węzły lub zastosować operacje, takie jak wycinanie, kopiowanie czy usuwanie. Możliwe jest również zgrupowanie wielu węzłów w jeden.
OpenToonz oferuje trzy rodzaje poziomów, z których każdy pojawia się w innym kolorze na arkuszu ekspozycji. Toonz Vector Levels (poziomy wektorowe Toonz), które pojawiają się w żółtawym odcieniu, są najlepszą opcją, jeśli chcemy rysować bezpośrednio w OpenToonz. Oznaczone kolorem zielonym Toonz Raster Levels (poziomy rastrowe Toonz) są zwykle używane w sytuacji gdy rysunki zostały zeskanowane i istnieje potrzeba wypełnienia obszarów z góry określonym schematem kolorów. Natomiast niebieskawe Raster Levels (poziomy rastrowe) są używane na przykład do kolorowego tła.
Kolorystyka filmu animowanego jest zwykle definiowana na początku produkcji i jest niezbędna – stanowi model referencyjny dla wszystkich rysunków postaci. Rysunek 6 przedstawia schemat kolorystyczny zdefiniowany dla psa Dwanko.
Pasek narzędzi OpenToonz pojawia się przy lewej krawędzi ekranu na Rysunku 7. Niektóre narzędzia można zastosować tylko w przypadku poziomów wektorowych; dotyczy to zwłaszcza edytora punktów kontrolnych, narzędzia pinch, narzędzia magnesu i kilku innych.
Zaczynamy
Skoro już znamy interfejs OpenToonz, nadszedł czas, aby stworzyć swoją pierwszą animację. Po uruchomieniu programu pojawi się okno powitalne (Rysunek 7). OpenToonz zarządza scenami animacji i używanymi w nich plikami, grupując je w projekty. Domyślna nazwa projektu to Sandbox. Więcej informacji na temat uruchamiania projektu znajdziemy w podręczniku OpenToonz [5].
Pierwszym krokiem jest stworzenie sceny w projekcie Sandbox. Jeśli planujemy później podzielić się swoimi dziełami ze współpracownikami, bardzo przydatna jest przestrzeń robocza przeglądarki, niezależnie od systemu operacyjnego. W podfolderze scene klikamy plik sceny (z rozszerzeniem .tnz), a następnie eksportujemy go za pomocą menu kontekstowego Eksportuj scenę.

Rysunek 8: Okno przeglądarki i przyległe obszary z niebem, chmurami, ulicą i panoramą.
Na ekranie startowym w ramce Create a New Scene (utwórz nową scenę) w polu Scene Name wprowadzamy wybraną nazwę sceny i zatwierdzamy ją przyciskiem Create Scene. Aby stworzyć swoją pierwszą niestandardową animację, musimy najpierw utworzyć trzy warstwy: Toonz Vector z gradientem dla horyzontu i nieba, Toonz Raster dla chmur oraz Toonz Vector dla budynków i ulic.
Dla warstwy horyzontu i nieba wybieramy przestrzeń roboczą Basics a następnie Level | New | New Vector Level. Zechcemy zapewne nadać poziomom znaczące nazwy, takie jak niebo/sky. W oknie Level Palette klikamy znak plus, aby dodać kolor nieba, i ustawiamy próbnik kolorów na niebieskawy (nowy color_2).
Rysowanie tła
Aby narysować tło, wybieramy Geometric Tool (narzędzie geometryczne) po lewej stronie lub naciskamy klawisz G. Upewnijmy się, że w górnej części Shape (kształt) wybraliśmy Rectangle (prostokąt). Następnie za pomocą wskaźnika myszy rysujemy prostokąt obejmujący całe okno przeglądarki, po czym aktywujemy Fill Tool (narzędzie wypełniania, F). W oknie Level Palette (paleta poziomów) wybieramy opcję Vector, a następnie Linear Gradient (gradient liniowy, na prawo od zielonego wzoru w paski). Prostokąt, który właśnie narysowaliśmy, stanie się niewidoczny, ale zmieni się to, gdy tylko klikniemy jego środek, kiedy zostanie wypełniony prostym gradientem od lewej do prawej.
Gradient zielono-niebieski nie nadaje się jeszcze do wyświetlania horyzontu. U dołu okna Level Palette zobaczymy dwa kolory. Użyj selektora kolorów, aby zmienić je według własnych upodobań. Możesz skorygować kierunek gradientu za pomocą parametru Angle; w tym przykładzie będzie potrzebny obrót o 90 stopni. Parametr Y Position służy do przesuwania pozycji horyzontu.

Rysunek 9: Okno arkusza ekspozycji z paskiem poziomu po uzupełnieniu nieba, chmur, ulicy i panoramy.
Aby utworzyć warstwę chmur, wybieramy z menu opcję Level | New | New Toonz Raster Level, zaś jako nazwę poziomu wpisujemy cloud (albo chmura). Następnie używamy selektora kolorów na palecie Level, aby zmienić color_1 na biały, po czym aktywujemy pędzel, czyli Brush Tool (skrót: B), a w Level Palette otwieramy zakładkę Raster. W górnej części zakładki Raster znajdziemy typ pędzla Clouds, za pomocą którego możemy malować myszką piękne chmury na niebie.
Na koniec tworzymy trzecią warstwę typu Vector o nazwie street (ulica). Na tym etapie rysujemy panoramę miasta złożoną z prostokątów i trójkątów (jako kształt (Shape),wybieramy wielokąt (Polygon) z trzema bokami (Polygon Sides). Teraz wybierz Camera Stand View (biały prostokąt w kole w górnej części okna przeglądarki) i pomniejszamy nieco widok kółkiem myszy. Okno przeglądarki powinno wyglądać tak, jak na Rysunku 8.
Jeśli porównać uzyskany w ten sposób obraz cyfrowy ze światem analogowym, mamy jedynie kilka slajdów leżących jeden na drugim na stole pod kamerą. To, czego wciąż brakuje, to rzeczywista animacja. Aby zobaczyć animację, przechodzimy do przestrzeni roboczej Animacja, gdzie powinniśmy ujrzeć widok przedstawiony na Rysunku 9.
Animacja zawiera zwykle wiele klatek. Podczas gdy Rysunek 9 definiuje tylko pojedynczą ramkę, na Rysunku 10 widzimy sześć połączonych ramek. Jednak samo łączenie ramek nie tworzy animacji, ponieważ poszczególne poziomy/slajdy nie zmieniają swojej zawartości ani pozycji na tabeli. Warto zacząć od zwiększenia liczby klatek za pomocą opcji Smart Fill Handle.
Chmury i krajobrazy
Smart Fill Handle pojawia się po kliknięciu jednej z komórek tabeli na Rysunku 10. Zaznaczamy pierwszą komórkę w każdej kolumnie i przeciągamy Smart Fill Handle w dół o kilka wierszy.
W praktyce tworzenie animacji składającej się z zaledwie sześciu klatek nie miałoby sensu. Wybraliśmy to ograniczenie, aby uprościć sprawę i przedstawić kontrolki widoczne na Rysunku 10. Teraz potrzebne są przynajmniej przesunięcia w poziomie poszczególnych slajdów. W oknie arkusza ekspozycji klikamy komórkę w pierwszej ramce kolumny Col2; jak pamiętamy, jej nazwa to clouds.
Następnie na pasku narzędzi w lewym górnym rogu wybieramy Animate Tool (narzędzie do animacji, skrót: A). Upewnijmy się, że w Tool Option Bar (pasku opcji narzędzi) nad oknem przeglądarki zaznaczone są Col2 i Position. Teraz przesuwamy warstwę chmur wewnątrz okna przeglądarki nieco w lewo za pomocą wskaźnika myszy. W oknie X-Sheet w pierwszym wierszu mały biały klucz po prawej stronie wskaże, że pomyślnie zdefiniowaliśmy klatkę kluczową.
Teraz wybieramy komórkę w szóstym rzędzie w tej samej kolumnie i przesuwamy warstwę chmur wewnątrz okna przeglądarki za pomocą wskaźnika myszy – tym razem w prawo. Mały biały klucz pojawi się teraz w szóstym rzędzie. Robimy to samo z warstwą ulicy w kolumnie Col3. Teraz klikamy ikonę odtwarzania w kontrolkach odtwarzania na pasku flipbooka pod oknem przeglądarki, aby cieszyć się pierwszą prostą animacją.
Postacie
Aby ukończyć animację, na pierwszym planie nadal potrzebujemy co najmniej jednego poziomu z ludźmi, zwierzętami lub maszynami – czyli, używając słownictwa branżowego, aktorami. OpenToonz pozwala dodawać aktorów na kilka sposobów.
Jeśli jako materiału źródłowego chcemy użyć postaci z prawdziwego filmu, powinniśmy wyeksportować żądaną scenę jako plik GIF. Następnie możesz otworzyć plik jako warstwy w Gimpie, a następnie przyciąć aktora klatka po klatce. Wynik należy zapisać jako kolejno ponumerowane pliki PNG z przezroczystością.

Rysunek 10: Arkusz ekspozycji z powtarzaniem klatek po użyciu Smart Fill Handle.
Aby zaimportować je do OpenToonz, wybieramy z menu opcję Level | Load level... i otwieramy katalog, w którym znajdują się zapisane wcześniej obrazy. OpenToonz uznaje wszystkie zapisane właśnie i ponumerowane pliki PNG za jeden plik; dodatkowo okno dialogowe poinformuje nas o liczbie poszczególnych grafik i całkowitym rozmiarze wszystkich plików.
Po kliknięciu Load program wczyta poszczególne pliki i wstawi je jako nową kolumnę do arkusza ekspozycji (Rysunek 5). Zauważmy jednak, że na Rysunku 10 wyświetla się tylko nazwa pliku pierwszego obrazu w każdej klatce – z tyldą, po której następuje 1.
W przypadku warstw nieba, chmur i dróg wyświetlanie pierwszego obrazu w każdej klatce jest przydatne, ponieważ animacja jest tworzona przez przesuwanie warstw. Na Rysunku 5 liczby zmieniają się w niektórych liniach, po których znowu występują pionowe kreski: oznaczają one, że należy powtórzyć zawartość poprzedniej klatki w danej ramce. Liczby pozwalają dokładnie wyświetlić ponumerowane klatki sekwencji obrazów.
Wykwalifikowani animatorzy czasami rysują bezpośrednio w przeglądarce. Aby to zrobić, wybieramy pusty arkusz w Level Strip i otwieramy ostatni poziom (w naszym przykładzie jest to Col3). Następnie używamy Level | New level..., aby utworzyć nowy poziom i narysować aktora bezpośrednio za pomocą przybornika. Jeśli potrzebujemy więcej ramek na pasku poziomu, tworzymy je za pomocą Level | Add Frames... lub bezpośrednio na pasku poziomu poprzez menu kontekstowe Insert.
Ciekawą opcją pomocniczą jest tryb Onion Skin Mode, który podczas rysowania zmniejsza widoczność zielonych i czerwonych nakładek w przeglądarce. Ułatwia to obrysowywanie elementów wspólnych na dwóch klatkach i sprawia, że obraz zmienia się bardziej harmonijne, ponieważ zmiany są od razu widoczne [5].
Definiowanie szkieletu postaci
W praktyce często się zdarza, że po utworzeniu pojedynczego obrazu swojego aktora chcemy zmienić jego fragment bez konieczności całkowitego przerysowywania całej postaci. W takim przypadku pomoże nam narzędzie o nazwie Plastic Tool (skrót: X). Następnie na pasku Tool Option Bar wybieramy opcję Create Mesh. Po chwili pojawi się okno dialogowe o tej samej nazwie, w którym możemy ustawić ziarnistość siatki. Po zatwierdzeniu zmian w oknie X-Sheet pojawi się nowa kolumna o tej samej nazwie i sufiksie _mesh. Ta kolumna reprezentuje warstwę siatki z modelem szkieletowym połączonym z odpowiednią warstwą tekstury.
To połączenie jest kluczem do działania narzędzia Plastic Tool. Każda kolumna lub warstwa połączona z warstwą siatki są deformowane przez siatkę i wyświetlane w granicach siatki podczas renderowania.
Aby animować płaszczyznę siatki, definiujemy określoną strukturę szkieletu z zestawu połączonych wierzchołków. Dla każdego z wierzchołków można ustawić różne parametry, takie jak położenie, granice kątowe i sztywność. Aby utworzyć strukturę szkieletu, wybieramy warstwę siatki i na pasku Tool Option włączamy tryb Build Skeleton.
Aby animować płaszczyznę siatki, najpierw klikamy punkt w warstwie siatki, który nie zmieni się w podczas kolejnej animacji — na przykład obszar bioder, jeśli chcesz animować postać człowieka. Zaczynając od tego stałego punktu, definiujemy kolejne bezpośrednie połączenia, klikając je. W ten sposób możesz stworzyć rodzaj struktury drzewiastej. Podczas późniejszej animacji podrzędnych węzłów węzły znajdujące się poniżej będą się przemieszczać wraz z nimi.
Jeśli chcesz zdefiniować dolne stawy ciała, najpierw określamy położenie kolana i kostki lewej nogi. Następnie ponownie najpierw klikamy biodro, a następnie kolano i kostkę prawej nogi. Aby zdefiniować stawy górnej części ciała, klikamy ponownie biodro, a następnie tworzymy węzły barku, łokcia i nadgarstka lewego ramienia. Gdy skończymy z lewą stroną, powtarzamy procedurę dla prawej.
Po zdefiniowaniu wszystkich połączeń zmieniamy tryb w pasku Tool Option na Animate. Następnie możemy przesuwać postać, klikając i przeciągając węzły oznaczone kwadratami – z wyjątkiem stawu biodrowego, który jest pokazany jako wypełniony kwadrat.
Jeśli przeciągniemy Smart Fill Handle warstwy siatki w arkuszu ekspozycji w dół, będziemy mogli zdefiniować pozy aktora dla każdej klatki, ponieważ OpenToonz przechowuje klatkę kluczową z parametrami jej wierzchołków wewnątrz warstwy siatki.
Podsumowanie
OpenToonz to zaawansowane narzędzie do animacji, dostępne na warunkach licencji open source i wykorzystywane w profesjonalnych projektach. Ponieważ możliwości programu są ogromne, nie należy się łudzić: opanowanie jego funkcji nawet w zakresie podstawowym wymaga zainwestowania w naukę nieco czasu – nie nauczymy się jego obsługi w kilka minut. Jednak wysiłek włożony w naukę nie będzie zmarnowany: kiedy pewnego dnia zechcemy rozpocząć prace nad profesjonalną animacją, nie będziemy musieli wymieniać oprogramowania na inne.
Info
[1] OpenToonz: https://opentoonz.github.io/e/
[2] Studio Ghibli: https://pl.wikipedia.org/wiki/Studio_Ghibli
[3] Przykładowa animacja: https://opentoonz.github.io/e/download/sample.html
[4] Animacja na bazie przykładowych danych OpenToonz: https://www.youtube.com/watch?v=hCui51kNvcQ
[5] Podręcznik OpenToonz: https://opentoonz.readthedocs.io/en/latest/