把现实地点变成 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 是一个用 Rust 编写的开源工具,能把现实世界中的任意地点转换为 Minecraft 世界。它读取 OpenStreetMap(OSM,全球志愿者维护的开放地图数据)和真实高程数据,逐格换算成方块,直接产出 Java 版、基岩版和 Luanti(Minetest)三种格式的世界文件。工具带图形界面,你在地图上框选一个区域、点击一个按钮,剩下的解析、投影和写盘全部自动完成。本文按"安装 → 首次生成 → 原理 → 调优 → 排错"的顺序,带你从零走到一个可以进游戏的世界。
🗺️ 核心速览
| 功能 | 说明 | 适用场景 |
|---|---|---|
| OSM 地点转换 | 抓取建筑、道路、水体、绿地等要素并映射为方块 | 复刻城市街区、校园、小镇 |
| 真实高程地形 | 自动选择高程数据源,生成真实起伏的地表 | 地形演示、地貌教学 |
| 三种生成模式 | geo-terrain(物体+真实地形,默认)、geo-only(物体+平地)、terrain-only(仅地形) | 按内容与速度需求取舍 |
| 三种世界格式 | Java 版(1.17+)、基岩版(.mcworld文件)、Luanti | 不同客户端与设备 |
| 比例与视角控制 | --scale控制每米对应方块数(0.05~4.0),可设出生点、旋转角、游戏模式 | 自定义视角、拼大图 |
⚙️ 环境准备与安装验证
依赖很轻:装好 Rust 工具链(Cargo)即可。图形界面基于 Tauri 构建,Windows 和 macOS 一般开箱即用;Linux 上可能需要发行版包管理器里的 webkit 相关 webview 库。用下面的命令获取源码并编译:
git clone https://gitcode.com/GitHub_Trending/ar/arnis cd arnis cargo build --release验证安装是否成功,看两处:在终端运行./target/release/arnis --help,能看到--bbox、--scale、--mode等完整参数列表,说明命令行可用;不带任何参数运行./target/release/arnis,会直接打开图形界面,说明 GUI 依赖完整。Nix 用户也可以跳过编译,仓库自带 flake,用nix run直接运行。
🛠️ 生成第一个 Minecraft 世界
1. 启动图形界面
运行编译好的arnis可执行文件。你会看到一个 1000×650 的主窗口,包含地图区域和设置区。注意:首次启动时地图数据需要联网加载,窗口出现但地图空白时稍等即可。
2. 用矩形工具框选区域
在地图上找到目标位置,用矩形工具拉出一个框。你会看到选区对应的边界坐标(BBOX)和尺寸信息。注意:框选范围建议不超过 250 平方公里,程序对超过此值的区域会打印大区域警告,提示耗时和内存开销较大。
3. 选择世界格式与参数
在世界设置区选择目标格式(Java/基岩/Luanti)和输出位置,再确认生成模式(默认"物体 + 真实地形")、世界比例(--scale对应,1.0 即 1 方块 = 1 米)、出生点,以及是否生成建筑内部。注意:基岩版输出为.mcworld文件,Java 版会在输出目录里新建一个世界文件夹。
4. 点击 Start Generation
点击Start Generation后,界面会显示分阶段进度:先并行抓取 OSM、Overture 建筑轮廓和高程数据,再解析、投影、逐区块写入。注意:大区域这一步可能持续几十分钟,期间不要关闭窗口。
5. 进游戏验证
用对应客户端打开生成的世界(Java 版进入输出目录中的世界即可)。你应该站在自己指定的位置,看到按真实布局排布的建筑、道路和起伏地形。若出生点不理想,用--spawn-lat/--spawn-lng重新指定(坐标必须落在 BBOX 内)。
不想用图形界面时,CLI 一条命令等价完成,例如生成 Java 版世界:
cargo run --release --no-default-features -- --output-dir="path/to/.minecraft/saves" --bbox="min_lat,min_lng,max_lat,max_lng"⚙️ 工作原理:从 OSM 数据到方块的流水线
- 并行取数 → 解析:程序同时发起三类请求——Overpass 接口的 OSM 矢量数据、Overture Maps 的建筑轮廓(默认开启,补充 OSM 缺失的建筑)、高程瓦片。高程模块 src/elevation/ 按区域自动选择数据源:高分辨率源、区域源(如美国 USGS)、AWS Terrain Tiles 或行星源(月面、火星)。OSM 原始 XML 由 src/osm_parser.rs 解析为带标签的要素列表。
- 坐标投影 → 缩放:经纬度先转为投影坐标(本地投影每次生成从 Minecraft (0,0) 开始;Web Mercator 投影则使用全局坐标,见 src/projection/),再乘比例系数换算成方块单位的 XZ 坐标。核心几何运算在 src/coordinate_system/,涵盖地理、笛卡尔和方块坐标三套体系。
- 要素变换 → 分发:src/map_transformation/ 对全部要素做统一缩放、平移和旋转,然后按标签分发到各处理器——建筑、道路、铁路、水体、树木、地标结构各自一套逻辑,集中在 src/element_processing/。树木从仓库内置的 schematic 树包中按树种和大小挑选。
- 按格式写盘:最终由 src/world_editor/ 的三类写入器分块序列化:Java 用 Anvil 区域文件,基岩版打包为
.mcworld,Luanti 写map.sqlite。出生点、游戏模式、初始时间等元数据在这一步写入世界文件。
🗺️ 真实场景
复刻自己的街区。玩家想在游戏中看到熟悉的街道和建筑,手搓工程量极大。用 Arnis 框选家所在的街区,默认模式生成后,飞行模式下沿真实道路走一遍,连广告牌、公交站牌这类细节都会按 OSM 数据落位。
地理教学演示。教师需要可进入、可测量的地形模型,静态地形图很难让空间感落地。用 Arnis 生成当地真实地形(只看不想生成物体时选terrain-only模式),学生在游戏里走过山谷和坡地,直观建立对地貌的认知。该工具也已被用于 K-12 洪水教育等学术研究。
跨区域大图拼接。单个 BBOX 不宜过大,想覆盖整片区域时只能分段。使用--projection web_mercator后,多次生成共享同一套全局坐标,分块的世界可以无缝拼成一个更大的连续世界。
⚙️ 效率调优
| 场景 | 调整项 | 效果 |
|---|---|---|
| 区域大、担心内存和耗时 | 缩小 BBOX,或调低--scale | 方块数量随面积和比例平方级下降,生成更快、内存更低 |
| 只需要建筑布局,不关心起伏 | --mode geo-only | 跳过高程抓取和地形处理,整体更快 |
| 不需要汽车、船、起重机等 3D 道具 | --no-3d | 跳过外部模型获取与体素化,减少生成时间 |
另外两点默认行为可以帮你省时间:建筑内部生成(--interior)默认关闭,3D 道具默认开启——按场景需要增删即可。
🛠️ 故障排查速查
| 症状 | 可能原因 | 处理方式 |
|---|---|---|
报错Provide --bbox, or --file | CLI 未传--bbox,也没提供本地 OSM 文件 | 补上--bbox="min_lat,min_lng,max_lat,max_lng",或用--file指向本地.osm文件由其推导范围 |
报错--output-dir argument is required | Java 版模式未指定输出目录 | 补--output-dir;目录可以不存在,程序会自动创建 |
报错World scale must be between 0.05 and 4.0 | --scale超出合法范围 | 改为 0.05~4.0 之间的值;低于 0.3 时程序会自动跳过物体只留地形 |
| 地形完全平坦 | 使用了--mode geo-only(平地是定义行为) | 换回默认geo-terrain;仍平坦时检查网络,或加--aws-only-elevation换用约 30 米分辨率的 AWS 源 |
| 区域内建筑明显偏少 | 该地区 OSM 覆盖稀疏 | 确认 Overture 补充未被关闭(--overture默认开启),重新生成 |
| 出生点在空中或位置不对 | 未设出生点,或坐标超出 BBOX | 同时给出--spawn-lat和--spawn-lng,且坐标必须位于选定的边界框内 |
到这里,安装、框选、生成、验证的完整链路已经走通。下一步建议先试--rotation(旋转场景)、--interior(建筑内部)和--map-preview(生成俯视图 PNG)这几个参数,熟悉后再挑一个更大的区域跑一次;如果想改代码,从 src/element_processing/ 的标签分发逻辑读起,最容易建立全局认知。
【免费下载链接】arnisGenerate any location from the real world in Minecraft with a high level of detail.项目地址: https://gitcode.com/GitHub_Trending/ar/arnis
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考