Arnis 如何把 OpenStreetMap 转成可加载的 Minecraft 地图生成文件
【免费下载链接】arnisGenerate any location from the real world in Minecraft with a high level of detail.项目地址: https://gitcode.com/GitHub_Trending/ar/arnis
Arnis 是一款用 Rust 编写的开源 Minecraft地图生成工具:它读取 OpenStreetMap 的矢量要素并叠加高程数据,输出可直接放入.minecraft/saves的世界文件,支持 Java 版(1.17+)、基岩版与 Luanti(Minetest)。OpenStreetMap转Minecraft 这条链路中,数据获取、坐标换算、方块写入各有独立模块负责,生成结果默认与现实 1:1 等比例。对家乡还原Minecraft、教学沙盘、Minecraft真实地形生成这类需求,它是少数把地理数据转游戏地图做成可复现工程流程的开源方案。
同一工具在不同区域生成的效果,比例均与现实一致。
🗺️ 快速上手
如何获取并运行 Arnis
Windows、macOS、Linux 均提供官方发布包,下载后直接运行即可。想从源码编译只需一套 Rust 工具链:先git clone https://gitcode.com/GitHub_Trending/ar/arnis,再执行cargo run --release启动图形界面;无界面环境下可带参数走命令行,例如cargo run --release --no-default-features -- --output-dir=YOUR_PATH/.minecraft/saves/worldname --bbox="min_lat,min_lng,max_lat,max_lng"。
如何框选目标区域、比例参数怎么设
在 GUI 的地图页缩放并拖到目标位置,用矩形工具框出 bbox,坐标实时显示。生成前需要确认的参数:
- 世界比例(World Scale):每米换算的方块数,范围 0.05–2.5,1.0 即真实尺寸;低于 0.30 时道路与建筑宽度不足 1 个方块,程序会自动跳过对象、只保留地形,所以小区域想保留建筑就不要把比例压太低。
- 出生点:可选,填写时必须位于 bbox 内。
- 建筑内部结构:可选是否生成。
- 生成模式:
geo-terrain(默认,真实高程地形 + OSM 对象)、geo-only(对象 + 平地)、terrain-only(仅高程地形,不查询 OSM)。
命令行下对应--bbox、--scale、--mode、--output-dir四个参数。
生成完成如何导入 Minecraft
GUI 里选好输出目录后点击 Start Generation,进度按阶段刷新,完成后得到一个标准世界文件夹——放进.minecraft/saves(或命令行指定的--output-dir)即可在游戏里进入。基岩版与 Luanti 的格式差异由 src/world_editor/ 下的三个编辑器分别处理。
⚙️ 原理速览
三条管线各管一段:
- 坐标转换:经纬度经本地线性或 Web Mercator 投影换算为方块坐标,核心在 src/coordinate_system/transformation.rs;
- 地形生成:从高程数据源采样,经后处理变成每列地形高度;
- 建筑映射:解析 OSM 标签,按道路、建筑、水系等类型分发到对应处理器。
坐标转换器的内部状态(节选自 transformation.rs):
pub struct CoordTransformer { len_lat: f64, len_lng: f64, scale_factor_x: f64, scale_factor_z: f64, min_lat: f64, min_lng: f64, mode: ProjectionMode, }适用场景与性能建议
- 教学:地理、GIS 课程可把真实区域做成立体沙盘供学生漫游,洪水减灾教学项目 Floodcraft 即基于它搭建。
- 城市规划:地块方案转成可进入的等比例场景,便于向非专业人群演示。
- 娱乐:家乡还原、地标打卡,玩家进入世界后可对照实景找路。
大区域生成慢怎么调
耗时主要集中在数据获取与逐列方块写入。实用做法有三:把目标切成多个小 bbox 分别生成,再在游戏内拼接;只关心地形时改用terrain-only,直接跳过 OSM 查询;调低世界比例,方块总数随之下降。
🐛 踩坑记录
| 现象 | 原因 | 处理 |
|---|---|---|
| 生成超时,长时间卡在数据获取 | bbox 过大,OSM 与高程请求量高 | 缩小区域或拆成多个 bbox;只要地形就换terrain-only |
| 世界里没有建筑和道路 | 比例低于 0.30,对象宽度不足 1 个方块被自动跳过 | 把--scale提到 0.30 以上,或接受纯地形结果 |
| 地形一片平坦 | 使用了geo-only模式,或高程数据未生效 | 换回默认的geo-terrain,检查高程数据源 |
| 世界文件过大、进游戏加载慢 | 高比例叠加区域过大,方块数膨胀 | 降低比例、拆分区域,关闭建筑内部生成 |
资源索引
- 坐标转换与投影:src/coordinate_system/
- 地图旋转/平改变换:src/map_transformation/
- OSM 要素处理(道路、建筑、水系、植被):src/element_processing/
- 高程数据源与后处理:src/elevation/
- 3D 模型体素化:src/models_3d/
- 世界文件写入(Java / 基岩 / Luanti):src/world_editor/
- 支持的 OSM 标签清单:taginfo.json
- 技术说明、FAQ 与贡献指南见 README 指向的项目 Wiki,社区入口(Discord)同样列在 README.md 中
项目仍在持续更新,数据源支持与生成能力会随版本演进。发现异常或有改进想法,可到项目社区反馈或直接提交 PR。
【免费下载链接】arnisGenerate any location from the real world in Minecraft with a high level of detail.项目地址: https://gitcode.com/GitHub_Trending/ar/arnis
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考