ambient_occlusion — 3D render op

• Datenarten: mesh → image2d

• Aufruf: 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' (die Implementierung direkt: 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'; aus dem Register: ops3d.get("ambient_occlusion"))

Verwendung

Rendert das Mesh in eine AO-Karte (H, W) in [0,1].

Holt depth / silhouette / Dreiecks-id und perspektivisch korrigierte baryzentrische Koordinaten mit render3d.render_mesh (Rasterisierung und Verdeckungsberechnung werden ihm überlassen, nicht neu erfunden) und backt das Vertex-AO des Objektraum-vertex_occlusion per baryzentrischer Interpolation aus den 3 Vertices des Dreiecks, das dieses Pixel überdeckt ein. Außerhalb des Objekts (silhouette=0) gilt background (Standard 1.0 = voll exponiert). Werden *pose* / *intrinsics* weggelassen, übernimmt render3d.auto_view die Bildeinstellung. Die fail-closed-Prüfung folgt den untergeordneten Funktionen.

k wird seit 2026-09-02 nicht mehr verwendet (aus Gründen der Abwärtskompatibilität beibehalten). Bis dahin wurden im Kameraraum die nächsten k Vertices gesucht und mit inversen Distanzgewichten gemischt, doch auf Flächen mit groben Vertices entstanden dadurch polygonale Zellen, die auf dem Boden des hero-Bildes des Artikels als fleckiges Muster sichtbar waren. Die baryzentrische Interpolation ist eine exakte lineare Interpolation innerhalb des Dreiecks, daher unabhängig von der Vertexdichte stetig, und sie greift auch nie Vertices eines anderen, benachbarten Objekts auf.

Hintergrundwissen (Physik und Konventionen hinter diesem Operator)

• blender_interop — Zusammen mit Blender — Form bauen, mit fullseye messen (Fallstricke: Achsen, Einheiten, Referenzdaten)

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• render_ao — py -3.11 examples_3d/render_ao.py

Typkompatible Folge-Operatoren (nehmen image2d als Eingabe)

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

Gleiche Kategorie (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. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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