news 2026/9/9 16:41:09

Arnis:给一个经纬度框,就能生成 1:1 地形的 Minecraft 城市

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Arnis:给一个经纬度框,就能生成 1:1 地形的 Minecraft 城市

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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 16:40:22

Powerlevel10k 调整终端窗口大小时提示符显示错乱怎么缓解?

Powerlevel10k 调整终端窗口大小时提示符显示错乱怎么缓解&#xff1f; 【免费下载链接】powerlevel10k A Zsh theme 项目地址: https://gitcode.com/GitHub_Trending/po/powerlevel10k 如果你在使用 Powerlevel10k 时&#xff0c;把终端窗口水平方向来回拉宽、缩窄几次…

作者头像 李华
网站建设 2026/9/9 16:40:21

MATLAB入门到实战:从矩阵运算到数据拟合的完整教程

简介&#xff1a;MATLAB程序设计教程&#xff08;附代码&#xff09;是一套面向MATLAB初学者的系统教程&#xff0c;也适合有一定基础、希望查漏补缺的科研与工程人员&#xff0c;内容覆盖科学计算、数据分析、动态仿真等常见应用场景。全包共118个文件&#xff0c;以105个可直…

作者头像 李华
网站建设 2026/9/9 16:40:21

复试倒计时31天:五件事让你从背完到能说清

复试day31&#xff1a;从“背完”到“能说清”&#xff0c;最后一个月我只做这五件事日历翻到今天&#xff0c;距离复试还有整整31天。如果你和我一样&#xff0c;初试成绩出来之后短暂放松了一阵&#xff0c;现在正对着厚厚的专业书和英语自我介绍发懵&#xff0c;那这篇文章就…

作者头像 李华
网站建设 2026/9/9 16:39:36

Python字典与集合实战:哈希表原理、高效API与性能优化

面试的时候&#xff0c;我几乎每次都会问候选人同一个问题&#xff1a;Python里字典为什么查找快&#xff1f;答案其实就三个字——哈希表。但哈希表这三个字背后&#xff0c;藏着一整套我们平时写代码时每天都在用、却很少细想的高效数据管理方式。字典&#xff08;dict&#…

作者头像 李华
网站建设 2026/9/9 16:38:46

IEEE33节点配电网韧性提升:混合储能+OLTC+SVC协调优化Matlab实现

做电力系统方向的研究生&#xff0c;十有八九会碰IEEE33这个系统。我接触它至少四五年了&#xff0c;从最初的潮流计算到配网重构&#xff0c;再到今天要说的韧性提升&#xff0c;几乎所有的配电网研究都能在这个系统上做实验。前两年我开始做极端天气下的韧性课题&#xff0c;…

作者头像 李华