Unity generează mipmap-uri proaste, ceea ce face ca terenurile voxel să arate rău (Dezvoltarea jocurilor, Unitate, Randare, Voxeli)

Tudvari a intrebat.
a intrebat.

Este doar un teren de pământ cu blocuri de iarbă pe partea de sus. (care sunt doar blocuri de pământ cu partea superioară verde.)

Am prelevat o hartă de înălțime a unui teren Unity și am construit un teren voxel pe baza acestuia, pe care l-am împărțit în bucăți, ale căror ochiuri au fost apoi combinate.

Din păcate mipmaps generate sunt proaste, schimbarea mipmapelor este ușor de observat: mai întâi se modifică nuanța de verde se schimbă, apoi devine în totalitate de culoare murdară.

Comentarii

  • Există mai multe modalități de a crea terenuri de tip blocky în Unity. S-ar putea să primești răspunsuri mai bune dacă ne spui cum l-ai implementat. Este un activ al unei terțe părți? Ți-ai creat propria ta creație? Ați modificat sistemul de teren Unity pentru a face acest lucru?-  > Por Philipp.
  • @Philipp Am făcut o buclă prin harta de înălțime a terenului Unity și, pe baza înălțimii, am creat coloane din cuburi de unități. Apoi am creat bucăți din cuburile unitare, iar apoi am combinat cuburile unitare ale bucăților într-o singură plasă.-  > Por Tudvari.
  • Deci vrei să spui că tot mediul pe care îl vedem în acea captură de ecran este o singură plasă?  > Por Philipp.
  • Ar putea fi o problemă de mipmapping.-  > Por user253751.
  • @Philipp Nu, câteva sute de mesh-uri. Harta conține milioane de cuburi, dar harta este împărțită în mai multe XYZ, ale căror cuburi sunt combinate, astfel că 1 bucată = 1 mesh.-  > Por Tudvari.
1 răspunsuri
Philipp

Problema pare a fi că Unity generează hărți mip din textura ta fără a lua în considerare „granițele celulelor” din texturile tale (cum ar putea în etapa de import a texturii când încă nu știe cum vei configura hărțile UV?). Astfel, părțile maro ale texturilor se amestecă cu cele verzi.

O soluție rapidă și murdară ar fi să dezactivați generarea de hărți mip, dar acest lucru va duce probabil la o penalizare a performanței (iar într-o scenă ca aceasta aveți nevoie de orice performanță pe care o puteți obține) și la alte tipuri de artefacte vizuale.

Așadar, o soluție mai bună ar putea fi utilizarea a trei imagini de textură separate – una pentru părțile laterale ale cuburilor, una pentru partea superioară și una pentru partea inferioară. Acest lucru va împiedica algoritmul de generare mipmap să amestece aceste texturi.

Comentarii

  • Este posibil acest lucru în Unity sau trebuie să fac un cub într-un software de modelare și să îl texturizez cu 3 fișiere de textură diferite?  > Por Tudvari.
  • @Tudvari Nu generezi oricum mesh-uri procedurale? Poate că ai vrea să te uiți cum să faci asta cu mai multe materiale.  > Por Philipp.
  • Hmm, cred că realizarea unui model mai bun ar fi mai bună din punct de vedere al performanțelor…  > Por Tudvari.
  • Acum mi-am creat propriul model, cu umplutură (umplutura este rgba (0,0,0,0,0)), iar acum arată mai bine, dar încă mai sunt probleme, cum ar fi la distanță medie și la foarte mare distanță: i.imgur.com/0xoHCUW.png–  > Por Tudvari.
  • @Tudvari Probabil că este în continuare aceeași problemă: Diferitele zone ale texturii tale se amestecă unele în altele atunci când Unity micșorează textura pentru a crea mip-maps. Pentru a rezolva această problemă, creați un model care folosește materiale separate cu texturi separate pentru partea de sus, părțile laterale și partea de jos. Folosiți texturi care sunt doar un pătrat de 16×16.-  > Por Philipp.