首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >自动地形用 16 块还是 47 块?边连接与 Blob 内角规则

自动地形用 16 块还是 47 块?边连接与 Blob 内角规则

原创
作者头像
用户12807590
发布于 2026-10-09 09:02:35
发布于 2026-10-09 09:02:35
950
举报

本文由 FrameSprite 作者工作流整理,AI 辅助编写,引用原始技术资料;构造案例不代表模型或引擎实测。

一张整齐的地形图不代表它包含引擎可能请求的全部连接。真正要交付的是一组邻接状态:道路是否只关心四条边,还是草地轮廓还需要区分凹进去的内角。先选规则,再数图片。

简要答案

仅按上右下左四边是否连接时,有 2⁴ = 16 种二元组合。常见 47 块 Blob 还区分对角,但只有相邻两条正交边都连接时才保留该对角状态。16 块角连接也是另一种合法规则,不能因为数量相同就当作边连接。47 不是任意八邻域的全部 256 种组合,也不是所有美术风格都必须采用。

适用范围

  • 地形画笔出现缺失内角、孤岛或细通道。
  • 需要先确定自动拼接预算再制作美术。

不适用范围

  • 只是摆放无连接关系的装饰图块。
  • 多种材质任意互接;需要另行制定转换关系。

1. 写出材质之间的连接约定

用“草地连接草地、外侧为空白”这种明确规则描述一个集合。画出孤岛、直线、转角和凹角需求;不要先让图像工具填满一张大图再猜每格含义。道路边连接与连续陆地轮廓通常需要不同测试图。

2. 固定位置与编号,保留方向语义

附件采用 N=1、E=2、S=4、W=8,NE=16、SE=32、SW=64、NW=128。中心格始终是当前材质。先给每个状态一个编号,再映射到图集坐标;这些编号是本文数据约定,不是 Godot 或 Tiled 的通用图块编号。

3. 把无意义的对角位清零

只有 N 与 E 都存在,NE 才能参与选择;其他三个角同理。例如只有东北邻居、上方和右方都为空时,不应凭这个对角邻居额外请求一张内角图。把归一化之后的状态去重,避免把不可达组合计入预算。

4. 用编号块验收画笔,再替换成美术

先使用色块和状态编号,配置编辑器相应的边、角或混合地形。依次画十字、环形洞、单格岛和一格宽通路;检查每个放置状态是否符合清单。逻辑稳定后,再用 FrameSprite 制作或整理的美术替换占位图。

5. 检查旋转是否破坏画面的光向

连接规则相同不代表图块可随意旋转。单向投影、草叶倾斜或高光可能在旋转后互相矛盾。把允许的变换写进交付说明;不允许旋转时,分别制作每个方向,不能用更少源图数量冒充状态完整。

构造计数:16 种边状态与 47 种 Blob 状态

枚举 0–255 的掩码,只保留四个对角条件都成立的状态。附件包含位定义、16 个边掩码和全部 47 个合法 Blob 掩码,可逐个检查。

按已连接正交邻居数分组,状态数量为 1、4、10、16、16,合计 47;仅四边则为 16。这里的 0 表示独立的中心材质格,不是地图外的空格。

这是组合计算,不是生成质量测试;未包含第三种材质、坡面高度或引擎专有编号。

从需求选择连接模型

需求

约定

验收重点

四向道路

16 种边连接

断头、转角、交叉

角点材质过渡

16 种角连接

不要按边位解读

凹角陆地轮廓

47 种受约束 Blob

洞与细通道

任意八位二元状态

256 种组合

确认确实需要全部

多材质混合

另定转换图

检查缺失材质边界

缺少的是邻接状态,还是只是少画一张图

四个边只有接或不接时有 2 的 4 次方,即 16 种状态。Blob 规则还允许检查对角,但只有相邻两条边都连接时,该对角才有效;按连边数量分组后,可得到 1、4、10、16、16,共 47 种。先列出项目实际需要的邻接规则,再决定是否做完整集合。不要把 47 当作每个地形都必须生成的文件数量:引擎可以利用旋转或图集区域,第三种材质、悬崖与高度又可能需要额外规则。生成完应在邻接样板图里逐项验收,而不是只看一张地图。

  • 验收:邻接规则
  • 验收:对角约束
  • 验收:引擎编号另验

“3×3 九宫格”描述排版,不描述状态覆盖

九张图片可能正好展示四个外角、四条边和中心,但仍没有独立岛、内角和所有细连接。先把现有图片映射到状态清单:如果两个不同状态必须共用一张图,判断它们在实际地图上是否真的可以共享,而不是只检查图集是否整齐。

交付资料应让另一位开发者重建测试

保留状态编号、图集坐标和最小测试地图。修改美术时,先复测测试地图,再扩展到关卡。FrameSprite 可以参与美术制作与处理;地形标签、画笔选择和碰撞设置仍在目标编辑器中完成。

编辑与示例说明

本次补充由 AI 辅助整理,按公开原始技术资料核对。可下载的输入与预期结果是原创构造案例,不代表模型或引擎实测;实际项目应按步骤保留自己的验收记录。

常见问题

47 块一定比 16 块好吗?

不是。先看连接语义。四边道路可能只需要 16 种;添加不被玩法使用的角状态会增加制作和审核成本。

16 块角连接与 16 块边连接可以直接互换吗?

不能直接互换。数量相同,但位表示的位置不同;必须重做对应规则与美术映射。

为什么附件不把 48 格图集都当作状态?

图集可有空格或额外装饰变体。47 指此约定的唯一状态数,不限制文件的排版格数。

生成一张无缝纹理就能自动拼接吗?

不能。平铺纹理只解决重复表面,还需要边界美术与编辑器邻接标签来处理材质转换。

来源与补充材料

Tiled:使用地形 · Tiled

Godot:使用 TileSet · Godot Engine

原文:https://cn.framesprite.com/guides/blob-autotile-47-vs-16-edge-tiles

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 简要答案
  • 适用范围
  • 不适用范围
  • 1. 写出材质之间的连接约定
  • 2. 固定位置与编号,保留方向语义
  • 3. 把无意义的对角位清零
  • 4. 用编号块验收画笔,再替换成美术
  • 5. 检查旋转是否破坏画面的光向
  • 构造计数:16 种边状态与 47 种 Blob 状态
  • 从需求选择连接模型
  • 缺少的是邻接状态,还是只是少画一张图
  • “3×3 九宫格”描述排版,不描述状态覆盖
  • 交付资料应让另一位开发者重建测试
  • 编辑与示例说明
  • 常见问题
    • 47 块一定比 16 块好吗?
    • 16 块角连接与 16 块边连接可以直接互换吗?
    • 为什么附件不把 48 格图集都当作状态?
    • 生成一张无缝纹理就能自动拼接吗?
  • 来源与补充材料
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档