mesh_process op• Data kinds: mesh → measurement
• Call: import fullseye as fs; fs.ledger.mesh_volume(mesh) -> 'float' (implementation को सीधे call करना हो तो import mesh_props; mesh_props.mesh_volume(mesh) -> 'float', registry से लेना हो तो ops3d.get("mesh_volume"))
बंद triangle mesh द्वारा घेरा गया signed volume → float।
divergence theorem से V = (1/6)·Σ v0 · (v1 × v2)। faces का winding order बाहर की ओर (right-handed) हो तो मान धनात्मक, अंदर की ओर हो तो ऋणात्मक होता है —— sign अपने-आप में orientation की जाँच है, और अगर ऋणात्मक मान लौटे तो normals उलटे हैं।
Args:
mesh: (vertices (N,3), faces (M,3)) का tuple।
Returns:
signed volume (float, coordinate unit की घात 3)।
Raises:
ValueError: जब mesh (vertices, faces) के 2 elements न हो, shape अमान्य हो,
coordinates non-finite हों, index non-integer या सीमा से बाहर हो, या mesh खाली हो।
★voxel_to_mesh (marching cubes) का output अंदर की ओर wound होता है, इसलिए उसे सीधे देने पर मान ऋणात्मक आता है (measured: 1000 voxel के cube पर -985.67)। "ऋणात्मक = normals उलटे हैं" यह सही है, लेकिन इस combination में उलटा होना ही default है, इसलिए अगर सिर्फ़ volume चाहिए तो abs() लें या faces[:, ::-1] से winding उलटें। orientation की जाँच के लिए इसका उपयोग उन meshes पर करें जिनका winding order आपने खुद तय किया हो (या जिनकी orientation एक जैसी की गई हो)।
सीमा (honest): divergence theorem केवल closed surfaces पर लागू होता है। open mesh (holes वाला scan) के लिए भी संख्या लौटती है, लेकिन वह "holes को origin की ओर बंद करके बने solid का volume" है, वह मात्रा नहीं जो चाहिए। mesh closed है या नहीं, यह boundary_vertices खाली है या नहीं, या mesh_edge_stats का boundary_edges 0 है या नहीं, इससे पहले जाँच लें। self-intersections वाले mesh में overlapping क्षेत्र sign के साथ दो बार गिने जाते हैं (यह भी theorem के अनुसार ही व्यवहार है, और इसका पता नहीं लगाया जाता)।
Reference (public): divergence theorem से polyhedron का volume एक standard formula है। उदाहरण के लिए C. Zhang & T. Chen, "Efficient feature extraction for 2D/3D objects in mesh representation", ICIP 2001।
• 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 के स्रोत।
• hull_bounds — py -3.11 examples_3d/hull_bounds.py
• mesh_props — py -3.11 examples_3d/mesh_props.py
• minimal_surfaces — py -3.11 examples_3d/minimal_surfaces.py
measurement को input के रूप में लेते हैं)vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle
mesh_process)laplacian_smooth · taubin_smooth · decimate_qem · face_normals · vertex_normals · mesh_area · vertex_curvature · face_areas
*Provenance: mesh_props.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.