vertex_normals — 3D mesh_process op

• Data kinds: mesh → normals

• Call: import fullseye as fs; fs.ledger.vertex_normals(mesh) -> 'np.ndarray' (implementation को सीधे call करना हो तो import mesh_props; mesh_props.vertex_normals(mesh) -> 'np.ndarray', registry से लेना हो तो ops3d.get("vertex_normals"))

उपयोग

triangle mesh के vertex normals (area weights के साथ समेटे गए unit normals)। → (N,3)।

हर triangle के cross-product vector (= face normal × 2·area) को उसके 3 vertices पर scatter-add किया जाता है, फिर हर vertex पर normalise किया जाता है। इससे area-weighted average बनता है जिसमें बड़े (अधिक महत्वपूर्ण) faces का योगदान अधिक होता है, और दिशा faces के winding order से एकरूप रहती है। normals_orient.estimate_normals (point cloud PCA, sign अनिश्चित) के विपरीत, दिशा तय करने का कोई अतिरिक्त चरण ज़रूरी नहीं।

Args:

mesh: (vertices (N,3), faces (M,3)) का tuple।

Returns:

(N,3) के unit vertex normals।

Raises:

ValueError: shape अमान्य, index सीमा से बाहर, या ऐसा vertex हो जिसका normal परिभाषित न हो सके (कोई incident face नहीं /

योगदान एक-दूसरे को काटकर शून्य) तब।

पृष्ठभूमि 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 करते हैं)

• mesh_props — py -3.11 examples_3d/mesh_props.py

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

icp_point2plane · compute_fpfh · shot_descriptor · fuse_to_voxel · reflect · refract · normal_consistency · ransac_cylinder

इसी category के (mesh_process)

laplacian_smooth · taubin_smooth · decimate_qem · face_normals · mesh_area · vertex_curvature · face_areas · mesh_volume


*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.