5 个不稳定版本
0.3.2 | 2024 年 7 月 18 日 |
---|---|
0.3.1 |
|
0.2.1 | 2024 年 5 月 20 日 |
0.1.0 | 2024 年 5 月 18 日 |
#159 在 并发
每月 245 次下载
用于 voxel-tiler-cli
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");
}
简单体素化
参考 examples/generate_voxel_bunny.rs
。
如何运行
cargo run --example bunny --features="ply"
点云的体素化和瓦片化
参考 examples/generate_voxel_tile.rs
。当处理由点云数据生成的具有许多顶点颜色的模型时,似乎将它们转换为 glb
文件(其大小小于 ASCII ply 文件)会非常昂贵。原因正在调查中。
如何运行
这需要非常长的时间。建议在发布构建中运行。
cargo run --example tile --features="las ply"
从日本地理信息局的地形图生成体素地形模型
参考 generate_terrain_glb
。
如何运行
cargo run --example terrain --features="image"
许可证
根据以下任一许可证许可
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
(README.md
和文档注释中的英文内容使用ChatGPT和DeepL从日语翻译而来)
依赖项
~4-12MB
~135K SLoC