跳转到内容

什么是 Rust 高度图?灰度图怎么变成地形

简短回答: Rust 高度图是一张方形灰度图,每个像素的亮度就是那个位置的地面高度:黑色是世界最底部,中灰是海平面,白色是地面能到的最高处。RustEdit 把它变成玩家走在上面的 3D 地形。

A Rust heightmap seen from above in shades of grey: Drizzza's free volcanic map before it becomes terrainThe same volcanic Rust map raised into 3D terrain, with grass, desert, snow, beaches and sea
Crucible Volcanic 3800,Drizzza 用 Crucible Heightmap 做的免费地图。点播放或拖动滑块,就能看它的高度图抬升成完整的地图,拖动地图可以转动。这里的灰度调亮了,方便看清形状。

Rust 的地面高度跨度是 1000 米,海平面在一半的位置。高度图把灰度均匀分布在这个范围里:

灰度游戏里的高度
黑色海平面以下 500 m,世界最底部
中灰海平面
白色海平面以上 500 m,Rust 允许的最高地面

所以海底是暗的,海滩刚好比中灰高一点,山顶是最亮的像素。真实的岛只用到范围的一部分,所以整张地图的高度图看起来是一片柔和的灰,周围的海稍微暗一点:

Crucible Volcanic 3800 这张 Rust 自定义地图的真实 16 位灰度高度图,柔和的灰色,海比陆地稍暗

Crucible Heightmap 的 2D 视图会拉伸灰度,方便看清形状,高处亮,海是暗的。它导出的高度图保留真实的灰度。

Crucible Heightmap 里一座岛的 2D 高度图视图,灰度被拉伸,高地偏亮,海偏暗

Rust 高度图是 16 位灰度,有 65,536 级灰。分摊到 1000 米上,每一级灰大约是 1.5 厘米的高度,所以坡面很平滑。

8 位图片,比如普通照片,只有 256 级灰。每一级大约是 4 米高度,游戏里每个坡都会变成看得见的梯田。这就是为什么在普通图片编辑器里画、存成 8 位的高度图看起来一层一层的,也是 Crucible Heightmap 永远写 16 位的原因。

高度图是方形网格,大小随地图大小而定:边长 513、1025、2049 或 4097 像素。每个像素覆盖 1 到 2 米的地面。具体的档位在 Rust 高度图分辨率,该选哪个地图大小在 Rust 地图大小。

高度图只有高度,别的什么都没有。Rust 地图上的其他东西,各自在 .map 文件的一个图层里:

  • 地面纹理:草、泥土、沙、岩石、雪、林地地面
  • 生物群系:温带、干旱、苔原、极地和丛林
  • 告诉 Rust 树、矿、战利品和玩家出生点放哪里的拓扑图层(见 Rust 生物群系与拓扑)
  • 水、遗迹、道路和预制件

所以 .raw 或 .png 高度图带来的只是光秃秃的地形。这就是为什么 Crucible Heightmap 的主要导出是一整个 Rust .map 文件,它把地面纹理、生物群系、拓扑、湖泊和悬崖连同高度一起带上。

在 RustEdit 里打开 .map,它的高度图会作为地形加载,其他图层都盖在上面。

想从一张单独的高度图开始,就打开 RustEdit 的 Create New Map 对话框,设好地图大小和对应的高度图分辨率,再选你的 16 位 .raw 文件。RustEdit 把它抬成地形,之后你再放遗迹、道路和其他东西。具体步骤:怎么制作 Rust 自定义地图。

RustEdit 的 Create New Map 对话框,显示 Heightmap 字段和把高度图应用到 Rust 地图的导入流程

手绘一张自然的 16 位高度图很费工夫。Crucible Heightmap 是一个 Rust 地图生成器,替你做出 Rust 风格的地形,让你用滑块和画笔调整,再导出成可以直接打开的 .map、.raw 或 .png。