Zniekształcony kolor renderowanych normalnych?
Próbuję wyrenderować normalne dane wyjściowe węzła geometrii, a następnie przywrócić je jako teksturę wyświetlaną w oknie. Ale kiedy to robię, obraz bardzo różni się od oryginalnego wyjścia gniazda:
Dlaczego mój obraz jest inny, skoro jest po prostu renderowaniem tego samego? Mam świadomość, że zarządzanie kolorami zniekształca render. Próbowałem renderować z różnymi urządzeniami wyświetlającymi, widokiem transformacji, zarówno .png, jak i .exr, różnymi przestrzeniami kolorów w węźle tekstury, wyłączając opcję Zapisz jako renderowanie itp.
Z mojego rozumienia, bycie w Display Device: sRGB, Standardowa transformacja widoku, a następnie ustawienie węzła tekstury na Dane liniowe lub niekolorowe powinno działać, ale tak nie jest. Co jeszcze mogło się dziać?
Odpowiedzi
Myślę, że główną przyczyną tych różnic jest sposób kodowania danych podczas początkowego renderowania normalnych.
Jeśli zapiszesz to w formacie jpg lub png, kolory są kodowane jako liczby całkowite. Prowadzi to więc do pewnych zaokrąglonych wartości, których nie można przekonwertować na dokładne początkowe wartości normalne.
Możesz więc zapisać ten wyrenderowany plik w formacie OpenExr, aby zachować rzeczy jako wartości zmiennoprzecinkowe:
(kodek może być „brak” lub „bez luzu zip” dla dokładności, jeśli to konieczne ... wypróbuj kodeki w zależności od tego, co chcesz, rozmiar pliku w porównaniu z dokładnością).
Rezultat może być taki (choć nie doskonały):
Zamiast tego używając png:
Dodatkowo zachowaj teksturę obrazu jako „niekolorową” lub „surową” i, jak powiedziałeś w pytaniu, ustaw „surowe” i „niekolorowe” w części dotyczącej zarządzania kolorami.
Edycja: inną rzeczą, która zmienia renderowanie, jest antyaliasing. Jeśli używasz cykli, ustaw filtr pikseli na pole w sekcji filmu. Renderowanie z powrotem przy użyciu tekstury obrazu wyświetlanej w oknie powinno dać lepszy efekt.