Autor Wątek: Emission Pass i szkło  (Przeczytany 16192 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Mortus

Emission Pass i szkło
« dnia: 21.10.2018 16:04:57 »
No więc jest taka sprawa, że chciałem dodać efekt glare tylko do elementów na scenie, których materiały emitują światło. No więc w zakładce Passes włączyłem Emission, wyrenderowałem i w postprocesach  próbuję dodać efekt glare do warstwy Emit. Ku mojemu zdziwieniu - zupełnie nic to nie dało. Spróbowałem więc podpiąć pod Viewera samą warstwę Emit i okazuje się, że jest całkowicie pusta.
Zrobiłem testową scenę i okazuje się, że jeśli materiał emitujący światło jest zasłonięty przezroczystym obiektem (np. szkłem), to na warstwie emission jest on niewidoczny. Ktoś ma pomysł jak to obejść?

Offline winhelp

Odp: Emission Pass i szkło
« Odpowiedź #1 dnia: 21.10.2018 23:59:17 »
U mnie działa. Jakby nie działało dalej u ciebie ja bym zrobił - RGB to BW i color rampem wyciągnął najbardziej białe i to podpiął do glare.

Załączam plik.

Offline Mortus

Odp: Emission Pass i szkło
« Odpowiedź #2 dnia: 22.10.2018 10:24:28 »
Hmm... no faktycznie działa. Z tym, że tylko jeśli ta duża kostka ma Transparent BSDF - gdy zmieni się na Glass BSDF, to obiekt w środku znowu znika na warstwie Emission.
Sprawdziłem czy nie jest to kwestia refrakcji, ale nawet przy parametrze IOR ustawionym na 1.0 problem wciąż występuje. Choć podejrzewam, że dla renderera nie liczy wartość tego parametru a sama jego obecność.
« Ostatnia zmiana: 22.10.2018 10:26:52 wysłana przez Mortus »
 

Offline winhelp

Odp: Emission Pass i szkło
« Odpowiedź #3 dnia: 22.10.2018 23:59:14 »
A próbowałeś sam kolor maskować tak jak podałem? (ewentualnie przemnażając przez siebie, bo glare potrzebuje mocne wartości)? Zaraz sprawdzę se na moim przykładzie :)

sprawdziłem, działa

Offline Mortus

Odp: Emission Pass i szkło
« Odpowiedź #4 dnia: 23.10.2018 08:40:52 »
Działać niby działa, ale niestety wciąż nie rozwiązuje problemu. Sęk w tym, że nie chcę (i nawet nie za bardzo mogę) bazować na podstawowym renderze - musi to być jakaś maska zawierająca informacje tylko i wyłącznie o elementach z materiałem emitującym światło. To dlatego, że na docelowym renderze emitowane światło nie jest zbyt silne, w dodatku jest blado czerwone, a na scenie znajdują się też elementy białe, a więc de facto ich kolor jest nawet jaśniejszy niż tych elementów, które faktycznie świecą. To po pierwsze, a po drugie docelowy render to animacja, więc w zasadzie w różnych klatkach zakresy jasności, najjaśniejszy, najciemniejszy obiekt mogą być różne. Dlatego tym ColorRampem też nie bardzo mogę zdziałać, potrzeba czegoś bardziej uniwersalnego.
Sporo wczoraj szukałem w google i okazuje się, że chyba nie bardzo da się cokolwiek z tym fantem zrobić. Dla blendera jeśli coś jest zasłonięte szkłem, to jest traktowane jakby było niewidoczne. Zniekształcony refrakcją obraz to dla renderera tylko powyginany zbitek pikseli - nie da się z tego wyciągnąć informacji skąd dany piksel pochodzi. Trochę kicha.
Jedyne co udało mi się wymyślić, to by wyłączyć wszystkie źródła światła, być może też ustawić wszystkim materiałom czarny kolor, a jedynie materiały emission zostawić tak jak były. W ten sposób otrzymałbym czarny render, na którym widoczne są jedynie materiały emission, nawet zniekształcone refrakcją - czyli dokładnie tak, jak potrzebuję. Sęk w tym, że biorąc pod uwagę, że docelowo ma to być animacja, to renderowanie osobno drugi raz każdej klatki może być z lekka kłopotliwe.

Offline winhelp

Odp: Emission Pass i szkło
« Odpowiedź #5 dnia: 23.10.2018 22:57:17 »
Cytuj
na docelowym renderze emitowane światło nie jest zbyt silne, w dodatku jest blado czerwone
Wiem, że to był przykład dość "laboratoryjny".

Jeżeli to jest cały materiał to możesz go wyłuskać po ID materiału ale najprościej będzie właśnie puścić render czarny + materiał emitera - chyba można ustawić sample per materiał to możesz ustawić minimum skoro i tak nic nie odbija co pozwoli przyspieszyć render.

Offline Mortus

Odp: Emission Pass i szkło
« Odpowiedź #6 dnia: 26.10.2018 10:07:21 »
W moim przypadku to są akurat pojedyncze miejsca na teksturze, które świecą. Choć w razie potrzeby wiadomo - zawsze można by to było rozdzielić, żeby materiał emission mieć osobno. Ale to i tak nic z tego, bo po ID materiału czy obiektu również nie udawało mi się wyciągnąć żadnych informacji jeśli obiekt znajdował się za szkłem.
No  nic, wygląda na to, że jedyny sensowny sposób to ponowne wyrenderowanie obrazka z widocznym samym emiterem. Poeksperymentuję trochę, może uda mi się osiągnąć rozsądny czas renderowania jakąś
właśnie mniejszą liczbą sampli, przyciętą rozdziałką itd. W każdym razie dzięki za pomoc.

 

Skrypt do Pass ID

Zaczęty przez mortom.ckmDział Python, skrypty, pluginy i Blender Game Engine

Odpowiedzi: 4
Wyświetleń: 11691
Ostatnia wiadomość 01.07.2019 16:28:51
wysłana przez mortom.ckm
Materiał szkło

Zaczęty przez vipovskyDział Teksturowanie i materiały

Odpowiedzi: 2
Wyświetleń: 8272
Ostatnia wiadomość 21.09.2017 11:04:11
wysłana przez Piotr

* Zaloguj




* Losowy obrazek