Autor Wątek: Teksturowanie dużych modeli  (Przeczytany 988 razy)

Offline Jakub27

  • Użytkownik

# Sierpień 21, 2017, 16:24:11
Cześć, chciałbym się dowiedzieć jakie macie techniki i sposoby na randzenie sobie z teksturowaniem dużych modeli. O ile przy teksturowaniu małych modeli nie ma problemu tak przy większych pojawia się dylemat czy iść w jakość czy w wydajność.  Można powielać daną teksture ale wtedy obiekt nie wygląda zbytnio realistycznie. Macie jakieś sprawdzone rozwiązania?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline misztal

  • Użytkownik

# Sierpień 21, 2017, 17:06:55
Zależy jakie duże elementy masz na myśli. Dla terenów używa się powielania z bliska i blenduje się z color map dla większych odległości które widać mniej wyraźnie.

Offline Jakub27

  • Użytkownik

# Sierpień 21, 2017, 17:50:08
Głównie chodzi mi o budynki.

Offline lao

  • Użytkownik

# Sierpień 21, 2017, 20:25:38
Z tego co wiem w Unity i w UE4 textury automatycznie się skaluja w zależności od odległości od kamery, więc wrzucaj największe jakie masz, silnik zajmie sie resztą. Do geometrii możesz uzywać LOD, ja zwykle daję chamfer na obiekt i mam 2 modele które sie zamieniają.

Offline Mergul

  • Użytkownik

  • +1
# Sierpień 21, 2017, 20:55:02
@up
W życiu nie widziałem gorszej odpowiedzi :D Chyba nie słyszałeś o czymś takim jak "optymalizacja" :D Normalnie skalowanie załatwia za nas grafika bo mamy mip mapping, UE jedynie robi tak ze jak nie widzisz tekstury o najwyższej rozdzielczości to wyrzuca z karty najwyższy poziom. Ale trzeba pomysleć o tym że wrzucanie takich danych też zabiera czas.
Na budynkach zazwyczaj tekstury się powtarzają. I to nawet często. Po prostu stara sie to zakryć elementami otoczenia, mieszaniem kilku tekstur, np. z wykorzystaniem splat tekstury, albo korzysta się z kolorów wierzchołków, itd.

Offline misztal

  • Użytkownik

# Sierpień 21, 2017, 22:19:01
Tutaj też zależy co chcesz uzyskać. Jeśli masz zamiar wykonać pod nowe PC to wykonaj jak pisze Mergul. Ogólnie poszukaj sobie w google i też pod tagami "modular buildings 3d".
Jeśli chcesz budynki pod mobilne to ja bym umieścił fasady na atlasie textur i powielał kwadraty w zależności od danego rozmiaru budynku.

Offline lao

  • Użytkownik

# Sierpień 22, 2017, 00:37:43
Testowałem naprawde różne zmienne zeby zobaczyć co ma wpływ na wydajność (na telefony) i rozmiary textur maja tak znikomy wpływ że nie warto sie nawet zagłębiać w temat. Wiadomo że jakiejś logiki trzeba używać, żeby byle kamieni nie dawać w wysokiej rozdzielczości, ale na budynki textury 2048 a nawet 4096 chodzą normalnie i nie ma co kombinować, już wiekszy wpływ ma jakiego shadera uzyjesz niż rozmiar textury, i tutaj chyba właśnie bardziej się opłaca (a na pewno lepiej wygląda) uzyc dużej tesktury niż mieszać kilka na jednym modelu.
Cytuj
Ale trzeba pomysleć o tym że wrzucanie takich danych też zabiera czas.
No ale co klatke nie wrzuca, tylko baaardzo sporadycznie z punktu widzenia procesora więc problemu nie ma nie? A mipmapping jest chyba implementowany sprzetowo, wiec śmiga jak rakieta.
« Ostatnia zmiana: Sierpień 22, 2017, 00:52:38 wysłana przez lao »

Offline Mergul

  • Użytkownik

  • +1
# Sierpień 22, 2017, 08:59:39
Wielkość tekstury nie ma większego wplywu na wydajność, bardziej na pamięć (tej telefony nie maja za wiele) i czas wczytywania. Tekstury może nie są wrzucane co klatke, ale ma to spory narzut, chociażby z tego względu, że OpenGL nie pozwala na wielowątkowość przy kontakcie z GPU (chyba ze mapowanie). Nie ma sensu testowanie wydajności patdzac na FPS bo jeżeli coś innego jest wąskim gardłem to nie zobaczysz różnicy. Mip mapping to zarazem optymalizacja i poprawa jakości :D
Tak baaardzo sporadycznie to nie powiedziałbym. W UE widac doczytywanie sie wyższych poziomów podchodząc do obiektu (i wyobraź sobie że masz 50 tekstur 4k, co krok coś doczytuje) :D Poza tym czasy ładowania gry z teksturami 4k są dlugie, na telefonach okropne. Gdzies tam jako ciekawostke bodajże o Uncharted 4 podawali że poza postaciami nic nie ma tam tekstur wkększych niż 1k.
A na większe obiekty nawet i 4k dalej daje średnią jakość. Lepiej już dac więcej wierzchołków niż powiększać tekstury. No chyba, że gra składa się z pięciu domków. Bo do0óki masz duże rezerwy pamięci to da zobie rade.

Offline Karol

  • Użytkownik

  • +1
# Sierpień 22, 2017, 09:14:56
lao pewnie pracował przy ostatnim Final Fantasy, tam są tekstury 8K i 170GB cała gra ma zajmować ;).

IMHO wielkość tekstury ma wpływ na wydajność i to kolosalną - w momencie kiedy VRAM się kończy. Dopóki to się nie stanie to różnicy w działaniu się nie uświadczy. Wszystko więc zależy od grupy docelowej, bo to określa dostępny "budżet". Oraz czy modelowany obiekt pełni większą rolę czy bardziej poboczną. Kwestia znalezienia złotego środka.

Offline Jakub27

  • Użytkownik

# Sierpień 22, 2017, 16:52:13
W ogóle można nakładać na siebie materiały w Unity? To by znacząco uprościło proces teksturowania. Np mając długą ścianę z teksturą która jest powielana chciałbym dodać grafiti w jedntm punkcie to najprościej byłoby dodać odpowiednią teksture z grafiti z kanałem alpha ale takie coś raczej nie przejdzie w Unity

Offline Mergul

  • Użytkownik

# Sierpień 22, 2017, 18:23:07
Grafiti to raczej decal dać, dobra jakoś, dosyć tanie i łatwo to zrobić ;)

Offline Sarann

  • Użytkownik

# Sierpień 22, 2017, 18:42:38
Ech, to niektórzy jeszcze używają tekstur w grach? ;)

Przejdźcie na obiekty wolumetryczne panowie, voxele to przyszłość.
Niebawem będzie tą przyszłość widać coraz bardziej, gdy coraz więcej gier używać będzie voxeli zamiast polygonów.
Że nie wspomnę o zainteresowaniu grafikami 3D voxeli, które rozpoczyna się właśnie teraz. Blender i inne narzędzia do modeli polygonowych odejdą do lamusa :)
A niech to. Jednak wspomniałem.