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

procedural_modelling

一个与框架无关的过程建模crate

4个版本

0.2.0 2024年7月8日
0.1.2 2024年4月1日
0.1.1 2024年4月1日
0.1.0 2024年2月28日

#30 in 渲染

MIT/Apache

370KB
3.5K SLoC

过程建模

Documentation crates.io Downloads License Build Status GitHub Repo stars

一个与框架无关的过程建模库。

使用基于半边网格的数据结构来表示(开放)流形网格,带有可选的非流形顶点。我们的目标是实现布尔运算、细分、曲面和缝合等操作。该库旨在以模块化的方式支持2D表面的细分,这样可以在不使用任何3D功能的情况下使用。

目前已经有相当多的crate实现了布尔运算和细分以实现其他目标。我们希望提供一个通用的实现来满足这些非常相似的需求,并提高这些项目之间的代码重用,这样它们可以专注于其原始目标。

警告

这个crate仍然处于非常早期的开发阶段。请期待频繁的API修改、错误和缺少的功能。请随时通过打开问题、拉取请求或在Github讨论中分享您的想法来贡献。

用法

drawing

使用cargo add procedural_modelling安装。

let mut mesh = MeshVec3::regular_star(1.0, 0.8, 30);
mesh.transform(
    &Transform::from_translation(Vec3::new(0.0, -0.99, 0.0))
               .with_rotation(Quat::from_rotation_z(PI)),
);
let trans = Transform::from_rotation(Quat::from_rotation_y(0.3))
                      .with_translation(Vec3::new(0.4, 0.3, 0.0));
let mut f = mesh.extrude_ex(mesh.edge_between(1, 0).unwrap().id(), trans, true, true);
for _ in 0..5 {
    f = mesh.extrude_face_ex(f, trans, true, true);
}
mesh.to_bevy(RenderAssetUsages::default())

示例

或者在您的计算机上运行示例,例如,cargo run --features="bevy bevy/bevy_pbr" --profile fast-dev --example box

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

功能进度

  • 属性
    • 位置
    • 法线
    • 平滑表面组
    • 切线
    • UV 坐标
    • 自定义属性
  • 三角剖分
    • [(x)] 单调扫描线
    • 约束 Delaunay(使用 Delaunator)
  • 基本形状
    • 多边形、星形
    • 长方体
    • 圆柱、圆锥、棱锥、四面体、八面体
    • 十二面体、二十面体
    • UV 球体
    • 立方球体
    • 二十面体球体
    • 环面
  • 构建基本形状
    • 线条
    • 二次贝塞尔曲线
    • 三次贝塞尔曲线
    • 曲面(贝塞尔曲面/参数曲面/NURBS/样条网络...?)
  • 操作
    • 拉伸
    • 放样
    • 插入
    • 平面相交
    • 并集
    • 交集
    • 差集
    • 对称差集
    • (各向异性)简化/LOD
    • 缝合
    • 细分
    • 变形
    • 体素化
  • 工具
    • 大地路径寻找
    • 光线投射
    • 拓扑分析
    • 空间数据结构
  • 调试可视化
    • 索引
    • 法线
    • 切线
    • 拓扑
  • 后端
    • Bevy
    • wgpu

功能

以下功能可用

  • meshopt -- 使用 Meshopt 优化生成网格的性能。
  • bevy -- 支持编译 bevy。对于示例和编辑器是必需的。

支持的 Bevy 版本

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

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

许可证

除非另有说明(以下或单独的文件中),这些存储库中的所有代码均为双重许可,允许您在以下许可之间进行选择

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义的任何有意提交的工作,都应如上所述双重许可,不得添加任何附加条款或条件。

依赖项

~38–77MB
~1.5M SLoC