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.