pc_lod_chain — 3D resolution op

• 数据种类:points → table

• 调用: import fullseye as fs; fs.ledger.pc_lod_chain(points, spacing, levels=3, seed=0)(要直接调用实现,import meshres; meshres.pc_lod_chain(points, spacing, levels=3, seed=0);从台账取用则 ops3d.get("pc_lod_chain"))

用法

间距逐次加倍的 Poisson-disk 层级(table)。

Level 0 为输入;level *k* 中任意两点的距离都不小于 spacing × 2^(k−1)。返回 levels(点云列表)、spacings、counts。

步骤: level 0 = 输入点云(验证后的 float64 副本)。level k(1..levels)是对 前一个 level 应用 pc_poisson_disk(prev, spacing * 2**(k-1), seed=seed + k - 1) 的结果(累积地抽稀,因此粗 level 的点必定也包含在细 level 中 = 嵌套)。不移动点(不做网格平均那样的质心移动)。

参数: points (N, 3)(有限,MAX_POINTS 以下)、spacing > 0(level 1 的最小点间距,与坐标单位相同)、levels 为 1..16 的整数、seed 为 Poisson-disk 访问顺序的随机种子(固定则确定性)。

返回值(dict): levels(levels + 1 个 (n_k, 3) 数组的列表)、spacings([0.0, spacing, 2*spacing, ...],level 0 为 0)、counts (各 level 的点数)、n_levels(levels + 1)。

验证(ValueError): 点云的形状不正确、非有限、点数超限 / spacing 非正 / levels 不是整数、超出范围。

注意: 各 level 的点数按 ~ 面积 / spacing_k^2 的估计每次减为 4 分之 1,但稀疏区域(原始点间距大于 spacing_k)不会被抽稀而保留。丢掉了什么,用 pc_thinning_report(points, levels[k]) 来统计。网格的 LOD 见 mesh_lod_chain。

背景知识指南(该算子背后的物理与约定)

• depth_sensors — 深度传感器知识 —— 测距原理、实机数值、缺测的表现

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

可运行的示例(实际调用该算子并已验证的样例)

• mesh_resolution_demo — py -3.11 examples_3d/mesh_resolution_demo.py

类型可衔接的下一个算子(可接受 table 作为输入)

fuse_to_voxel · mesh_select_lod

同类别(resolution)

mesh_edge_stats · mesh_detail_map · mesh_split_long_edges · mesh_isotropic_remesh · mesh_sample_points · mesh_lod_chain · mesh_select_lod · mesh_reduction_report


*Provenance: meshres.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.