Wprowadzenie do SeExpr

Nowe w wersji 4.4: Ten dokument wprowadzi ma na celu wprowadzenie do języka wyrażeń SeExpr.

Czym jest SeExpr?

SeExpr jest językiem osadzalnych wyrażeń, stworzonym przez Disney Animation, który umożliwia programom gospodarza na dynamiczne wyświetlanie stworzonej treści. Pixar nazywa to w swojej dokumentacji a „skryptowy twórca i spajacz wzorców”.

SeExpr jest dostępny w Kricie jako warstwa wypełnienia.

Tło

Aby zrozumieć o czym jest SeExpr, potrzebujemy rozróżnić na grafikę rastrową oraz proceduralną.

Duża większość rzeczy stworzonych na komputer, którą widzisz na co dzień należy do pierwszego rodzaju – obrazy takiej jak zdjęcia, twoje ulubione zrzuty ekranu z anime, memy, to wiele drobnych kropek barw lub pikseli ułożonych w siatkę.

Grafika rastrowa ma dwie wady, Jedna to taka, że jej rozdzielczość jest stała. Nie możesz jej powiększyć i naglę uzyskać więcej szczegółów. A gdy potrzebujesz dokonać w niej zmian, to albo wróć do źródła i wykonaj ponowne próbkowanie (co czasami jest niemożliwe) lub dokonaj zmian w programie graficznym, takim jak Krita.

Jednym z największych kłopotów jest jednak to, że zawsze jesteśmy ograniczeni przez przestrzeń, którą nasze programy są w stanie wykorzystać; albo w postaci pamięci ulotnej, takiej jak karty pamięci albo pamięć RAM. Bez spakowania, zapotrzebowanie obrazów na pamięć jest kwadratowe względem rozmiaru obrazu. Dla szybkiego przedstawienia tego, okno dialogowe Krity Utwórz nowy dokument mówi ci, że są trzy rodzaje danych: jego rozmiar w pikselach, sam rozmiar piksela oraz całkowita potrzebna pamięć.

../_images/Krita_newfile.png

Oto podsumowanie dla tekstur kwadratowych. Zwróć uwagę, że potrzebna pamięć obliczana jest jedynie dla jednej warstwy:

Rozmiar

Potrzebna pamięć

256

256 KB

512

1 MB

1024

4 MB

2048

16 MB

4096

64 MB

Drugim wyjściem jest użycie Grafika wektorowa. Grafika wektorowa, na przykład SVGs, stosuje równania matematyczne takie jak krzywe sklejane oraz Béziera do opisu kształtów. Ponieważ są one matematycznie określone, to ich rozmiar można zmieniać bez utraty rozdzielczości.

SeExpr należy do innej klasy, proceduralnej grafiki. Podobnie do grafiki wektorowej, grafika proceduralna potrzebuje tylko kilku kilobajtów pamięci ulotnej do określenia siebie. Nie są onej jednak określone poprzez równania matematyczne; tak na prawdę to kodujesz to w jaki sposób barwa jest obliczana w każdym punkcie tekstury. A ponieważ nie jest to ograniczone w swojej dokładności, to możesz wyświetlać złożone wzory na swoich warstwach w całkowicie losowej rozdzielczości.

Pisanie skryptu

W tym samouczku pokażemy jak napisać skrypt w SeExpr, wyświetlić go na warstwie, a na końcu zapisać go jako nastawę.

Zaczniemy od przejścia do Warstwy i dodania nowej warstwy wypełnienia. Następnie wybierz twórcę SeExpr z listy. Zostaniesz przywitany następującym oknem:

../_images/SeExpr_editor.png

Okno tworzenia SeExpr jest podzielone na dwie karty. Na razie pozostaniemy na karcie Ustawień.

Informacja

Warstwy wypełnienia opisuje te karty w większych szczegółach.

Zacznijmy od namalowania warstwy jasnoniebieskiej.

Najpierw skrypt SeExpr musi wskazać zmienną wyjściową, nazwijmy ją $color. SeExpr myśli o barwach w przestrzeni barw RGB, gdzie zmienne barw są określone wartościami trójkowymi znanymi jako wektor. Zaczniemy od stworzenia zmiennej $color i nadania jej wartości.

Przejdź do pola tekstowego i wyczyść je, jeśli zawiera jakikolwiek tekst. Następnie określ i ustaw $color na coś takiej jak [0.5, 0.5, 1] (w połowie podświetlony na czerwono, na zielono i w pełni podświetlony na niebiesko):

$color = [0.5, 0.5, 1];

SeExpr musi wiedzieć, która zmienna przechowuje ostateczną wartość barwy. Można tego dokonać, pisząc na końcu, w jej własnym wierszu, nazwę zmiennej:

$color

Skrypt powinien teraz wyglądać tak:

$color = [0.5, 0.5, 1];
$color

Naciśnij OK, a wyświetlisz swój pierwszy skrypt!

../_images/SeExpr_first_render.png

Ostrzeżenie

Aby być całkowicie dokładnym, SeExpr nie posiada zarządzania barwami. Zawsze wyświetla tekstury jako obrazy sRGB opisane liczbami rzeczywistymi 32-bitowymi, z poprawioną gammą. Krita przekształca je do przestrzeni barw twojego dokumentu przy użyciu profilu sRGB-elle-V2-srgbtrc.icc.

Przeczytaj Praca z zarządzaniem barwami, aby się dowiedzieć, co to oznacza.

Zarządzanie skryptami przy użyciu elementów interfejsu

Istnieje także inny sposób na określenie i zmianę twoich zmiennych. Otwórz właściwości warstwy wypełniającej poprzez naciśnięcie prawym klawiszem myszy na Warstwa wypełnienia 1, i wybierz Właściwości warstwy….

../_images/SeExpr_prop_1.png

Zauważyłeś środkowe pole? Zaraz gdy zostanie wykryty składniowo poprawny skrypt, SeExpr uruchamia wiele przełączników do zarządzania każdą zmienną. W naszym powyższym przykładzie, możesz zmienić zmienną $color na trzy sposoby:

  • wpisz wartość czerwonego, zielonego lub niebieskiego kanału w polach wprowadzania

  • przesuń małe barwne suwaki, aby zmienić dany kanał

  • naciśnij na kwadracie podglądu po lewo od pól, aby wybrać całkowicie nową barwę.

Ostatni przycisk w polu środkowym, to zawsze Dodaj nową zmienną. Naciśnij go, a otworzy się okno dialogowe:

../_images/SeExpr_add_variable.png

To okno dialogowe pokazuje wszystkie rodzaje zmiennych, które przyjmuje SeExpr:

Krzywa i krzywa barw

Istnieje wersja SeExpr Gradientów z przystankami: interpolują rampy na podstawie danego zestawu wartości.

Krzywe przedstawiają gradienty 1D, zwracają pojedynczą liczbę rzeczywistą w każdym punkcie obliczania.

Krzywe barw przedstawiają gradienty RGB, zwracając barwę w każdym punkcie.

Liczby całkowite i rzeczywiste

Liczby.

Wektor

Trójka liczb rzeczywistych.

Barwa

Wektor przedstawiający barwę RGB.

Łata

Lista barw.

Ciąg znaków

Zazwyczaj pojedyncze słowa.

Na przykład, możesz powielić $color na karcie Wektor:

../_images/SeExpr_add_variable_vector.png

Tworzenie pierwszej nastawy

Gdy twój skrypt będzie gotowy, to możesz go wykorzystać ponownie, tworząc nastawę.

Możesz utworzyć jedną na górnym pasku karty Ustawień:

../_images/SeExpr_editor.png

Wybierz Zapisz nową nastawę SeExpr… a pojawi się następujące okno dialogowe:

../_images/SeExpr_save.png

Możesz zmienić nazwę nastawy w górnym wierszu pola wprowadzania i przypisać miniaturę do łatwego rozpoznania.

Podpowiedź

Okno dialogowe dołączy „Copy” do nazwy nastawy, jeśli będzie ona kopią już istniejącej nastawy. Masz możliwość zmiany tej nazwy.

Okno dialogowe daje następujące możliwości do wybierania miniatur:

Wczytaj istniejącą miniaturę

Jeśli nastawa ma już swoją miniaturę (na przykład, jeśli stworzyłeś ją z już istniejącej nastawy), to przycisk ten wczyta i zastosuje ją.

Wczytaj obraz

Nakłada obraz z systemu plików jako miniaturę.

Wyświetl skrypt na miniaturze

Twój skrypt wyświetli teksturę 256x256 i nałoży późniejszą jako miniaturę.

Wyczyść miniaturę

Usuwa miniaturę. Zauważ, że gdy nastawa jest powieleniem istniejącej, to można ją wycofać poprzez naciśnięcie Wczytaj istniejącą miniaturę.

Zmiana istniejących nastaw

Jeśli wprowadzisz zmiany do skryptu z nastaw, to pojawią się dwa nowe przycisk na górnym pasku karty Ustawień:

../_images/SeExpr_overwrite_preset.png

Przycisk ponownego wczytania przywróci nastawę do jej pierwotnych właściwości, podczas gdy naciśnięcie na Zastąp nastawę zachowa twoje zmiany.

Dodatkowo możesz zmienić nazwę nastawy po naciśnięciu na przycisku zmiany nazwy, wpisaniu nowej nazwy i naciśnięciu Zapisz:

../_images/SeExpr_rename_preset.png

Tworzenie pęków z nastaw

Współdzielenie twoich skryptów jest łatwe! Skrypty SeExpr z nastaw są takim samym zasobem jak każdy inny w Kricie. Przeczytaj jak stworzyć swoje własne pęki w Zarządzanie zasobami.