Moje pytanie brzmi: co jest napisane w tytule. Często pojawia się to określenie „kolor wierzchołka”. Trudno mi to zrozumieć.
Na przykład:
Czy wierzchołek nie jest prostym punktem na przestrzeni 3D? Jeśli tak, to w jaki sposób punkt może mieć kolor? Czy ten „kolor” oznacza coś jeszcze?
W edytorze materiałów silnika nierzeczywistego istnieje węzeł „Kolor wierzchołków”.
Czy ktoś może rzucić światło na moje pytanie? Nie mogłem znaleźć niczego przydatnego, gdy przejrzałem „co to jest kolor wierzchołka”, ale dokumentacje były dla mnie zbyt techniczne.
vertex
terminology
Bora
źródło
źródło
Odpowiedzi:
Kolory wierzchołków nie są tak istotne, gdy masz w pełni teksturowaną siatkę 3d. Ale staje się interesujący, gdy masz nieustrukturyzowaną, ale kolorową siatkę. W takim przypadku przypisujesz kolor do każdego wierzchołka. Moduł cieniujący pokolorowałby następnie każdy piksel wielokąta, interpolując kolory trzech wierzchołków.
Kolory wierzchołków mogą być czasem interesujące w połączeniu z teksturami. Jeśli chcesz użyć algorytmu cieniowania, takiego jak cieniowanie Gourauda , po prostu oblicz natężenie światła na każdym wierzchołku, przypisz kolor światła do wierzchołka jako kolor wierzchołka, a podczas renderowania tekstury pomnóż wartość koloru każdego piksela tekstury przez interpolowane kolory. Pozwala to obliczyć źródła światła w module cieniującym wierzchołki zamiast modułu cieniującego piksele. Zazwyczaj jest to znacznie szybsze, ponieważ moduł cieniujący wierzchołki jest zwykle wykonywany znacznie rzadziej.
źródło
Teoretycznie Vertex Color pozwala pokolorować model bez konieczności zawracania sobie głowy teksturami. Jest to dość powszechne w CAD.
W praktyce jest to tylko jeden slot, którego możesz użyć do wypchnięcia danych do wierzchołka, których następnie używasz w module cieniującym wierzchołki do robienia szalonych rzeczy .
Tak myślałem, kiedy zaczynałem od 3D. Szybko dowiedziałem się, że się mylę .
Możesz myśleć o wierzchołku jako o kropli danych, która tworzy narożnik trójkąta, który chcesz malować na ekranie (i ani część „narożna”, ani „trójkąt”, „malować” lub „ekran” nie zawsze są prawdziwe ). Pozycja jest jedna - opcjonalna - aspekt tego obiektu blob danych, który nazywamy wierzchołkiem.
Możesz wiele zrobić, dołączając dodatkowe dane do wierzchołka. Najbardziej znanym przykładem jest to, że możesz dodać współrzędne UV, aby narysować teksturę na tym trójkącie. (Zwykle) nie możesz zdecydować, którą część tekstury narysować na trójkącie, jeśli masz tylko punkt - potrzebujesz również współrzędnych tekstury.
Innymi standardowymi przykładami tego, co jest w tym obiekcie blob, są normalne i styczne. Ważne jest to, że wszystkie są opcjonalne, w tym pozycja. Kolor wierzchołka to tylko jedno z tych opcjonalnych danych wejściowych, których można użyć lub wykorzystać, aby stworzyć ładny obraz na ekranie.
źródło
Wierzchołki mogą mieć kolory, jest to właściwość taka jak normalna.
W środowisku 3d trójkąt jest barwiony na podstawie informacji o kolorze ich wierzchołków. Fragmenty najbliższe wierzchołkowi A uzyskują jego kolor, zbliżenie do wierzchołka B uzyskuje kolor B, a kolor interpoluje między 2.
Działa tak samo jak oświetlenie na wierzchołki
To łatwy sposób dodawania kolorów do modelu bez użycia tekstury.
źródło
Istnieją już solidne odpowiedzi - chcę tylko włączyć się w jeszcze jeden typowy sposób, w jaki zobaczysz używane kolory wierzchołków:
Różne kolory obiektów (lub inne atrybuty) w ramach jednego wywołania partii / rysowania.
Zobaczysz to używane do renderowania układów cząstek, tekstu i zestawionych (zwykle atlasowanych) duszków.
Wyobraź sobie, że masz emiter cząstek, który spawnuje cząstki o losowym kolorze początkowym lub który zanika do zera w ciągu życia cząstek. Gdybyśmy mieli użyć mundurów cieniujących do wysłania tych danych kolorów, musielibyśmy narysować każdą cząstkę o innym kolorze we własnym wywołaniu losowania, dzięki czemu układ cząstek byłby znacznie droższy. Zamiast tego możemy upiec te kolory w danych wierzchołków dla cząstek i renderować całą partię w jednym wywołaniu.
Wydaje się, że Unity używa tej techniki do zmiany koloru cząstek, a także do kolorowania pojedynczych znaków w TextMesh lub Sprite renderowanych razem w partii.
Wierzę, że możesz zrobić coś podobnego z instancjami geometrii, ale nie wiem, jak te dwa wypadają pod względem wydajności. Możliwe, że dzisiaj tego rodzaju podkręcanie za pomocą kolorów wierzchołków jest raczej wstrzymaniem do obsługi sprzętu sprzed OpenGL 3.1 / DX9, takiego jak niektóre urządzenia mobilne, a nie najlepszą praktyką dla nowoczesnych komputerów. Z radością powitam komentarze ludzi, którzy dokonali większego dostrajania wydajności za pomocą partii i instancji, aby pomóc wyjaśnić, czy te techniki zastąpiły w tym celu kolory wierzchołków. :)
źródło