Miałem problemy ze znalezieniem informacji na temat naklejek, więc może to pytanie pomoże innym. Implementacja jest przeznaczona dla mechanizmu renderującego.
Czy ktoś może potwierdzić, czy poprawnie wykonałem naklejkę?
- Definiujesz sześcian o dowolnym wymiarze, który określi objętość projekcji we wspólnej przestrzeni. Sprawdzasz przecięcie trójkąta ze zdefiniowanym sześcianem, aby otrzymać trójkąty, na które rzutowanie będzie miało wpływ.
- Przycinasz te trójkąty i zapisujesz je.
- Następnie używasz sztuczek macierzowych, aby obliczyć współrzędne UV dla zapisanych trójkątów, które będą odnosić się do wyświetlanej tekstury.
- Aby to zrobić, weź wektory reprezentujące wysokość, szerokość i głębokość sześcianu we wspólnej przestrzeni, tak aby fe znajdował się w lewym dolnym rogu.
- Umieszczasz to w macierzy jako wektory jednostek i, j, k, ustawiasz tłumaczenie dla kostki, a następnie odwracasz tę macierz.
- Mnożymy wierzchołki zapisanych trójkątów przez tę macierz, w ten sposób uzyskuje się ich współrzędne wewnątrz sześcianu o wielkości od 0 do 1, którego używa się jako współrzędnych UV.
- W ten sposób masz oryginalne trójkąty, na które rzutujesz i masz dla nich współrzędne UV (współrzędne UV odnoszą się do tekstury, którą rzutujesz).
- Następnie ponownie zapisujesz zapisane trójkąty na scenie, a one zastępują obszar projekcji wyświetlanym obrazem.
Teraz pytania, na które nie mogłem znaleźć odpowiedzi. Czy ostatni punkt jest właściwy? Nigdy nie robiłem wycinania oprogramowania, ale wydaje się, że jest wystarczająco podatny na błędy, ze względu na ograniczoną precyzję, że będzie trochę walki z wyświetlaną teksturą. Czy sposób poprawienia współrzędnych UV jest również prawidłowy?