77百科网
当前位置: 首页 生活百科

3d游戏烘焙贴图(关于游戏开发中瓷砖贴图的过渡)

时间:2023-07-08 作者: 小编 阅读量: 1 栏目名: 生活百科

同样的位置,在sfc时间,已经变成了这样。顺便说一句,dq1代是1986年出的,sfc版本在1993年同2代一起推出。编辑器Tiled目前Tiled应该是2d瓷砖编辑器的王者,基本上包含了一个直接可用的瓷砖编辑器,另外他在0.9的版本新增了地形元素,包含了瓷砖过渡的功能。具体的操作可以查看Tiled文档尝试一下。于是我用ps重新做了下透明像素填充,为了能在Tiled中直接使用,于是这个泥土块变成了这样。由此来看,泰格瑞亚的瓷砖过渡块是非常不人道的。

引言

瓷砖在游戏开发中的作用可以说非常巨大,哪怕在现在的2016年,依旧有非常多的游戏地表都是用有限的瓷砖拼起来的,除了id的mega texture以外,这里面的原因恐怕是不言自明的,因此我这段时间主要研究了一下这里面的一些技术问题,当然该问题跟美术相关性也比较大。

最早的瓷砖游戏

早期在红白机的几乎所有游戏都是瓷砖的,但是其中印象最深的或者最low的应该是dq1代,他的画面是这样的。

从这个游戏的画面可以明显的看到人为的瓷砖拼接痕迹,应该说瓷砖完全就是按类型划分的,中间完全没有过渡。 同样的位置,在sfc时间,已经变成了这样。

我们只看地形的话,特别是水与草地的连接区块,已经明显看到了有过渡,当然这种过渡本质上是美术做了第二个草地瓷砖导致的。 顺便说一句,dq1代是1986年出的,sfc版本在1993年同2代一起推出。

对于美国人来说,同样的图像进化印象最深的应该在Ultima IV到Ultima V的跨越。

瓷砖存在的问题

使用瓷砖的首个问题恐怕跟现实中的一样,就是很明显的人造物体,而在游戏中,由于大量需要拟自然的草地,河流等,现在瓷砖首先需要处理的问题就是防止看起来像人造草地,人造河流。 其次是平滑的过渡,自然界的绝大部分地表与地表之间是有合理过渡的,比如草地与沙地,森林与草地等,而不会出现生硬的分割,比如dq1的fc版本。 最后一个问题是美术制作上的,如何生成一个可无限平铺的瓷砖,这个在技术上有一些手段,当然主要的处理还是在美术上。

瓷砖过渡

最简单的瓷砖过渡自然是人肉的方式,比如设计师在设计关卡的时候,根据周围的瓷砖选择应该选择的瓷砖,而美术在制作的时候就会制作一些过渡瓷砖,比如dq1 sfc版中主角的与水相邻的草地,就有明显的水花,这也与现实生活的观感一致,设计师在设计大地图的时候选中这块瓷砖即可。

但是关卡设计师如果每次想做个草地都要进行类似的判断,明显是一件愚蠢的行为,因为采用哪个瓷砖完全可以程序化,简单的说这个逻辑相当简单,完全可以用程序解决,而关卡设计师只要用填充工具填充一个草地即可,不需要关心用哪个过渡草地贴图。

如何处理瓷砖过渡

简单的计算下瓷砖过渡所需的块数。

首先是最基本的一个类型一个瓷砖,那么块数显然是1。

下图是我们预期达到的效果:

看上去有点复杂,怎么计算需要多少块草瓷砖与水的过渡呢,以上图中三面环水的瓷砖举例,可以看如下的抽象图

1 0 0

0 # 0

1 1 1

#即那个瓷砖块,由这这个简易的抽象图可以明白,实际上采用那个瓷砖块由周围的8个格子决定,所以排列组合有2^8个,即256种组合,而这仅仅是草与水的组合,如果草与沙、泥土等那不得是天文数字。

所以下一步就是如何优化这个组合数量,可以看到这种组合排列方式有是以地形类型在图形中间为准的,即我们的思维方式是草,另外可以看到刚才抽象图中左上角的1对#号并没有相互影响的关系,也就是说,组合排列方式未必是相乘关系(当然想做的更好还是可以做不一样的,这两个草地相挨比较近,按道理中间应该有浅滩)。

现在来说一些详细的对策,对策一就是将4个边缘及4个对角的图片拆开处理,在程序中在动态合并起来,这样的话就只需要2^42^4 = 32个图片即可解决此问题,这种办法可以参见此文。

对策二就是去除一些在游戏中不会出现或者不需要处理的过渡区块,比如刚才的草地对角(刚才也解释了,在这种情况下,实际上有会更好),对角外墙的衔接,这种处理往往在墙这种材质中比较常出现,适合泰格瑞亚这类游戏,具体可以参考此文中的Blob模式(仅需要47块),应该来说非常适合做此类游戏。

对策三是最常使用的招数,绝大部分游戏都使用此处理方式,那就是将瓷砖类型信息放在对角进行考虑,这样2^8 就直接变成了2^4即16个瓷砖组合。

当然这种方式也有几个问题,因为整体瓷砖有偏移,所以地表需要做偏移量,否则与人物等上层图层会有偏移。另外一块瓷砖就不仅仅是一个类型信息了,而是有四个类型信息,也就是占用内存会更多点。

在游戏应用上还有一种瓷砖过渡方式与此方式完全不同,过渡块实际上是一个单独的图片,程序会在游戏运行时动态用过渡块混合原始图片,这样美工的工作量很少很多,而且过渡块可以通用于很多资源,下图说明一切。

原理图

效果图

当然这种通用出来的过渡模板不可能通用一切类型,一般需要多个类型之间做几种,比如这个是我从帝国时代中截图得到的不同过渡块模板。

瓷砖类型间的过渡

刚才讨论的仅仅是两种瓷砖间的过渡,我们成功将256种可能缩减到了几十个,而如果有其他类型相互组合又如何处理呢,比如水与沙地,是否要重新制作几十个过渡块?

这个解决方法也有许多,比如在真实世界中,水一般不太可能跟砖块,铁等相互衔接,所以一般制作上不会按n*m的方式制作所有过渡块,只会在需要的时候制作即可,待会我们介绍Tiled编辑器的时候可以看到他是如何记录多个类型之间的过渡的。

另外一种处理方式比较讨巧,就是定好多个类型之间的层级关系,比如草地一定是在水上方,而岩石一定是在草地上方,而图片原型含有透明度,游戏运行是按层级做透明混合即可(war3即是这样的处理方式)。

2D游戏中的瓷砖过渡

下面我想举一些游戏中的例子,来说明下以上的做法。

编辑器Tiled

目前Tiled应该是2d瓷砖编辑器的王者,基本上包含了一个直接可用的瓷砖编辑器,另外他在0.9的版本新增了地形元素,包含了瓷砖过渡的功能。

可以看到沙地与鹅卵石、普通路面间均有过渡,另外操作上也很直观,采用的是方案三,即4斜角判断类型的方式,所以仅需16块瓷砖(实际上只需要15块,没有全是0的可能)即可自身瓷砖做任意平铺。不需要对角衔接的情况还可以去除两块。 具体的操作可以查看Tiled文档尝试一下。

泰格瑞亚

泰格瑞亚的采用比较极端,在Reddit上有泰格瑞亚美术的回答,他们使用的是256个过渡块,这个美术同学满是吐槽,我扒了下电脑上泰格瑞亚的游戏,还真是。

这个美术同学说,如果重新设计的话,他比较希望采用47块的那种方式,当然这种方式会导致对角块没有衔接,但是问题不大。

Starbound

Starbound是泰格瑞亚团队成员重新创立的一个科幻版的类泰格瑞亚,我没有仔细玩过,不过我特地研究过了一下他的tile拼接方式,发现他的格子是这样的。

瓷砖非常小。另外外部的衔接块只有4px,中间的块则是8px,我第一眼的直觉就是,这个应该还是类似方案三的过渡方式,上面的8×8的应该是对角衔接。于是我用ps重新做了下透明像素填充,为了能在Tiled中直接使用,于是这个泥土块变成了这样。

由此来看,泰格瑞亚的瓷砖过渡块是非常不人道的。顺便说下,starbound和饥荒的关卡编辑都是用Tiled制作的,虽然他们都包含了绝大部分程序化的世界生成,但是有非常多的套路关卡直接用Tiled设计了。

RPG Maker VX

这个是做RPG游戏非常有名的编辑器,出名的游戏我就不列举了,而这个编辑器给我最大的印象就是我在08年用js做一个rpg引擎时,一直苦恼于如何程序化衔接每个类型的瓷砖,而这个编辑器打开用,我很惊艳于他直接可用的过渡瓷砖,但是当时因为时间有限,并没有去深入研究他的实现,现在因为本篇文章的整理,基本上明白了他的实现原理就是我的类似方案三的实现,只不过他的地表应该是自带偏移了。他的砖块集如下,为了更明确的明白他的实现,我特地在一个可衔接砖块上标注了1到6。

不过我的标注应该是错误的,他实际上应该是13块的实现,即没有对角过渡。

3D游戏中的瓷砖过渡

3d游戏中普遍还是瓷砖地图,只不过绝大部分可能用了纹理混合达到细微调整。

魔兽争霸3

war3实际上在上面已经提到了,他使用15块过渡瓷砖做的地表,另外明确多个地表类型之间的层级关系,不过由于是3d游戏,有光照和阴影对场景的影响,所以导致看上去纹理并没有明显的重复。

下图是我用Tiled设定的war3草地图

与上面不同的是,war3有对角衔接图。

DotA2

DotA2的平面地表是可以做多材质,多纹理的混合的,而且混合效果非常好,衔接区块是不需要制作的,完全是用程序混合生成。

Wang Tiles

除了边角处理以外,中间都相交的区块重复度还是很高,所以一般游戏基本上都会做多套随机使用,比如war3的图片,明显是有非常多的中间区块用来随机使用的,有没有更好的办法将这种重复感觉进一步弱化呢,答案是Wang Tiles。

本质上就是将随机选取中间块变成了根据更加多元化的边界及样式将人造感弱化。

流亡黯道

流亡黯道的处理方式跟上文的瓷砖过渡没有太大关系,主要是使用了wang tiles的做法,做了一个比较不错的应用,我把他放在这里,官方这个教程很不错,主要是美术同学如何制作可以用来做wang tile的教程。

其他方案

上文的瓷砖过渡方案主要都是美术制作的,而目前市面上3d游戏另外一部分制作是通过程序混合的,类似地形高度图的使用,应该是生成了专门的笔刷图或者顶点属性,在地图加载的时候动态混合出来使用的。 这样的话,美术可以直接在地图编辑器里作画,可以节省更多的美术资源,不过效果如何还是要看美术的功力。

比如在Dota2 Workshop中的这里文章中可以看到应该是在顶点中存了同个材质不同纹理在顶点的所占比重达到了混合效果,从dota2实际效果看,混合得挺不错的。

游戏样例分析

饥荒

饥荒的地表明显是Blob模式,即47块,每块为136像素 比较特别的是,饥荒的地表跟Blob模式是反向的,即实际操作中对应Blob模式的实物居然是空地,我在简单实现中发现,饥荒应该在设计阶段用的是1,0等简单的标示地表类型,而通过程序动态算出使用的区块的,因为如果是地表编辑的时候使用此方式,那么笔刷很难操作。

帝国时代

帝国时代的地表也是Blob模式,虽然有很多重复的上下左右贴图,不过那些应该在游戏中只是减少重复感使用的。 不过帝国时代需要衔接的地表类型比较多,所以通用了一个Blend纹理。

    推荐阅读
  • 远近光灯自适应切换怎么开(远近光灯自动切换)

    经常有人问马博士,车辆前大灯的远近光自动切换功能如何开启,爱车明明配备这个功能却从来没使用过,一直都是在手动切换。//远光控制系统远光控制系统是通过车辆前感摄像头来判断前方同向或对向车辆的行驶情况,从而实现远、近光的自动切换。马博士远光控制系统在周围光源充足、天气状况不佳、道路状况较差时可能会影响其功能的正常工作,因此不要过度依赖远光控制系统,必要时应手动切换远光和近光。

  • 小说玫瑰雾(小说烛火昏黄看到魔后纯白衣物上的那抹红)

    艳丽刺眼的液体从喉中涌出,染红樱璃纯白内衫之时,男人正好转身走进盥洗阁,错过了这幅画面。即使此刻的她坐在冰凉的地上冷到发抖,也阻挡不了凤旭对琉音的关心。凤旭将声音压低,不同于面对自己时的冷硬,满含温柔与关切。琉音的声音落下,凤旭心头一拧。这样的话从樱璃口中说出,凤旭竟是有些怔愣。传音诀是伺候琉音的魔侍传来的,凤旭听完,霎时心急如焚。凤旭为了那个女人,抛下了自己。

  • dnf奶妈三觉引导石(奶妈100级如何加点)

    治愈祈祷:必满,奶妈加血技能中CD最短的技能,仅有10秒,血量的加成根据智力、TP加点以及符文有关。TP加点解析TP加点方面,治愈祈愿必满,可以提高50%的回复量增加率。忏悔之雷必满,可以提高领主、稀有类怪物几率50%的忏悔几率。神光十字必满,可以大大提高神光十字的伤害以及buff持续时间增加量。勇气圣歌必满,可以提高50%的移动速度增加量,剩余的3点TP可以随意点。

  • 开好头起好步决战决胜脱贫攻坚(擂响催阵鼓啃下硬骨头)

    2019年,涟源市实现脱贫摘帽,148个贫困村全部出列。去年底,该市贫困发生率下降至0.45%。截至6月28日,排查反馈的1279条问题均已全部整改到位,整改率为100%。涟源乘势而上,于7月开展“进村入户巩固月”活动,全市各级领导干部和机关干部对所有贫困户、边缘户再进行一次全面走访,在全面巩固“百日攻坚”成效基础上,将涉及到脱贫攻坚的问题力争全部实现动态清零。

  • 黄疸是什么(黄疸的基本症状)

    黄疸是什么黄疸是常见症状与体征,其发生是由于胆红素代谢障碍而引起血清内胆红素浓度升高所致。临床上表现为巩膜、黏膜、皮肤及其他组织被染成黄色。因巩膜含有较多的弹性硬蛋白,与胆红素有较强的亲和力,故黄疸患者巩膜黄染常先于黏膜、皮肤而首先被察觉。消化道症状,常有腹胀、腹痛、食欲不振、恶心、呕吐、腹泻或便秘等症状。

  • 橙子放家里怎么保存(橙子的保存方法)

    这样做的话大部分的橙子就能够保存一个月左右的时间。用苏打水清洗橙子,自然凉干橙子外的水,使苏打水在橙子外形成保护膜。这样橙子的保存就会延长很长时间,放上三个月没有什么问题的。将橙子擦洗干净,晾干后用保鲜膜包裹,然后放入冰箱中冷冻起来。

  • 100条劝世良言(处世需有良好的心态)

    《劝世文》吕洞宾一毫一善,与人方便。世人依此言,灾退福自来。相互猜疑会成患,朝花暮柳该批判。一方有患莫怨烦,体贴照顾莫疏远。《劝世文》也称《警世录》。奉劝世间男共女,殷勤须听记归心。长大成人分居日,祖公物业莫相争。嫂婶和顺家还建,兄弟何时家不分。贫家娇子无衣食,富家恶儿遭是非。只因耕田为本份,营生买卖受艰难。能可衣食多丰富,莫将懒惰受饥寒。奉劝世间耕田子,世上为人须要勤。

  • 锐步还属于阿迪达斯么(相伴15年后被阿迪达斯)

    2021年3月10日,阿迪达斯发布新“五年计划”,明确自2021年第一季度起,旗下锐步将不再纳入业务范围。锐步的身价也从当年被高调买入时的38亿美元,一跃跌落至12亿美元,不及买入价格的三分之一。自此,锐步品牌开始将它的“魔爪”伸向海外市场。据悉,锐步公司不惜斥巨资成立了一支由专家组成的“先进构想小组”。

  • 一次打两个喷嚏是什么意思(一次打两个喷嚏的意思)

    打喷嚏的主要原因,感冒时打喷嚏,帮助清洁鼻部。患有过敏性鼻炎或花粉症时打喷嚏,从鼻道排出过敏物。患有血管收缩性鼻炎的人,也经常打喷嚏,是源于鼻部血管变得对湿度和温度甚至有辣味的食物有过敏。最常见的打喷嚏的原因是非过敏性鼻炎,为嗜曙红细胞增多性鼻炎,或叫NARES。患者有慢性鼻炎症状,但对各种过敏原的反应都非阳胜。且是一种未知的原因,他们的肌体好像释放组胺而产生打喷嚏之类的过敏症状。

  • 玻璃袜是什么袜子(玻璃袜子相关介绍)

    玻璃袜是什么袜子?以下内容希望对你有帮助!玻璃袜是什么袜子玻璃袜子是一种透明的袜子,这种袜子看上去像玻璃一样的透明,穿起来就像是无实物一样,非常的薄;但是玻璃袜子比较有质感,而且设计的也比较时尚。袜子是一种穿在脚上的服饰用品,起着保护脚和防脚臭的作用;而且袜子按原料分有棉纱袜、毛袜、丝袜和各类化纤袜等,按造型上有长筒袜、中筒袜、船袜、连裤袜等,还有平口、提花、织花等多种式样和品种。