您如何在基于光栅的图形内容中实现分辨率独立性?


32

那些不幸无法在锁定平台规格上运行的游戏(例如掌上电脑)需要在各种分辨率格式和宽高比上运行。

在3D游戏中,您可能具有基于栅格图形的HUD或菜单GUI,而在2D游戏中,您可能具有一堆四边形,它们是精灵的容器。

所以我的问题是,您如何处理各种分辨率和纵横比下的设计和操作内容?假设您有一个精灵字符,它是300x400像素的精灵,并被平铺的水平包围。在不同的分辨率/纵横比下,您将看到完全不同的FOV。或者,如果您具有HUD或GUI菜单,则希望将某些东西相对于屏幕放置在相同的位置,并且尺寸相同。但是,图形源是栅格位图,而不是矢量。

显然,问题已经解决了很多次。我很想听听到目前为止对您有用的各种方法。您是否保留了任意尺寸不可知的“像素”单位,并通过基于分辨率和纵横比的公式或其他方法将其神奇地转换为所需的尺寸?

编辑:

因此,结论是枚举您的宽高比。方面的最低组合:分辨率是您将重要内容设计的一种。一个安全的地方,如果你愿意的话。相同的长宽比,但更高的分辨率是简单的缩放问题。艺术内容旨在实现最高分辨率。较大的宽高比仅显示更多的级别/ FOV,并且所显示的信息并不重要,安全区域中的信息并不重要。我做的像这张照片alt text


1
我看不到您是如何从该问题的答案转到在“ edit: ” 之后得出的结论的。IMO,这些答案还不够,您不应该接受其中的任何一个。EG:您接受的答案仅涉及一个问题(画面缩放),而不是整个问题。IMO 之后,您在“ edit: ” 之后所说的内容比此处的答案更有用。但是,我并没有真正“很好地”实现它。不幸的是,如果我要求详细解释一个新问题,它将被标记为重复项。
Daniel Kaplan 2013年

Answers:


7

如果您的分辨率彼此相似,则可以在所有分辨率上使用相同的图样,并且可能会在运行时针对较小的屏幕进行一些缩放。如果它们的差异超过2倍,则您需要针对不同的分辨率创作(或至少对艺术家进行调整)单独的资产。

使用2D,分辨率对设计图像的方式有很大的影响。在高分辨率下看起来非常详细和逼真的精灵将变得泥泞且难以理解。同样,在低分辨率下清晰,清晰的子画面在高分辨率下会显得便宜而过于简单。


长宽比让我担心。例如,从1080p到720p并不是一个巨大的飞跃,因为长宽比是相同的,因此我们在尝试使用简单的缩放比例。当您说1080p与1680x1050时会发生什么。我会在更大的方面显示更多的水平,更宽的FOV吗?像这样,为宽阔的区域设计,并在其中保留所有重要内容,以确保在较窄的区域中不会出现在屏幕上。
关键帧

我将通过此解决方案的可视化展示来更新问题。似乎没有其他办法。
关键帧

4

一种方法是使图像资源为矢量格式(SVG,Illustrator等),然后根据游戏的不同版本将其转换为光栅图像。


当然可以,但我忘了提那不是一种选择。主要问题是栅格和矢量内容的创建完全不同(栅格对于艺术家而言要好得多)。一种选择是创建多个栅格资源,但是我坚信必须有更好的解决方案。例如,创建具有最大支持的资源/长宽比的资产,并在运行中或类似情况下以较低的资源运行时版本进行缩减。定位仍然是问题所在。
关键帧

是的,如果您可以承受质量损失和性能问题,这也是一种选择。
Matias Valdenegro

8
我不确定“光栅对艺术家更好”是否正确。由于这些原因,我的图形艺术家使用Illustrator。当需要更新到iPhone 4的2X分辨率时,对于她来说,再次导出所有内容很简单。对于不想将自己重新训练为矢量美术师的Photoshop美术师来说,栅格可能会更好,但是从长远来看,他们可能更适合成为基于矢量的图形专家。物理平台变化太快,无法以像素为单位进行思考。
克里斯·加勒特

4

当在不同分辨率下保持全屏时,如果您想要像素完美(即“如艺术家所创作的那样”),那么问题在于,没有一种完全自动的方式可以将精灵放大或缩小(或旋转)。需要人工批准。最终这是因为像素的放置是主观的。渲染算法执行一些缩放或旋转,并且必须使用一些近似技术来执行此操作。双线性过滤。如果你还是想上的像素硬边缘,以有“像素完美”(即不使用AA或BF),那么你将不得不接受非幂的2一定程度的缩放比例以产生一些不良的假象。

RotSprite中找到了一种解决类似问题的有趣方法,该应用程序/算法旨在执行Sprite的“自动”旋转。就是说,我的意思是,经过密集处理后,它会产生许多可能理想的最终结果,供操作人员选择。然后,经过手工挑选的精灵最终进入了游戏,这意味着这是一个内容创建步骤,而不是运行时步骤。

您的“任意不可思议的维数不可知像素”问题的一个可能答案:OpenGL(如果您打算跨平台使用,很可能要使用它)的工作方式与软件栅格渲染器完全不同。它考虑到显示器的宽度和高度在浮点范围0.0-> 1.0中,并在GPU上相应地映射像素。当然,除非例如,这本身可能导致伪像。BF为纹理打开(这是OpenGL中的精灵)。


这是完全错误的。您可以使用合成和可重复元素(想像图块)来代替缩放,以使其在任何纵横比下都保持像素完美。当然,如果在高分辨率下这些元素很小,它将变得越来越小。因此您需要2倍的缩放比例或不同的分辨率资产。
adrix89
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.