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 मिलती है।
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।
vertices : numpy.ndarray (V,3) float64
world coordinates में vertices।
faces : numpy.ndarray (F,3) int64
triangles के vertex indices (vertices को refer करते हैं)।
ValueError
कम points (<4), size बहुत छोटा, occupancy / indicator field इतना पतला कि iso field की range से बाहर, आदि।
• blender_interop — Blender के साथ उपयोग — shape बनाएँ, fullseye से मापें (सावधानियाँ: axes, units, ground truth)
• 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 के स्रोत।
• poisson_surface_recon — py -3.11 examples_3d/poisson_surface_recon.py
mesh को input के रूप में लेते हैं)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 operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.