Odbicia bez raytracingu

Stosowanie innej niż Raytracing metody uzyskania efektownych refleksów na obiektach 3D wcale nie jest absurdalnym pomysłem. Alternatywą jest bowiem stary i sprawdzony sposób - mapowanie odbić.

Stosowanie innej niż Raytracing metody uzyskania efektownych refleksów na obiektach 3D wcale nie jest absurdalnym pomysłem. Alternatywą jest bowiem stary i sprawdzony sposób - mapowanie odbić.

W programach 3D uzyskiwanie odbić na powierzchniach obiektów wydaje się czynnością banalnie prostą, wystarczy bowiem włączyć opcję raytracingu przed wyrenderowaniem sceny.

Warto jednak wziąć pod uwagę inną metodę uzyskiwania takiego efektu, ponieważ czasami jest ona bardziej wydajna - chodzi mianowicie o mapowanie odbić. Często dzięki niej zyskujemy większą kontrolę nad wyglądem materiału i skraca się czas renderingu.

Być może dlatego mapowanie odbić jest wciąż stosowane w amerykańskim przemyśle filmowym.

Metoda ta jest szczególnie przydatna, gdy bardziej zależy nam na efektownie wyglądającej scenie niż na realistycznych odbiciach. W Electric Image Universe do niedawna był to jedyny sposób uzyskania takich powierzchni, jak chrom, szkło, lustro itp. Notabene w wielu produkcjach filmowych graficy z powodzeniem posługiwali się mapowaniem odbić.

Przykładem może być chociażby postać cyborga z ciekłego metalu w filmie "Terminator 2".

1. Do zilustrowania zagadnienia posłużymy się prostym modelem uzyskanym w Universe modeler.

Mój przykład zbudowany jest z prostych brył typu Solid Primitives, połączonych ze sobą za pomocą operacji logicznych Booleans. Wszystkie ostre krawędzie zostały sfazowane narzędziem Round. Zaokrąglenie krawędzi ma bardzo istotny wpływ na wygląd mapy odbić. Najlepiej bowiem widoczny będzie efekt na obłych, gładkich obiektach.

2. Importujemy wymodelowany obiekt do Universe Animator. Klikamy Ctrl+l, aby otworzyć Project Window.

Następnie wybieramy z listy obiektów kadłub spodka, gdyż na nim zamapujemy teksturę z odbiciami.

3. W oknie spodek info klikamy ikonę w lewym górnym rogu okna i otwieramy okno Spodek Material, aby móc edytować materiał obiektu.

4. W zakładce Reflectivity ustawiamy parametr Amount na Full, czyli wartość 1. W sekcji Edge Control ustawiamy parametr Amount na 1, a parametr Falloff na 0,8.

Z prawej strony okna w sekcji Reflection Map Configuration zaznaczamy opcję Use Bitmap Reflection. Na dole w okienku Reflection Map klikamy przycisk Add i wybieramy z dysku bitmapę, która posłuży jako tekstura z odbiciami.

Ten sam plik wykorzystamy później jako tło do naszej ilustracji.

5. Klikamy ikonkę bitmapy w kanale Reflectivity i otwieramy okno projekcji tekstury. W zakładce Alignment zaznaczamy opcję Front, a w sekcji Rotation wpisujemy przy współrzędnej Y wartość 90. Następnie w zakładce Projection w pozycji Map Type wybieramy Cylindrycal jako metodę mapowania. Wartość Wrap Angle ustawiamy na 360. Zamykamy okna i przechodzimy do głównego widoku sceny.

6. Wykonujemy próbny rendering, aby ocenić efekt mapowania. Sposób, w jaki układają się odbicia, zależy od metody projekcji tekstury. Można tu poeksperymentować z płaskim, kulistym i cylindrycznym rzutowaniem bitmapy.

7. Zamykamy okno i przechodzimy do Project window, gdzie wybieramy z listy kamerę i klikamy dwukrotnie jej ikonkę, aby otworzyć okno Camera info. Odszukujemy zakładkę Roto/Comp i w sekcji Background klikamy przycisk Add. Wybieramy z dysku tę samą bitmapę, której użyliśmy do zamapowania odbić.

Tym razem posłuży ona jako tło w ilustracji.

8. Możemy wykonać finalny rendering. Trudność stosowania metody uzyskiwania odbić w scenie polega wyłącznie na prawidłowym obteksturowaniu modeli. Jeżeli chcielibyśmy otrzymać w ten sposób odbicia obiektów, które faktycznie są w scenie, musielibyśmy wyrenderować grafikę bez pierwszego planu, a następnie użyć jej jako mapy odbić, czyli Reflection Map.

Takie działanie na pierwszy rzut oka wydaje się trochę zagmatwane, ale w ten sposób skracamy czas renderingu i mamy większą kontrolę nad wyglądem powierzchni.

Poza tym możemy trochę oszukać widza, preparując teksturę refleksów, tak aby efekt był optymalny.


Zobacz również