Conversor de GIF para Sprite Sheet — Grátis, no Navegador, Sem Upload

Crie seu próprio gif para sprite sheet
Solte um GIF e receba um sprite sheet pronto para o jogo — escolha colunas, linhas e FPS, mantenha a transparência e baixe o atlas PNG. No seu navegador, nada sai do seu dispositivo.
Converter um GIF para sprite sheet parece trivial até você fazer isso à mão. Um GIF já é uma sequência de quadros completos com uma paleta e atrasos por quadro, então o que você realmente precisa é de uma ferramenta que decodifique cada quadro, componha a transparência corretamente e organize esses quadros em um único PNG numa grade que você possa endereçar com coordenadas de textura. O conversor do Neta Studio faz essa etapa de decodificação localmente em um elemento canvas, então seu arquivo permanece no navegador e nunca toca um servidor. Você solta um GIF, escolhe colunas, linhas e FPS, e baixa um único atlas PNG.
As partes difíceis não são o desenho. São a paleta, o tempo e a matemática da grade. O GIF armazena a transparência como um índice numa tabela de cores, então um quadro que parecia limpo num visualizador de imagens pode chegar ao canvas com uma máscara preta ou branca depois de composto. Os atrasos de quadro em um GIF são em centésimos de segundo e costumam variar de quadro para quadro, e é por isso que uma exportação ingênua produz um sheet que engasga. Esta página cobre as configurações que importam e os modos de falha que encontramos ao construir a ferramenta.
Converter um GIF para um sprite sheet
O conversor é a primeira coisa na página: uma zona de soltar, uma faixa de pré-visualização dos quadros e quatro controles — colunas, linhas, FPS e um botão para preservar o canal alfa. Quando você solta um arquivo, o navegador cria um ImageBitmap por quadro através do decodificador de GIF, desenha cada um em um canvas fora da tela nas dimensões da origem e então os copia para o canvas do atlas em posições de célula calculadas. O arquivo de origem é lido com a File API e mantido em memória. Nenhuma requisição de rede carregando seu GIF é feita.
A saída é sempre PNG. O PNG oferece um canal alfa de 8 bits, que é o que você precisa para trabalho com personagens; o JPEG achataria cada borda suave numa máscara. Se o seu GIF não tem transparência, o atlas ainda será RGBA e os bytes de alfa não usados custam apenas tamanho de arquivo. Se o seu GIF usa transparência, o decodificador precisa solicitar o quadro completo com disposal em vez de uma atualização parcial, ou os elementos em movimento vão arrastar rastros pelo sheet.
Construa o sheet para casar com a forma como sua engine o amostra, não como ele aparece num navegador de arquivos. Uma grade 4x4 de quadros 64x64 é uma textura 256x256 e endereça o quadro n na coluna n mod 4, linha floor(n / 4). Mantenha o tamanho do sheet numa potência de dois quando a engine ou o shader de atlas de destino espera uma; um sheet 320x320 será preenchido ou reamostrado em alguns caminhos e as bordas do sprite vão amolecer.
01
Solte o GIF no conversor. A contagem de quadros e as dimensões da origem aparecem antes de você mudar qualquer configuração.
02
Defina colunas e linhas para a grade que você quer. Para uma animação de 24 quadros, 6x4 é uma escolha comum; uma única linha também funciona e é o que o VRChat precisa.
03
Defina o FPS para a taxa de reprodução que seu jogo vai usar. Isso governa o tempo nominal de quadro registrado para o sheet; a saída é um PNG estático, então a engine comanda a taxa real.
04
Deixe o alfa ligado, a menos que você esteja mirando um formato sem ele. Se o seu GIF mostra um fundo preto na pré-visualização, a origem não tem índice transparente e o preto é real.
05
Baixe o PNG e confira as dimensões em relação ao seu alvo: a largura é igual a colunas vezes largura do quadro, a altura é igual a linhas vezes altura do quadro.

GIF para sprite sheet para VRChat
O shader de flipbook do VRChat lê uma textura como uma única faixa horizontal, não como uma grade. Se você entregar um sheet 6x4, recebe uma faixa da primeira linha repetida, porque a matemática de UV assume que todo quadro fica na mesma linha e o índice de quadro só avança no eixo U. Defina colunas com o número de quadros e linhas com 1. Uma animação de 24 quadros vira um sheet 24x1.
Faça a largura total da faixa ser uma potência de dois. Uma faixa de 24 quadros de 64 pixels é 1536 pixels de largura, que não é uma potência de dois; o próximo tamanho acima que divide exatamente em 64 pixels é 2048, com espaço para 32 quadros. Você pode preencher as células não usadas com pixels transparentes ou com uma duplicata do último quadro. Potência de dois importa porque uma textura não-PoT que passa por geração de mipmap ou compressão no caminho de upload pode deslocar a amostragem em meio texel, e um sprite de um pixel de largura vai mostrar isso.
Faça o alfa aqui, no sheet, não no shader. Um caminho de cutout ou alpha-test num shader é uma ferramenta bruta; bordas suaves do contorno com antialiasing de um GIF vão sobreviver ou sumir dependendo do limiar, e o limiar não é algo que você queira ajustar por avatar. Exporte o PNG com alfa real e uma borda compatível com pré-multiplicação, e o shader apenas o amostra. Mantenha o ritmo do loop constante: o flipbook do VRChat avança em um passo de tempo fixo, então se o GIF de origem tinha atrasos irregulares por quadro, iguale-os antes de exportar, ou a animação vai rodar numa taxa uniforme que não corresponde ao tempo original.
Para a lista completa de parâmetros e a configuração da textura, veja o guia de textura de flipbook.
GIF para grade de quadros ("planilha")
Quando as pessoas buscam gif to spreadsheet, quase nunca querem dizer um .xlsx. Elas querem dizer a grade de quadros: os quadros dispostos em linhas e colunas para que cada um seja endereçável por um índice. A palavra é usada porque uma grade parece uma planilha à primeira vista. Esta ferramenta produz essa grade, e a grade é a mesma coisa que um sprite sheet — a diferença está apenas em como você a chama. O que importa é que o layout seja regular: tamanho de célula fixo, colunas fixas e uma ordem de quadros que vai da esquerda para a direita, de cima para baixo.
A alternativa que as pessoas às vezes tentam é desenhar os quadros um a um num editor de pixel art, empilhando onion skins até a animação parecer certa. Esse fluxo de trabalho é bom para personagens autorais e terrível para um GIF que você já tem. Um editor de pixels não vai ler os atrasos por quadro de um GIF, e importar 24 quadros à mão em 24 camadas perde o tempo por completo. Se sua origem já é uma animação, converter a grade é o caminho mais curto. As ferramentas de pixel art valem a pena quando você está criando, não fazendo transcodificação.
Para trabalho de quadros desenhados à mão, as páginas de pixel art cobrem o lado do desenho e da paleta.
Tamanho de quadro, grade e fundos transparentes
Quatro coisas quebram a maioria das conversões. Cada uma tem um sintoma específico.
A transparência do GIF morre na paleta. Um GIF pode usar no máximo 256 cores e marca a transparência como um índice de paleta. Quando um quadro é decodificado com o método de disposal 2, a área que era transparente em um quadro pode ser restaurada para a cor de fundo de um quadro anterior. A correção é compor cada quadro sobre um buffer transparente, não sobre branco. Se sua pré-visualização mostra uma forma preta ou cinza em volta do sprite, esse é o índice de fundo da paleta, e agora são pixels reais.
A última linha fica parcial. Se sua contagem de quadros é 23 e você escolhe 6 colunas, você tem três linhas completas e uma última linha com cinco células, não seis. A altura do atlas ainda arredonda para a altura da linha completa. Se a matemática do flipbook da sua engine assume uma grade completa e deriva o índice de quadro dividindo o total de quadros pelo número de colunas, ela vai ler uma célula em branco no fim do loop. Preencha o sheet até um retângulo completo com células transparentes, ou reduza as colunas para que a contagem divida por igual.
O tamanho do quadro precisa dividir o sheet. Se você extrai um sub-retângulo de largura 64 de um sheet de 320 de largura, você obtém exatamente cinco colunas. De um sheet de 330 de largura você obtém cinco colunas e um resto de 10 pixels que não é um quadro. Mantenha as dimensões do sheet em tamanho do quadro vezes colunas, nos dois eixos.
Erro de um no ponto de origem. As coordenadas UV de textura geralmente vão do canto inferior esquerdo, enquanto a grade de quadros é disposta a partir do canto superior esquerdo. Se o quadro 0 é renderizado como o último quadro, sua engine está invertendo o V. A célula do sprite para a coluna c, linha r fica em x = c * width, y = r * height no espaço da imagem, e converter isso para um UV invertido é uma subtração a partir de 1.
- Controles de gradeColunas, linhas e FPS são entradas explícitas. As dimensões do atlas são calculadas a partir do tamanho do quadro vezes a grade, nunca adivinhadas.
- Alfa preservadoA exportação é PNG RGBA. Regiões transparentes permanecem transparentes, incluindo as células de preenchimento numa última linha parcial.
- Decodificação localO GIF é decodificado no navegador. Sem etapa de upload, sem fila no servidor, sem espera por uma ida e volta.
Para onde o sheet vai depois
A exportação é o mesmo PNG em todos os casos; a engine difere em como espera que a textura seja fatiada e no que faz com o alfa. Use isto como referência curta.
Para cada destino, exporte um sheet na grade que aquele destino consegue ler sem um shader personalizado. Se você está dando suporte a dois destinos, exporte dois sheets: uma faixa horizontal para o VRChat e uma grade para a engine. Reexportar a partir do mesmo GIF leva menos tempo do que escrever a matemática de UV para reconciliá-los.
| Destino | Exportação |
|---|---|
| Unity | Sheet em grade, textura em potência de dois, Sprite Mode definido como Multiple com fatiamento em grade por tamanho de célula; filter mode Point para pixel art, Bilinear para suave. Ative Alpha Is Transparency no importador. |
| Godot | Grade ou faixa, carregada como AtlasTexture ou fatiada com um recurso SpriteFrames em AnimatedSprite2D. Defina o filtro como Nearest para trabalho em pixel. O tempo dos quadros vem do sheet SpriteFrames, não do PNG. |
| GameMaker | Sheet em grade, importado como sprite com o tamanho do quadro definido pelas dimensões da sua célula. A contagem de quadros precisa corresponder exatamente ao sheet; o GameMaker não vai cortar uma última linha parcial para você. |
| VRChat | Faixa horizontal única, largura total em potência de dois, colunas iguais ao número de quadros, linhas iguais a 1. Alfa aplicado no PNG, ritmo de loop uniforme. |
Veja seu sheet animar em 3D
A maioria dos conversores para no PNG e deixa você verificar o resultado em outro lugar. O construtor de jogos 3D continua: você pode carregar um sheet numa plane billboard e vê-lo animar numa cena real, que é o único teste que responde se a grade e o tempo estão certos. O Agent Sprite Forge é onde um sprite se torna um personagem com um controlador; o sprite é o personagem, e o mundo 3D é onde ele vive.
The Cyclops' Island é a demonstração jogável dessa ideia — uma pequena cena 3D pela qual você pode se movimentar, construída no navegador, usando sprites como personagens. Solte seu próprio sheet e o mesmo rig que comanda os quadros da demonstração vai amostrar o seu atlas. Se a ordem dos quadros estiver errada, você vê na hora: o personagem anda para trás, ou salta para uma célula em branco no fim do loop. Se o alfa estiver errado, você vê um retângulo duro em volta do corpo. São as mesmas falhas que você encontraria numa engine, visíveis em cerca de cinco segundos.
Experimente a cena jogável The Cyclops' Island e troque pelo seu próprio atlas.
Mais ferramentas de sprite grátis
O conversor é uma peça. Estas três cobrem o resto do fluxo de trabalho com sprites no Neta Studio, e rodam na mesma sessão de navegador com o mesmo tratamento de arquivos locais.
- Criador de sprite sheetCombine imagens de quadros individuais em um único atlas. Útil quando seus quadros de origem são PNGs separados em vez de um GIF, e você ainda precisa de uma grade regular.
- Animador de spriteReproduza um sheet numa linha do tempo, ajuste a taxa de quadros e confira o ritmo do loop sem abrir uma engine. Detecta ordem de quadros com erro de um antes da exportação.
- Biblioteca de recursos de spriteSheets de referência e notas sobre configuração de grade, ajustes de importação em engines e as armadilhas de transparência que se repetem entre formatos.
Entre no mundo ao qual ele pertence
Um sprite é um personagem sem lugar para ficar. O último passo é o que ninguém mais oferece: pegue o sheet que você acabou de montar e coloque-o num mundo pelo qual alguém possa caminhar — uma pequena ilha, um planeta, uma esquina chuvosa. Todo mundo neste site foi feito a partir de uma descrição escrita e publicado como uma página que você pode jogar.
Perguntas frequentes
Existe uma alternativa ao ezgif? +
Sim, se o que você precisa é especificamente GIF para sprite sheet. O ezgif lida com uma ampla variedade de conversões de formato; esta ferramenta faz um trabalho só: decodificar um GIF, dispor os quadros numa grade ou faixa e exportar um atlas PNG com o alfa que você escolheu. Nada é enviado por upload, então não há fila no servidor.
A transparência será preservada? +
Sim, se o GIF de origem realmente usa um índice de paleta transparente. A exportação é PNG RGBA. A falha comum é a origem: muitos GIFs têm uma cor de fundo sólida em vez de transparência, e esse fundo vai aparecer no sheet como pixels reais.
Por que meu sprite sheet tem um fundo preto? +
O índice de fundo da paleta do GIF é preto, ou o quadro foi composto sobre o buffer errado. Quadros de GIF podem ser atualizações parciais, então decodificar sem respeitar o método de disposal deixa pixels do quadro anterior no lugar. Recomponha cada quadro sobre um canvas transparente antes de dispor a grade.
Como escolho colunas e linhas? +
Escolha uma contagem de colunas que divida a contagem de quadros, se puder, para não haver uma última linha parcial. Para uma animação de 24 quadros, 6x4 funciona. Para o VRChat, defina colunas com o número de quadros e linhas com 1.
Posso definir a taxa de quadros no sheet? +
O PNG é uma imagem estática e não carrega tempo. A configuração de FPS na ferramenta registra a taxa pretendida; sua engine ou shader comanda a reprodução real. O flipbook do VRChat avança em um passo fixo, então faça sua taxa de exportação corresponder a ele.
Por que a animação está engasgando depois da exportação? +
O GIF de origem provavelmente tinha atrasos irregulares por quadro em centésimos de segundo, e a engine está avançando a uma taxa constante. Iguale os atrasos, ou aceite o ritmo uniforme e defina a taxa da engine para a média.
Voltar ao Construtor de Jogos 3D
Todos os 31 mundos 3D, jogos e cenas finalizados estão em uma única página — cada um deles jogável.
Navegar por sprite sheets prontos
Todo recurso nesta biblioteca é um PNG transparente e pronto para o jogo com um prompt registrado — Recursos de sprite sheet e Sprite sheets grátis, marcados por ação, estilo e assunto. Grátis para navegar e baixar.