28 个版本
使用旧的 Rust 2015
| 0.6.2 | 2018 年 6 月 8 日 |
|---|---|
| 0.5.0 | 2017 年 5 月 29 日 |
| 0.4.1 | 2016 年 9 月 5 日 |
| 0.4.0 | 2015 年 12 月 28 日 |
| 0.0.1 | 2014 年 11 月 21 日 |
114 在 缓存 中
2,798 每月下载量
在 50 个 Crates 中使用 (20 个直接使用)
59KB
1.5K SLoC
Genmesh
genmesh 是一个构建顶点管道的库。目标是帮助简化多边形组装。这是通过在 Iterator 特性之上构建来实现的。管道阶段是一个惰性迭代器,它消耗输入,并基于阶段生成一个新的多边形。
这还提供了一些 generators,用于在运行时创建原始数据。
目前支持的阶段
vertex将一个函数映射到多边形中的每个顶点triangulate将四边形转换为三角形vertices将多边形管道转换为顶点管道
原始数据生成器
圆锥立方体圆柱平面球面 UV环面
顶点属性
pos: 位置normal: 法线
实用工具
LruIndexer将顶点转换为索引,如果当前顶点不在Lru缓存中,则发出新的顶点。Neighbors通过在顶点或多边形级别查询法线和邻居与整个网格一起工作。
原始数据
三角形四边形Polygon是Triangle和Quad的枚举
示例
let vertex_data: Vec<MyVertex> = Cube::new()
.vertex(|v| MyVertex::new(v.pos, [0., 0.]))
.map(|Quad{x: v0, y: v1, z: v2, w: v3}| {
Quad::new(MyVertex::new(v0.a_Pos, [0., 0.]),
MyVertex::new(v1.a_Pos, [1., 0.]),
MyVertex::new(v2.a_Pos, [1., 1.]),
MyVertex::new(v3.a_Pos, [0., 1.]))
})
.triangulate()
.vertices()
.collect();
在这里,Cube 生成六个面,每个面代表一个侧面,这被表示为 Quad<Vertex3<f32>>。
vertex 将一个函数映射到每个面的每个顶点上,在这种情况下,我们想要将 genmes 的内部顶点格式转换为我们自己的格式。我们现在有一个 Quad<MyVertex>>。
我们可以在多边形级别进行变换并修改整个多边形。在示例中,我们为每个面添加一个有效的纹理坐标。由于 genmesh 只是一个迭代器的扩展,我们可以仅使用 map 进行多边形级别的变换。
triangulate 将 Quad<MyVertex> 转换为 Triangle<MyVertex>>。这将产生两个多边形和六个顶点。为了完成此操作,一些顶点被克隆。
verticies 现在展开每个三角形并按顺序返回顶点。对于每个多边形,这显然会产生 3 个结果。
collect 是一个标准的迭代器操作。
依赖项
~1MB
~17K SLoC