voxel_to_mesh — 3D transform op

• 資料種類:voxel → mesh

• 呼叫: import fullseye as fs; fs.ledger.voxel_to_mesh(vol, iso=0.5)(要直接呼叫實作,import match3d; match3d.voxel_to_mesh(vol, iso=0.5);從台帳取用則 ops3d.get("voxel_to_mesh"))

• 經台帳呼叫的回傳值: fullseye.ledger.voxel_to_mesh(...) 只回傳宣告的 out 型別 mesh 的值(底層函式還會回傳輔助資訊)。需要被捨棄的部分時,請用 fullseye.ledger.voxel_to_mesh.raw(...),或直接呼叫 match3d.voxel_to_mesh。

用法

voxel → mesh(marching cubes,skimage)。回傳 (verts, faces, normals)。voxel→mesh 轉換。

skimage.measure.marching_cubes(vol, level=iso) 的薄封裝(不指定 spacing = 以 1 voxel 為單位)。verts (V,3) float 是 voxel index 座標,各行為輸入的軸順序(vol 為 (D,H,W) 時即 (z,y,x))。faces (F,3) int 是指向 verts 的 index,normals (V,3) 是 skimage 由梯度給出的頂點法線。第 4 個回傳值(values)被捨棄。

• iso: 等值面的水準。超出輸入值域時 skimage 拋出 ValueError(如全 0 的

volume 用 iso=0.5)。計數密度傳 0.5,SDF 傳 0.0。

• 與邊界相接的等值面維持開口(不在邊緣封閉)。

• ★繞序朝內。直接傳給 mesh_volume 時,即使是普通的實心形狀也會得到負值(實測: 1000 voxel 的立方體為 -985.67)。只要體積的話用

abs(),要統一朝向就用 faces[:, ::-1] 重新繞序。

• skimage 在呼叫時 import(未安裝則 ImportError)。

後續: 用 mesh_to_points 轉點雲,用 mesh_area / face_areas / mesh_volume / boundary_vertices / mesh_edge_stats 量測。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• mesh_smooth — py -3.11 examples_3d/mesh_smooth.py

型別可銜接的下一個運算子(可接受 mesh 作為輸入)

mesh_to_voxel · mesh_to_points · to_points · fuse_to_voxel · ambient_occlusion · cast_shadow · supersample_mesh · render_beauty

同類別(transform)

points_to_voxel · gaussians_to_voxel · mesh_to_voxel · mesh_to_points · depth_to_points · voxel_to_mips · tsdf_from_depth · signed_distance_field


*Provenance: match3d.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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