介绍

这篇文章提供了一个诸如RPGMaker、星际争霸关卡编辑器的自动拼接功能的算法和数据结构。当地图编辑器提供了这个功能,能显著加快内容创建的节奏。

背景

基于tile的图像现在已经是2d游戏的标志了,因为早期的2D游戏使用有限的tile来表现一个大的2D环境。这很自然地会让图像块状并且重复。但是,高超的图像艺术家会通过巧妙地设计来避免这些问题。

一个类似的技术需要使用供过渡的tile,比如草地-水,草地-荒漠等如上图所示的块。但是,把这些过渡块手工放置在合适的位置工作量非常大。一个复杂的地图编辑器会允许用户标记哪些块,然后自动混合。

自动拼接

大部分自动拼接几何包括14个块,包括内部块和外部块(比如全部是草地和全是水的)、上、下、左、右边界、四个外角以及四个内角。这里的算法还要两个额外的块一共16个。

这个算法认为一个块是由四象限构成的。每一个象限或者角都属于一方(水或者草地)。所有可能的组合共有2 x 2 x 2 x 2 = 16。这16种组合可用4位的2进制数字b3 b2 b1 b0  来表示。每一位b I 对应一个角的类型。如下图所示,分别对应左上、左下、右上和右下。

使用4位索引,可以按如下排序:

这个过程也可以反过来,用4位序列来决定角的类型。这在下一节中给出了一个算法。为简便起见,假设地图只有这16种情况,并可用4位序列索引。

自动拼接算法

1、当一个新的tile被放置到地图中的时候,可以从它8个邻居的情况来推断它对应的是哪个4位索引

2、对于4个与新tile共享一条边的4个tile(上下左右),新的4位索引被构建,2位来自新的tile,2位来自与共享边离得远的tile。新的4位索引会有限的让这tile进行过渡

3、类似的算法也发生在剩下4个块(左上,左下,右上,右下)。

4、与新块临近的块都已经计算了新的4位索引。

进一步考虑

除了上面的算法,还有以下问题需要考虑

边缘块:必须小心处理边缘或者角落的地图,因为他们的周围经常少于8个

Tile组织:上面的算法假设4位索引直接对应tile索引。如果不是这样或者索引不连续,就需要建立一个图片和4位索引之间的双向查找。

变种:尽管这样过渡比较光滑了,但是观察者还是能看到重复的图样,手游账号出售平台可以把一个4位索引对应多个图片来解决这个问题。

实现

这篇文章没有理论没有包括任何示例代码,但是读者可以从这个开源地图编辑器tIDE来研究这个自动拼接算法。

技术干货:如何高效实现地图自动拼接功能相关推荐

  1. 如何下载高清卫星地图/历史影像(任意大小、自动拼接、高清晰)

    如何下载高清卫星地图/历史影像(任意大小.自动拼接.高清晰) 同步视频教程:如何下载卫星图像 矢量道路路网.水系如何下载? 如何下载使用等高线地形图? 1.BIGEMAP地图下载器提供了全世界主流地图 ...

  2. 基于MATLAB碎纸片的自动拼接复原技术

    意义:破碎文件的拼接在司法物证复原.历史文献修复以及军事情报获取等领域都有着重要的应用.目前发现对碎纸片的拼接大部分由人工完成,准确率较高,但耗费大量人力财力及时间,效率很低.随着计算机技术的发展,人 ...

  3. MATLAB碎纸片的自动拼接复原技术

    MATLAB碎纸片的自动拼接复原技术 意义:破碎文件的拼接在司法物证复原.历史文献修复以及军事情报获取等领域都有着重要的应用.目前发现对碎纸片的拼接大部分由人工完成,准确率较高,但耗费大量人力财力及时 ...

  4. Tesla AI Day视觉自动驾驶技术解读:感知+规划+矢量地图+自动标注+仿真

    作者 | 赵行  编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/570824078 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干 ...

  5. 特斯拉自动驾驶算法和模型解读(感知/规划/矢量地图/自动标注等)

    编辑 | 焉知汽车 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[全栈算法]技术交流群 特斯拉是一个典型的AI公司,过去一年训练了7 ...

  6. 【技术干货】跨境茶话会第4期丨响应式编程的应用

    大师兄说 许多场景下为了更迅速的响应客户端的请求,将问题转化为实时反映业务状态的变化,能更好地提升用户体验以及支撑更大量的用户请求,于是催生了响应式编程,本期跨境茶话会仍旧邀请了中美两地的相关专家来谈 ...

  7. 技术干货 | Flutter 混合开发基础

    导读:Flutter 支持以独立页面.甚至是 UI 片段的方式,集成到现有的应用中,即所谓的混合开发模式.本文主要谈谈 Android 平台下, Flutter 的混合开发与构建. 文|李成达 网易云 ...

  8. 技术干货| 阿里云基于Hudi构建Lakehouse实践探索

    简介:阿里云高级技术专家王烨(萌豆)在Apache Hudi 与 Apache Pulsar 联合 Meetup 杭州站上的演讲整理稿件,本议题介绍了阿里云如何使用 Hudi 和 OSS 对象存储构建 ...

  9. 服务迁移之路 | Spring Cloud向Service Mesh转变 | 技术干货

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 作者: 李宁 转自:博云技术社区 Sp ...

最新文章

  1. Tomcat 之 tomcat安装和组件介绍
  2. curl模拟多线程抓取网页(优化)
  3. nginx图片服务器性能,搭建nginx图片服务器
  4. linux中yum怎么安装服务器,yum安装(linux如何安装yum)
  5. 不合法的偏移量 钉钉接口_钉钉服务端api接口使用
  6. 【超经典】Java多态有什么好处?怎样用?
  7. 微信跳一跳高分系列三:用 adb 破解微信跳一跳小程序
  8. C#学习笔记五面向对象基础
  9. sqlserver 2014 删除主键约束
  10. Linux自动备份脚本
  11. 3.12 12!配对
  12. DxOMark排名更新榜首易主 华为被拉下马:我还会回来的!
  13. 计算机汉字的输入和编辑教案,计算机汉字录入教案
  14. Xshell连接linux(deepin)时提示ssh服务器拒绝了密码,请再试一次解决方法
  15. jpa 公共字段顺序_临沂沂水景观花箱销售公司公共使用
  16. git:关联github和本地仓库
  17. 《深入理解Java虚拟机》读书总结
  18. 编程坑太多,Map 集合怎么也有这么多坑?一不小心又踩了好几个!
  19. 黑客用社会工程学做渗透测试的广泛应用介绍
  20. ORACLE介质管理库MML

热门文章

  1. java urlrewrite_Java版URL Rewrite
  2. m短波宽带通信系统的信道建模matlab仿真
  3. 所有的非处女啊!到你忏悔的时候了
  4. jmail设置端口php,php 做出类似jmail的效果
  5. 思科防火墙多端口映射多端口
  6. 在Hyperf框架中使用中间件实现接口参数混淆,防止重放攻击拒绝薅羊毛
  7. div文字垂直居中的方法有哪些?
  8. DDA直线插补算法原理与实现(matlab)
  9. 多项式计算(python)
  10. 教你如何在win11家庭版中添加【本地安全策略】