close
Blender 3DPorady

Jak uniknąć ponownego renderowania całej sceny z powodu drobnej zmiany?

obrazekpr2

Tworząc rendery do sklepów internetowych oraz katalogów, zawsze szukam sposobów na zoptymalizowanie czasu pracy. Poszczególne produkty bardzo często różnią się jedynie kolorem oraz naniesionym na nie wzorem. Liczenie całej sceny jest w takich wypadkach bardzo mało wydajne. Jak więc możemy temu zaradzić?

Renderowanie fragmentu sceny

Najprostszym sposobem jest oczywiście liczenie tylko fragmentu naszej sceny, który zawiera istotny dla nas obiekt – a następnie wklejenie go do oryginalnego obrazu. Aby to zrobić, przechodzimy do widoku  z kamery (klawiatura numeryczna – 0) a następnie wciskamy kombinacje klawiszy shift+b i wyznaczamy renderowany obszar.

Ctrl+alt+b pozwala przywrócić renderowanie całej przestrzeni widocznej przez kamerę.

Warto zaznaczyć, że wyrenderowany fragment będzie posiadał przezroczyste otoczenie – dzięki któremu ostateczny rozmiar obrazu będzie taki sam jak render całości. Dzięki temu obraz idealnie pokryje się z oryginałem, gdy nałożymy je na siebie.

Niestety rozwiązanie to ma pewną wadę – nie możemy jednocześnie zaznaczyć dwóch przestrzeni.

Shader Holdout

Tutaj z pomocą przychodzi nam shader Holdout. Obiekty na który zostanie nałożyny, wycina w naszej pracy przezroczystą dziurę. Możemy wykorzystać go do tego, by nie renderować zbędnych fragmentów naszej pracy.

Dodajemy więc nowy plane i ustawiamy go przed kamerą.

Następnie modyfikujemy go w taki sposób, aby zasłaniał wszystkie zbędne obszary pracy i wybieramy dla niego shader Holdout.

Warto również zadbać o to, by obiekt nie był widoczny dla odbić i cieni. Możemy to bardzo łatwo skorygować w Object -> Cycles Settings -> Odznaczamy wszytko prócz Camera.

Żeby pojawiła się przezroczystość zamiast czarnego wycięcia, musimy przejść do ustawień Render -> Film i zaznaczyć Transparent.

My jednak posuniemy się krok dalej i zamiast tworzyć nowy plane zasłaniający scenę, zmodyfikujemy nasze materiały.

Transparentne materiały

Najważniejszą rzeczą, o której musimy pamiętać, jest zachowanie takich samych odbić i cieni rzucanych przez otoczenie. Jeśli ustawimy naszym obiektom modyfikator Holdout usuwając poprzednie materiały – efekt może nas rozczarować.

W pierwszej kolejności przechodzimy do edytora nodów naszego materiału i dodajemy Mix Shader. Podpinamy go pomiędzy Material Output a resztą kafelków. Następnie dołączamy do niego shader Holdout. Możemy teraz za pomocą suwaka decydować, który z nich będzie bardziej widoczny. Niestety, takie rozwiązanie ciągle nie jest satysfakcjonujące.

Zależy nam przecież na tym, by dla całej sceny widoczny był nasz normalny materiał, ale kamera traktowała go jako Holdout. W tym celu dodajemy kafelek Light Path i podpinamy wyjście Is Camera Ray do wejścia Fac z mix Shader.

Teraz możemy stworzyć grupę z naszych nodów (ctrl+g -> Tab), by prędko móc ją przekopiować do innych materiałów. Wszystkie obiekty ją posiadające, będą wycinały przezroczystą dziurę w finalnym obrazie.


Teraz nie pozostaje nic innego jak połączyć gotowe rendery. Oczywiście wszystkie pokazane powyżej metody sprawdzą się w różnych sytuacjach. Zapraszam do dyskusji w komentarzach!

Mateusz Feliks

The author Mateusz Feliks

Założyciel serwisu graphicway.pl. Pasjonat grafiki.

1 Comment

  1. Proszę skasować poprzednie pytanie – już znalazłem odpowiedź.. Już teraz wiem, że należy użyć noda “alpha over”…

Leave a Response