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

Build

PolyMesh是我为了实验设计的一种自定义3D对象描述文件格式。PolyMesh文件格式和工具集专为3D渲染应用程序设计。

PolyMesh文件格式(pmf)是一个包含结构化目录树的JSON文件的gzip文件。树的每一层都包含一个描述目录的描述符文件 polymeta.json。最底层的目录都包含 mesh.json 文件,这些文件使用一组基本多边形来描述3D网格。PolyMesh文件的每一层都应被视为一个独立的3D网格。更高级别的网格可以包含低级别的网格来构建更复杂的网格。

所有网格都是相对定位的。这意味着最底层的网格都应该以 [0,0,0] 为中心,以便更高级别的网格可以包含它们并根据需要转换它们。可以使用 pmfpackpmfextract 工具对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