技术干货:如何高效实现地图自动拼接功能
介绍
这篇文章提供了一个诸如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.BIGEMAP地图下载器提供了全世界主流地图 ...
- 基于MATLAB碎纸片的自动拼接复原技术
意义:破碎文件的拼接在司法物证复原.历史文献修复以及军事情报获取等领域都有着重要的应用.目前发现对碎纸片的拼接大部分由人工完成,准确率较高,但耗费大量人力财力及时间,效率很低.随着计算机技术的发展,人 ...
- MATLAB碎纸片的自动拼接复原技术
MATLAB碎纸片的自动拼接复原技术 意义:破碎文件的拼接在司法物证复原.历史文献修复以及军事情报获取等领域都有着重要的应用.目前发现对碎纸片的拼接大部分由人工完成,准确率较高,但耗费大量人力财力及时 ...
- Tesla AI Day视觉自动驾驶技术解读:感知+规划+矢量地图+自动标注+仿真
作者 | 赵行 编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/570824078 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干 ...
- 特斯拉自动驾驶算法和模型解读(感知/规划/矢量地图/自动标注等)
编辑 | 焉知汽车 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[全栈算法]技术交流群 特斯拉是一个典型的AI公司,过去一年训练了7 ...
- 【技术干货】跨境茶话会第4期丨响应式编程的应用
大师兄说 许多场景下为了更迅速的响应客户端的请求,将问题转化为实时反映业务状态的变化,能更好地提升用户体验以及支撑更大量的用户请求,于是催生了响应式编程,本期跨境茶话会仍旧邀请了中美两地的相关专家来谈 ...
- 技术干货 | Flutter 混合开发基础
导读:Flutter 支持以独立页面.甚至是 UI 片段的方式,集成到现有的应用中,即所谓的混合开发模式.本文主要谈谈 Android 平台下, Flutter 的混合开发与构建. 文|李成达 网易云 ...
- 技术干货| 阿里云基于Hudi构建Lakehouse实践探索
简介:阿里云高级技术专家王烨(萌豆)在Apache Hudi 与 Apache Pulsar 联合 Meetup 杭州站上的演讲整理稿件,本议题介绍了阿里云如何使用 Hudi 和 OSS 对象存储构建 ...
- 服务迁移之路 | Spring Cloud向Service Mesh转变 | 技术干货
戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 作者: 李宁 转自:博云技术社区 Sp ...
最新文章
- Tomcat 之 tomcat安装和组件介绍
- curl模拟多线程抓取网页(优化)
- nginx图片服务器性能,搭建nginx图片服务器
- linux中yum怎么安装服务器,yum安装(linux如何安装yum)
- 不合法的偏移量 钉钉接口_钉钉服务端api接口使用
- 【超经典】Java多态有什么好处?怎样用?
- 微信跳一跳高分系列三:用 adb 破解微信跳一跳小程序
- C#学习笔记五面向对象基础
- sqlserver 2014 删除主键约束
- Linux自动备份脚本
- 3.12 12!配对
- DxOMark排名更新榜首易主 华为被拉下马:我还会回来的!
- 计算机汉字的输入和编辑教案,计算机汉字录入教案
- Xshell连接linux(deepin)时提示ssh服务器拒绝了密码,请再试一次解决方法
- jpa 公共字段顺序_临沂沂水景观花箱销售公司公共使用
- git:关联github和本地仓库
- 《深入理解Java虚拟机》读书总结
- 编程坑太多,Map 集合怎么也有这么多坑?一不小心又踩了好几个!
- 黑客用社会工程学做渗透测试的广泛应用介绍
- ORACLE介质管理库MML