fullseye

form_factor_matrix — OPTICS radiosity op

使い方

All patch-to-patch view factors F_ij of a radiosity_patches set (occlusion by the scene’s rays).

Each pair is :func:form_factor_polygons (n_quad × n_quad Gauss points on the receiver, Lambert’s contour sum to the sender) restricted to pairs that face each other; when the patches came from a scene, each Gauss point tests one ray to the sender’s centre against the scene. Pairs farther apart than far_ratio times the larger patch’s diagonal use the receiver’s centroid alone (the sender is still exact); far_ratio=None integrates every pair fully. symmetric=True (default) enforces reciprocity exactly by averaging A_i F_ij and A_j F_ji (the raw values agree to the quadrature accuracy) — the progressive solver’s F_ij A_i / A_j is then exactly F_ji.

Candidate pairs use the former, faster all-at-once calculation while its largest temporary fits memory_budget_mb, and 256-patch blocks otherwise. The default 256 MB keeps the former path for a 384-patch closed box but blocks 4,096 patches, whose candidate expression alone needs 1.00 GiB. On the 2026-10-21 development machine, whole-call CPU time / tracemalloc peak were 0.234 s / 115 MiB (original), 0.219 s / 60 MiB (default), and 0.234 s / 60 MiB (forced blocks) for 384 patches; the isolated 4,096-patch candidate case measured 0.547 s / 1,152 MiB, 1.500 s / 195 MiB, and 1.516 s / 195 MiB respectively. Pass 0 to always block, or a sufficiently large value to never block.

Returns the (N, N) matrix (matrix), zero diagonal. In a closed enclosure each row sums to 1 (to the quadrature accuracy); an opening shows as a row sum < 1.

Raises ValueError: an empty or unmarked table (not radiosity_patches); n_quad not an integer in [1, 16]; far_ratio below 1; or a negative or non-finite memory_budget_mb.

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

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

詳しい使い方ガイド

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

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

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

abcd_trace · emva_filter_distortion · mueller_apply · mueller_checks · equirect_rotate · pixel_shift_capture · pixel_shift_merge · pixel_shift_motion_mask

同カテゴリ(radiosity)

form_factor_parallel_rects · form_factor_perpendicular_rects · form_factor_polygons · radiosity_patches · radiosity_progressive_3d · render_optscene_gi


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

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