Edycja filtrów w Personal Paint (2) ----------------------------------- KANAÎ ALFA I INNE PRZEZROCZYSTOÔCI Kanaî Alfa byî juû kilka razy drobiazgowo opisywany na îamach Magazynu AMIGA. Opisy dotyczyîy jednak programów, które uûywajâ do pracy palety 24-bitowej. Personal Paint moûe uûywaê maksimum 256 kolorów obrazka, jeûeli oczywiôcie dysponujemy Amigâ z ukîadami AGA. Niemniej jest tam moûliwoôê pracy z kanaîem Alfa w trybach AGA i ECS z takimi paletami, jakimi te tryby dysponujâ, z wyjâtkiem HAM i HAM8. Stanisîaw Wësîawski Podstawowa zasada Alpha Channel polega, jak wiadomo, na nakîadaniu dwóch obrazów na siebie za poôrednictwem trzeciego, który zawiera rodzaj "instrukcji" (szablonu), dotyczâcej sposobu przenikania dwóch pierwszych obrazów. Trzeci obraz -- Alfa, jest monochromatycznym obrazem, którego ciemne piksele zwiëkszajâ przezroczystoôê obrazu nakîadanego, a jasne powodujâ wiëksze "krycie". Efekt ten zawarty jest w Personal Paint w grupie filtrów -- Process. Prawie wszystkie filtry w tym programie moûna stosowaê na kilka sposobów -- jako brush, ekran (Environment) lub jako kombinacjë tych form. Z Alpha Channel jest inaczej. Jedyny sensowny sposób to stworzenie jednego brusha do nakîadania na ekran i drugiego jako wîaôciwy brush Alfa. Muszâ byê dwa brushe, a poniewaû program pozwala przechowywaê ich w pamiëci aû 9, powstaje problem, który z nich jest "kanaîem Alfa". Taki brush wcale nie musi byê czarno-biaîym rysunkiem. Liczy sië tylko jasnoôê pokrywajâcych go pikseli i w wypadku zaîadowania wszystkich brushy do wszystkich dziewiëciu buforów prawie kaûdy z nich moûe byê brushem do nakîadania lub wzorcem przezroczystoôci (Alfa). Podrëcznik nie mówi nic o takim wypadku, ale wydaje sië, ûe brush "nastëpny" z kolei jest "Alfa". To znaczy, gdy nakîadamy brush nr 5, brush nr 6 jest "Alfa" i tak dalej. To jest oczywiôcie tylko zabawa w "co by byîo, gdyby", bo wîaôciwie wykonuje sië tylko dwa brushe, nakîadajâc na obraz (ekran) jeden z nich, co automatycznie czyni drugi wzorcem przezroczystoôci. Pewnâ zagadkâ jest teû edycja takiego filtru. Kaûdy filtr moûna edytowaê i zmieniaê jego parametry. Brush Alpha Channel naleûy do grupy Brush Transparency, w której moûna zmieniaê trzy parametry "Bias". W tym wypadku moûna majstrowaê przy drugim i trzecim parametrze, zawierajâcych dane o zmianach w poziomie i pionie, ale pierwszy parametr musi pozostaê równy -1. Wartoôê ta sygnalizuje wîaônie obecnoôê Kanaîu Alfa i pozwala na wymienione wyûej operacje. Kolejnym problemem jest wîaôciwe dobranie palety. Na ogóî omawiany efekt jest potrzebny do eleganckiego wtopienia jednego rysunku w drugi, tak aby uzyskaê "miëkkie" przejôcia jednego rysunku w drugi. Program musi to, z braku "niezaleûnej" palety 24-bitowej, wykonaê, czerpiâc kolory z istniejâcego zestawu barw. Pod tym wzglëdem autorzy programu dobrze przemyôleli sprawë i przygotowali odpowiednie narzëdzia do îâczenia palet (Merge) i ich "regulacji" (Adjust). Pierwsza ilustracja pokazuje tîo w postaci obrazka, przedstawiajâcego wybrzeûe z latarniâ morskâ. Przewaûajâ w nim, jak widaê, kolory zimne -- niebieskie i szarobrâzowe. Obrazek zostaî wczytany jako JPG i dziëki obecnoôci odpowiedniego "datatype" zmieniony po chwili na 256-kolorowy IFF. To samo dotyczyîo Mony Lisy, która z kolei wprowadzona na drugâ stronë (Environment) ujawniîa przewagë barw ciepîych -- ûóîtobrâzowych. Trudno sië spodziewaê, aby program byî w stanie pogodziê podczas przenikania dwie tak róûne palety. Opcja COLOR/STATISTICS pozwala zobaczyê wykres sîupkowy (histogram) udziaîu procentowego kolejnych kolorów. Widaê tam, ûe wiele barw ma niewielki udziaî w tworzeniu obrazka. Moûna teraz uûyê opcji COLOR/LESS COLORS, aby ograniczyê kolory obu obrazków do 127 barw. Na stronie z Monâ (druga ilustracja) wykonaîem obok popiersia damy brush kanaîu Alfa. Mogîem go stworzyê z kolorów Mony, ale wczeôniej powiëkszyîem z powrotem liczbë kolorów do 256 (opcjâ IMAGE and SCREEN FORMAT) i wykonaîem MERGE COLORS. Opcja ta pozwala na îâczenie palety jednego obrazu z paletâ obrazu z drugiej strony lub z brusha. Po ograniczeniu barw do 127 i ponownym powiëkszeniu do 256, poîowa palety pokryîa sië bielâ. Po wykonaniu MERGE COLORS w "puste miejsce" weszîo 127 kolorów obrazka z drugiej strony. Moûna to wykonaê nie ograniczajâc liczby kolorów, wtedy program zmienia czëôê barw tak, aby byîy moûliwie najbardziej podobne do pierwotnych kolorów obu palet. Ograniczanie kolorów i îâczenie palet daje jednak, jak mi sië wydaje, lepszy efekt. To samo wykonaîem dla strony pierwszej. Oczywiôcie dwa ekrany w hi-res laced 256 kolorów to potëûne obciâûenie pamiëci RAM, ale skoro mogë, to czemu nie? Taïszâ metodâ byîoby przygotowanie osobno brushy, zaîadowanie ich i poîâczenie palety ekranu i brusha. Pamiëê obciâûona byîaby tylko jednym ekranem (i dwoma brushami, oczywiôcie). Jeszcze taïszâ metodâ byîoby doprowadzenie rysunków do jednej palety za pomocâ opcji COLOR/PALETTE/ADJUST. Regulacja jasnoôci, kontrastu i skîadowych RGB moûe sprowadziê obrazy do takich barw palety, ûe wzajemne przenikanie moûe wypaôê dobrze. Jednak, poniewaû miaîem zapas pamiëci, wykonaîem operacjë w postaci "klasycznej". Brush Alfa wykonaîem cieniowany w pionie. Zamierzony efekt koïcowy miaî wprowadziê Monë w gîówny obraz wyraúnie, ze stopniowym zanikiem rysunku na dole. Czarne (ciemne) partie cieniowania majâ to zadanie wykonaê. Pewnym kîopotem jest mechaniczne cieniowanie zakresem w wykonaniu Personal Painta. Autorzy programu wyraúnie zlekcewaûyli osiâgniëcia Deluxe Painta na tym polu. Drugi problem stanowi dopasowanie brushy. Zastosowaîem tu starâ metodë opisywanâ juû w "Deluxe Paint w praktyce" w wersji nieco zmodyfikowanej. Wîâczyîem Grid i narysowaîem dwie jednakowe ramki, w które wstawiîem oba brushe. Po wyciëciu (Matte) brushy wykonaîem Trim i otrzymaîem brushe jednakowej wielkoôci, bez ramki i wzajemnie dopasowane. Wycinajâc kolejny brush naleûy pamiëtaê, aby ustawiê przedtem kolejny numer bufora. Po przejôciu na gîównâ stronë (paleta jest juû ta sama) zastaje sië oba brushe w swoich buforach i wystarczy teraz tylko "wyjâê" Monë z bufora, ustawiê PROCESS/BRUSH ALPHA CHANNEL w trybie nakîadania rysunku i w odpowiednim miejscu umieôciê fragment dzieîa Leonarda. Pozostawiony w drugim buforze cieniowany wzorzec Alfa wykona niewidzialne zadanie. Dodatkowe uaktywnienie opcji "F-S Error Diffusion" podniesie jakoôê pracy. Wynik jest prawie idealny. Jedynym bîëdem jest pozostawienie twardych "wycinanych" krawëdzi wîosów Mony Lisy. Moûna to byîo poprawiê, rysujâc w tym miejscu na brushu Alfa odpowiednie przyciemnienie szablonu. Taki zmiëkczony na krawëdziach brush widaê na ilustracji czwartej. Przykîad ten pokazuje na 64 kolorach uûycie efektu z dokîadniej przygotowanym szablonem Alfa. Najjaôniejsze miejsca sâ na partiach oczu wilka, jego nosie i pysku. Tîo z cegîami miaîo w oryginale szesnaôcie kolorów i caîa reszta barw (64-16=48) zostaîa przeznaczona na wilka. Szablon przenikania zostaî wykonany aerografem. Jeszcze dokîadniejszy efekt moûna by uzyskaê wykonujâc szablon w inny sposób. Pokazuje to fragment oznaczony strzaîkami -- Alfa(3) na czwartej ilustracji. Gîowa wilka zostaîa skopiowana obok i potraktowana filtrem Dither Floyd-Steinberg. Po ustawieniu aktualnych kolorów na czarny i biaîy, rysunek zostaî zamieniony na biaîo kropkowany szkic na czarnym tle. Nastëpnie uûyîem kolejno róûnych wersji filtrów Darken i Lighten, podkreôlajâc partie, które majâ byê najbardziej widoczne. Ostatniâ operacjâ jest wykonanie Blur na caîoôci. Obrazek zostanie îadnie zmiëkczony, a co najwaûniejsze, wykonany na rysunku pierwowzoru, wiëc moûliwie najbardziej dokîadny. Wîaôciciele Amigi 500 lub mniejszej iloôci pamiëci nie powinni sië tymi przykîadami zraûaê. Moûna wykonaê podobny rysunek przy odpowiednim dobraniu kolorów palet. Trudno bëdzie wykonaê przenikanie tak róûnych kolorystycznie rysunków, jak na prezentowanych ilustracjach, ale na to nie ma rady. Gdyby Personal tolerowaî tryb HAM, byîoby to pewnie moûliwe. Nakîadanie obrazów za pomocâ Kanaîu Alfa moûe bazowaê na najróûniejszych formach szablonu (Alfa), takie jednak, jak prezentowane w przykîadzie bardzo przypomina zwykîe przenikanie. Personal Paint oferuje poza Alpha Channel trzy typy przenikania obrazów (brushy) i trzy typy przenikania ekranów (Environments). Typy te to przenikanie w 50%, stopniowane przenikanie w pionie i stopniowane przenikanie ukoône. Edycja Brush Transparency 50% pozwala zobaczyê, ûe wartoôê Bias jest równa 127 0 0. Idâc ôladem doôwiadczeï z edycji innych filtrów, moûna przypuszczaê, ûe wartoôê Bias 64 0 0, da przenikanie w 25%, a 255 0 0 da wynik 0%. Ilustracja piâta pokazuje, ûe takie rozumowanie jest sîuszne. W podobny sposób moûna stworzyê sobie kilka nowych filtrów stopniujâcych przenikanie od 0 do 100%, np. 25%, 50% (juû jest) i 75%. Dokîadniejsze wartoôci sâ maîo potrzebne, ale moûna je zawsze stworzyê podczas pracy, bez koniecznoôci póúniejszego zapisywania. Przykîad na ilustracji piâtej pokazuje jeszcze próby naôladowania efektu uzyskanego podczas pracy z kanaîem Alfa w pierwszym przykîadzie. Gotowy filtr -- Brush Transparency Vertical Gradient, powoduje stopniowe pojawianie sië nakîadanego obrazka w kierunku pionowym z góry w dóî. Na górze 100% przenikania (nie widaê), na dole 0% (widaê). Bias w tym wypadku ma wartoôci 0 0 255. Wydawaîoby sië, ûe odwrotny efekt da 0 0 -255. Nic z tego. Eksperymenty wykazujâ, ûe powinno byê 255 0 -255. Jeûeli jeszcze zastosujemy opcjë F-S ERROR DIFFUSION, wynik powinien do zîudzenia przypominaê doôwiadczenie z pierwszych trzech ilustracji. W zapasie mamy jeszcze ukoône przenikanie (Oblique) i moûliwoôê manipulowania parametrami Bias, dotyczâcymi przesuniëê w poziomie i pionie. Szósta ilustracja pokazuje usystematyzowane kolejne eksperymenty z przezroczystoôciâ. Efekty gotowe (przygotowane w programie) otoczone sâ czarnâ ramkâ. Biaîâ ramkâ zaznaczyîem efekty, które warto wprowadziê jako nowe filtry i wîâczyê do zestawu. Górny rzâd prezentuje opisane poprzednio stopniowanie przenikania na caîej powierzchni. Drugi rzâd otwiera efekt gotowy -- Oblique Gradient, czyli przenikanie w kierunku prawego dolnego rogu aû do 50%. Mamy tam Bias = 255 -127 -127. Zmiana na 255 -255 -255 daje (przy tym samym kierunku) przenikanie aû do 100% (znikniëcie obrazu). Efekt o wartoôciach 127 -127 -127 jest trudny do rozpoznania. Wyglâda na to, ûe przenikanie rozpoczyna sië od 50% (lub mniej?) i dâûy do peînego znikniëcia. Wartoôci 255 -255 -64 dajâ "nierówny" kierunek przenikania. W prawo do 100% -- w dóî do 25%. W wyniku tego po drodze otrzymujemy coô poôredniego. Trzeci rzâd to przenikania oparte na programowym Vertical Gradient -- pojawianie sië obrazu "w dóî". Pierwszy obrazek z lewej pokazuje efekt zastosowania ujemnej wartoôci - 0 0 -255. Wynik -- nic. Ten przykîad i przykîad poniûej pozwalajâ wysnuê ogólny wniosek, ûe nie bëdzie efektu, jeûeli w Bias bëdzie istniaîa pojedyncza wartoôê ujemna towarzyszâca zerom. Co bëdzie, gdy bëdziemy mieli dwie wartoôci ujemne i zero? To samo. A trzy? Pojawi sië Alpha Channel! A wîaôciwie (chyba, ûe w buforze mamy jeszcze jakiô inny brush) komunikat o koniecznoôci uûycia dwóch brushy. Jakâkolwiek wartoôê ujemnâ wprowadzimy do pierwszej (górnej) komórki Bias, program potraktuje to jako chëê uûycia filtra kanaîu Alfa. Pozostaîe wartoôci -- dla przesuniëcia w osi X i Y, bëdâ ignorowane. Ostatni rzâd przykîadów pokazuje efekty symetryczne -- znikanie obrazu w prawo (255 -255 0) i w lewo (0 255 0). Takie filtry mogâ byê przydatne w zestawie, podobnie jak ostatni efekt symetryczny wzglëdem programowego przenikania w pionie, pokazany równieû na trzeciej ilustracji. Wiëkszy przykîad na dole pokazuje zastosowanie przenikania w praktyce. Twarz Mony Lisy pomalowana jest "po indiaïsku", w zwiâzku z czym trzeba byîo dodatkowo wyciâê i naîoûyê z powrotem oko. Farba nie moûe przecieû leûeê na gaîce ocznej. Taki retusz jest konieczny podczas pracy z filtrami przenikaï. Moûna sobie tego oszczëdziê, stosujâc kanaî Alfa. Ale jak przygotowaê dokîadny wzór do "ominiëcia" oka, to caîkiem inna historia. Podajâc szybko receptë sâdzë, ûe najtaniej jest wyciâê pasek z obrazu Mony (z okiem), usunâê z niego fragment oka, wykonaê z tego szablon, na którym namaluje sië jasny pas na ciemnym tle, dopasowaê to do wymiaru brusha do nakîadania (z kolorowymi pasami) i tak dalej. Ale Personal Paint nie wycina liniami skoônymi! No to trzeba wycinaê przez usuwanie zbëdnych fragmentów. Stop. Recepty trzeba sobie samemu dopracowaê, bo nie ma programów idealnych. Idealne byîoby poîâczenie najnowszego Personala z najnowszym Deluxem i napisanie tego w kodzie maszynowym, ale kto sië odwaûy to zrobiê? Koïczâc muszë dodaê, ûe analogiczne eksperymenty, jak z Brush Transparency moûna przeprowadziê z grupâ Environment Transparency. Dziaîa to na ekranach (dwóch) Personala, ale mechanizm jest identyczny jak w wypadku brushy. Pod spodem prezentujë zastosowanâ w ostatnich przykîadach paletë. To jest koszt takiej zabawy. Jakoôê w zamian za pamiëê RAM. Ale przy palecie 24 bitowej zuûycie pamiëci byîoby jeszcze wiëksze!