#文件格式 #多边形网格 #文件格式 #3D #3D渲染 #工具集 #对象

app pmfcube

一个生成多边形网格立方体的实用工具

1 个不稳定版本

0.1.0 2021年3月31日

15#多边形网格

自定义许可

43KB
673

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 可视化器。受皮克斯的 usdview 启发。基于 raylib 构建
  • vox2pmf
    • 一个可以将文件从 .vox 格式转换为 PolyMesh 的工具
  • pmfcube
    • 一个调试工具,将在 [0,0,0] 的位置生成一个边长为 1 单位的彩色立方体

libpolymesh 可作为独立的 Rust 库使用,目前正在开发中。

关于坐标的说明

该项目实际上不关心使用哪种坐标系,但我是按照“Y-up,右手规则”编写的。

构建

此单一代码库有几个系统依赖项

# Install GUI libraries
sudo apt install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev

# Install the workspace wrangling tools
cargo install cargo-token
cargo install cargo-unleash --version 1.0.0-alpha.11

依赖项

~4–13MB
~158K SLoC