#mesh #bevy #procedural #graphics #gamedev #2d-3d

bevy_procedural_meshes

为Bevy游戏引擎生成的程序化网格

6个版本

0.14.0 2024年7月8日
0.13.1 2024年4月1日
0.1.2 2024年2月28日

#189 in 游戏开发

每月42次下载
bevy_procedural_vegetatio… 中使用

MIT/Apache

105KB
2K SLoC

Bevy程序化:网格

Documentation Bevy crates.io License

Bevy程序化项目的目标是提供一套全面的程序化图形生成包,这些包通过一致的API进行统一。

Bevy程序化项目 的目的是为 Bevy 游戏引擎提供一个程序化网格构建器。它可以使用 Lyon 生成 2D 形状并将其挤出为 3D 网格。还可以使用 Meshopt 优化网格,以改进其性能。未来版本的计划还包括更高级的网格操作,如 3D 逻辑运算、参数化表面和 L 系统。

警告

Build Status Discord Downloads GitHub Repo stars

此crate仍处于开发初期。请期待频繁的API修改、错误和缺失的功能。请随时通过在 Github DiscussionBevy Discord 打开问题、拉取请求或分享您的想法来贡献力量。

示例

尝试在线示例!

或者在您的计算机上运行 示例,例如,使用以下命令:cargo run --features="bevy/default" --example 2d

对于包开发,我们建议使用editor-子crate。此示例包含一个小的egui编辑器。使用以下命令运行:cargo watch -w editor/src -w src -x "run -p editor --profile fast-dev"。使用fast-dev配置文件将启用对依赖项的优化,但不会对包本身进行优化。这将显著减慢首次构建速度,但增量构建会稍微快一些,并且bevy的性能会大幅提升。

用法

使用以下命令安装:cargo add bevy_procedural_meshes。为bevy创建网格,例如

use bevy_procedural_meshes::*;

fn setup(
    mut commands: Commands,
    mut meshes: ResMut<Assets<Mesh>>,
    mut materials: ResMut<Assets<StandardMaterial>>,
) {
    let mut mesh = PMesh::<u32>::new();
    mesh.fill(0.01, |builder| {
        builder
            .begin_here()
            .quadratic_bezier_to(Vec2::new(3.0, 3.0), Vec2::new(1.5, 3.0))
            .quadratic_bezier_to(Vec2::new(0.0, 3.0), Vec2::new(0.0, 0.0))
            .close();
    });
    
    commands.spawn(PbrBundle {
        mesh: meshes.add(mesh.to_bevy(RenderAssetUsages::all())),
        material: materials.add(StandardMaterial::default()),
        ..default()
    });
}

特性

以下特性可用

  • meshopt -- 使用Meshopt优化生成网格的性能。
  • lyon -- 使用Lyon对2D形状(如贝塞尔曲线和笔画)进行细分。
  • inspector -- 将bevy-inspector-egui支持添加到不同的结构体中。
  • dynamic -- 将bevy编译为动态库。这对于开发构建很有用。

支持的Bevy版本

以下表格显示了bevy_procedural_meshes与Bevy某些版本的兼容性

bevy bevy_procedural_meshes
0.14 0.14.*, main
0.13 0.1.*

许可证

bevy-procedural包是免费的、开源的,并且是许可的。除非另有说明(以下或个别文件中),这些存储库中的所有代码都是双许可的,允许您在以下之间进行选择

贡献

除非您明确声明,否则您提交的任何贡献,根据Apache-2.0许可证定义,都应如上所述双许可,不附加任何额外条款或条件。

依赖项

~36–74MB
~1.5M SLoC