Lucrul cu Reflecții avansate în UDK

În acest tutorial vom învăța cum să setăm un material Dynamic (în timp real) și un material de reflecție statică în Unreal Development Kit și să creăm un comutator de parametri pentru a comuta între reflexiile dinamice și statice sau invers în UDK. Pentru tutorial voi folosi versiunea februarie 2011 a UDK.


Descărcați imagini de înaltă rezoluție pentru acest tutorial.



Reflecție în UDK

În UDK, Reflecțiile nu sunt altceva decât medii capturate și proiectate invers pe suprafața obiectelor și sunt capturate prin utilizarea actorilor Screencapture în UDK. Trebuie să așezați acest actor pentru a captura Scena sau mediul din hartă și pentru a-l stoca într-un format de textură specială denumit Render to Target, această textura trebuie să fie în browserul de conținut. Ar putea fi o textura in timp real sau statica, care poate fi folosita intr-un material si poate fi reglata corespunzator pentru a obtine reflectii asupra anumitor plase precum Metal sau Glass.

Pentru a înțelege mai bine și pentru a funcționa Actorul de reflecție în mod corespunzător, trebuie să avem o scenă sau o hartă pe deplin dezvoltate, astfel încât să surprindă obiectele din mediul înconjurător. Încărcați UDK și deschideți harta "VCTF-Necropolis.udk" (sau orice hartă aleasă de dvs.), dar asigurați-vă că harta dvs. este încărcată cu o mulțime de texturi de obiecte și iluminare, ar trebui să fie în folderul UT3 din directorul instalat al UDK, acesta este UDKGame \ Conținut \ Hărți \ UT3. Așa că pregătește harta.


Mergi la Vizualizați-> ferestrele browserului și apoi cursuri de actori. Să mergem doar la fereastra Actor Classes cu fereastra browserului Content, astfel încât să putem merge la fereastra Actor Classes direct din fereastra browserului Content. Pentru a face acest lucru, faceți clic pe meniul Docking chiar lângă opțiunea de meniu Fișier și faceți clic pe Docked. După ce faceți clic pe opțiunea de andocare, fereastra ar trebui să dispară și acum o putem încărca direct din browserul de conținut.


În fereastra Actor Classes, accesați Uncategorized-> SceneCaptureCubeMapActor Selectați și trageți-o și plasați-o în scenă, la fel ca în imaginea de mai jos. Doar asigurați-vă că plasați acest actor chiar în centrul unor obiecte cu un iluminat bun, pentru a obține o reflexie plăcută. Sau altfel ați putea vedea niște patch-uri întunecate pe acest actor sau o sferă de culoare neagră. Acest actor nu este vizibil în joc atunci când jucăm această hartă.

După ce trageți și plasați actorul de mai sus în scenă, veți obține un obiect de sferă neagră sau neagră în scenă. Este pentru captarea mediului și va reflecta ca o oglindă. Acum, însă, culoarea este negru, deoarece acest actor stochează toată reflecția într-o hartă de textură specială numită Scene Render to Target, care este dinamică și nu este încă atribuită. Să creăm textură dinamică atunci.


Accesați browserul de conținut și creați un nou pachet numit "Advanced_Reflection" (sau orice nume vă place.) Faceți clic dreapta în Browserul de conținut și creați un nou TextureRenderTargetCube. Diferența dintre Target 2d și Cube Target este că Cube va captura toate Axele mediului și va stoca în format Cubemap. În cazul în care obiectivul 2d este de a capta doar o parte a feței, ceea ce este bun pentru o suprafață de suprafață cu o singură latură, cum ar fi o plasă de sol sau podea.

După ce ați făcut clic pe noul TextureRenderTargetCube din opțiunile pentru clic dreapta, veți obține o fereastră exact ca în imagine pentru a seta rezoluția texturii. Asigurați-vă că pentru a seta rezoluția cât mai scăzut posibil, altfel s-ar putea scurge o mulțime de memorie, dacă îl utilizați pentru o scenă de timp real.Dar pentru moment, vom seta la 1024 pentru a captura de mare res O textură de reflecție statică și apoi o vom reveni la 256 mai târziu. Nu uitați să denumiți această textură ca "RT_reflection". Apăsați OK și salvați pachetul. După ce apăsați OK, veți vedea o textură verde în browserul de conținut care este textura dvs. dinamică pe care am denumit RT_reflection în Browserul de conținut.

Acum, când avem textura dinamică pregătită, să o aplicăm pe scenariul de captare Actor Cubemap în scenă.


Selectați textura dinamică nou creată numită RT_reflection din Browserul de conținut și reveniți acum la scenă și selectați SceneCaptureCubeMap Actor (sfera neagră) și apăsați pe F4 pentru a deschide proprietățile. Doar restrângeți actorul pentru capturarea scenei-> Captură scenă-> Captură proprietăți și atribuiți țintă textura făcând clic pe săgeata verde chiar lângă ea. Veți obține o jumătate de reflecție și o jumătate de negru pe sferă, pentru a face tot ce aveți nevoie pentru a seta intervalul care este prin setarea valorii FarPlane 999999 (sau cât de mare poți) în imaginea de mai sus. De asemenea, bifați / bifați funcția Enable Fog and Enable Post (Activare postare) dacă aveți vreo scenă, sau bifați / bifați valoarea Use Scenic Main Settings Settings. Am activat toate valorile evidențiate în imaginea de mai sus.

Acum, dacă deschideți browserul de conținut, veți vedea textul verde în browserul de conținut, care arată câteva informații despre textura și că informațiile despre textura sunt reflectarea dinamică a scenei dvs. Cu această textura puteți crea un material și crea o nouă textură statică. Să stabilim un material, dar trebuie să avem o plasă statică pentru a aplica acest material.


Pentru acest tutorial am creat două ochiuri geometrice simple care sunt o sferă și o cilindru, după cum se arată mai sus. Voi folosi Cilindrul pentru reflecții dinamice în timp real și Sfera reflecțiilor statice. Deci, să creăm o textură de reflecție statică acum.


Faceți clic dreapta pe acea textură dinamică din Browserul de conținut și apoi faceți clic pe Creare textura statică nouă. O fereastră va afișa o fereastră pop-up pentru a desemna noua textură statică pe care o va crea. Doar denumiți orice doriți, dar pentru acest tutorial o voi numi "ST_reflection" și după cum se arată mai sus în câmpul Grouping. Pur și simplu tastați "Texturi", așa că va pune noua textură într-o subcategorie numită Texturi de pachet Advanced_reflection. După ce apăsați OK, va dura ceva timp pentru a crea textura Static Cubemap în Browserul de conținut, așteptați ceva timp și apoi salvați pachetul.


După crearea textului Cubemap static numit ST_reflection, ar trebui să aveți și alte câteva texturi cu același nume, doar să nu le ștergeți, deoarece este o textură de susținere care are toate cele 6 laturi ale informațiilor de reflecție. Aceasta este de la minus X la pozitiv X de exemplu (sufixat ca Neg și Pos) compilați în textură ST_reflection. Acum, că avem texturi dinamice și statice care sunt RT_reflection și ST_reflection, este timpul să vă creați materialul.


Faceți clic dreapta în Browserul de conținut și creați un material nou numit "Reflecție" (sau orice nume doriți).


Faceți dublu clic pe materialul nou creat, care este materialul Reflecție. Configurarea materialului Reflection în fereastra editorului de materiale este ușor, dar aici voi stabili două tipuri de reflecție. Aceasta este o reflecție dinamică și statică, după cum puteți vedea configurația din imaginea de mai sus. Acest lucru este util când doriți reflecții statice asupra anumitor pereți, plafoane sau uneori pe teren atunci când creați un material de instanță sau un copil al acestui material pe care o vom face mai târziu. Deci, să setăm materialul de reflecție atât pentru statică, cât și pentru dinamică.

Următoarea metodă este doar configurarea reflexiei dinamice și statice cu un parametru Switch pentru a activa sau a dezactiva tipul de reflexie dorit în instanța materială. Puteți să-l utilizați cu configurația actuală a materialelor sau să îl amestecați cu propriul Diffused Metal, Glass sau orice material dorit.

Setarea dinamică a materialului: În imaginea de mai sus, configurația dinamică are trei conexiuni și trece prin ReflectionVector> Transforms> RT_reflection. Să setăm mai întâi reflecția dinamică, să importăm textura dinamică (RT_reflection) în fereastra Material Editor și să căutăm expresiile Transform și ReflectionVector. Apoi conectați nodul vectorului de reflecție în nodul vectorial de transformare, apoi conectați în cele din urmă nodul Vector transform în UV-urile nodului de textură, adică textura RT_reflection. Selectați toate nodurile și comentați Dyanmic_reflection (Faceți clic dreapta și Noul comentariu) apoi faceți o copie a acestei întregi setări de reflexie dinamică.

Setarea materialelor statice: Setarea pentru materialul static este aproape aceeași, cu excepția nodului pentru proba textura care este textura RT_Reflection. Înlocuiți-l cu textura ST_reflection a setării Dynamic_reflection copiate. Schimbați comentariul din Dynamic_reflection la Static_reflection, la fel ca și configurația din imaginea de mai sus.


Acum avem nevoie de un Switch pentru a trece de la Dynamic la Static sau invers. Pentru a face acest lucru, căutați doar parametrul Switch static în fereastra Expresie material și trageți-l în ecranul dvs. sau doar faceți clic dreapta pe editorul de materiale și apoi selectați FunctionUtility-> Comutator static nou. Conectați opțiunea ST_reflection la Fals și pe RT_reflection la True pentru acest comutator. Acum puteți conecta acest switch la canalul Diffuse sau Emissive sau puteți chiar să îl amestecați cu setarea curentă a materialului utilizând nodul expresiei Lerp (interpolare liniară).

Parametrul comutatorului static: Acest comutator are două intrări, TRUE și FALSE. Deși este explicativă, dar va face doar FALSE ca valoare implicită și valoarea de intrare True este ignorată. Deci, pentru a schimba acest lucru, faceți clic pe parametrul Switch Static și apoi pe fereastra de proprietăți de mai jos, verificați sau activați Valoarea implicită, ca în imaginea de mai sus și dați-i un nume de Parametru cum ar fi Static / Dinamic. Acum salvați și închideți fereastra editorului de materiale.


Mergeți la Browserul de conținut și faceți clic dreapta pe acest material de reflecție nou creat și faceți clic pe Creare instanță material nou (constant). Apoi, va apărea o fereastră pentru a numi noua instanță de material. Doar denumiți-o "Static_reflection" și urmați din nou procesul de mai sus, dar acest nume îl numiți "Dynamic_reflection" pentru cea de-a doua instanță materială.


Acum aveți două instanțe ale materialului din browserul de conținut, Faceți dublu clic pe ambele instanțe materiale.
Ca și în imaginea de mai sus, pe partea stângă este materialul static, iar în dreapta este materialul dinamic. În cadrul grupurilor de parametri există o casetă de selectare Statică / Dinamică, asigurați-vă că caseta de selectare stânga este verificată pentru materialul static. Și caseta de validare din dreapta este verificată pentru materialul dinamic așa cum se arată în imaginile de mai sus. Acest parametru Static / Dynamic este creat doar din cauza comutării pe care am creat-o mai devreme în fereastra editorului Material. După ce ați terminat setările, acum este momentul să alocați aceste materiale rețelelor noastre statice. Deci, închideți doar ferestrele editorului instanțelor Material.


Mergeți la Browserul de conținut și căutați un ochi de cilindru și sferă pe care l-am creat pentru acest tutorial. Aplicați materialul Dinamic la Cilindru și la materialul Static la plasa Sphere, așa cum se arată în imaginea de mai sus. Asta e! Ești aproape gata, plasați acum aceste două ochiuri în hartă.


Plasați plasa de cilindru chiar deasupra actorului de reflecție în timp real și plasați plasa de sferă oriunde doriți sau o puteți așeza lângă cilindru, una lângă alta. Acum, jucați testul în Editorul dvs..


După cum puteți vedea în imaginea de mai sus. Dacă te uiți la cilindru, vei vedea o reflectare distorsionată a personajului tău, datorită curburii cilindrului. Cu cât suprafața este mai ușoară, cu atât mai bine va fi reflexia, dar nu vor exista modificări asupra reflectării sferei. Ceea ce pare încă real, așa că este o modalitate bună de a reflecta astfel de falsuri și, de asemenea, să optimizați. Dynamic Reflecțiile în timp real sunt folosite foarte rar și utilizează o mulțime de procesoare GPU și CPU pentru a face fiecare cadru. Fii atent cu actorul de reflecție în timp real și cu setările lui, UDK s-ar putea prăbuși adesea dacă faci modificări în mod constant la actorul de reflecție în timp real, care este actorul de captare a scenei. Asigurați-vă că salvați fiecare pas sau cu orice modificări pe care le faceți. Încercați să jucați în portul de vizualizare de fiecare dată și efectuați modificări în consecință pentru a obține efectul de dorință.


Concluzie:

Utilizarea reflecțiilor dinamice în timp real într-o astfel de hartă uriașă, cu o scenă exterioară mare sau cu un mediu înconjurător, vă va scurge memoria și poate chiar să vă prăbușească mult. Deci, folosiți-o cu înțelepciune și eficiență. Dynamic Reflection sunt adesea folosite într-o hartă interioară, care are seturi mici de seturi cu o mulțime de oglinzi care reflectă interioare (cum ar fi uși de oglindă și ferestre sau metale Chrome.) Dar puteți falsifica aceste reflecții folosind o simplă comutare la reflecțiile statice, care este o modalitate inteligentă și mai bună de a face acest lucru.

Vă mulțumim că ați citit și că aveți o zi minunată!


Am publicat câteva tutoriale legate de care ați putea fi, de asemenea, interesați:

postări asemănatoare
  • Sfat rapid: optimizarea texturilor în kitul de dezvoltare unreal
  • Sfat rapid: o introducere în cartografiere ușoară în UDK
  • Un ghid cuprinzător pentru începători la UDK
  • Maya la UDK: Importul de mese statice folosind ActorX & FBX
  • Speedtree la UDK: Crearea unui copac de palmier în Speedtree și importul în UDK