标签

等角地图切块“瓷砖(Tile)”:2:1比率[SA Pixel Tutorial]

现在,我们将会学习到一些“标准”等角(isometric)瓷砖方面的知识。

假定我们要制作的是一款在 SNES 或 GBA 这样 2D 硬件上运行的等角风格的 RPG 。我们很快会注意到,这些硬件支持 8x8 瓷砖,而将菱形瓷砖转换成适用的形式,这并不是个简单的事情。创建这些瓷砖的过程需要花费大量的时间,每个瓷砖都要妥善的描绘。作业即将开始,我们边学边做来理解“技艺”的方方面面。

我要预先提醒读者们,不要以为随随便便的阅读了这篇文章你就掌握了等角像素,这些知识可能并不会直接对你起什么作用,这个教程中,讲述了用等角菱形创造瓷砖(tile,切块、地图块)的过程,还有基本瓷砖结构的相关知识,以及瓷砖之间是如何准确拼合的。好了,我们开始钻研吧。

首先,我们考虑基本瓷砖(basic tile)。绘制菱形瓷砖的方法很多。第一种类型在网上很流行,并且还好看一些。其瓷砖宽 32 像素,高 17 像素。四角是这样布置的:上下顶点为两个像素宽,左右只有一个像素点。这种特殊类型用来演示很有用。

第二种类型和前一种有一些微小的不同,而这种方法制作出的瓷砖才更适用于视频游戏的开发。菱形宽 32 像素,高 16 像素,并列像素都是偶数。上下并列 4 个像素,左右都是 2 像素边长的实心正方块。很多等角艺术家不习惯画这样的瓷砖,但是其瓷砖尺寸是 8 的倍数,符合完美的算术理论。

如果你用 类型1 来进行游戏开发,整体的垂直高度总会比 8 的倍数多 1 ,即使这并不会对制作地图产生太严重的影响,但是你可能就需要在地图的上下缘铺设经过切割的特殊尺寸瓷砖了。有很多的游戏资源可以利用那没什么可说,但如果是手机游戏这种资源紧张的情况,没有比尽最大可能手工缩减文件大小的工作更麻烦的了,所以一定要坚持使用 类型2 。

下面的例子,你将会看到“半块(half block)”的瓷砖。两个等角瓷砖都是 32x24,请注意 类型1 的侧墙结构是如何补偿二者高度不一致的。“整块(whole block)”瓷砖为 32x32 ,垂直高度基本上是当前瓷砖块的双倍(从 8 像素的高度调整为 16 像素高)。这种 半块瓷砖 是所有战术RPG的2D地图系统最常用“单位”。这种高度通常被称为“1h”,或者叫做高度值为 1。

呵呵。直到现在还比较有趣,是吧?^_^ 看看我们 半块瓷砖 的阴影。光源来自哪里当然是你说了算,但通常都是侧光源,从屏幕右侧照射进来。面向屏幕右侧的墙都被照亮,相比之下,瓷砖地面仅接受中等适量的光照。面向左侧的墙是光线最暗的区域,和右侧墙的对比最强烈。要和团队里的家伙们达成一致,不然会有人和你说为什么光线不在左边?很有趣,如果你使用直上直下照射的光源,左右墙就都没有了差别。好了,我认为我在这一点上已经讲得很全面了,我们继续往下走吧。

注意看两种类型等角瓷砖的不同。它们倾斜的角度相同但边线不同。第二种类型的尺寸是 8 的倍数,更适合游戏的开发。下面展示的 32x24 半块瓷砖 是战术RPG的标准“单位”。注意右侧光源,使得左右侧墙的强烈对比,显示出了透视和深度。

好,现在我们看看如何用 基本瓷砖 来铺一块平地。第一种类型的瓷砖拼接起来非常干净。拼接的时候瓷砖纵向需要抵消掉 1 个像素的高度,四块瓷砖拼接起来尺寸就是 64x33 ,这样就带来了麻烦,为了对付这个抵消掉的 1 个像素高度,你就要处理一系列大量的瓷砖,并且整体高度始终为 (N*16)+1 。因此,解决办法就是,在地图的最顶端或者最底端安置切去部分边缘的瓷砖,来应付这多出来的高度。这同样使得拼接变得复杂,并且使得将地图切割成瓷砖的工作变得困难。

第二种类型在技术方面是完美的。拼接的时候不需要重叠任何像素,意味着你在边线上将不会遇到任何麻烦。瓷砖的布置非常干净。拼接出的宽度和高度之比是完美的 2:1 ,64x32 ,为等角的倾斜比。没有多余的边线,因此,这是最节省空间的瓷砖拼接方式。

基于游戏开发的目的,类型2 比 类型1 更适合。边线重叠了你不要犹豫,因为当你为瓷砖上了皮肤(skin),边线就不会依旧是黑色了。 ^_^

好了,现在我们知道了在数学上第二种类型与第一种相比是如何的高明,所以我们应该使用这种类型。我们看看如何将等角瓷砖切割成可用的矩形瓷砖(记住正方形也是矩形)。

因为我们的等角角度与水平为 1/2 的倾斜,与垂直比率为 2:1,保持着同样的 2:1 的比率,将我们的图象切割为 16x8 的基本瓷砖并没有什么问题,这是个可行的解决方案。第一个图例演示如何将一个等角瓷砖进行四等分,每个部分都是 16x8 。有个问题就是等角瓷砖四边有些空出来的地方。我们怎么解决?首先,放置一个块并且适当的精确切割图象,被称为“元瓷砖(meta tile)”。

来看看完整的等角块。可分成几块 16x8 瓷砖,用这种方法那些瓷砖可以重复用在相同的情况下。高度不同平面过渡用的瓷砖利用率可能比较低。B 和 D 处就是这个理想的例子。因为你的墙瓷砖会融入大量不同的地面纹理,在 D 处显示,你需要特制的瓷砖来表现从墙的纹理到地面的纹理的过渡,除非,当处理瓷砖的墙的部分的纹理的时候,你奢侈的使用“层”,那样可以保持清晰的地面纹理资料。在游戏中拼接到一起的时候,它们将会融合到一起好像它原本就是一个瓷砖一般。资源的节约是工程学的事情,但是我认为我至少应该指出它,以防哪个工程师追查到这个关节 ^_^。C 瓷砖是个特殊的墙瓷砖,如果做得正确,可以做出任何高度的墙,只要重复拼接 C 直到达到了你要的高度为止。这适用于纹理简单的没有变化的墙。

现在看最后的图。这是个拼装起来的地面模型,展示了一种纹理与其他纹理相接的几种可能。请看图中间的白框。这个 32x8 的瓷砖区域是一个特制等角瓷砖必要的最小画布空间。四个小部分可以拼接成一块完整的等角瓷砖。而这个区域可以分割为两个 16x8 的元瓷砖(meta tile)。

现在请看最后一幅图片四角上 16x8 的蓝框 元瓷砖。展示了一种地面纹理与其他地面纹理相接的四种情况。在一个简单的实例中,一幅地图中 A纹理 只与 B纹理 相接,就要设置四个特制的 元瓷砖 在等角瓷砖的各个边缘来混合这两种纹理,在纹理内部需要两个特制 元瓷砖 来彼此镶嵌。所有这些是以等角瓷砖纹理可以相互拼接的情况为前提的,并且本教程也假定它们可以。同样要注意 如果你使用交互的层来显示交互的纹理,你同样可以使用先前段落中的技法,将棋盘(tessellation)的未知区域设置为透明可以将为每种可能另外特制“过渡”瓷砖的工作最小化。这个会在地图创建的教程中更详细的讲到。最后,希望你学到的和我知道的一样多!

一个简单的等角瓷砖分为四个 元瓷砖 区域。每个 元瓷砖 16x8 并且是所有基本地图建造瓷砖的基础。硬件可能需要更进一步的分割成 8x8 ,但是那是编码的事情。
一个整块等角块切割为 元瓷砖。B 和 D 是过渡瓷砖并且需要特制瓷砖来描绘两种质感的混合。如果你每个情况都用特制的瓷砖应付那将相当昂贵,所以创建地图的时候要学会自我控制。C 瓷砖可以纵向拼接就可以得到你需要的高度的墙。
地面纹理是如何混合的,每个特制瓷砖从哪里切割。注意它如何两次提到 要将两块瓷砖转化为 多个(4个)特制 元瓷砖,不要只用两块特制 元瓷砖 来铺设一种纹理。
2009-08-15 11:03:58
Ctrl + 回车 直接提交
暂无相关评论