Comment faire pivoter les sprites pixel art sans que l'esthétique ne soit ruinée?

11

Je suis en ce moment devant une énorme question "Game Design". Je fais un jeu pixel-art-ish et l'utilisation de l'interpolation bilinéaire pourrait résoudre beaucoup de problèmes d'animation. D'un autre côté, ce n'est plus un "jeu de pixels".

Si j'utilise l'interpolation bilinéaire, l'animation fonctionne mais elle semble "hybride" et le style artistique se perd. Soit je gâche mes animations, soit je gâche le style artistique. Je ne peux pas avoir les deux, semble-t-il.

Existe-t-il un autre moyen de résoudre ce problème?

entrez la description de l'image ici

OC_RaizW
la source
4
C'est votre jeu, vous décidez :)
Vaillancourt
L'interpolation "mono-linéaire" (généralement appelée simplement "interpolation linéaire") est-elle une option?
Philipp
1
J'ai reformulé la question pour qu'elle paraisse moins fondée sur l'opinion.
Philipp
attends quoi? je n'ai pas besoin d'approuver cela? : D
OC_RaizW
1
Il y a aussi la possibilité de rotation par cisaillement , qui déplace les pixels d'entrée sans les dupliquer / les éliminer / les mélanger.
DMGregory

Réponses:

14

La rotation automatique du pixel art par d'autres angles que 90 ° se passe généralement mal. Si vous souhaitez conserver l'esthétique pixel-art, vous ne pourrez généralement pas redessiner votre art sous chaque angle.

Si vous utilisez un look faux-rétro où vos sprites sont en réalité dans une résolution beaucoup plus élevée qu'ils ne le paraissent, vous pouvez parfois vous en sortir avec un facteur entier sans interpolation dans votre éditeur graphique, puis les faire pivoter en interpolation linéaire au moment de l'exécution. Pour éviter que vos images-objets soient floues dans leur orientation d'origine, assurez-vous toujours que la position du dessin est arrondie à l'entier le plus proche (certains moteurs graphiques / frameworks / bibliothèques vous permettent de dessiner des images-objets sur des coordonnées à virgule flottante, ce qui entraîne souvent un flou). Mais ce n'est généralement qu'un substitut paresseux qui n'atteint pas la qualité que vous pouvez atteindre avec un travail manuel.

Voici un exemple d'un sprite dans sa taille d'origine, mis à l'échelle par le facteur 3 sans interpolation puis tourné de 30 ° avec interpolation linéaire:

entrez la description de l'image ici

Philipp
la source
1
Essentiellement, chaque "pixel" devient 10x10 pixels ou quelque chose comme ça?
John
2
@ John oui, c'est ce que je veux dire avec faux-rétro. 10x10 peut être un peu grand (en fonction de la résolution de la plate-forme matérielle que vous ciblez, bien sûr), mais c'est essentiellement l'idée. Vous avez un sprite qui ressemble à un morceau de pixel art 16x32 mais qui est en fait une texture 48x96 avec chaque pixel "visible" étant en fait 3x3 pixels de la même couleur.
Philipp
thaaat était à peu près le même que je pensais ....
OC_RaizW
la même approche était dans Starbound, lorsque les pixels "visibles" étaient en fait des carrés de 3x3 pixels réels
trollingchar
15

Jetez un œil à RotSprite .

RotSprite est un algorithme de mise à l'échelle et de rotation pour les sprites développé par Xenowhirl. Il produit beaucoup moins d'artefacts que les algorithmes de rotation du plus proche voisin et, comme EPX, il n'introduit pas de nouvelles couleurs dans l'image (contrairement à la plupart des systèmes d'interpolation).

Exemple de RotSprite

L'algorithme redimensionne d'abord l'image à 8 fois sa taille d'origine avec un algorithme Scale2 × modifié qui traite les pixels similaires (plutôt qu'identiques) comme des correspondances. Il calcule ensuite le décalage de rotation à utiliser en privilégiant les points échantillonnés qui ne sont pas des pixels limites. Ensuite, l'image pivotée est créée avec un algorithme de mise à l'échelle et de rotation le plus proche voisin qui réduit simultanément la grande image à sa taille d'origine et fait pivoter l'image. Enfin, les détails d'un pixel ignorés sont restaurés si le pixel correspondant dans l'image source est différent et que le pixel de destination a trois voisins identiques.

Vous pouvez soit implémenter cet algorithme vous-même dans le cadre du code de dessin de votre jeu, soit l'utiliser pour créer des ressources tournées au préalable. L'outil pixel art Aseprite a intégré RotSprite dans le cadre de son éditeur de sprites.

GIF de rotsprite en action

Consultez également ce fil de discussion sur les forums Unity sur la façon d'utiliser RotSprite dans Unity, ainsi que des informations plus générales sur RotSprite.

Rudey
la source
jeez. j'ai téléchargé cela pour l'unité et l'ai testé - et le résultat est bien pire que le rendu de pixel d'unité habituel .. Mais merci
OC_RaizW
@OC_RaizW Cela ne devrait pas se produire. Vous souhaiterez peut-être contacter le développeur de l'actif Unity.
Rudey
-4

en haut à gauche de la page est une option: sélection automatique: groupe et calque. choisissez l'option de calque puis faites pivoter. c'est la façon dont personne ne vous le dit.

mahdi
la source
4
De quel éditeur d'images parlez-vous? La question ne mentionne aucun outil spécifique. Donc, si vous connaissez un éditeur d'images où la rotation d'un sprite basse résolution avec une perte de qualité minimale est en fait si facile, veuillez nous dire à quel application ces instructions s'appliquent.
Philipp