Como girar sprites de pixel art sem que a estética seja arruinada?

11

Estou agora na frente de uma enorme questão de "Game Design". Estou fazendo um jogo de pixel-art-ish e o uso de interpolação bilinear pode resolver muitos problemas de animação. Por outro lado, não é mais um "jogo de pixels".

Se eu usar a interpolação bilinear, a animação funciona, mas parece "híbrida" e o estilo artístico se perde. Ou eu estrago minhas animações ou estrago o estilo artístico. Eu não posso ter os dois, parece.

Existe alguma outra maneira de resolver isso?

insira a descrição da imagem aqui

OC_RaizW
fonte
4
Esse é o seu jogo, você decide :)
Vaillancourt
A interpolação "mono-linear" (geralmente chamada de "interpolação linear") é uma opção?
Philipp
11
Eu reformulei a pergunta para torná-la menos baseada em opiniões.
Philipp
espere o que? eu não preciso aprovar isso? : D
OC_RaizW 31/12/16
11
Há também a possibilidade de rotação por cisalhamento , que move os pixels de entrada sem duplicá-los / eliminá-los / misturá-los.
DMGregory

Respostas:

14

A rotação automática de pixel art por outros ângulos que não 90 ° geralmente dá errado. Se você deseja manter a estética de pixel art, geralmente não consegue redesenhar sua arte em cada ângulo.

Se você usa uma aparência retro-falsa, na qual seus sprites estão em uma resolução muito maior do que parecem, às vezes você pode escalá-los por um fator inteiro sem interpolação no seu editor gráfico e girá-los em interpolação linear em tempo de execução. Para evitar que seus sprites fiquem desfocados enquanto estiver na orientação original, sempre verifique se a posição do desenho é arredondada para o número inteiro mais próximo (alguns mecanismos / estruturas / bibliotecas gráficas permitem desenhar sprites em coordenadas de ponto flutuante, o que geralmente resulta em desfocagem). Mas isso geralmente ainda é apenas um substituto preguiçoso que não atinge a qualidade que você pode obter com o trabalho manual.

Aqui está um exemplo de um sprite no tamanho original, aumentado pelo fator 3 sem interpolação e depois girado 30 ° com interpolação linear:

insira a descrição da imagem aqui

Philipp
fonte
11
Essencialmente, cada "pixel" se torna 10x10 pixels ou algo assim?
John
2
@ John sim, é isso que eu quero dizer com falso-retro. 10x10 pode ser um pouco grande (dependendo da resolução da plataforma de hardware que você está alvejando, é claro), mas essa é basicamente a ideia. Você tem um sprite que se parece com uma obra de arte com 16x32 pixels, mas na verdade é uma textura de 48x96, com cada pixel "visível" sendo na verdade 3x3 pixels da mesma cor.
Philipp
thaaat foi aproximadamente o mesmo que eu estava pensando ....
OC_RaizW
A mesma abordagem foi na Starbound, quando "visíveis" pixels eram na verdade quadrados de 3x3 pixels reais
trollingchar
15

Dê uma olhada no RotSprite .

RotSprite é um algoritmo de escala e rotação para sprites desenvolvido pela Xenowhirl. Produz muito menos artefatos que os algoritmos de rotação do vizinho mais próximo e, como o EPX, não introduz novas cores na imagem (ao contrário da maioria dos sistemas de interpolação).

Exemplo de RotSprite

O algoritmo primeiro dimensiona a imagem para 8 vezes seu tamanho original com um algoritmo Scale2 × modificado que trata pixels semelhantes (e não idênticos) como correspondências. Em seguida, calcula qual deslocamento de rotação usar, favorecendo pontos amostrados que não são pixels de limite. Em seguida, a imagem girada é criada com um algoritmo de escala e rotação do vizinho mais próximo que reduz simultaneamente a imagem grande ao seu tamanho original e gira a imagem. Por fim, os detalhes de um único pixel ignorados serão restaurados se o pixel correspondente na imagem de origem for diferente e o pixel de destino tiver três vizinhos idênticos.

Você pode implementar esse algoritmo como parte do código de desenho do seu jogo ou usá-lo para criar ativos rotacionados antecipadamente. A ferramenta de pixel art Aseprite integrou o RotSprite como parte de seu editor de sprites.

GIF de rotsprite em ação

Além disso, dê uma olhada neste tópico dos fóruns do Unity sobre como usar o RotSprite no Unity, bem como informações mais gerais sobre o RotSprite.

Rudey
fonte
caramba. eu baixei que para a unidade e testou-o - e resultado é muito pior do que a unidade de costume pixel rendering .. Mas graças
OC_RaizW
@OC_RaizW Isso não deveria acontecer. Você pode entrar em contato com o desenvolvedor do ativo do Unity.
Rudey
-4

no canto superior esquerdo da página, existe uma opção: seleção automática: grupo e camada. escolha a opção de camada e depois gire. é assim que ninguém te diz.

mahdi
fonte
4
De que editor de imagens você está falando? A pergunta não menciona nenhuma ferramenta específica. Portanto, se você conhece um editor de imagens em que rodar um sprite de baixa resolução com perda mínima de qualidade é realmente tão fácil, informe-nos a qual dessas instruções se aplica.
Philipp Philipp