reconstruct op• 資料種類:points → mesh
• 呼叫: import fullseye as fs; fs.ledger.poisson_lite(points, size=64, sigma=1.0, iso=0.5, normals=None)(要直接呼叫實作,import recon3d; recon3d.poisson_lite(points, size=64, sigma=1.0, iso=0.5, normals=None);從台帳取用則 ops3d.get("poisson_lite"))
點群 (N,3) → (vertices(V,3), faces(F,3)) 的表面網格(screened Poisson 的輕量近似)。
將點雲 splat 到 size³ 的 voxel 網格,建立等值面場,並以 marching cubes 產生三角網格。輸出頂點與輸入點雲位於同一世界座標(由 bbox 逆映射)。bounds 為點雲 bbox(+ 依 σ 而定的 padding)。
2 種模式:
• normals is None:對佔用(occupancy)做高斯平滑並正規化到 [0,1],以 binary_fill_holes 填充以 iso 二值化後的表面帶內部,再次平滑,然後以 iso 擷取單一外殼。佔用(unsigned)場內外對稱,平滑後薄殼的等值面會通過內坡與外坡兩處, 變成同心雙層殼。透過內部填充打破內外對稱性,從封閉的表面取樣中(相對網格 / σ 足夠稠密時)可得到單層殼。開放曲面不會被填充,仍維持為薄面。過於稀疏 / σ 過小時,填充會從縫隙漏出而退化為雙層殼(需要嚴格內外判定時請指定 normals)。
• 指定 normals:以帶朝向點的 winding number 建立內外指示場並做高斯平滑,以 iso (預設 0.5)擷取表面。即使只有表面取樣,也能填滿內部得到閉曲面。
points : array_like (N,3)
輸入點雲。
size : int
voxel 網格的邊長(預設 64)。越大越精細,但為 O(size³)。
sigma : float
高斯平滑的標準差(voxel 單位,預設 1.0)。自動保留 ⌈3σ⌉+2 voxel 的 padding。
iso : float
等值面水準。正規化場 [0,1] 上的值(預設 0.5)。
normals : array_like (N,3) or None
點法線。給定則為 winding number 模式,None 則為佔用模式。
vertices : numpy.ndarray (V,3) float64
世界座標中的頂點。
faces : numpy.ndarray (F,3) int64
三角形的頂點索引(參照 vertices)。
ValueError
點數不足(<4)、size 過小、佔用/指示場過薄導致 iso 超出場的值域,等等。
• blender_interop — 與 Blender 搭配使用 —— 在 Blender 中建形、用 fullseye 量測(座標軸、單位、真值資料的陷阱)
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• poisson_surface_recon — py -3.11 examples_3d/poisson_surface_recon.py
mesh 作為輸入)mesh_to_voxel · mesh_to_points · to_points · fuse_to_voxel · ambient_occlusion · cast_shadow · supersample_mesh · render_beauty
reconstruct)alpha_shape_mesh · alpha_shape_boundary · estimate_alpha
*Provenance: recon3d.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.