STENCIL


W tym tutorialu chcę pokazać w jaki sposób skonstruowany jest materiał wykorzystujący narzedzie STENCIL i shader LAYERED SHADER. Materiał który stworzyłem wykorzystałem do nałożenia etykietki na prosty model dzbanka. Narzedzie STENCIL pozwala nam wzbogacić textury o dodatkowe warstwy przenikające sie dzięki kanałowi ALPHA. W tym przykładzie STENCIL poslużył mi do kontrolowania koloru napisu i obwódki na etykietce, oraz wykorzystania textury proceduralnej GRANITE jako tła etykietki. Natomiast LAYERED SHADER umożliwił mi zastosowanie dwóch różnych shaderów: do etykietki BLINN, a do powierzchni dzbanka PHONG. Efekt końcowy obrazujący działanie tego materialu można zobaczyć na poniższym obrazku .

Kliknij aby powiększyć

Do stworzenia takiej textury potrzebne są dwa pliki które będą stanowić kanały alpha. Obie textury z kanałami wykorzystują wspólny PLACE2D przyłączony do nich tylko poprzez Out UV->UV Coord. Jeden plik będzie przyłączony do STENCIL drugi do transparencji shadera BLINN w LAYERED SHADER. W Connection Editor łączymy Out Alpha Node zawierającego plik maski dla etykietki z Mask narzedzia STENCIL.

Kliknij aby powiększyć

Natomiast kanał transparencji dla BLINN przygotowujemy łącząc drugi plik z kanałem ALPHA do PROJECTOR [projekcja_maski] poprzez Out Color->Image.

Kliknij aby powiększyć

Wróćmy teraz do PLACE2D, aby nasza etykietka nie ulegała multiplikacji kiedy będziemy ją skalować na obiekcie odznaczamy w PLACE2D Warp U i Warp V.

Kliknij aby powiększyć

Troszke to zagmatwane, ale ile daje przyjemnosci :-) Teraz przyjżyjmy sie bliżej STENCIL. Mamy już przyłączony jako MASK plik z napisem, który umożliwi nam kontrolowanie koloru, faktury napisu jak i tla etykietki. Teraz należy utworzyć texture GRANITE. Pojawi sie ona odrazu z przyłączonym PLACE3D i nie musimy na tym łączeniu niczego modyfikowac.
Textura ta w tym przykładzie będzie stanowiła tło etykietki więc jej kolor modyfikujemy zależnie od potrzeb - tutaj odcienie żółci. przyłączamy do STENCIL wybierając na wyjściu granitu Out Color a na wejściu stencil IMAGE.

Kliknij aby powiększyć

Teraz mąjac gotowe połączenia wejściowe do STENCIL'a przyglądamy sie czy wszystko jest poprawne. I tutaj celowo wykonałem błąd. W takiej konfiguracji mamy teraz kolory w pliku który jest naszą maską w STENCIL, powoduja że GRANITE nie jest tłem etykietki lecz kolorem napisu. By to poprawić wchodzimy w atrybuty naszego pliku maski (np. 2x klikajac w niego). W zakładce Effects zaznaczamy INVERT

Kliknij aby powiększyć

i od tego momentu GRANITE jest tłem naszej etykietki. Wreszcie mamy już gotowy do dalszego wykorzystania STENCIL :). Teraz tworzymy drugi projektor. Jeden jest juz wykorzystany przez kanał transparencji BLINN. Do nowego projektora przyłączamy STENCIL analogicznie do pierwszego przykładu czyli poprzez Out Color->Image.

Kliknij aby powiększyć

A ten z kolei podpinamy do shadera BLINN: Out Color->Color. Pamiętajmy że mamy w materiale dwa projektory. Sa one w tej chwili niezależne od siebie, a przecież chcemy by nasz materiał był wygodny w użyciu. By nasza etykietka mogła sie skalowac i przemieszczać równocześnie z maską transparencji, dla shaderow konieczne jest połączenie naszych projektorów. Pierwszą czynnością jest stworzenie dla obu wspólnego PLACE3D i podłączenie do projektorow poprzez World Inverse Matrix-> Placement Matrix.

Kliknij aby powiększyć

Nastepnie projektory musza być informowane o tym jakie rozmiary ma textura w drugim projektorze. Z jednego z nich wyprowadzamy połączenia V Angle->V Angle.

Kliknij aby powiększyć

Z drugiego tylko U Angle->U Angle. Ważne jest to by z jednego projektora nie wychodziły razem U i V Angle bo wtedy bedziemy mogli za pomoca Interactive Placement danego projektora decydowac tylko o szerokości lub wysokości textury. Połączenie na krzyż daje nam mozliwość kontroli obu wartości z poziomu jednego Interactive Placement. Teraz mamy już gotową cala strukturę naszej naklejki, ale do ukończenia całego materiału musimy wykonać jeszcze kilka operacji. Możemy juz stworzyć shader który będzie głownym materiałem naszego dzbanka. W przykładzie dałem poprostu PHONG, który ustawiłem tylko tak by sie w miare ladnie błyszczał :). Majac juz gotowe oba materialy należy je umieścić na warstwach w LAYERED SHADER. Najpierw w Layered Shader Attributes ustawiamy Compositing Flag na: LAYER TEXTURE.

Kliknij aby powiększyć

Potem w oknie Graph. Teraz z Graph network przeciągamy za pomocą środkowego klawisza myszki kolejno materiały BLINN [etykietka] i PHONG [dzbanek]. Mamy teraz w okienku warstw 3 materialy. Pierwszy z nich jest standardowo dodawany do LAYERED SHADER i należy go usunać klikajac na krzyzyk pod nim. I teraz bardzo ważna operacja która praktycznie zakończy budowę naszego materiału. Przyłączamy PROJECTOR [projekcja_maski] do transparencji shadera BLINN w LAYERED SHADER.
Jako że PROJECTOR ten przejął obraz z pliku ALPHA porzez IMAGE, wybieramy łączenie Out Color -> Inputs[xxx].transparency

Kliknij aby powiększyć

gdzie xxx okresla identyfikator warstwy w LAYERED SHADER zawierającej naszą texturę etykietki. I na tym można własciwie zakończyć budowę naszego materiału. Można go oczywiście dowolnie rozbudować dodajac kolejne warstwy itp. Zachecam do zabaw z parametami w dołączonym przykładzie, bo tylko wówczas wpełni bedzie można zrozumieć wzajemne odziaływanie poszczególnych elementów układanki.

Kliknij aby powiększyć Kliknij aby powiększyć

 

 

>>> Pobierz przykład <<<

 

Autor: Vink

4 kwietnia 2002

Tutorial napisany dla: www.maya3d.users.pl