如何高效实现地图自动拼接功能设置_拼接屏控制软件通用吗

如何高效实现地图自动拼接功能设置_拼接屏控制软件通用吗转自:http://www.gameres.com/491653.html介绍这篇文章提供了一个诸如RPG Maker、星际争霸关卡编辑器的自动拼接功能的算法和数据结构。当地图编辑器提供了这个功能

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

转自:http://www.gameres.com/491653.html

介绍

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

  背景

  基于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(http://tide.codeplex.com)来研究这个自动拼接算法。
技术干货:如何高效实现地图自动拼接功能 ...

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166715.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2018 PyCharm环境安装教程[通俗易懂]

    2018 PyCharm环境安装教程[通俗易懂]环境准备:1.到PyCharm官网下载PyCharm安装包。2.下载了window版本的双击安装包进行安装。3.自定义软件安装路径(建议路径中不要中文字符)如:F:\DevSoftware\PyCharm2018.14.创建桌面快捷方式并关联*.py文件。5.选择开始菜单文件夹(默认即可),点击安装。6.耐心等待安装。7.安装完成,勾选立即运行PyCharm。8.选择是否导入开发环境配置文件,我…

    2022年8月27日
    2
  • CUDA 的卸载_cuda怎么安装

    CUDA 的卸载_cuda怎么安装CUDA的卸载操作

    2025年9月5日
    5
  • mybatiscodehelperpro使用_ios10越狱后必装插件

    mybatiscodehelperpro使用_ios10越狱后必装插件目录一、前言二、安装插件MyBatisCodeHelperPro插件三、激活一、前言在开发中编写生成bean,mapper,mapper.xml即费时也费力,可以通过MyBatisCodeHelperPro自动生成bean,dao,mapper.xml等文件,然后根据自己的需要进行修改。MyBatisCodeHelperPro是IDEA下的一个插件,类似于mybatisplugin,但是是收费的,但可以进行激活使用:下面这个大佬的个人主页上有多个版本的下载链…

    2022年4月19日
    97
  • 配置zabbix时启动失败解决办法

    配置zabbix时启动失败解决办法一开始按照这篇博客来配置zabbixhttps://blog.csdn.net/rujianxuezha/article/details/79842998启动zabbix时出现以下提示[root@www~]#systemctlstartzabbix-serverJobforzabbix-server.servicefailedbecauseaconfiguredresourc…

    2022年6月17日
    315
  • java volatile关键字的作用_Java并发编程彻底搞懂volatile关键字「建议收藏」

    java volatile关键字的作用_Java并发编程彻底搞懂volatile关键字「建议收藏」背景Java线程控制中常用的两个关键字:synchronized、volatile因上篇文章《程序员眼中的Synchronized同步锁》对synchronized关键字进行来详解。本篇文章主要对volatile关键字进行解剖。volatile关键字特性内存可见性(MemoryVisibility),所有线程都能看到共享内存的最新状态;有序性;不具备原子性(最致命缺点)。volatile解决什么…

    2022年5月6日
    44
  • 【c语言】小程序游戏——飞机游戏(一)

    【c语言】小程序游戏——飞机游戏(一)下面来介绍一个简单的游戏,其中用到的c语言知识属于基础内容,所以特别容易上手~~~~~~~飞机游戏~~~~~~~~~首先按照常理我们知道,肯定要在界面上绘制出一个飞机,我们用“*”符号来简单代表就OK。我们知道,在窗口的坐标系原点是在窗口左上角的,…

    2022年5月19日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号