Mam grafikę 2D postaci, która zostanie zmapowana do szkieletu Box2d. Ramię postaci może na przykład stanowić 2 prostokąty fizyki połączone ze stawem na łokciu. Każdy prostokąt będzie miał swój własny sprite sztuki. Sztuka na dolne ramię nie będzie całkowicie prostokątna. Może to być prostokątne źródło png, ale będzie dużo ujemnej przestrzeni, w której ramię niekoniecznie zostanie narysowane.Jak podzielić sztukę 2D na trójkąty za pomocą OpenGL
Moje pytanie brzmi: jaki jest najlepszy sposób na rozbicie sztuki 2D na trójkąty? Czy powinienem traktować wszystkie płaskie duszki jako prosty prostokąt złożony z 2 trójkątów, pozostawiając dużo przestrzeni alfa? A może najlepiej jest podzielić kształt na wiele trójkątów i spróbować dopasować rzeczywisty kształt (ewentualnie z wentylatorem trójkątnym)? Jakie mogą być zalety/wady każdego podejścia? Będę aktualizować tekstury, ponieważ różne rzeczy przytrafiają się postaci.
Oto ilustracja tego, co mówię:
(czerwony kwadrat jest kształt fizyki, a niebieskie linie są możliwe konfiguracje trójkąt)
Dzięki. Nie biorę pod uwagę faktycznych kształtów sztuki do wykrywania kolizji. To prawdopodobnie wszystko będzie zrobione z modelem fizyki. Przypuszczam, że zastanawiałem się, czy cała ta dodatkowa, renderowana przestrzeń alfa usunie korzyści płynące z prostoty rozwiązania 2-trójkątnego ... zwłaszcza, gdy tekstury stają się mniej prostokątne i używa się więcej ujemnej przestrzeni . Coś okrągłego, jak tekstura meteorytu, miałoby dużo negatywnej przestrzeni w prostokątnej fakturze. Nakładanie się na siebie kilku z tych obszarów alfa = 0 musiałoby mieć pewien negatywny wpływ, prawda? –
Jeśli nie potrzebujesz rzeczywistego mieszania alpha (które wymaga większej przepustowości pamięci ze względu na dodany piksel docelowy), możesz uciec z [testowaniem alfa] (http://www.opengl.org/wiki/Transparency_Sorting#Alpha_test) , który po prostu odrzuca nadchodzący piksel, jeśli wartość alfa jest poniżej pewnego progu. Właściwie, myślę, że możesz łączyć testy mieszania i alfa, aby uzyskać najlepsze z obu światów: z niską wartością progową czysto zerowe piksele są pobierane wcześniej (przed zmieszaniem), a jednocześnie pozwalają na przyjemne zaniki alfa na krawędziach obiektów. – genpfault
Świetne ... to ma sens i jest bardzo pomocne. –