Crearea unui model pentru udk în Maya

Alo
Aș dori să vă spun o lecție de bază despre crearea modelelor pentru Unreal Engine 3.

Unități de măsură
Lucrați mereu în centimetri, este mai ușor să trăiești, serios :)

Buget și optimizare
Să ne uităm la următoarea ilustrație:

În figura superioară, toate marginile modelului sunt rigide, pe partea inferioară - moale.
De ce o astfel de diferență în numărul de vârfuri?
Deoarece muchiile dure adaugă noduri. Un Edge Hard +2 Vertex. În general, ele nu adaugă nici măcar noduri în câmp pentru înregistrarea informațiilor suplimentare.

Acum, să ne uităm la această ilustrație:

Aici, în ambele cazuri, toate coastele sunt moi, iar fusurile sunt cusute.
Dar, pe prima pe margine vedem 8 vertexe, iar pe a doua - 4. Aici pentru tine, de asemenea, o diferență 16-12.
Cutoff pe UV adaugă de asemenea vârfuri. O tăietură pe marginea UV este +2 vertex.
În plus, nu uitați de cel de-al doilea canal UV de pe hartă, în cazul unei performanțe necorespunzătoare, acesta va trage și pe lângă octeți. Și dacă modelul este mare? Cât de multe informații suplimentare suplimentare vor fi scrise în fișier?
Apropo, nu veți vedea aceste modificări în fișierul * .ase, ele vor apărea numai după importul în motor. Proprietarii codului sursă ar dori să verifice FStaticMeshRenderData :: Build și USkeletalMesh :: CreateSkinningStreams pentru o introducere mai detaliată a problemei.

În acest moment, setarea scenei nu a fost terminată încă. Să ne imaginăm ce vrem să obținem în cele din urmă.
Va fi o recuzită anumită, cu un vas, o coliziune, o hartă de lumină și un set complet de texturi (difuz, normal, specular).
Deschideți Hypershade și creați un Phong simplu în el, spuneți-i ceva, am numit Material. În fila 2DTexcuri, găsim și adăugăm 4 noduri de fișiere la material:

Noi le numim în consecință - Diffuse, Normal, Specular și Lightmap.
(Dacă modelul dvs. are de asemenea elemente cu un canal alfa, atunci poate adăugați un nod OpacityMask)

Veți obține acest design:

Totul, piesa de prelucrat este gata, salvată :) Vă sfătuiesc să salvați această scenă într-un fișier separat ca fiind unul inițial pentru a lucra la astfel de obiecte.

Creați obiectul simplu.

Deoarece obiectul este geniu și auto-suficient în esența sa, nu trebuie să fie modificat deloc.
Poate că chiar vei desena texturi pe ea și o vei aloca nodurilor corespunzătoare din material.
Dar ne-am dorit mai multe nave, coliziune și lightmap!


Dacă știți și înțelegeți ce este LOD, cred că nu veți avea probleme cu crearea sa.
În anril există doar un singur lucru de luat în considerare - în mod prestabilit, distanțele de comutare ale bărcilor sunt setate astfel încât prima nu are timp să dispară înainte de a doua apare. De aici puteți observa efectul strobării. Încercați să vă asigurați că poligoanele lojilor nu se află în aceleași avioane. Treceți-le puțin sau scalați modelele în sine.

Putem crea o ciocnire din același cub. Duplicați-l, sunați la UCX_01 și ascundeți-l într-un anumit strat al PhysL.

Pentru obiectele mai complexe, regulile pentru crearea coliziunilor nu sunt mult mai complicate:
1 Denumirea UCX_ *, unde * - numerotarea sau numele în litere în limba engleză.
2 Toate elementele de coliziune trebuie să fie închise (fără găuri) și suprafețe convexe.
3 Nu puteți combina elementele de coliziune într-o singură plasă, ele trebuie doar să fie evidențiate în momentul exportării ochiului de plasă, dacă faceți ExportSelection sau doar să fiți prezenți în scena dacă îl exportați complet.
4 Nu este permis ca elementele să se intersecteze, ele pot doar să se alăture.
5 Desigur, încercați să evitați un conflict dificil.
6 Materialul de plasă în sine sau unul din materialele sale ar trebui să fie atribuit elementelor de coliziune.
7 Și unul de la mine - nu face niciodată elementele unei coliziuni o scară negativă. Nu FreezeTransform vă va salva. Elementul va fi întotdeauna corupt după importul în motor.

Acum suntem pe cel de-al doilea canal UV, unde va fi localizata harta lightmap. Și după cum puteți vedea, nu există textura.

Din punctul de vedere al optimizărilor descrise mai sus în ceea ce privește numărul de vârfuri, această diagramă este optimă, dar inacceptabilă.
De ce așa.
De exemplu, ne așteptăm să folosim un 32x32 lightmap pe acest obiect.
Eu folosesc pixeli din producția mea. Păi, pot să împărtășesc.

Restul nu este dificil. Faceți o cartografiere a texturii fără a filtra și apelați la pixeli.
Redresați minorul cât mai mult posibil, umplând spațiul.
Am facut acest lucru:

Acum facem această operație și cu LOD.

De ce este imposibil altfel? De ce să fie clar pe pixelmap?
Deoarece harta lightmap este arsă de acești pixeli.
Dacă cochilii nu se află clar în pixeli, iar distanța dintre ele este mai mică de 2 pixeli sau se intersectează, veți obține în mod constant probleme incontestabile cu iluminarea.
Care sunt dungile sau spoturile luminoase sau întunecate, unde nu ar trebui să fie. Inițial, doriți să rezolvați problema crescând dimensiunea hărții de lumină în motor, însă nu 32 și 128 de exemplu.
Da, aceasta este calea de ieșire, dar când ajungeți la scena în mărimea a câteva mii de obiecte, unde nu veți avea destui 5 megabyți suplimentari pentru a opri ceva de la mipmapitsya constant, în primul rând vă veți aminti de hărțile de lumină.

Vă mulțumesc pentru atenție.

Mulțumiri speciale lui Alexander Makarenko pentru informații suplimentare.

Articole similare