Selectarea conturului unui obiect în ue4

Selectarea conturului unui obiect în ue4

În acest articol, vă voi arăta cum să creați o evidențiere a conturului în UE4. De obicei, dezvoltatorii sunt utilizați pentru acest lucru în două moduri diferite:

  • Răsturnați grila de două ori. În acest caz, se face mai întâi o rețea (cu material standard) și apoi cea de-a doua (cu o scară ușor mărită și material de emisie)
  • Se utilizează algoritmul de recunoaștere a conturului. Este definit ca un material de post-procesare

Pașii de bază

Realizarea efectului de contur al conturului sub formă de material de post-procesare are loc în mai multe etape:







  • Creați un material postprocesare care va selecta conturul obiectelor cu opțiunea Render Custom Depth activată.
  • Adăugați acest material de postprocesare în lista Blendables, care se află în parametrii blocului Post Volume Process.
  • Activarea parametrului Render Custom Depth pentru toate rețelele scheletice și statice pentru care doriți să selectați un contur

Harta hărților

În UE4, există o funcție excelentă care vă permite să faceți grile individuale într-o hartă adâncime separată și apoi să le utilizați în materiale. Această hartă de adâncime conține informații despre distanța dintre fiecare pixel - atât în ​​coordonatele lumii, cât și în câmpul vizual al camerei. O hartă adâncă tipică arată astfel:

Selectarea conturului unui obiect în ue4

Harta noastră de adâncime arată similară, cu excepția faptului că afișează numai obiecte care au opțiunea "Render Custom Depth" activată:

Selectarea conturului unui obiect în ue4

Crearea materialului

Cea mai dificilă etapă. Vom crea un material în care va fi implementat operatorul lui Sobel, care se va prăbuși cu o hartă de adâncime personalizată. Cu alte cuvinte, aplicăm un filtru de detectare a conturului în hartă adâncime personalizată.

Începem cu algoritmul de convoluție. Se bazează pe o matematică destul de sofisticată, dar, de fapt, totul se rezumă la câțiva pași simpli

  • Luați pixelul P
  • Luăm 8 pixeli de PN adiacenți pixelului P
  • Înmulțiți valorile în pixeli P și PN cu ajutorul valorilor din kernelul de convoluție (adică, efectuând nouă multiplicări)
  • Adăugați valorile obținute
  • Returnați rezultatul

Selectarea conturului unui obiect în ue4

Mai întâi trebuie să utilizați o hartă de adâncime. Acest lucru se face simplu: adăugați nodul Textură de scenă și conectați-l la materialul Emissive Color. De asemenea, setați setarea ID a Texturii Scenei la CustomDepth.

Selectarea conturului unui obiect în ue4






Acum, să folosim pixelii adiacenți. Pentru a face acest lucru, puteți utiliza parametrul UVs în nodul Textură de scenă. Dar problema este că parametrii UV funcționează în coordonatele de textură, adică utilizați valorile de la "0,0" (colțul din stânga sus al texturii) la "1,1" (colțul din dreapta jos al texturii). Prin urmare, trebuie să luăm valoarea inversată a înălțimii și lățimii texturii, le înmulțește cu offset de la centrul celulei (-1, -1) și se adaugă apoi la UV coordonatele pixelului curent. Deci, vom selecta pixelul din stânga sus.

Selectarea conturului unui obiect în ue4

Acum facem același lucru pentru ceilalți șapte pixeli adiacenți. Ca rezultat, calculul offsetului pentru toți cei opt pixeli adiacenți va arăta astfel:

Selectarea conturului unui obiect în ue4

Deci, avem un set de parametri UV pentru toți pixelii adiacenți, deci acum puteți utiliza datele din harta adâncilor personalizate. Am creat o funcție simplă de material: ca parametri de intrare, este nevoie de coordonate UV și apoi returnează valoarea pixelului prelucrat.

Selectarea conturului unui obiect în ue4

Dacă utilizați această funcție pentru a procesa date din pixeli adiacenți, vom avea, de fapt, toate datele necesare pentru a recunoaște conturul. Acum, să creăm o altă funcție pentru materialul care se va convexe.

Selectarea conturului unui obiect în ue4

Așa că am adunat toate piesele algoritmului. Acum rămâne doar să le combinăm în materialul final.

Selectarea conturului unui obiect în ue4

În operatorul Sobel, de fapt, sunt implicate două funcții de convoluție: verticală și orizontală. Probabil ați observat că singura diferență dintre ele este datele de intrare de pe nucleul de convoluție.

Acum să combinăm aceste două valori.

NOTĂ: Asigurați-vă că materialul este în domeniul Post Process, mai degrabă decât suprafața (adică «materiale de domeniu», acest parametru, care este configurat, pentru care va fi utilizat materialul). Acest lucru poate fi schimbat în proprietățile materialului.

Reglarea scenei

Acum că materialul este gata, trebuie să-l adăugăm în lista de efecte post-procesare a scenei. Selectați blocul de postare a volumului de proces din scenă și găsiți elementul Blendables. Adăugați o nouă componentă în lista Blendables și apoi selectați materialul pe care l-am creat din listă. Dacă nu există o unitate post-procesare în scenă, creați-o. De asemenea, asigurați-vă că blocul Post Process are proprietatea Unbound setat la "true". În caz contrar, jucătorul va vedea numai efectul șirului dacă acesta se află în interiorul volumului de postare a procesului.

Selectarea conturului unui obiect în ue4

Pentru a verifica rezultatul, puneți o grilă pe scenă și activați parametrul Render Custom Depth.

Am înființat scena, astfel încât efectul de linie va apărea în plasa statică numai în cazul în care un jucător va aduce la vederea ei. Am decis să folosesc șablonul pentru FPS. În plus, am adăugat funcția Trace la bluetooth MyCharacter. Se numește de un cronometru care bate la fiecare 0,1 secunde și verifică dacă jucătorul se uită la grila statică. Dacă pare, parametrul Render Custom Depth este setat la "true". În cazul în care playerul nu se îndreaptă spre rețea, valoarea din variabila Render Custom Depth se modifică la "false". Aflați cum funcționează toate acestea, puteți găsi în fișier, un link la care puteți găsi mai jos, în secțiunea "Descărcări".

  • Aici puteți descărca materialul cu efectul selectării conturului, creat conform instrucțiunilor din acest manual.
  • Aici puteți descărca un proiect care utilizează acest efect.

Originalul poate fi citit aici.







Trimiteți-le prietenilor: