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"))
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.
• blender_interop — Zusammen mit Blender — Form bauen, mit fullseye messen (Fallstricke: Achsen, Einheiten, Referenzdaten)
• 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.
• render_ao — py -3.11 examples_3d/render_ao.py
image2d als Eingabe)fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade
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.