#mesh #texture #loading #graphics #atlas #binary #wgpu

chair

一种既小又极快的二进制网格格式

9个不稳定版本 (3个破坏性更新)

0.4.0 2024年4月13日
0.3.1 2024年3月24日
0.3.0 2023年11月4日
0.2.3 2022年12月20日
0.1.3 2022年12月20日

#156 in 图形API


用于 bevy_chair

GPL-3.0-or-later

135KB
833

chair

一种既小又极快的二进制网格格式

支持通过从图集加载并映射网格uv到区域来支持纹理。

包含wgpu集成,如果使用bevy,请查看[bevy_chair](https://crates.org.cn/bevy_chair)加载插件。

使用wgpu加载和绘制网格

let bytes = fs::read("chair.chr")?;
// MyVertex implements the Vertex trait to specify what features are loaded into memory
let mesh = MeshReader::new::<MyVertex>(&atlas, Some("fallback"))
	.create::<MyVertex>(&device, &bytes)

// in render pass code
mesh.draw(&mut pass);

使用MeshReader::newfallback参数指定备用纹理名称。

如果没有指定,则会在指定任何未知纹理时使用备用纹理而不是解码网格。

创建网格

简单的方法是使用chair_exporter.py作为blender插件,从blender导出您的模型。

根据需要使用最优设置以获得准确性和大小。

对于类似Minecraft的网格,可以轻松地进行简短的pos、uvs和normals,因为它们都是低细节的。

对于更复杂的网格,这可能会丢失精度,因此使用浮点数可能更合适。

可以使用顶点绘制模式进行每个顶点的颜色并导出。

依赖项

~0.5–32MB
~476K SLoC