如何把真实城市变成 Minecraft 世界:Arnis 区域生成实践教程
【免费下载链接】arnisGenerate any location from the real world in Minecraft with a high level of detail.项目地址: https://gitcode.com/GitHub_Trending/ar/arnis
Arnis 是一个开源工具,可以直接读取 OpenStreetMap 数据和真实高程数据,生成 Minecraft 世界。你不需要手动逐格建模,选定一个现实区域、设置好比例,就能得到一个可以直接进游戏游玩的地形加建筑场景。它适合三类人:想复刻熟悉街区的人、需要地理教学素材的老师、以及想用游戏场景对比真实地图数据的开发者。生成的结果同时支持 Java 版(1.17+)、基岩版和 Luanti(Minetest)。
开始前需要准备什么
- 一台能访问网络的电脑:Arnis 运行时会在线查询 OSM 矢量数据并下载该区域的高程数据,这两个请求决定了生成质量和速度。
- 程序本体:可以直接使用官方发布的构建版本;如果你习惯自己编译,也可以用
git clone https://gitcode.com/GitHub_Trending/ar/arnis获取仓库后执行cargo run --release运行图形界面。 - 一个你熟悉的地方:第一次使用建议选一个你亲眼见过的区域,这样生成后很容易判断还原程度。
如何选定要生成的区域
区域由一个边界框(bounding box)定义,包含四个数:最小纬度、最小经度、最大纬度、最大经度。
图形界面里最省事:打开程序后在地图上缩放到你想要的地方,用矩形工具拖出一个框,界面上会显示对应的坐标,之后在设置面板里调整参数,点击开始生成即可。
走命令行的话,用--bbox参数传入同样的四个数即可;如果你手头已经有导好的 OSM 文件,也可以改用--file指向本地.osm文件,边界框会自动从文件推导,省掉手写坐标这一步。
三个最影响结果的参数
世界比例(--scale):单位是"每米多少方块"。1.0 表示一格方块对应现实一米,即 1:1 等比还原。数值越小,同样的世界体积装下的现实范围越大,但细节越粗。这个参数的有效范围是 0.05 到 4.0;特别注意,当比例低于 0.3 时,道路和建筑会被整体跳过,只保留地形,因为再小就画不出来了。
生成模式(--mode):
geo-terrain(默认):真实高程地形 + OSM 上的建筑、道路等对象;geo-only:平地上放对象,不处理地形起伏;terrain-only:只生成真实地形,不查询任何矢量数据,适合做山川河谷这类场景。
输出位置(--output-dir):Java 版必填,目录不存在会自动创建;加--bedrock则输出.mcworld文件,加--luanti输出 Minetest 的map.sqlite。
实战案例:生成上海市中心约一平方公里的街区
以人民广场周边一个小区域为例,按下面的顺序操作:
- 框定区域:取一个大约 0.5 公里见方的范围(坐标以你在地图上实际读到的为准),例如
--bbox "31.2280,121.4650,31.2330,121.4700"。 - 选择参数:第一次运行建议用接近默认的设置——比例保持 1.0 试试 1:1 效果,模式用默认的
geo-terrain。如果嫌世界太大或太小,可以改成 0.5 左右。 - 指定输出:
--output-dir指向 Minecraft 存档目录下新建的文件夹,比如shanghai_demo。 - 运行并检查:生成完成后用游戏打开存档,或加
--map-preview让 Arnis 额外渲染一张俯视 PNG,拿它和真实地图对一眼,街道走向、水系位置是否对得上。 - 不满意时调整:建筑太稀疏就检查该区域 OSM 覆盖情况;比例不合适就调
--scale重新生成,一次只动一个变量,方便判断是哪个因素起的作用。
预期结果:能看到真实起伏的地面、沿道路分布的建筑轮廓和街区水系。如果生成后是一片没有建筑的平地,先看下面第一条排错。
结果不符合预期时,按这个顺序排查
世界只有地形、没有建筑和道路:最常见的原因是比例低于 0.3,对象被自动跳过。把--scale调回 0.3 以上即可。如果比例没问题但对象仍偏少,通常是该区域 OSM 数据本身覆盖较薄,可以尝试开启--overture,它会用卫星识别的轮廓补上 OSM 里缺失的建筑底面。
区域装不下或太小:想装更大范围就调小比例(往 0.1–0.3 的方向试),想看清细节就调大比例并把边界框缩小到几百米见方。两个方向同时动容易误判,一次只改一个。
生成时间远超预期:大区域加高比例时数据量和方块数都会成倍增长。建议先用小区域跑通流程,确认效果后再扩大范围;也可以先用terrain-only模式单独验证地形。
出生点离你想看的地方很远:用--spawn-lat和--spawn-lng指定出生点,两个参数必须成对出现,且坐标必须落在边界框内部,否则会直接报错。
下一步:验证、拼接与继续扩展
- 用
--map-preview输出俯视预览图,是核对还原度最快的方式。 - 想生成比单次边界框更大的城市,可以用
--projection web_mercator把多次生成对齐到同一套全局坐标上,像拼图一样拼接相邻区域;默认的local投影则每次生成都从 Minecraft 原点 (0,0) 开始。 - 街道朝向不合意时用
--rotation做 -90 到 90 度之间的旋转,对齐前可以先看 src/map_transformation/ 里平移和旋转操作的说明。 - 想理解经纬度到方块坐标的换算过程,可以从 src/coordinate_system/ 看起;所有命令行参数的定义集中在 src/args.rs,每个参数都有用途说明。
适用边界
Arnis 的还原质量取决于 OSM 的覆盖程度:城市建成区细节丰富,野外和乡村以地形和植被为主。比例低于 0.3 时对象会被跳过,0.05–4.0 之外不会接受。第一次使用请先从一个 1 平方公里左右、你熟悉的小区域开始,确认比例和还原度之后,再逐步扩大边界框或提高比例。
作者:AI 助手 | 发布日期:2026-09-08 | 项目遵循 Apache-2.0 协议
【免费下载链接】arnisGenerate any location from the real world in Minecraft with a high level of detail.项目地址: https://gitcode.com/GitHub_Trending/ar/arnis
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考