Unity shadergraph teksturowanie proceduralnie generowanej siatki


#1

posiadam wygenerowaną proceduralnie siatkę mesh (marching cubes) , chciałbym do niej wykonać shader który pozwolił by mi ją o teksturować w oparciu o różne tekstury przykładowo.
kwadrat z 4 wierzchołków, dla którego prawy górny róg posiada id tekstury == 3 a reszta wierzchołków ID == 0, w takim scenariuszu powinny zostać wybrane tylko dwie tekstury, a tak się nie dzieje ponieważ UV płynnie zmienia współrzędne w zależności od położenia wewnątrz trójkąta i wygląda to tak


na rysunku wyświetlają się 4 tekstury (prawy górny róg 3,1 z uwagi na to że do koordynatów jest dodawana wartość 0.01bez tego wychodziły artefakty i tylko dlatego jest wyświetlany material o id 3 jako mikroskopijny kwadracik)

może ktoś będzie miał pomysł jak za pomocą UVs rozróżnić rożne tekstury na siatce :?


#2

Spróbuj vertex colors.
Malujesz sobie kawałek mesha na zielono, drugi na niebiesko i potem sobie ładnie przypisujesz teksturki do odpowiednich kolorów.


#3

to tak na początku co zrobiłem żle a potem jaki jest patent na,generowałem siatka tak że jej wszystkie trójkąty jednego węzła posiadały wspólne wierzchołki (coś mi się ubzdurało że tak musi być i kropka) i to powodował problem że się nie da, teraz po tygodniowej przerwie dotarło do mnie że jest to bez sensu i od razu znalazłem rozwiązanie:

  • wszystkie trójkąty posiadają własne wierzchołki a co za tym idzie własne współrzędne UV to samo w sobie wystarcza aby po przekazaniu do shadera (mam nadzieję że uda mi się go zrobić w shadergraph) wygenerować teksturę o odpowiednim indeksie z texturearray :smiley: