fullseye

render_transport — OPTICS light_transport op

使い方

Render camera images of a concave Lambertian cross-section under projector patterns, through the light-transport matrix (direct + interreflection).

The orthographic projector is tilted triangulation_deg from the vertical towards +x; its frame (the pattern width W_p) spans the cross-section exactly, and each patch is lit by the average of the projector pixels inside its footprint, times n·d and irradiance. A deactivated projector pixel still emits black_level (Nayar’s b). The radiosity B = T E is the camera image: one column per patch, repeated over rows rows (the groove axis).

transport is a table from :func:transport_matrix_radiosity (pass n_bounces=0 for the direct-only truth). patterns (images) must be constant along each column (stripes or fringes parallel to the groove): the 2-D transport is exact only then.

Returns a list of (rows, P) images (images).

Raises ValueError: not a transport table; patterns empty, non-finite, outside [0, 1] or varying along the groove axis (a checkerboard); triangulation_deg outside (0, 80] or a patch facing away from the projector (it would be in shadow); irradiance <= 0; black_level outside [0, 1); rows not an integer in [1, 4096].

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(images を入力に取れる)

film_thickness_map · separate_direct_global · micro_phase_decode

同カテゴリ(light_transport)

groove_profile · form_factors_2d · transport_matrix_radiosity · high_frequency_patterns · separate_direct_global · fringe_multipath_phase_error · predict_fringe_phase_error · micro_phase_decode


Provenance: lighttransport.py — OPTICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

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