Jakie są wady oznaczania każdej krawędzi jako szwu podczas rozpakowywania siatki?


9

Jestem programistą, który próbuje nauczyć się trochę podstawowego modelowania 3D. Jestem w miarę swobodny w posługiwaniu się podstawowym modelowaniem geometrii i potrafię rozpakowywać i teksturować proste modele. Ale mam pytanie ...

Jeśli chodzi o rozpakowywanie modeli, wszystkie samouczki podkreślają potrzebę zaznaczenia jak najmniejszej liczby szwów podczas rozpakowywania siatki. Moje pytanie brzmi: dlaczego? Sądzę, że jest to bardzo oczywiste dla osób z doświadczeniem w modelowaniu, ale nie dla mnie (biorąc pod uwagę, że moje wysiłki związane z teksturowaniem są głównie ograniczone do generowania AO lub zwykłych map).

Zgaduję, że chodzi tylko o zachowanie kształtu modelu, jeśli chodzi o edycję rozproszonej tekstury? Czy to jedyny powód, dla którego nie chcesz po prostu wycinać każdej krawędzi i układać wszystkich ścian indywidualnie?

Zdaję sobie sprawę, że kiedy zadaję to pytanie, wykazuję się całkowitą ignorancją na ten temat, przepraszam, ale czasami super-oczywiste rzeczy są najtrudniejsze do znalezienia odpowiedzi .

Odpowiedzi:


10

Każdy „szew UV” w twoim modelu - to znaczy każde miejsce, w którym twarze modelu są ciągłe, podczas gdy mapa UV dla tej samej krawędzi jest cięta - stanowi problem zarówno dla artystów, jak i sprzętu.

  • Utrudnia to prawidłowe teksturowanie modelu. Jest to szczególnie prawdziwe, gdy edycja odbywa się bezpośrednio na teksturze, w 2D, a nie w programie do malowania 3D. Im mniej takich szwów, tym łatwiej jest mentalnie owinąć teksturę wokół modelu.
  • Podczas gdy proste mieszanie może działać dla rozproszonej tekstury i niektórych innych typów tekstur, musisz być bardzo ostrożny z takimi rzeczami, jak normalna mapa przestrzeni stycznej. W tym przypadku nie można po prostu liniowo mieszać (interpolować) między wartościami X i Y (zwykle odwzorowanymi na R i B w przeglądarkach tekstur) bez wynikowego znormalizowania wektora normalnego, a szew staje się widoczny (zwykle jako nieco ciemniejszy „linia”) w niektórych warunkach oświetleniowych. Z drugiej strony, próba utrwalenia go w fakturze i uczynienie wartości na obu krawędziach UV blisko siebie lub takich samych może spowodować, że szew stanie się widoczny, ponieważ jest nienaturalnie płaski w porównaniu z resztą modelu.
  • Moduły cieniujące piksele muszą wykonywać więcej pracy przy każdej nieciągłości (nawet jeśli obecnie jest to zwykle abstrakcyjne w sprzęcie) i uzyskiwać dostęp do różnych miejsc pamięci, z których można pobierać dane tekstur (zwykle jest to mniej zoptymalizowana „ścieżka kodu” w sprzęcie) , w przeciwieństwie do zwykle pracy z przestrzennie bliskimi wartościami tekstury.
  • Automatyczne mapowanie mip (i bardzo niewiele sklepów może sobie pozwolić na ręczne poprawianie wygenerowanych tekstur o niższej rozdzielczości) przerwie całą ciężką pracę, którą Ty i Twoi artyści zrobiliście, aby szew był niewidoczny przy domyślnej rozdzielczości.

To powiedziawszy: jeśli twój styl artystyczny dyktuje, że twarze modelki wyraźnie się od siebie różnią i zawsze będą miały „twarde”, wyraźne krawędzie, żadne z nich nie stanowi problemu.


Doskonały punkt na temat niespójnego dostępu do pamięci w module cieniującym piksele. Przeskakiwanie po takiej teksturze naprawdę zniszczy pamięć podręczną tekstur.
Bob Somers,

@Bob Somers: Szczerze mówiąc, nie będzie to duży spadek wydajności, chyba że programujesz dla platformy niskiej lub mobilnej lub już opodatkowujesz GPU do maksimum.
Martin Sojka,

Dobra uwaga, Martin. Jednak od ubiegłego roku mieszkam na ziemi GPGPU, pisząc wrażliwy na wydajność kod, więc pomyślałem, że to interesujący punkt, który nie jest od razu oczywisty. :)
Bob Somers

6

Dwa ważne powody mają sens z nieopakowanej tekstury i artefaktów krawędzi .

Jak już wspomniałeś, może być bardzo trudne dla artysty zrozumienie, w jaki sposób ich edycje 2D będą owijały się wokół modelu 3D, jeśli szwy nie mają sensu. W przypadku, gdy każda twarz została oddzielona i optymalnie umieszczona za pomocą jakiegoś algorytmu pakowania bin, prawie niemożliwe byłoby ręczne edytowanie tekstury. Mam nadzieję, że w dzisiejszych czasach używają jakiegoś narzędzia do malowania 3D, ale nadal przyjemnie (i konieczne!) Jest edytowanie bezpośrednio na teksturze 2D.

Drugi problem (artefakty krawędzi) może się pojawić ze względu na ograniczenia precyzji zmiennoprzecinkowej z próbkowaniem tekstury. Załóżmy, że twarze są rozłożone na czarnym tle. Z powodu błędu zmiennoprzecinkowego w teksturach tekstur lub podczas próbkowania na karcie graficznej, bardzo prawdopodobne jest, że te czarne piksele będą się czasami pojawiać lub mieszać podczas filtrowania tekstury. Ponieważ wpływa to na każdą twarz, będziesz miał ten dziwny efekt szkieletu tła-artefaktu. Jedynym sposobem na walkę z tym byłoby sztuczne nieznaczne skurczenie tekstur, ale wtedy każda twarz wyglądałaby dziwnie, ponieważ nie do końca zgadza się z teksturą sąsiadów.

Zaletą minimalizowania szwów jest to, że w twoim modelu jest mniej krawędzi, w których twarz sąsiaduje z (nieużywanym) tłem, więc jest mniej miejsc, w których artefakty mogą się wkradać. Większość twarzy bezpośrednio przylega do sąsiednich ścian w rzeczywisty model, więc artefakty krawędzi są w rzeczywistości sąsiadującymi pikselami w teksturze i nigdy ich nie zauważysz.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.