4programmers.net

Witaj!

flowCRANE dodał nowy post w wątku: Różne wymiary klatek w sprite sheet dla jednostki


U siebie mam na razie obsługę atlasów ze sprajtami znaków (jeden atlas zawiera wszystkie znaki danej strony fontu) oraz ze sprajtami kształtów kursorów (jeden atlas zawiera sprajty wszystkich kształtów i klatek animacji). Niżej wrzucam testowe atlasy, jeden z fontem, drugi z kursorem:

screenshot-20251002135520.png screenshot-20251002135555.png

Tworzę je w swoich edytorach, dodając do projektu zbiory plików (jeden plik to jeden znak lub klatka danego kształtu kursora), przy zapisie projektu edytor tworzy binarkę z gotowym fontem/kursorem, która oprócz atlasu, zawiera również lookup table z obszarami wszystkich sprajtów, dzięki czemu renderowanie tekstu czy kursora wymagało ogranicza się do pobrania obszaru z lookup table i bezpośredniego użycia (nie trzeba niczego obliczać).

Dla fontów i kursorów stosuję prosty algorytm układania sprajtów w atlasie (po stronie edytora) — obliczam maksymalną wysokość i szerokość sprajtu i ona określa rozmiar komórki w atlasie. Następnie konwertuję liczbę sprajtów na liczbę komórek w pionie i poziomie, tak aby atlas był jak najbliższy kwadratowemu. Na koniec maluję każdy sprajt w lewym górnym rogu każdej komórki.

Atlasy ston fontów i kursorów są mikroskopijne, więc taki prosty sposób jest w ich przypadku w zupełności wystarczający. Być może skorzystam z niego również do budowania atlasów ze sprajtami dla animacji wszelkich ruchomych obiektów (postaci, przedmiotów itd.).

Natomiast atlasy z kaflami służącymi do budowania terenu najpewniej będę pakował w inny sposób. Wszystko dlatego, że sprajty dla scenerii będą miały drastycznie różne rozmiary, więc aby nie marnować przestrzeni w atlasach (i zwiększać zapotrzebowania na VRAM), te najpewniej będą ciasno pakowane w atlasach (są do tego algorytmy), tak aby ograniczyć puste przestrzenie do minimum. Ale tak samo jak w przypadku fontów i kursorów, do atlasu dołączony będzie lookup table z obszarami każdego sprajtu, żeby można było szybko i wygodnie pobierać obszary sprajtów i je renderować.


Zobacz post

Z poważaniem,
4programmers.net

Jeżeli masz problemy z kliknięciem na przycisk "Zobacz post", skopiuj i wklej poniższy link w przeglądarce:

http://4programmers.net/Notification?path=%252FForum%252FGamedev%252F376937-rozne_wymiary_klatek_w_sprite_sheet_dla_jednostki%253Fp%253D2007308%2523id2007308