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 渲染
370KB
3.5K SLoC
过程建模
一个与框架无关的过程建模库。
使用基于半边网格的数据结构来表示(开放)流形网格,带有可选的非流形顶点。我们的目标是实现布尔运算、细分、曲面和缝合等操作。该库旨在以模块化的方式支持2D表面的细分,这样可以在不使用任何3D功能的情况下使用。
目前已经有相当多的crate实现了布尔运算和细分以实现其他目标。我们希望提供一个通用的实现来满足这些非常相似的需求,并提高这些项目之间的代码重用,这样它们可以专注于其原始目标。
警告
这个crate仍然处于非常早期的开发阶段。请期待频繁的API修改、错误和缺少的功能。请随时通过打开问题、拉取请求或在Github讨论中分享您的想法来贡献。
用法

使用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.* |
许可证
除非另有说明(以下或单独的文件中),这些存储库中的所有代码均为双重许可,允许您在以下许可之间进行选择
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
- Apache 许可证,版本 2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)。
贡献
除非您明确表示,否则根据 Apache-2.0 许可证定义的任何有意提交的工作,都应如上所述双重许可,不得添加任何附加条款或条件。
依赖项
~38–77MB
~1.5M SLoC