ambient_occlusion — 3D render op

• Data kinds: mesh → image2d

• Call: import fullseye as fs; fs.ledger.ambient_occlusion(V, F, pose=None, intrinsics=None, width: 'int' = 256, height: 'int' = 256, n_dirs: 'int' = 64, max_dist: 'float | None' = None, k: 'int' = 3, background: 'float' = 1.0, method: 'str' = 'auto') -> 'np.ndarray' (implementation को सीधे call करना हो तो import render_ao; render_ao.ambient_occlusion(V, F, pose=None, intrinsics=None, width: 'int' = 256, height: 'int' = 256, n_dirs: 'int' = 64, max_dist: 'float | None' = None, k: 'int' = 3, background: 'float' = 1.0, method: 'str' = 'auto') -> 'np.ndarray', registry से लेना हो तो ops3d.get("ambient_occlusion"))

उपयोग

mesh को AO map image (H, W) [0,1] में render करके लौटाता है।

render3d.render_mesh से depth / silhouette / triangle id और perspective-corrected barycentric coordinates लेता है (rasterisation और hidden surface removal उसी पर छोड़े जाते हैं, दोबारा नहीं बनाए जाते), और object space के vertex_occlusion का vertex AO उस pixel को ढकने वाले triangle के 3 vertex से barycentric interpolation करके bake करता है। वस्तु के बाहर (silhouette=0) background है (default 1.0 = पूरी तरह खुला)। *pose* / *intrinsics* छोड़े जाने पर render3d.auto_view framing करता है। fail-closed सत्यापन निचले functions के अनुसार होता है।

k 2026-09-02 के बाद उपयोग नहीं होता (backward compatibility के लिए रखा गया है)। उससे पहले camera space में nearest k vertex लेकर inverse-distance weight से मिलाया जाता था, पर विरल vertex वाली सतहों पर यह बहुभुज cells बनाता था, जो लेख की hero image की ज़मीन पर धब्बेदार pattern के रूप में दिखता था। barycentric interpolation triangle के भीतर सटीक linear interpolation है, इसलिए vertex density से स्वतंत्र रूप से continuous है, और पास की किसी दूसरी वस्तु के vertex उठा लेने की समस्या भी नहीं होती।

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

• render_ao — py -3.11 examples_3d/render_ao.py

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

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade

इसी category के (render)

project_points · render_point_depth · render_volume_projection · render_shaded · cast_shadow · phong_shade · matcap_shade · supersample_mesh


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

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