Wizualizacja i Animacja

Transkrypt

Wizualizacja i Animacja
Wizualizacja i Animacja
Laboratorium 10 – Efekty
Bardzo często podczas tworzenia animacji zachodzi potrzeba wyprodukowania efektów specjalnych
typu ogień, dym, chmury itp. Aby osiągnąć duży realizm animacji najczęściej wykonuje się je bazując
na efektach cząsteczkowych. Sposób ten ma jednak pewną wadę, mianowicie znacznie obciąża
procesor podczas renderingu. Efekty o nieco gorszej jakości można osiągnąć stosując efekty
środowiskowe i atmosferyczne.
Ogień
Tworzymy kilka cylindrów i układamy je w losowych pozycjach na stosie,
aby symulowały ognisko. Wybieramy Create / Helpers /Atmospheric
Apparatus i klikamy Sphere Gizmo. Zaznaczamy opcję Hemisphere i
rysujemy półkulę otaczającą polana. Za pomocą skalowania
niejednorodnego wyciągamy górną część półkuli aby stała się
wydłużona. Mając cały czas wybraną półkulę przechodzimy do panelu
Modify i w rolecie Atmosphere & Effects klikamy Add a następnie w
nowym oknie wybieramy Fire Effect, po czym klikamy poniżej przycisk
Setup. Uzyskujemy w tym momencie dostęp do parametrów ognia,
dzięki któremu możemy modyfikować jego wygląd. Najważniejsze z nich
to:









Inner / Outer Color – zmienia barwę ognia w środku / na zewnątrz płomieni. Kolor
wewnętrzny odpowiada zasadniczo za najgorętszą część płomienia, natomiast zewnętrzny za
brzegi.
Flame Type – kontroluje ogólny wygląd ognia. Tendril tworzy płomienie kierunkowe,
zorientowane wzdłuż osi Z gizma (jak w ogniskach, kominkach…), podczas gdy Fireball tworzy
okrągłe, „puchate” płomienie najlepsze do odwzorowania eksplozji.
Stretch – odpowiada za wydłużenie płomieni wzdłuż osi Z, wartości mniejsze od 1.0 ściskają
płomienie, podczas gdy powyżej 1.0 wydłużają.
Regularity – kontroluje stopień wypełnienia gizma. Im wartość bliższa 0.0 tym ogień jest
bardziej nieregularny (jak w ognisku). Wartości zbliżone do 1.0 powodują całkowite
wypełnienie gizma (jak w płomieniu świecy).
Flame Size – odpowiada za wielkość pojedynczych płomieni wewnątrz gizma.
Flame Detail – kontroluje stopień zmiany kolorów płomieni oraz ostrość ich brzegów.
Density – modyfikuje jasność oraz przezroczystość efektu.
Phase – kontroluje stopień zmiany efektu, konieczny w celu animacji ognia.
Drift - odpowiada za to w jaki sposób płomienie są renderowane wzdłuż osi Z (również
potrzebny podczas animacji)
Po kilku próbach możemy uzyskać w miarę realistycznie wyglądający płomień
Uwaga! Efekt ognia nie tworzy światła! W celu uzyskania efektu oświetlania przez ogień należy
wprowadzić animowalne światło, którego kolory będą się zmieniać. Obiekt ten
nie generuje również dymu, musimy go stworzyć używając efektów
cząsteczkowych.
Dym
Pod gizmem ognia rysujemy obiekt PF Source, nadając mu okrągłą ikonę o
wielkości znaczniej mniejszej niż gizmo ognia oraz ze strzałką emisji cząsteczek
skierowaną do góry.
Za pomocą ikony Time Configuration wydłużamy czas trwania animacji do 400
klatek. Otwieramy okno Particle View, w parametrze Birth zmieniamy czas
emisji cząsteczek na cały czas trwania animacja, a ich liczbę na powiedzmy
2000. Gdybyśmy chcieli, aby dym istniał już w animacji od klatki 0 należałoby
ustawić początek emisji na liczbę ujemną, przykładowo -50 klatkę. Zmieniamy również prędkość
cząsteczek, tak aby wylatywały z emitera znacznie wolniej (wartość Speed około 50) oraz sposób
wyświetlania na Geometry, zmniejszając jednocześnie ich wielkość.
Cząsteczki unoszą się prosto w górę, co jest relatywnie słuszne przy całkowitym braku wiatru. My
dodamy jednak boczny wiatr, aby animacja wyglądała lepiej. W tym celu tworzymy obiekt Wind,
(Create / Forces / Wind) i umieszczamy go w taki sposób, aby wiał z którejś ze stron w kierunku
ogniska. W oknie Particle View dodajemy do zdarzenia akcję Force i podpinamy ją do wiatru.
Ponieważ wiatr jest zdecydowanie zbyt silny musimy pozmieniać nieco jego parametry. W panelu
Modify dostosowujemy je metodą prób i błędów tak, aby wznoszenie się dymu wyglądało w miarę
realistycznie. Przykładowe parametry to Strength 0.01, Turbulence 0.05, Frequency 2.0, Scale 0.1
Aby zasymulować buchanie płomienia i w związku z tym zmianę sposobu emisji dymu możemy
jeszcze dodać wiatr wiejący od dołu, od strony ogniska. Zwiększenie realizmu wymagałoby również
zwiększenia liczby cząsteczek po kilkudziesięciu tysięcy, spowoduje to jednak problemy podczas
renderingu.
Dodajemy do sceny kamerę Target w taki sposób, aby patrzyła na ognisko. Zmniejszamy liczbę
emitowanych cząsteczek do 250 oraz zamieniamy operator Shape na Shape Facing. Jest to typ
cząsteczek, które zawsze zwracają się w stronę konkretnego obiektu, najczęściej kamery. W jego
parametrach ustawiamy Look At na stworzoną wcześniej kamerę – wszystkie cząsteczki zwrócą się w
jej stronę.
Aby zasymulować rozpraszanie i zwiększenie objętości dymu dodajemy operator Scale Factor i
umieszczamy go po operatorze Shape Facing. Zmieniamy jego typ na Relative Succesive, aby
wielkość rosła wraz z wiekiem i ustawiamy Scale Factor na około 100,5%.
Pora na stworzenie dynamicznego materiału, którego właściwości będą się zmieniać wraz z wiekiem
cząsteczek. Otwieramy edytor materiałów, tworzymy nowy materiał Standard, nazywamy go dym i
do jego wejścia Diffuse Color podłączamy mapę Particle Age. Aby zobaczyć efekty zmieniamy jej
kolory przykładowo na żółty, zielony i niebieski.
Ponieważ przypisanie materiału do cząsteczek odbywa się w nieco inny sposób w przeglądarce map i
materiałów przeciągamy na sam dół do grupy Sample Slots. Wyjście materaiłu dym podłączamy do
wolnej kulki. Następnie w oknie Particle View dodajemy do zdarzenia operator Material Dynamic
przed operator Display. Przypisujemy mu materiał dym z grupy Sample Slots. Efekt zanikania nie jest
widoczny, ponieważ cząsteczki żyją przez cały czas. W związku z tym dodajemy operator Delete tuż
po Birth. Ustawiamy jego parametr na By Particle Age z wartościami Life Span 350 i Variation 50. Po
wykonaniu renderingu otrzymujemy zmienne kolory cząsteczek w zależności od wieku. Na tym
będziemy bazować przypisując im właściwe materiały.
Otwieramy edytor materiałów i do wejścia Color 1 mapy Particle Age podłączamy
mapę Noise. Zmieniamy typ na Fractal i manewrujemy parametrami w taki sposób,
aby otrzymać efekt podobny do pokazanego po prawej stronie. Następnie kopiujemy
mapy i podłączamy je do pozostałych dwóch wejść Particle Age. Różnicujemy dwie
pozostałe w taki sposób, aby dym wraz z wiekiem stawał się jaśniejszy i mniej
kontrastowy.
Pozostaje do rozwiązania jeszcze jedna kwestia – w renderignu widać, że cząsteczki przyjmują kształt
kwadratów, podczas gdy oczekujemy efektu kłębów dymu. W tym celu musimy uczynić brzegi
kwadratów przezroczystymi. Aby to zrobić podłączamy do wejścia Opacity materiału dym kolejną
mapę Particle Age. Do jej pierwszego wejścia podłączamy mapę Gradient i zmieniamy jej typ na
Radial.
Brzegi kwadratów stają się w tym momencie niewidoczne, jednak są one zbyt regularne.
Zmieniamy parametr Noise na Fractal i manewrujemy jego parametrami, aby otrzymać efekt zbliżony
do następującego:
Aby otrzymać jeszcze bardziej nieregularny kłąbek dymu do wejścia Color 2 oraz Color 3 podłączamy
mapę Noise i dostosowujemy jej parametry.
Widzimy na renderingu iż wraz z wiekiem cząsteczek przezroczystość zaczyna zanikać. Musimy zatem
do mapy Particle Age podłączyć kolejne mapy gradientowe. Najlepiej skopiować już istniejącą
(podłączoną do wejścia Color 1) i podłączyć nowe elementy do wejść Color 2 i 3. Aby otrzymać efek
zanikania dymu w parametrach Noise nowych map gradientowych musimy zmienić parametr Color 2
na bliższy czerni.
Tak przygotowany dym rzuca również dość realistyczny cień. Jednak należy używać w tym przypadku
cieni typu Ray Traced.

Podobne dokumenty