我现在正面临一个巨大的“游戏设计”问题。我正在制作一个像素艺术的游戏,使用双线性插值可以解决很多动画问题。另一方面,它不再是“像素游戏”。
如果我使用“双线性插值”,则动画可以工作,但看起来像“混合式”,并且失去了艺术风格。我要么弄乱动画,要么弄乱艺术风格。我不能拥有两者似乎。
还有其他解决方法吗?
我现在正面临一个巨大的“游戏设计”问题。我正在制作一个像素艺术的游戏,使用双线性插值可以解决很多动画问题。另一方面,它不再是“像素游戏”。
如果我使用“双线性插值”,则动画可以工作,但看起来像“混合式”,并且失去了艺术风格。我要么弄乱动画,要么弄乱艺术风格。我不能拥有两者似乎。
还有其他解决方法吗?
Answers:
像素图自动旋转90度以外的角度通常会出错。如果您要保持像素艺术的美感,通常不会无所事事地从各个角度重新绘制艺术。
如果使用伪复古外观,其中的精灵实际上比它们的分辨率要高得多,则有时可以不用整数在不使用图形编辑器进行插值的情况下就将它们放大一个整数倍,然后在运行时以线性插值旋转它们。为避免精灵在原始方向上变得模糊,请始终确保将绘图位置四舍五入到最接近的整数(某些图形引擎/框架/库允许您在浮点坐标上绘制精灵,这通常会导致模糊)。但这通常只是懒惰的替代品,无法达到手动工作所能达到的质量。
这是原始大小的子画面的示例,在没有插值的情况下放大3倍,然后在线性插值的情况下旋转30°:
看看RotSprite。
RotSprite是Xenowhirl开发的Sprite的缩放和旋转算法。与最近邻旋转算法相比,它产生的伪像要少得多,并且与EPX一样,它不会在图像中引入新的颜色(与大多数插值系统不同)。
该算法首先使用改进的Scale2x算法将图像缩放到其原始大小的8倍,该算法将相似(而非相同)的像素视为匹配项。然后,通过偏爱不是边界像素的采样点来计算要使用的旋转偏移量。接下来,使用最近邻缩放和旋转算法创建旋转图像,该算法同时将大图像缩小到其原始大小并旋转图像。最后,如果源图像中的相应像素不同并且目标像素具有三个相同的邻居,则将恢复被忽略的单像素细节。
您既可以自己在游戏绘画代码中实现此算法,也可以使用它预先创建旋转的资产。像素艺术工具Aseprite集成了RotSprite作为其Sprite编辑器的一部分。
另外,请查看此Unity论坛主题中有关如何在Unity中使用RotSprite的信息,以及有关RotSprite的更多常规信息。