#terrain #bevy #component #entities #systems #heightmap #game-engine

bevy_mesh_terrain

为 Bevy 游戏引擎提供的简单且易于使用的 heightmap 地形插件

31 个版本 (6 个破坏性更新)

0.14.2 2024年7月16日
0.13.24 2024年5月27日
0.13.14 2024年3月27日
0.3.4 2023年9月19日

游戏开发 中排名 165

Download history 191/week @ 2024-04-27 140/week @ 2024-05-04 9/week @ 2024-05-11 205/week @ 2024-05-18 321/week @ 2024-05-25 31/week @ 2024-06-01 10/week @ 2024-06-08 2/week @ 2024-06-15 1/week @ 2024-06-29 13/week @ 2024-07-06 235/week @ 2024-07-13 16/week @ 2024-07-20 873/week @ 2024-07-27 22/week @ 2024-08-03

每月下载量 921

MIT 许可证

135KB
2K SLoC

Bevy Mesh Terrain

安装

cargo add bevy_mesh_terrain 

Bevy 版本

地形 0.6.x -> Bevy 0.12.x

地形 0.13.x -> Bevy 0.13.x

运行示例

cargo run --example basic

描述

一个非常以 Bevy 为中心的插件,尽可能利用实体、组件和系统,使其尽可能易于理解和交互。

您创建一个实体,并为其分配 'TerrainConfig' 和 'TerrainData' 组件,然后插件系统将创建子实体,每个子实体代表一个渲染块。这样,它与体素分块系统(类似于 Minecraft)类似,但使用高度场(二维)而不是体素(三维)。

image

纹理类型

高度图纹理 高度的来源。这是一个 R16 格式的灰度图像,如果值是完全黑色,则着色器实际上会将其 alpha 设置为 1,这样您就可以在地面挖洞以创建洞穴等(您可能想在那里放置岩石小玩意使其看起来更漂亮!)

颜色/漫反射纹理数组 这是实际地形纹理的来源。最多可以加载并使用 splat 映射绘制 256 个纹理,例如草地、泥土、雪和沙子。当然,您可以编辑该文件以获得不同的外观。

Splat 映射纹理 这是一个用于漫反射纹理数组的 RGBA 控制映射纹理,使用特殊的数据协议。您可以在 '地形编辑器' 中编辑此文件以在某个区域绘制草地,在另一个区域绘制泥土,在山上绘制雪等。

Splat 映射纹理协议

现在,splat 映射通过借鉴 'Microsplat' 文档的灵感,支持单个材料中使用多达 255 个纹理。限制是任何给定像素只能混合两种纹理。

喷溅图R通道 - 一个从0.0到255.0的浮点数,转换为0-254的整数,用于指定在层0上用于此像素的纹理(255个纹理中的)。喷溅图G通道 - 一个从0.0到255.0的浮点数,转换为0-254的整数,用于指定在层1上用于此像素的纹理(255个纹理中的)。喷溅图B通道 - 用于指定在这里使用R通道层(0.0)与使用G通道层(1.0)的比例。喷溅图A通道 - 未使用。

示例纹理

来自Lynoc(itch.io)的示例纹理

参考着色器材质

查看 https://github.com/bevyengine/bevy/blob/main/examples/shader/shader_material.rs

编辑器(WIP)

https://github.com/ethereumdegen/bevy_mesh_terrain_editor

依赖项

~48–86MB
~1.5M SLoC