Aici este descrisă realizarea mediului subacvatic, privit ca un efect caustic fals proiectat de suprafața ondulată a apei și ca perspectivă în mediu acvatic obținută cu un grup de noduri aplicate la material.
Pregătirea scenei
Deschide un fișier nou în Blender și comută la motorul de randare Cycles.
Salvează fișierul cu Mediu_subacvatic.blend. Materialul descris aici poate fi folosi și pentru a creea atmosfera de pe pagina Crearea unui munte înzăpezit.
Selectează cubul și comută la modul Edit, mărește cubul de 21 de ori (apasă tasta A pentru a selecta toate nodurile, apoi tasta S, tastele 21 de pe tastatura numerică și tasta Enter), apoi micșorează obiectul pe axa Z cu 0.300 (având toate nodurile selectate, apasă tasta S, apoi tasta Z, tastele .3 de pe tastatura numerică și tasta Enter).
Comută la modul Object și în fereastra Properties, secțiunea Modifiers, atribuie obiectului un modificator Subdivision Surface. Setează tipul subdivizării la Simple și valoarea nivelului Subdivision pentru View și Render la 4.
Adaugă un al doilea modificator Subdivision Surface, alege tipul subdivizării la Simple și valoarea nivelului Subdivision pentru View și Render la 2.
Atribuie obiectului un modificator Ocean. La Geometry alege Displace, la Spatial Size tastează 20 și la Resolution tastează 12.
În secțiunea Object Data, click pe butonul + (plus) aflat sub eticheta UV Maps pentru a adăuga un set de coordonate UV. Astfel, cubul nu mai trebuie să fie desfășurat.
Apasă tasta N și în panoul Transform, la Location, setează aceste valori pentru cub: X 3.22600, Y 2.79600, Z -0.20400.
Verifică dacă în fereastra Timeline de jos cadrul curent este 1, apoi poziționează mausul în secțiunea Modifiers, peste câmpul Time și apasă tasta I pentru a adăuga o cheie cadru pentru animație. În fereastra Timeline, mută cadrul activ la poziția 25, apoi în secțiunea Modifiers în câmpul Time, în locul valorii 1.00 alege 2.00 și apasă tasta I pentru a adăuga o a doua cheie pentru animație.
Cu ajutorul butonului Screen layout din bara de sus, comută de la șablonul de ecran Default la Animation. În fereastra Graph Editor, apasă tasta T și alege opțiunea Linear, apoi apasă tastele Shift + E și alege Linear Extrapolation, pentru ca animația oceanului să fie constantă și continuă.
Redenumește cubul cu Suprafata_Ocean.
Mută obiectul Camera sub suprafața oceanului (în fereastra cu proprietăți – tasta N – la Location alege X 20.000, Y 0.15000, Z -2.50000 și la Rotation alege X 92°, Y 0° și Z 90°) apoi comută la vederea Camera (apasă tasta numerică 0).
Adaugă în scenă un cub, o sferă UV și orice alt obiect dorești, care să se afle sub suprafața oceanului. Atribuie fiecărui obiect adăugat un material cu culori simple format dintr-un nod Diffuse.
Mai adaugă în scenă un cilindru mare în fundal, aproape de capătul obiectului pentru ocean, scufundat pe jumătate în apă și cealaltă jumătate fiind în aer; atribuie cilindrului un material simplu, format tot dintr-un nod Diffuse.
În fereastra Properties, secțiunea World, click pe butonul Use Nodes, apoi click pe micul pătrat din partea dreaptă a câmpului Color și alege din listă Sky Texture.
Selectează obiectul Lamp, click pe butonul Use Nodes și alege o culoare galben deschis pentru sursa de lumină (R 1.000, G 0.989, B 0.700). La tipul sursei de lumină alege Sun și la Size tastează valoarea 0.010 iar la Strength valoarea 2.500. La Rotation tastează valorile: pentru X 22°, pentru Y -7° și pentru Z 144°; locația nu contează pentru o lampă de tip Sun.
În fereastra Properties, secțiunea Render, sub eticheta Sampling alege la Clamp valoarea 1.00 și la Samples alege 50 pentru Preview și 100 pentru Render. Sub eticheta Light Paths, debifează opțiunile pentru Caustics.
Adaugă în scenă un plan nou și poziționează planul pe axa Z la -5.70000, apoi comută la modul Edit. Mărește planul de 30 de ori (apasă tasta A pentru a selecta întregul plan, apoi tasta S, apoi 30 pe tastatura numerică, apoi tasta Enter). Folosind meniul Specials (tasta W), subîmparte planul de cinci sau șase ori. În antetul ferestrei 3D activează instrumentul Proportional Editing (PET), selectează la întâmplare câteva noduri din rețea și mută nodurile în sus pentru a modela dunele de nisip de pe fundul oceanului. Apoi comută iar la modul Object (tasta Tab) și din panoul cu instrumente aflat la stânga (tasta T), click pe butonul Smooth iar în fereastra Properties, secțiunea Modifiers atribuie obiectului un modificator Subdivision Surface cu nivelul 2. Redenumește planul cu Fund_Ocean.
Adaugă un cub, comută la modul Edit și subdivizează cubul de câteva ori (apasă tasta W și alege Subdivide Smooth). Având activat modul Proportional Editing, selectează câteva noduri și deformează obiectul, pentru a modela rapid o stâncă rotundă. Fă trei sau patru copii duplicat ale stâncii, rotind și redimensionând copiile și poziționându-le în diferite locuri pe fundul oceanului.
Pentru stânci, vom adăuga în fișierul blender materialul creat în fișierul Material_stanca_procedural.blend, descris pe pagina Crearea unui material pentru stâncă folosind texturi procedurale.
Selectează stâncile și atribuie-le materialul adăugat. La cele două noduri Diffuse modifică culoarea cu R 0.553, G 0.576, B 0.608 și respectiv cu R 0.567, G 0.391, B 0.314.
Din fișierul Material_pamant.blend, descris pe pagina Crearea unui material pentru pământ folosind texturi procedurale, adaugă materialul Pamant, selectează fundul oceanului și atribuie-i materialul.
În modul Edit al obiectului Suprafata_Ocean, selectează doar fețele de sus ale obiectului. Apasă tastele Crtl + I pentru a inversa selecția. În fereastra Properties, secțiunea Material, click pe butonul + (plus) din dreapta pentru a adăuga un material nou și redenumește noul material cu Null (sau alt nume sugestiv), apoi click pe butonul Assign. Acum, cubul ocean are două materiale: suprafața transparentă a apei și partea de jos a cubului, opacă (un material simplu cu un nod Diffuse de culoare albă). Comută înapoi la modul Object.
În fereastra Properties, secțiunea Material, click pe materialul Sub_suprafata_ocean pentru a-l selecta. În fereastra Node Editor, șterge grupurile de noduri Spuma și Locatie_Spuma și cele două noduri de tip Mix (Multiply și Burn). Pentru a face lucrurile mai clare, degrupează (apasă ALT + G) grupul de noduri Apa_Ocean.
Adaugă deasupra nodurilor existente un nod Texture Coordinate (apasă Shift + A apoi alege Input | Texture Coordinate), un nod Mapping (apasă Shift + A și alege Vector | Mapping), și un nod Image Texture (apasă Shift + A și alege Texture | Image Texture). Conectează mufa de ieșire UV a nodului Texture Coordinate la mufa de intrare Vector a nodului Mapping și mufa de ieșire Vector a acestuia la mufa de intrare Vector a nodului Image Texture.
În nodul Image Texture, încarcă fișierul pentru textură Caustics.jpg și setează color space la Non-Color Data.
La dreapta acestor noduri adaugă un nod Diffuse BSDF, un nod Transparent BSDF și un nod Mix Shader.
Conectează mufa de ieșire a nodului Diffuse la prima mufă de intrare a nodului Mix Shader și mufa de ieșire Transparent la a doua mufă de intrare a nodului Mix Shader. Conectează mufa de ieșire Color a nodului Image Texture node la mufa de intrare Color a nodului Transparent BSDF și mufa de ieșire Alpha a nodului Image Texture la mufa de intrare Fac a nodului Mix Shader.
Conectează mufa de ieșire a celui de al doilea nod Mix Shader la mufa de intrare goală a primului nod Mix Shader.
Adaugă un nod Light Path (apasă Shift + A și alege Input | Light Path) apoi conectează mufa de ieșire a nodului Is Camera Ray la mufa de intrare Fac a primului nod Mix Shader.
Deocamdată lipsește efectul subacvatic de perspectivă și adâncime. Pentru a obține acest efect pot fi folosite mai multe metode, de exemplu prin compunerea unei treceri Mist pass randată în Blender Internal; aici vom realiza efectul folosind un grup de noduri care va fi atribuit fiecărui material.
Adaugă la dreapta sus un nod Camera Data (apasă Shift + A și alege Input | Camera Data), un nod Math (apasă Shift + A și alege Converter | Math), un nod Emission (apasă Shift + A și alege Shader | Emission) și un nod Mix Shader (apasă Shift + A și alege Shader | Mix Shader).
Conectează mufa de ieșire View Z Depth a nodului Camera Data la prima mufă de intrare Value a nodului Math. În nodul Math setează operația la Multiply și la a doua valoare Value tastează 0.030, apoi bifează opțiunea Clamp. Conectează mufa de ieșire din nodul Multiply la mufa de intrare Fac a nodului Mix Shader.
Conectează mufa de ieșire Emission la a doua mufă de intrare Shader a nodului Mix Shader și setează culoarea R 0.040, G 0.117, B 0.124.
Selectează toate nodurile nou adăugate și apasă Crtl + G pentru a crea un grup. Conectează prima mufă de intrare Shader a nodului Mix Shader la nodul Group Input din stânga. Conectează mufa de ieșire a nodului Mix Shader la nodul Group Output din dreapta.
Apasă tasta Tab pentru a ieși din nod și redenumește grupul cu Ceata_subacvatica.
Conectează grupul de noduri înaintea nodului Material Output a fiecărui material (în scenă, nodul va arăta opt utilizatori dacă este selectată și opțiunea Fake User).
Rezumat
Mai întâi de toate, de ce am ales pentru suprafața oceanului un cub în locul unui plan?
Motivul este foarte simplu: în Cycles, mediul ambiant (World) emite lumină și singura metodă de a evita acest lucru este de a seta culoarea acestuia la o nuanță de negru (sau printr-o combinație a nodului Light Path cu materialele World, dar aceasta este altă metodă). În scenă, World este setat la culoarea albastru luminos a cerului, iar planul, obiectele de sub apă și oceanul sunt luminate și ele din lateral și din partea de jos, dând astfel un rezultat nenatural. În schimb, cubul include toate obiectele de sub apă, limitând lumina emisă de lampa Sun care trece prin suprafața cubului și proiectează imaginea texturată, acest comportament fiind mai natural.
Textura imagine atribuită materialului pentru apă are rolul de a obține un efect de transparență texturată.
Suprafața apei este în unele zone opacă și în alte zone transparentă, în funcție de culorile negru sau alb ale texturii, astfel încât să permită ca lumina lămpii Sun să treacă prin zonele transparente și să proiecteze zone luminoase.
Datorită mufei de ieșire Is Camera Ray a nodului Light Path, imaginea pentru textura Caustics nu este randată direct pe suprafața oceanului și nici nu are efect asupra celorlalte materiale. Deoarece Is Camera Ray are valoarea 1, razele care pornesc din obiectul Camera și ating direct suprafața oceanului pot randa doar materialul pentru apa "curată" conectat la mufa a doua a nodului Mix Shader; este randat și efectul caustic transmis (conectat la prima mufă egală cu 0).
Grupul de noduri Ceata_subacvatica este un material care emite lumină, fiind colorat ca și culoarea din fundal (în acest caz, verde închis) și mapat pe fiecare material care se află sub apă în funcție de adâncimea Z a obiectului Camera (dar funcționează și în afara vederii Camera). "Densitatea " ceții este setată de valaorea a doua a nodului Multiply Value; pentru ocean, valoarea 0.030 este suficientă. Axa Z a obiectului Camera nu trebuie să fie confundată cu axa de coordonate globală Z, care în Blender este linia verticală albastră vizibilă în vederea 3D. Axa Z a obiectului Camera este linia ideală care conectează punctul de pornire al vederii cu orice element vizibil din scenă.
Valorile din grupul Ceata_subacvatică pot fi modificate în mod Edit.