W tutorialu tym chcę opisać pokrótce to co jest pokazane w części video tego materiału zachowując pewien porządek kolejno podejmowanych działań.
1. Dodawanie pluginów (dla mniej wtajemniczonych) – korzystam z kilku darmowych skryptów w tym tutorialu.
2. Omówienie oświetlenia Global Illumination w skrócie – GI.
3. Omówienie prostej animacji składającej się z przelotu kamery i animacji opartej na silniku fizyki Bullet.
4. Omówienie statycznego GI.
5. Omówienie dynamicznego GI oraz omówienie moich rozwiązań dotyczących renderowania animacji z dynamicznym GI (Animowane GI bez migotania) – tzw. Flicker Free Global Illumination.
1. Dodawanie pluginów
Dodawanie pluginów/skryptów w programie LightWave – wciskamy klawisz Alt+F11, potem wciskami przycisk Add Plug-ins wyszukujemy pluginy na dysku i dodajemy. Po takiej operacji najlepiej zamknąć i ponownie uruchomić program. Uchroni to nas przed ponownym dodawaniem pluginów podczas np. zawieszenia się programu.
2. Omówienie oświetlenia Global Illumination w skrócie – GI
Naturalne oświetlenie GI, naśladuje oświetlenie w realnym świecie. Możemy w fajny sposób oświetlić np. pomieszczenie używając tylko 1 źródła światła symulującego słońce i dodanie oświetlenia Backdrop/Environment którego zadaniem jest symulacja otoczenia które emituje światło zabarwia je i w ten sposób oświetla scene 3D naśladowując realny świat.
Do oświetlenia wnętrza o którym mowa zostało użyte światło DP Infinite jako słońce i plugin Sunsky_Environment jako otoczenie.
3. Omówienie prostej animacji składającej się z przelotu kamery i animacji opartej na silniku fizyki Bullet.
Animacja w omawianym tutorialu oparta jest na prostym ruchu Kamery na klatkach kluczowych.
Światło również w ten sam sposób jest animowane co symuluje zmianę pory dnia a wiąże się z tym zmiana oświetlenia.
Do zaanimowania kulek został użyty silnik fizyki Bullet który jest bardzo wydajny i dobrze zaimplementowany w programie LightWave 3D 2015.
Wszystkie elementy statyczne a tym samym kolizyjne dla poruszających się kul mają Typ dynamiki Static. Natomiast błyszczące kule są ustawione jako Rigid do tego opcje Gravity ustawione są na – 1m w osi „Y”.
ps. proszę przeanalizować i pobawić się załączoną kompletną sceną tutoriala
4. Omówienie statycznego GI.
Statyczne GI a dokładniej opcja cache przydatna jest do oszczędzania czasu podczas testowych renderów i świetnie nadaje się do animacji w których porusza się tylko Kamera np. przelot Kamery po pomieszczeniu.
Działa to w ten sposób, iż po dobraniu dobrych ustawień GI które nas satysfakcjonują zapisujemy mapę GI do pliku cache. Jeśli dotyczy to animacji to trzeba zrobić to z kilku ustawień Kamery tak by poszczególne kadry zazębiały się. Opcję Preprocess ustawiamy wówczas na Never lub Locked i uruchamiamy rendering. Silnik renderujący nie liczy w tedy Global Illumination dla każdej klatki tylko pobiera dane z pliku cache, rendering przebywa niewiarygodnie szybko. Można animować nawet b. złożone sceny które bez opcji cache renderowały by się b. długo, obyśmy tylko wypalili 1 lub 3 klatki z animacji a cała reszta nie wymaga „dopisywania” kolejnych informacji o oświetleniu.
ps. więcej w załączonym filmiku, można również pobawić się załączoną sceną
5. Omówienie dynamicznego GI i Renderingu.
Dynamiczne oświetlenie Global Illumination jak nazwa wskazuje używamy do animacji w których porusza się więcej elementów sceny niż tylko Kamery i Światło.
W silnikach renderujących korzystających metodę Path Tracing lub nie interpolowane Monte Carlo czyli Brute Force tajniki cache GI nie są istotne ponieważ nie ma problemu z migotaniem cieniowania animacji, migotanie zwane jest Flickerem.
W interpolowanych metodach oświetlenia GI jak używana np. przez LightWave renderowanie animacji bez opcji cache powodować będzie migotanie/flickiering oświetlenia co jest bardzo irytujące i w niektórych przypadkach kompletnie nie akceptowalne.
Interpolowane GI jest szybkie daje dobry transport światła ale niestety podczas animacji pojawia się problem flickieringu.
Jest na to na szczęście metoda a mianowicie dynamiczny cache Global Illuminacji.
Krok po kroku jak należy podejść do cache dynamicznego GI:
1. Znaleźć dobre ustawienia GI biorąc pod uwagę to, iż Minimum Pixel Spacing nie może mieć z byt małej wartości ponieważ podczas robienia cache GI jest generowane dużo sampli GI, znacznie więcej niż podczas normalnego renderingu i może zdarzyć się tak, że ilość sampli będzie gigantyczne a rendering będzie bardzo powolny. Myślę, że wartość Minimum Pixel Spacing: 3 lub 4 będzie odpowiednia.
Dzieje się tak ponieważ podczas robienia cache Global Illumination dla animacji (z załączoną opcją Animation) nie jest obliczane GI a generowane są sample w przestrzeni 3D. Sample „przypinane” są do elementów sceny i animują/poruszają się w raz z animowanymi obiektami w scenie. Dopiero podczas renderinu na podstawie sampli generowane są światło/cienie/materiały.
Preprocess ustawić na Always lub Automatic – próbki będą wówczas dopisywane do istniejącego pliku cache.
Po przez opcje Cache File wskazać miejsce na dysku gdzie będą przechowywane informacje.
Podkreślić należy, że cache GI dla animacji nie przyspiesza obliczeń nawet nieco je wydłuża ale sprawia, że nie ma migotania/flickeru animacji.
2. Wyłączyć opcje Raytracingu Shadows/Reflection/Refraction te informacje nie są potrzebne podczas robienia cache GI a tylko wpływają na ilość informacji przechowywanych na dysku co wydłuża docelowy czas renderingu.
3. Wciśnięcie przycisku Bake Radiosity Scene.
4. Po wypalaniu Glibal Illumination włączyć opcje Raytracingu z pkt. 2
5. Włączyć zapis renderowanych klatek animacji do pliku np. png.
Wcisnąć Ctrl + F5 > Processing z dolnej zakładki Add Image Filter wybrać Compositing Buffer Export > wybrać ścieżkę i nazwę pliku na samym dole w zakładce Buffer zaznaczyć Coor Corrected RGBA.
6. I teraz bardzo ważne … można renderować przez wciśnięcie F10 co odpowiada za Render Scene ale wówczas podczas renderingu do pewnego momentu z upływem wyrenderowanych klatek rendering będzie spowalniał to dla tego, że render engine sprawdza sample w całej scenie/dopisuje nowe jeśli jest to potrzebne, krótko mówiąc ma do przeliczenia dużo informacji.
Ja próbując zrozumieć to zagadnienie wpadłem na pomysł by renderować przez darmowy plugin F9 Render Sequence. Plugin renderuje animację korzystając z pliku cache ale nie analizuje na raz całej animacji przez co ma do sprawdzenia znacznie mnie informacji. Ten patent działa znacznie szybciej, proces renderingu zwalnia ale tylko w niewielkim stopniu.
Należy też pamiętać by przed renderingem plik cache oznaczyć na Tylko do odczytu, zapobiega to dopisywaniu informacji do pliku i dzięki temu nie wzrasta ilość informacji do obliczenia i czas renderingu.
Aktywacja pluginu F9 Render Sequence: Ctrl + Q z listy Add Layout or Scene Master wybieramy wcześniej dodany do systemu LW plugin F9 Render Sequence
ps. więcej na załączonym video tutorialu i załączonej scenie