Autor Wątek: dir2atlas: generator atlasów tekstur  (Przeczytany 1242 razy)

Offline Paweł

  • Użytkownik

  • +2
# Marzec 20, 2013, 01:18:47
Cześć,

dir2atlas to prosty generator atlasów tekstur obsługiwany w całości z linii komend. Podajesz pliki wejściowe/katalog w nagrodę dostajesz atlas wraz z mipmapami oraz texcoordy w formacie tekstowym oraz binarnym. Każda mipmapa zapisana jest w osobnym pliku dzięki temu jeden zestaw texcoordów pasuje do każdego poziomu mipmap.
Gratis dorzucam gotowe loadery zarówno dla wersji tekstowej jak i binarnej oraz tester wygenerowanych plików.

Kod jest otwarty na licencji zlib:
https://www.assembla.com/code/dir2atlas/git/nodes

Aktualnie jedyny obsługiwany format to png - pliki wczytuję biblioteką lodepng. Do obsługi katalogów używam dirent.h także kompilacja na linuxach powinna przejść bezproblemowo (pod warunkiem ze Twój kompilator obsługuje C++11).

A tutaj są binarki dla windowsa:
https://www.assembla.com/spaces/dir2atlas/documents


Przykładowy output (bazowałem na formacie .tai od nvidii):
#header:
# tiles count, image width, image height, x texel offset, y texel offset, flags
4 2048 2048 0.000000 0.000000 0
# <filename>        <x offset> <y offset> <width> <height>
"test3/Zachód słońca.PNG"    0.0000000000 0.0000000000 0.3906250000 0.2929687500
"test3/Niebieskie góry.PNG"    0.3906250000 0.0000000000 0.3906250000 0.2929687500
"test3/Zima.PNG"    0.0000000000 0.2929687500 0.3906250000 0.2929687500
"test3/Lilie wodne.PNG"    0.0000000000 0.5859375000 0.3906250000 0.2929687500
Format binarny to praktycznie to samo, tylko liczby zrzucone są do pliku binarnie.


A tak wygląda przykładowe użycie loadera:
template<class Loader>
void testLoader1(const char* name)
{
  Loader loader(name);
  atlas::Header header = loader.readHeader();
  printf("Header: %u %u %u %f %f\n", header.tilesCount, header.imgWidth, header.imgHeight,
         header.txOffsetX, header.txOffsetY);
  atlas::Loader::Line line;
 
  while(loader.readLine(&line))
  {
    printf("%s %f %f %f %f %u %u\n", line.name.c_str(), line.txX, line.txY, line.txW, line.txH, line.width, line. height);
  }
}
« Ostatnia zmiana: Marzec 20, 2013, 01:21:58 wysłana przez Paweł »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline PsichiX (ΨΧΞ)

  • Użytkownik
    • PsichiX Website

# Marzec 20, 2013, 07:19:26
fajnie, fajnue, ale jakiego algorytmu uzywa do ukladania obrazow w atlasie?

Offline Paweł

  • Użytkownik

# Marzec 20, 2013, 13:58:27