#point-cloud #voxel #ply #las #space #glb

voxel-tiler-core

将点云转换为体素数据

5 个不稳定版本

0.3.2 2024 年 7 月 18 日
0.3.1 2024 年 7 月 18 日
0.2.1 2024 年 5 月 20 日
0.1.0 2024 年 5 月 18 日

#159并发

Download history 521/week @ 2024-05-17 22/week @ 2024-05-24 189/week @ 2024-07-12 151/week @ 2024-07-19 14/week @ 2024-07-26 2/week @ 2024-08-02

每月 245 次下载
用于 voxel-tiler-cli

MIT/Apache

110KB
2K SLoC

英语 | 日语

voxel-tiler-core

用于体素化点云和生成 3D 瓦片的 crate。

特性

  • 基于像素坐标的体素化
    • 此 crate 生成的每个体素都对应像素坐标系统中的一个像素。
    • 这确保了多个模型之间的位置一致性。
  • 基于瓦片的分区
    • 生成的体素数据可以在指定的缩放级别上分为瓦片空间。
    • 此功能允许将大型点云数据拆分为多个文件进行输出。

支持的文件格式

文件格式 输入 输出
ply
glb x
las x
laz x

用法

基本用法

fn example() {
    // Load data
    let file = BufReader::new(File::open("examples/data-source/colored_stanford_bunny.ply").unwrap());

    // Collect vertex information from data
    let point_cloud = PointCloud::from_ply(file);

    // Define resolution
    let resolution = Resolution::Mater(0.03);

    // Voxelize
    let voxel_collection = BuildSimpleVoxelizerDefault::voxelize_one(point_cloud, resolution);

    // Generate mesh
    let mesh = Mesher::meshing(voxel_collection, ValidSide::all());

    // Simplify mesh (optional)
    let simplified_mesh = mesh.simplify();

    // Generate glb file
    let glb = Glb::from_voxel_mesh(mesh.clone()).unwrap();

    // Write file
    let writer = File::create("examples/exports/colored_stanford_bunny.glb").expect("I/O error");
    glb.to_writer(writer).expect("glTF binary output error");
    println!("Generated colored_stanford_bunny.glb");
}

简单体素化

bunny

参考 examples/generate_voxel_bunny.rs

如何运行

cargo run --example bunny --features="ply"

点云的体素化和瓦片化

tile

参考 examples/generate_voxel_tile.rs。当处理由点云数据生成的具有许多顶点颜色的模型时,似乎将它们转换为 glb 文件(其大小小于 ASCII ply 文件)会非常昂贵。原因正在调查中。

如何运行

这需要非常长的时间。建议在发布构建中运行。

cargo run --example tile --features="las ply"

从日本地理信息局的地形图生成体素地形模型

terrain

参考 generate_terrain_glb

如何运行

cargo run --example terrain --features="image"

许可证

根据以下任一许可证许可

任选其一。

README.md和文档注释中的英文内容使用ChatGPT和DeepL从日语翻译而来)

依赖项

~4-12MB
~135K SLoC