3个版本 (1个稳定版)
1.0.0 | 2021年3月31日 |
---|---|
0.1.1 | 2021年3月31日 |
0.1.0 | 2021年3月31日 |
#2 在 #pmf
每月下载量38次
在 6 crates 中使用
27KB
657 行
PolyMesh是我为了实验设计的一种自定义3D对象描述文件格式。PolyMesh文件格式和工具集专为3D渲染应用程序设计。
PolyMesh文件格式(pmf
)是一个包含结构化目录树的JSON文件的gzip文件。树的每一层都包含一个描述目录的描述符文件 polymeta.json
。最底层的目录都包含 mesh.json
文件,这些文件使用一组基本多边形来描述3D网格。PolyMesh文件的每一层都应被视为一个独立的3D网格。更高级别的网格可以包含低级别的网格来构建更复杂的网格。
所有网格都是相对定位的。这意味着最底层的网格都应该以 [0,0,0]
为中心,以便更高级别的网格可以包含它们并根据需要转换它们。可以使用 pmfpack
和 pmfextract
工具对PolyMesh文件进行打包和解包。当PolyMesh解包时,它可以在较低级别重新打包,这就是为什么保持所有网格相对定位很重要的原因。一个描述咖啡馆场景的PolyMesh也可以重新打包,仅描述主场景中桌子上的一杯咖啡。
一个3D对象的示例可以在 example_meshes/default_cube
中找到
工具集
该仓库提供了一些用于处理PolyMesh的CLI工具
pmfpack
- 可以将一个未压缩的目录(例如
default_cube
示例)打包成一个单独的.pmf
文件
- 可以将一个未压缩的目录(例如
pmfextract
- 可以将
.pmf
文件解压缩到未压缩的目录
- 可以将
pmftree
- 提供类似
tree
命令的任何.pmf
文件的可视化
- 提供类似
pmfview
- 任何
.pmf
文件的完整 3D 可视化工具。灵感来自 Pixar 的usdview
。基于 raylib 构建
- 任何
vox2pmf
- 可以将文件从
.vox
格式转换为 PolyMesh
- 可以将文件从
pmfcube
- 一个调试工具,将在
[0,0,0]
位置生成一个大小为 1 单位的彩色立方体
- 一个调试工具,将在
库
libpolymesh
可作为独立的 Rust 库使用,目前仍在开发中。
关于坐标的说明
这个项目实际上不关心使用哪种坐标系统,但我使用的是 "Y-up, right-handed" 规则。
依赖项
~4–15MB
~186K SLoC