Dlaczego wygładzone siatki w studiu 3D kończą się taką samą liczbą wierzchołków / trójkątów? Jak zatem można je wygładzić za pomocą tej samej geometrii?


11

Próbuję zrozumieć, dlaczego siatki wygładzone w studiu 3D (modyfikatory / wygładzacz) mają taką samą liczbę wierzchołków / ścian przed lub po tym procesie, a także dokładnie tę samą geometrię.

W poniższym przykładzie obie siatki mają 32 wierzchołki i 60 ścian.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Chociaż mam doświadczenie w programowaniu (c ++ i c #), jestem całkiem początkującym w grafice komputerowej. Tak więc oczekiwałem, że wygładzony wygląd wygładzonej siatki będzie wymagał dodatkowych wierzchołków, tj. Podziału trójkątów, aby uzyskać bardziej szczegółową siatkę końcową. Wydaje się jednak, że tak nie jest.

Dlatego pytam:

1) w jaki sposób możliwe jest wygładzenie bez zwiększania szczegółów geometrii siatki?

2) czy wygładzanie przynajmniej zwiększa pamięć przydzieloną / wykorzystaną do przechowywania nowej siatki w porównaniu do pierwotnej?

Wyjaśnienia są bardzo mile widziane, ale docenia się także odniesienia (akademickie lub nie).


Nie jestem tutaj zbyt doświadczony, ale przypuszczam, że możesz używać innego shadera w jednym. Lambert wyglądałby jak ten po prawej. Ale smakosze wycenią je i sprawią, że będą wyglądać na gładsze. prosjekt.ffi.no/unik-4660/lectures04/chapters/jpgfiles/…
Andrew Wilson

1
Dzięki za komentarz! Szczerze mówiąc, jedyne, co zrobiłem, to zastosować modyfikator Smoother. Nie było wcześniej dodanego modułu cieniującego, a później nie dodałem żadnego modułu cieniującego.
Louis15,

Terminy historyczne to „taka jest różnica między cieniowaniem mieszkania a gourauda”. W praktyce odnosi się to do normalnych, takich jak wyjaśnione przez joojaa
v.oddou

Jakiego oprogramowania użyłeś na zrzucie ekranu? THX :)
xyz

Odpowiedzi:


14

Gładka w tym przypadku powoduje, że normalne powierzchnie w wierzchołkach wskazują w ten sam sposób, gdy interpolowane wyglądają gładko. Meshsmooth dodałby wierzchołki.

1) w jaki sposób możliwe jest wygładzenie bez zwiększania szczegółów geometrii siatki?

Ludzkie oczy właściwie nie widzą krzywizny, z wyjątkiem krawędzi obiektów. Wszystko, co mogą zrobić, to przybliżyć gładkość i przetworzyć nachylenie gradientu. Posiadanie ciągłego pola daje wrażenie gładkości. Oko jest jednak wyjątkowo wrażliwe na nagłe zmiany koloru i interpretuje to jako twardą zmarszczkę.

Interpolując normalne wierzchołki, twoja powierzchnia będzie wyglądać na płynnie płynącą. Ponieważ ta normalna jest używana do obliczania końcowego odbijanego koloru, otrzymujesz gładkie pole koloru.

Cieniowane płasko a gładko cieniowane

Zdjęcie 1 : płaska cieniowana normalna w porównaniu do normalnych płynnej interplacji. Czarny normalny leży na wierzchołku. Kolorowe są interpolowane.

Nic nie mówi, że potrzebujemy interpolacji liniowej. W rzeczywistości, zaburzając normalne, możemy spowodować zmianę wyglądu płaskiej powierzchni. Tak działa mapowanie wypukłości i normalne mapowanie. Efekt może być przekonujący, chyba że krawędź powierzchni odgrywa zbyt dużą rolę w miejscu, w którym zrywa się iluzja.

wprowadź opis zdjęcia tutaj

Zdjęcie 2 : płaska cieniowana powierzchnia (tył), gładko cieniowany (środek) i odwzorowana gładka normalna. Złudzenie falistej powierzchni pęka, ponieważ krawędź odgrywa tak znaczącą rolę w obrazie, że zamiast tego można zwiększyć normalne

2) czy wygładzanie przynajmniej zwiększa przydzieloną pamięć?

Trudno powiedzieć ostateczne rzeczy na temat silnika graficznego. Normalne i tak muszą zostać wysłane na kartę graficzną, najprawdopodobniej dane te są buforowane, ale można je obliczyć w locie (w obu przypadkach).

Ponieważ Max używa grup wygładzających, wydaje mi się, że użycie pamięci jest stałe niezależnie od tego. Trudno powiedzieć, nawet jeśli nie jest przechowywany w pamięci podręcznej, nie zrobiłoby to dużej różnicy. To sprawia, że ​​moduł cieniujący jest trochę bardziej skomplikowany, ale tylko najprawdopodobniej ta złożoność jest obecna, użyj go lub nie.


Świetna odpowiedź! Właśnie tego szukałem: wyjaśnienie pojęciowe, które nie pomijało istotnych szczegółów, ale było jasne i bezpośrednie. Wielkie dzięki
Louis15,

2
„Oko jest jednak wyjątkowo wrażliwe na nagłe zmiany koloru i interpretuje to jako twardą zmarszczkę”. W rzeczywistości ludzki układ wzrokowy jest bardzo dobry w wykrywaniu zmian w pochodnej zacienienia. Cieniowanie może być ciągłe, ale jeśli występują nieciągłości w szybkości zmian, jak na tym obrazie, mogą być zaskakująco zauważalne. Wyszukaj efekt pasma Macha.
Simon F

1
@ SimonF właśnie dlatego widzą zagniecenia, ponieważ czerpią je z wykrywania krawędzi i tak dalej. Ale ludzki mózg tak naprawdę nie ewoluuje z gradientem przepływu 2 gładkości są prawie równe większości ludzi (nie ma na przykład drugiego wykrywania derwizyjnego). Posiadanie gładkiej kuli jest gładkie, nawet jeśli normalne nie zachowują się całkowicie sferycznie, o ile są gładkie. To, dlaczego uciekamy od tej sztuczki. Bardzo niewiele powierzchni faktycznie zachowuje się w ten sposób.
joojaa

„(nie ma na przykład drugiego wykrywania wykroczeń)„ Właśnie sprawdziłem w „Zasadach cyfrowej syntezy obrazu” Glassnera (tom 1 strona 29)… i teraz jestem bardziej zdezorientowany niż kiedykolwiek.
Simon F

@ SimonF Możesz się mylić co do odbić, które są naturalnie o jedną pochodną niższe niż powierzchnia. W ten sposób człowiek może w pewnych warunkach wyczuć drugą pochodną. Chodzi raczej o to, że ludzie widzą zmarszczki, ale nie robią znaczącej różnicy między wszystkimi różnymi zmianami, fakt, że odbicie jest nieco wyłączone lub w złym kierunku, nie jest automatycznie widoczne dla człowieka. Bez głębszej analizy. Tak długo, jak nie ma nagłej zmiany, jest ona w większości przypadków wystarczająco dobra w wielu okolicznościach. Powinniśmy jednak kontynuować to na czacie
joojaa,
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.