Arnis:给一个经纬度框,就能生成 1:1 地形的 Minecraft 城市
【免费下载链接】arnisGenerate any location from the real world in Minecraft with a high level of detail.项目地址: https://gitcode.com/GitHub_Trending/ar/arnis
Arnis 是一个开源的 Minecraft 世界生成工具:输入真实地点的经纬度范围,它拉取 OpenStreetMap 数据和高程数据,生成带建筑、道路、地形的可游玩世界,让你不用手工摆一块方块就能在 Minecraft 里复刻家乡。
Arnis 生成的 Minecraft 城市预览:建筑、道路与地形均来自真实地理数据
没有 Arnis 之前,手工复刻一座城市是什么体验
想在 Minecraft 里建一座"我长大的地方",流程大概是:打开地图软件对着摆方块,先把路网在纸上画一遍,再照图纸铺路盖楼。一条百米长街错一个方块就会越错越远,多数人坚持不过一半。Arnis 把"看地图摆方块"这件体力活整个交给程序:人只在地图上画一个矩形,矩形变成一个包围盒(bbox),后面全是自动的。
Arnis 图形界面:用矩形工具框选区域,选择世界格式后点开始生成
🧭 从一个包围盒到 Minecraft 世界:完整数据流
流程从输入开始。无论 GUI 里画的矩形还是命令行里的--bbox参数,最终都是四个数:min_lat,min_lng,max_lat,max_lng,由 src/args.rs 解析并做合法性校验。
第二步是取数据。Arnis 把 bbox 发给 Overpass 服务,拿到该区域的 OSM 建筑、道路等要素,同时补充地块覆盖和建筑轮廓;地形部分则向高程服务请求对应区域的数字高程模型。下载逻辑集中在 src/retrieve_data.rs,失败时会得到"被限流,请稍后再试"这类可读提示,而不是一串堆栈。
第三步是坐标换算。这是"地理数据"变成"Minecraft 方块"的分水岭:src/coordinate_system/transformation.rs 里的CoordTransformer把经纬度包围盒换算成方块空间的等轴包围盒,之后所有坐标都先经过它。需要把多个区域拼在一起时,可切到 Web Mercator 投影模式,保证相对位置一致。
第四步是元素处理。OSM 要素按类型分发给 src/element_processing/ 下的各子模块:建筑算出轮廓与层数,道路铺成路面,树木按仓库自带的树木库摆放,还有铁路、水体、广告牌等各有归属。
第五步是写出世界。src/world_editor/ 负责最终落盘:Java 版输出标准 Anvil 世界目录,直接放进 saves 即可;基岩版打成 .mcworld;Luanti 版写 map.sqlite。生成的世界打开就能玩,还能附带一张显示全图的锁定地图道具。
生成流程里藏着的三个设计点
地形精度不是一家数据源打天下。不同地区的高程模型精度差别很大,Arnis 没有写死单一服务,而是在 src/elevation/selector.rs 里按"覆盖范围优先、全局兜底"做选择:bbox 依次与各高分源做覆盖匹配,都不命中就回落到全球瓦片源。类比一下,就像点外卖先找能送到的最近的店,实在没有再叫跑腿。
全流水线只有一种方块坐标。坐标换算在数据入口一次性完成,下游的建筑、道路、树木模块从此不再关心经纬度,各自只处理自己的 OSM 标签。新元素类型只要写一个子模块接进分发逻辑就能参与生成。
地形先"修复"再使用。原始高程数据有孔洞和尖刺值,src/elevation/postprocess.rs 里的填洞、过滤异常值步骤会先处理再缩放成 Minecraft 的 Y 轴高度,避免生成出悬空方块或莫名深坑。
🛠️ 上手的最短路径
有 GUI 版的话直接下载 release,在地图上画矩形即可。喜欢命令行:git clone https://gitcode.com/GitHub_Trending/ar/arnis后执行cargo run --release --no-default-features -- --output-dir="<你的 .minecraft/saves 路径>" --bbox="min_lat,min_lng,max_lat,max_lng"。
两个实用技巧:先选一两平方公里的小区域验证效果,再考虑扩大,因为面积直接决定生成时长和内存;只想看地形时加--mode terrain-only,会跳过 OSM 查询,速度明显更快。
把 Arnis 放进工具链,"家乡的那几平方公里"就从地图截图变成了可以走进去的地方。下一步值得试的,是用 Web Mercator 投影把多个 bbox 的生成结果拼成一张连通的大世界。
【免费下载链接】arnisGenerate any location from the real world in Minecraft with a high level of detail.项目地址: https://gitcode.com/GitHub_Trending/ar/arnis
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考