Arnis 生成 Minecraft 真实世界地图的完整指南:从 1:1 地理映射到进世界验证
【免费下载链接】arnisGenerate any location from the real world in Minecraft with a high level of detail.项目地址: https://gitcode.com/GitHub_Trending/ar/arnis
想在 Minecraft 里 1:1 还原一条真实街道?Arnis 可以把 OpenStreetMap 的地理数据和真实高程直接转成 Minecraft 方块世界——地形、路网、建筑外墙一次生成。下面先讲它是什么、为什么可行,再给出可照做的上手流程。
🧭 它解决什么问题:Arnis 是什么
Minecraft 里重建现实地点的传统做法,是拿地图当底稿一格一格手动摆方块;选区稍大,这件事就没人做得下去。Arnis 就是为了解决"规模"而存在的:它是一个用 Rust 编写的免费开源世界生成器,自动处理大规模地理数据,把选区内的真实地形与建筑一次性写进游戏存档。名字取自德国同名小镇 Arnis。
它同时支持三种输出:
- Minecraft Java 版(1.17+)
- Minecraft Bedrock 版(
.mcworld) - Luanti / Minetest(
map.sqlite)
核心能力可以概括为三句话:1:1 地理映射——一个方块对应一米,路网、建筑、水域按真实位置落位;真实地形——基于高程数据生成起伏地表,而不是平板;对象自动生成——读 OSM 标签决定生成楼房、道路、树木还是水。
⚙️ 它是怎么做到的:坐标换算、地形与对象识别
先理解原理,后面的参数才好调。Arnis 的工作流是"取数 → 换算 → 铺设",对应三块机制。
经纬度到方块坐标
Minecraft 的 XZ 平面是平的,地球不是。src/coordinate_system/transformation.rs 里的CoordTransformer把选区四角投影到本地切平面(小区域用线性近似,跨区域较大时用 Web Mercator 投影),再乘以比例系数:1 个方块 = 1 米,选区宽 500 米,游戏里就是 500 个方块宽。--scale参数调整的就是这个系数。
高程数据怎么变成地形
高程网格由 src/elevation/ 处理:provider 按区域从高程数据源拉取海拔网格,postprocess 阶段过滤离群值、填补空洞,最后把海拔差换算成方块层高。山谷的深浅、河道的下切,都来自这份真实数据。
生物群系和植被
地表颜色不是随机撒的。src/biome.rs 用土地覆盖分类(林地、耕地、湿地、建成区……)加气候带(仓库内自带 0.1° 分辨率的 Köppen 气候数据 assets/climate/koppen_0p1.bin)逐格决定生物群系:热带水域是暖洋、苔原带是针叶林、沙漠带是沙地。树木则来自 assets/tree-packs/——按非洲、亚洲、澳洲、欧洲、北美等区域分类的真实树种方块模型(.schem),按选区所在区域随机撒放,而不是满地图白桦树。
OSM 对象识别
src/element_processing/ 里的每个子模块负责一类 OSM 标签:building生成带窗面门面的楼房(外墙纹理在 assets/building-facades/,含立面适配脚本 build_facades.py),highway生成道路与桥梁,water生成真实水域,还有铁路、体育场地、历史建筑等。车辆、起重机、飞机、树木等现成结构存放在 assets/structures/。OSM 没画到的建筑轮廓,还会从 Overture Maps 补齐。
🖱️ 真实上手流程
获取工具
- 常规用法:下载 GUI 版可执行文件(Windows / macOS / Linux 均支持),解压即用。
- 从源码构建:装好 Rust 工具链后,
cargo run --release即可启动 GUI 版。 - 用 Nix 的话可以直接
nix run拉起程序,不用自己编译。
在地图上框选区域
启动 GUI 后是全屏地图。用矩形工具框住目标区域即可。
实用建议:第一次生成选 2~5 平方公里的小街区。区域直接决定生成时长和内存占用,熟悉流程前别贪大。
定参数再点开始
界面上常用的几项(GUI 自带 20 种语言界面,见 src/gui/locales/):
- 世界比例:1.0 表示 1 方块 = 1 米,默认值最直观,先别改
- 生成模式:
geo-terrain(真实地形 + 对象,默认)/geo-only(对象 + 平地,快速出布局)/terrain-only(只出地形,跳过全部 OSM 查询,最快) - 出生点:不指定就落在世界中心,指定后必须落在选区内
- 建筑内部:可选开关,默认关闭,开启后生成楼层与房间,时间明显增加
然后点Start Generation。过程是"下载数据 → 坐标换算 → 铺地形 → 放对象",GUI 会实时显示进度。如果选区里有大片海域且你只需要城市部分,先用terrain-only跑一遍看地形轮廓,再跑完整模式,能省一次失败的大等待。
命令行方式
习惯脚本的用户可以完全跳过 GUI:
cargo run --release --no-default-features -- \ --output-dir="C:/YOUR_PATH/.minecraft/saves/worldname" \ --bbox="min_lat,min_lng,max_lat,max_lng"常用开关:--scale 1.0比例、--mode geo-only换生成模式、--interior开建筑内部、--bedrock输出 Bedrock 世界、--luanti输出 Minetest 世界。参数全集见 src/args.rs。
进世界验证
生成完直接进存档检查三件事:
- 从出生点沿一条主干道走到选区边缘,路网走向和真实地图对得上吗
- 河流、湖泊的平面位置对不对(水域最容易暴露坐标问题)
- 抽一栋楼量一下占地:100 米的楼在 1.0 比例下应约 100 格
形状整体被拉伸或压缩,通常是比例参数被改了,回到 1.0 重跑即可。
🎓 能做出什么:应用与案例
教育。最典型的公开案例是 Floodcraft 项目:一个面向 K-12 的洪水模拟与防灾教学环境,学生用 Arnis 生成的真实城市世界体验水位上涨如何淹没街道,比抽象课件直观得多。地理课用它带学生"走进"真实地形也是同类用法。
规划与教学演示。规划师可以用它把发展方案的地块形态放进 1:1 地形里直观讨论;教师可以让学生对比不同比例系数下同一选区的效果。
创作与社区。重建家乡、复刻地标、给服务器做开局地图,是最常见的用途。这个方向也有媒体背书:Tom's Hardware、XDA Developers、Hackaday 都报道过 Arnis,AWS 还专门撰文讲它如何调用大规模高程数据集。
🩹 排坑与调优
前面没覆盖到的通用问题,集中列在这里:
- 生成慢:缩小选区是第一手段;不需要对象时切
terrain-only,它会跳过 OSM 和 Overture 的全部网络请求 - 内存吃紧:避免超大选区一次跑完,必要时拆成相邻两块分别生成;磁盘建议用 SSD
- 比例失真:把比例调回 1.0,并确认选区四边没有异常拉伸
- 重复生成加速:同一区域重复跑时数据缓存(本地 leveldb/sqlite)会直接复用,不用重新下载
📦 资源与社区
- 官方文档:项目 Wiki,含技术原理、FAQ、贡献指南与路线图
- 关键源码入口:坐标换算 src/coordinate_system/、高程处理 src/elevation/、OSM 对象生成 src/element_processing/、世界格式写入(Java/Bedrock/Luanti)src/world_editor/、树库 src/trees/、界面 src/gui/
- 社区:Discord 服务器(README 有入口),贡献走 fork + PR,合并后由维护者定期打包发布
版权:本文基于 Apache License 2.0 许可的 Arnis 开源项目编写,项目由 Louis Erbkamm 创建维护。仅从官方渠道(arnismc.com 或官方仓库git clone https://gitcode.com/GitHub_Trending/ar/arnis)获取 Arnis,其他网站的"下载"均非官方,可能携带恶意软件。Arnis 不是官方 Minecraft 产品,未获 Mojang 或 Microsoft 认可或关联。
【免费下载链接】arnisGenerate any location from the real world in Minecraft with a high level of detail.项目地址: https://gitcode.com/GitHub_Trending/ar/arnis
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考