Mai jos este descris modul în care se poate realiza un material pentru suprafața oceanului, folosind modificatorul Ocean și texturi procedurale pentru spuma oceanului și selectarea unui set de noduri pentru aplicarea spumei în partea de sus a valurilor, ca în imaginea următoare:
Pregatirea scenei
Înainte de a realiza materialul, să pregătim scena pentru ocean.
Deschide un fișier nou în Blender și comută la randarea Cycles. Selectează cubul și șterge-l (apasă tasta X, apoi Enter).
Salvează fișierul cu numele Material_ocean_procedural.blend.
Adaugă în scenă un plan (cu mausul și fereastra 3D apasă Shift + A și alege Mesh | Plane). În modul Object, redimensionează planul la 0.300 (fără a aplica redimensionarea cu Ctrl+A).
În fereastra Properties, secțiunea Modifiers atribuie planului un modificator Ocean. În panoul modificatorului, pentru Geometry alege Generate, la Repeat X și la Repeat Y tastează 4, la Resolution tastează valoarea 12 și la Spatial Size tastează 20.
Apasă tasta N și în panoul Transform, la Location, alege valorile X -6.90000, Y -7.00000, Z 0.00000.
Verifică dacă în fereastra Timeline de jos cadrul activ este 1, mută cursorul de maus în panoul modificatorului, peste câmpul Time și apasă tasta I pentru a adăuga o cheie de animație. Mută cadrul curent la cadrul 25 și în panoul pentru modificatori modifică valoarea pentru Time de la 1.00 la 2.00 și apasă iar tasta I pentru a adăuga o nouă cheie pentru animație.
În bara de sus, click pe butonul Screen layout (Șablon ecran) și comută de la modul 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 a face animația oceanului constantă și continuă.
Redenumește planul cu Suprafata_Ocean.
Comută înapoi la modul Default.
Poziționează Camera pentru a vedea planul lateral și comută la vederea Camera (apasă tasta 0 de pe tastatura numerică).
Adaugă în scenă un cub și o sferă UV. Poziționează obiectele deasupra planului, scopul lor fiind acela de a fi reflectate de suprafața oceanului.
În fereastra Properties, secțiunea World, click pe butonul Use Nodes apoi click pe micul pătrat din dreapta culorii. Din meniu, alege Sky Texture.
Selectează obiectul Lamp și în fereastra Properties, secțiunea Data Object, click pe butonul Use Nodes și alege o culoare galben-deschis pentru sursa de lumină (R 1.000, G 0.989, B 0.700). Modifică tipul lămpii la Sun, alege pentru Size valoarea 0.010 și pentru Strength valoarea 2.500.
În secțiunea Render, sub eticheta Sampling, alege la Clamp valoarea 1.00 iar la numărul de eșantioane (Samples) pentru Render și Preview tastează 100.
Până aici au fost realizate setările generale și planul pentru suprafața oceanului. Pentru că suprafața oceanului este puțin transparentă, vom simula și adâncimea apei.
Adaugă un nou plan, comută la modul Edit (tasta Tab) și mărește planul de 10 ori (20 de unități Blender pe latură), apoi comută la modul Object. Poziționează planul astfel încât să fie centrat cu planul pentru ocean și mută noul plan o unitate în jos pe axa Z.
Comută iar la modul Edit, apasă tasta W pentru a subdiviza suprafața cu ajutorul meniului Specials. Apasă tasta T pentru a afișa în stânga panoul Mesh Tools și sub Number of Cuts, selectează 3.
Comută la modul Vertex Paint și la modul de afișare Wireframe; pictează pe plan o trecere de culoare gri simplă, pornind de la culoarea gri închis la nodurile apropiate de obiectul Camera până la culoarea albă în partea opusă obiectului Camera. În imaginea de mai jos, trecerea de culoare a fost făcută din vederea de sus (tasta numerică 7), folosind diferite mărimi ale pensulei și nuanțe diferite de gri.
În secțiunea Object Data, sub eticheta Vertex Colors, redenumește stratul de culori pentru vertecși cu Col_emit.
Redenumește planul cu Fund_Ocean (materialul Suprafata_Ocean, descris mai jos, va fi refolosit la crearea unui mediu subacvatic, descrisă pe pagina Crearea de materiale aflate în mediul subacvatic).
Realizarea materialului pentru ocean
Prima etapă a realizării este crearea suprafeței apei și a culorii de sub apă.
Să începem cu primul material.
Împarte vederea 3D în două rânduri orizontale și comută fereastra de sus la Node Editor.
Pentru cub și sferă adaugă materiale colorate simple; este suficient câte un nod Diffuse pentru fiecare.
Selectează planul Fund_Ocean și click pe butonul New din fereastra Properties, secțiunea Material, sau din antetul ferestrei Node Editor. Redenumește noul material cu Fund_Ocean.
În secțiunea Material, schimbă nodul Diffuse BSDF cu un nod Mix Shader. În ambele câmpuri adaugă noduri de tip Emission.
În fereastra Node Editor adaugă un nod Attribute (apasă Shift + A și alege Input | Attribute) și conectează mufa de ieșire Color din nod la mufa de intrare Fac a nodului Mix Shader.
În nodul Attribute, la Name tastează Col_emit (numele dat stratului de culoare pentru vertecși).
În primul nod Emission schimbă culoarea la R 0.178, G 0.150, B 0.085 și la Strength tastează 1.000.
În al doilea nod Emission alege culoarea R 0.213, G 0.284, B 0.380 și la Strength tastează 2.000.
Am finalizat materialul pentru Fund_Ocean.
Selectează materialul Suprafata_Ocean și click pe butonul New din fereastra Properties, secțiunea Material sau din antetul ferestrei Node Editor. Redenumește materialul cu Suprafata_Ocean.
În fereastra Properties, secțiunea Material, înlocuiește nodul Diffuse cu un nod Mix Shader; în primul câmp Shader adaugă un nod Transparent BSDF, iar în al doilea – un nod Glass BSDF.
În nodul Transparent alege culoarea R 0.2, G 0.4, B 0.03 (poți face asta și prin conectarea unui nod RGB la mufa de intrare Color).
La nodul Glass setează Roughness la 0.900 și IOR la 1.333.
Adaugă un nod Layer Weight (apasă Shift + A și alege Input | Layer Weight), Conectează mufa de ieșire Facing a nodului la mufa de intrare Fac a nodului Mix Shader și setează la Blend valoarea 0.050.
Selectează nodul Mix Shader și apasă Shift + D pentru a-l duplica și mută / conectează nodul duplicat între nodul original și nodul Material Output.
Adaugă un nod Glossy (Shader | Glossy) și conectează nodul la a doua mufă de intrare Shader a nodului duplicat.
Adaugă un nod Fresnel (Input | Fresnel), conectează noul nod la mufa de intrare Fac a celui de al doilea nod Mix Shader și setează la IOR valoarea 1.333.
Selectează toate nodurile cu excepția nodului Material Output și apasă Crtl + G pentru a grupa nodurile.
Apasă tasta Tab pentru a ieși din grup și în fereastra cu proprietăți din dreapta (tasta N) redenumește grupul cu Apa_Ocean.
Realizarea spumei de pe valuri
Adaugă un nod Noise (Texture | Noise Texture) și un nod Voronoi (Texture | Voronoi Texture), apoi selectează nodurile și apasă Shift + D pentru a le face copii duplicat. Aranjează nodurile pe verticală, două câte două, sus nodurile Noise și dedesubt nodurile Voronoi.
La dreapta nodurilor pentru textură adaugă patru noduri ColorRamp (apasă Shift + A și alege Converter | ColorRamp) apoi apasă Shift + D pentru a face încă trei copii duplicat); așează nodurile tot pe verticală la dreapta primelor patru noduri. Conectează fiecare mufă de ieșire Color a nodurilor textură la mufa de intrare Fac a nodurilor ColorRamp corespunzătoare.
În primul nod Noise Texture, tastează la Scale valoarea 500.000, iar în al doilea 100.000. În primul nod Voronoi Texture, tastează la Scale valoarea 100.000 și în al doilea 90.000.
În primul și al patrulea nod ColorRamp alege interpolarea la B-Spline, iar în al doilea și al treilea la Ease.
Mută marcatorii de culoare ca în imaginea de mai jos.
Adaugă la stânga nodurilor textură un nod Texture Coordinate (Shift + A și Input | Texture Coordinate) și la dreapta lui un nod Mapping (Shift + A și Vector | Mapping). Conectează mufa de ieșire UV a nodului Texture Coordinate la mufa de intrare Vector a nodului Mapping apoi mufa de ieșire Vector a acestuia la mufele de intrare Vector ale celor patru noduri de tip textură.
Adaugă la dreapta primelor două noduri ColorRamp un nod Mix (Shift + A și Color | MixRGB), iar în nod alege tipul Blend la Subtract și valoarea pentru Fac la 1.000. Conectează mufele de ieșire Color ale primelor două noduri ColorRamp mufele de intrare Color1 și Color2 ale nodului Mix.
Selectează nodul Mix și apasă Shift + D pentru a duplica nodul de două ori. Mută nodurile duplicat sub nodul original, în dreptul nodurilor ColorRamp trei și patru; în primul nodul duplicat alege la tipul Blend opțiunea Multiply, iar în al doilea nod alege tipul Blend la Difference.
Conectează mufele de ieșire Color ale nodurilor ColorRamp trei și patru la mufele de intrare Color1 și Color2 ale nodului duplicat Multiply.
Conectează mufele de ieșire Alpha ale nodurilor ColorRamp trei și patru la mufele Color1 și Color2 ale nodului Difference.
Realizează încă o copie a unui nod Mix, setează tipul Blend la Lighten și la Fac alege valoarea 0.500. Conectează mufa de ieșire Color a nodului Multiply la mufa de intrare Color1 a nodului Lighten și mufa de ieșire Color a nodului Difference la mufa Color2 a nodului Lighten.
Adaugă un nod Invert (Shift + A și Color | Invert) și mută / conectează nodul între nodurile Difference și Lighten.
Adaugă la dreapta nodurilor în partea de sus un nod nou ColorRamp, conectează mufa de ieșire din Lighten la mufa de intrare Fac a noului nod, apoi în nod mută marcatorul alb la mijloc (Pos 0.500) și marcatorul negru un sfert la dreapta (Pos 0.25).
La dreapta nodului ColorRamp adaugă un nod nou Mix, setează tipul Blend la Subtract și în nod alege la Fac valoarea 1.00, apoi conectează mufa de ieșire Color a nodului ColorRamp la mufa de intrare Color1 și mufa de ieșire a primului nod Subtract la mufa de intrare Color2 a noului nod.
Adaugă la dreapta nodurilor un nod RGB to BW (Shift + A și Converter | RGB to BW), un nod Bump (Shift + A și Vector | Bump) și un nod Diffuse BSDF (Shift + A și Shader | Diffuse BSDF).
Conectează mufa de ieșire a ultimului nod Subtract la nodul RGB to BW și mufa de ieșire din acesta la mufa de intrare Height a nodului Bump și mufa de ieșire Normal din acesta la mufa de intrare Normal a nodului Diffuse. În nodul Bump alege valoarea Strength la 0.010.
Selectează toate nodurile (cu excepția nodului Material Output și a grupului creat anterior) și apasă Crtl + G.
În grup, trage mufa de ieșire Color a ultimului nod Subtract în nodul Group Output. Repetă operațiunea și cu mufa de ieșire BSDF a nodului Diffuse și apasă tasta Tab pentru a ieși din grup.
Redenumește noul grup cu Spuma.
Crearea șablonului pentru locația spumei
Trebuie găsită o modalitate de a limita prezența spumei doar pe coama valurilor (în partea de sus a valurilor).
Adaugă mai sus în fereastra Node Editor două noduri textură: un nod Gradient (apasă Shift + A și alege Texture | Gradient Texture) și un nod Voronoi (apasă Shift + A | Texture | Voronoi Texture), selectează nodurile și apasă Shift + D pentru a le duplica. Mută nodurile pe coloană, cu nodurile Gradient deasupra nodurilor Voronoi.
La nodurile Gradient alege tipul la Easing, iar la nodurile Voronoi alege valoarea Scale la primul nod 250.000 și la al doilea 50.000.
Adaugă la stânga nodurilor textură trei noduri Mapping (apasă Shift + A și alege Vector | Mapping, apoi apasă Shift + D pentru încă două copii duplicat).
Adaugă la stânga nodurilor Mapping un nod Texture Coordinate (apasă Shift + A și alege Input | Texture Coordinate) și deasupra lui un nod Geometry (apasă Shift + A și alege Input | Geometry).
Conectează mufa de ieșire Normal a nodului Geometry la mufa de intrare Vector a primului nod Mapping.
Conectează mufa de ieșire Position a nodului Geometry la mufa de intrare Vector a celui de al doilea nod Mapping.
Apoi conectează mufa de ieșire UV a nodului Texture Coordinate la mufa de intrare Vector a celui deal treilea nod Mapping.
În al doilea nod Mapping, schimbă locația pentru axa X la 0.500 și valoarea rotirii pe axa Y la 90°.
Conectează mufa de ieșire Vector a primului nod Mapping la mufa de intrare Vector a primului nod Gradient, mufa de ieșire Vector a celui de al doilea nod Mapping la mufa de intrare Vector a celui de al doilea nod Gradient și mufa de ieșire Vector a celui de al treilea nod Mapping la mufele de intrare Vector ale celor două noduri Voronoi.
Adaugă la dreapta nodurilor un nod ColorRamp (apasă Shift + A și alege Converter | ColorRamp) și conectează mufa de ieșire Color a ultimului nod Voronoi la mufa de intrare Fac; în nod setează interpolarea la B-Spline.
Tot în nodul ColorRamp, click pe butonul Add (semnul +) pentru a adăuga un marcator nou de culoare la mijloc. Modifică culoarea marcatorului la negru și mută marcatorul la stânga, foarte aproape de primul marcator negru.
Deasupra nodului ColorRamp adaugă un nod Math (apasă Shift +A și alege Converter | Math) și setează operația din nod la Multiply, apoi conectează mufa de ieșire Color a celui de al doilea nod Gradient la prma mufă de intrare Value a nodului Math (Multiply).
La dreapta nodului Multiply și puțin mai sus adaugă un nod Mix (apasă Shift + A, apoi Color | MixRGB), setează în nod tipul Blend la Difference și valoarea pentru Fac la 1.00. Conectează mufa de ieșire Color a primului nod Gradient la mufa de intrare Color1 a noului nod și mufa de ieșire Value a nodului Multiply la mufa de intrare Color2 a noului nod.
Apasă Shift + D pentru a face o copie duplicat a nodului Mix (Difference), setează tipul Blend la Subtract și conectează mufa de ieșire Color a nodului ColorRamp la mufele de intrare Color2 și Fac ale noului nod. Conectează mufa de ieșire Color a primului nod Voronoi la mufa de intrare Color1 a noului nod.
Adaugă la dreapta nodului Difference un nod ColorRamp, conectează mufa de ieșire a nodului Difference la mufa de intrare Fac, apoi în nod mută marcatorul alb două treimi la stânga (Pos 0.33).
Selectează nodul Difference și apasă Shift + D și mută noul nod la dreapta; în nod setează tipul Blend la Burn și conectează mufa de ieșire Color a ultimului nod ColorRamp la mufa de intrare Color1. Conectează mufa de ieșire a nodului Subtract la mufa de intrare Color2 a nodului nou creat.
Selectează nodurile nou create și apasă Crtl + G pentru a le grupa. Conectează mufa de ieșire Color a nodului Burn la nodul Group Output. Apasă tasta Tab pentru a ieși din grup și redenumește grupul cu Locatie_Spuma.
Conectarea grupurilor de noduri
Pentru a construi materialul final trebuie conectate nodurile între ele.
Adaugă un nod Mix Shader (apasă Shift + A și alege Shader | Mix Shader). Conectează mufa de ieșire a nodului la mufa de intrare Surface a nodului Material Output.
Conectează mufa de ieșire Shader a grupului Apa_Ocean la prima mufă de intrare Shader a nodului Mix Shader. Apoi conectează mufa de ieșire BSDF a grupului Spuma la a doua mufă de intrare Shader a nodului Mix Shader.
Adaugă două noduri MixRGB și la primul nod setează tipul Blend la Multiply și valoarea Fac la 0.550. La al doilea nod alege tipul Blend la Burn și valoarea Fac la 0.200.
Conectează mufa de ieșire Color a grupului Locatie_Spuma la mufa de intrare Color1 a nodului Multiply și mufa de ieșire Color a grupului Spuma la cele două mufe de intrare Color2 ale nodurilor Multiply și Burn.
Conectează mufa de ieșire a nodului Multiply la mufa de intrare Color1 a nodului Burn.
Conectează mufa de ieșire a nodului Burn la mufa de intrare Fac a nodului Mix Shader.
Rezumat
Construirea acestui material, care pare destul de complexă, poate fi înțeleasă prin împărțirea întregului proces în trei etape corespunzătoare celor trei grupuri de noduri.
Prima etapă
Am creat apa oceanului prin amestecarea unui nod Glass cu un nod Transparent folosind valoarea Facing a nodului Layer Weight, apoi un nod Glossy modificat de indicele de refracție al apei (valoarea IOR din nodul Fresnel, care pentru apa la 20° C este 1.333). Pe scurt, acest lucru înseamnă că apa oceanului reflectă mediul înconjurător, dar fețele care sunt îndreptate spre obiectul Camera (factorul Facing), sunt transparente și lasă să se vadă mediul "subacvatic". Foarte importante sunt planul Fund_Ocean, folosit pentru a mima volumul apei, perspectiva de sub apă și lumina emisă pentru a îmbunătăți efectul soarelui care este reflectat de suprafața oceanului pe obiectele care plutesc în ocean.
Etapa a doua
Am realizat materialul pentru spumă, un nod Diffuse de culoare albă. De fapt, nodul pentru spumă este format din partea de spumă albă și din conturul în formă de dantelă realizat cu texturile procedurale.
Etapa a treia
Am creat grupul de noduri care stabilește locația spumei. În lumea reală, spuma este creată în principal pe crestele valurilor, comportându-se ca un șablon cu diferite nuanțe de gri. În principal, textura cu diferite nuanțe de gri este mapată pe poziția vertecșilor și multiplicată pe coordonatele Normal ale suprafeței oceanului, care, fiind create de modificatorul Ocean, se modifică mereu. Deci, doar valurile care se ridică vor afișa spuma pe creste. Efectul a fost diminuat și realizat aleatoriu, pentru ca spuma să apară în unele locuri și pe restul suprafeței. Acest lucru funcționează deopotrivă la imaginile statice și în animație. În imaginea de mai jos poate fi văzut rezultatul "măștii" alb-negru folosită ca șablon pentru locația spumei.
Alte informații
Modificatorul Blender Ocean poate crea propriul efect de spumă, generat cu ajutorul culorilor de pe vertecși și pregătit (cu Bake) cu o serie de imagini (cadre) salvate într-un director. Aceste imagini sunt mapate automat pe suprafață și pot fi folosite ca măști șablon în locul grupului de noduri Locate_Spuma. Mai multe detalii despre modificatorul Ocean pot fi găsite în documentația Wiki, pe pagina https://docs.blender.org/manual/en/dev/modeling/modifiers/simulate/ocean.html.