poisson_lite — 3D reconstruct op

• Data kinds: points → mesh

• Call: import fullseye as fs; fs.ledger.poisson_lite(points, size=64, sigma=1.0, iso=0.5, normals=None) (implementation को सीधे call करना हो तो import recon3d; recon3d.poisson_lite(points, size=64, sigma=1.0, iso=0.5, normals=None), registry से लेना हो तो ops3d.get("poisson_lite"))

उपयोग

point cloud (N,3) → (vertices(V,3), faces(F,3)) surface mesh (screened Poisson का हल्का approximation)।

point cloud को size³ के voxel grid में splat करके, iso-surface field बनाता है और marching cubes से triangle mesh बनाता है। output vertices input point cloud वाले ही world coordinates में होते हैं (bbox से inverse mapping)। bounds point cloud का bbox है (+ σ पर निर्भर padding)।

2 modes:

• normals is None: occupancy को Gaussian smoothing और [0,1] normalise करके, iso से binary बनाए गए surface band के अंदर को binary_fill_holes से भरकर फिर smooth करता है, और एक अकेला बाहरी shell iso पर निकालता है। occupancy (unsigned) field अंदर-बाहर symmetric होता है, इसलिए smooth किए पतले shell का iso-surface भीतरी और बाहरी slope, दो जगहों से गुज़रता है और concentric double shell बन जाता है। अंदर भरकर अंदर-बाहर की symmetry तोड़ने से closed surface samples से (grid / σ के सापेक्ष पर्याप्त घने हों तो) एक अकेला shell मिलता है। open surface भरे नहीं जाते और पतली सतह ही रहते हैं। बहुत विरल हों / σ छोटा हो तो भराव दरारों से रिसकर double shell में degenerate हो सकता है (सटीक अंदर-बाहर निर्णय चाहिए तो normals दें)।

• normals देने पर: oriented points के winding number से अंदर-बाहर indicator field बनाकर Gaussian smoothing, फिर iso (default 0.5) पर surface निकालता है। केवल surface samples होने पर भी अंदर भरकर closed surface मिलती है।

Parameters

points : array_like (N,3)

input point cloud।

size : int

voxel grid की side length (default 64)। बड़ा होने पर अधिक बारीक, पर O(size³)।

sigma : float

Gaussian smoothing का standard deviation (voxel unit में, default 1.0)। ⌈3σ⌉+2 voxel का padding अपने आप रखा जाता है।

iso : float

iso-surface level। normalised field [0,1] पर मान (default 0.5)।

normals : array_like (N,3) or None

point normals। देने पर winding number mode, None पर occupancy mode।

Returns

vertices : numpy.ndarray (V,3) float64

world coordinates में vertices।

faces : numpy.ndarray (F,3) int64

triangles के vertex indices (vertices को refer करते हैं)।

Raises

ValueError

कम points (<4), size बहुत छोटा, occupancy / indicator field इतना पतला कि iso field की range से बाहर, आदि।

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• blender_interop — Blender के साथ उपयोग — shape बनाएँ, fullseye से मापें (सावधानियाँ: axes, units, ground truth)

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poisson_surface_recon — py -3.11 examples_3d/poisson_surface_recon.py

वे अगले ops जिनसे type जुड़ता है (mesh को input के रूप में लेते हैं)

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

इसी category के (reconstruct)

alpha_shape_mesh · alpha_shape_boundary · estimate_alpha


*Provenance: recon3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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