三步把家乡搬进我的世界:Arnis 真实地图生成实战指南
【免费下载链接】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 的建筑、道路、水域数据,叠加多源高程数据,输出可直接游玩的 Java、Bedrock 或 Luanti 世界文件,解决"想把现实城市搬进游戏,却得手动逐块搭建几个月"的痛点。
一、为什么需要 Arnis 这类工具
想在公司楼下搭个 1:1 的方块副本跟朋友跑图,手动照地图建一平方公里城区要几个月,建完路网和地形还和现实对不上。现有做法各有短板:纯手工搭建成本太高;现成的地形生成插件只铺地貌,建筑全是通用体块,离"像真的"还差很远。
Arnis 走的是另一条路:自动拉取 OpenStreetMap 的真实要素数据和高精度高程数据,做完坐标换算后逐块落地。建筑带立面和门窗,道路按真实路网走线,城市地标甚至有专属 3D 模型;数据稀疏的区域还有备用数据源自动补位。
二、四步拿到第一个世界
- 准备环境:Arnis 用 Rust 编写,装好 Rust 工具链(rustup)即可自行编译;官方发布页也有 Windows、macOS、Linux 的现成安装包,不用编译。
- 获取源码:
git clone https://gitcode.com/GitHub_Trending/ar/arnis - 跑起图形界面:
cargo run --release。首次编译耗时较长,之后启动是秒开;界面左侧是地图,右侧是生成设置。 - 框选并生成:用矩形工具圈一个 1–2 平方公里的区域,选世界版本(Java/Bedrock),点 Start Generation,进度条走完后世界文件就在你的存档目录里。
最易踩的坑:第一次就选市中心大片区域,内存和时间都容易顶不住。建议先跑一个小街区试水。
喜欢命令行的话,跳过 GUI 一条命令也能生成:
cargo run --release --no-default-features -- --output-dir="~/.minecraft/saves/hometown" --bbox="48.12,11.55,48.16,11.60"
--bbox四个数依次是最小纬度、最小经度、最大纬度、最大经度。
三、按使用场景选功能
重建整座城市:框选即所得
能做什么:矩形内的建筑、道路、水体、绿地、桥梁一次性生成,建筑带立面和门窗。怎么操作:GUI 框选后点开始,或 CLI 传--bbox。得到什么:一个能直接进的城市,加--interior还能生成可走进的建筑内部;项目内置了慕尼黑奥林匹克场馆等专属地标模型,对应城市的地标会自动摆好。
选对生成模式:平地城市还是纯地形
三种模式各有分工:
| 模式 | 生成内容 | 适用场景 |
|---|---|---|
geo-terrain(默认) | OSM 要素 + 真实高程地形 | 完整城市重建 |
geo-only | 平地上的 OSM 要素 | 快速预览、纯城市测试 |
terrain-only | 只有高程地形 | 地貌模拟,不查 OSM 数据,速度最快 |
GUI 在下拉菜单里选,CLI 用--mode传参。
生成地球之外:月球与火星 🌙
--body moon或--body mars会改用 NASA 的行星数据源、以固定低比例生成地表(月球火星没有 OSM 数据,建筑类参数全部忽略)。再配合--disable-height-limit把可建高度撑到新版上限,适合做夸张地貌图。
四、原理速览:数据从哪来、怎么变、产出什么
数据从哪来。三路数据并行:OpenStreetMap(经 Overpass API 拉取建筑、道路、水域)、Overture Maps(补 OSM 缺失的建筑轮廓)、多源地形数据。后者按区域自动选源——Mapterhorn、AWS Terrain Tiles、USGS 3DEP、NASA 行星数据,实现位于 src/elevation/providers/。
怎么处理。先做坐标变换:经纬度投影到平面,再按--scale换算成方块坐标(1.0 即 1 米对应 1 格),核心代码在 src/coordinate_system/ 与 src/projection/。随后进入要素处理阶段:src/element_processing/ 按要素类型拆成 30 多个模块——建筑做立面和门,桥梁有专门模块,水体算深度;树木则用按气候区分类的 schematic 树包,每个树种都是真实三维模型,素材在 assets/tree-packs/。
产出什么。src/world_editor/ 负责把结果写成 Java、Bedrock、Luanti 三种目标格式的世界文件。底层还藏着两个经典算法:Bresenham 画道路这类直线要素,flood fill 做区域填充,都在 src/ 根目录。
五、避坑与 FAQ
Q:--bbox的格式拿不准,顺序怎么记?纬度在前、经度在后:min_lat, min_lng, max_lat, max_lng。建议先在地图工具里框一下确认四个值,min/max 弄反是最常见错误。
Q:生成太慢或内存不够怎么办?拆成几个小区域分批生成;或调小--scale(1.0 是真实比例,调小即现实 1 米对应不到 1 格)。--interior这类可选功能先关掉,速度会快一截。
Q:生成了两块区域,拼不到一起?默认local投影每次生成都把起点重置到 (0,0)。改用--projection web_mercator,多次生成会落在同一套全局坐标上,可以无缝拼接。
Q:数据下载失败或本地数据缺失?用--downloader curl(或 wget)换下载方式;也可以自己下载 .osm 文件后用--file传入。数据稀疏的区域,Overture 的卫星检测补位默认开启。
Q:树没了或树种不对?默认走 schematic 树包,物种按气候区匹配;想要旧版程序化生成加--legacy_trees。
开始你的第一次生成
两步就能动手:克隆仓库后执行cargo run --release,先选家附近一个小区块,把第一个世界跑进游戏。想深入看实现,从 src/coordinate_system/ 和 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),仅供参考