fullseye

render_optscene — OPTICS scene op

使い方

検査用に撮る: 実在の照明器具を物理単位で置き直接光を数える(真値つき)。

見た目を作るための多重反射・環境光は入れない。きれいな絵が要るなら :func:render_studio ―― 作り方が違う別の op で、取り違えると測光の 根拠が濁る。返り値は線形 RGB の放射輝度 (H, W, 3)、トーンマップ前。

lightsillumdesign.light_source の結果(1 つでも並べてもよい)。 ambient は一様な環境光、depth は誘電体を通す再帰の深さ、 shadows=False で落ち影を切る(速いが、影がある前提の検査には使えない)。 supersample は 1 画素あたりの標本を n×n に増やす ―― 実際の画素は面積を 積分するので、縁や加工目の階段状のギザギザはこれで消える(コストは n² 倍)。

大量生成のための 3 つのつまみ(速度は生成器の機能):

wavelength_nm は光源の波長。面粗さ σ の面が鏡面として返す割合 exp(-(4πσcosθ/λ)²) に入るので、同じ面でも波長で見え方が変わる。 広帯域(ハロゲン)なら数波長で撮って足す、レーザーなら単一波長で撮る。

environment を渡すと、見せる絵の作り方をここに混ぜられる: 金属の異方性 ローブで環境を引いた分を environment_gain 倍して足す。ブラシ目の金属が 金属に見えるのは環境が目に沿って引き伸ばされて映るからで、点光源だけでは硬い 縞にしかならない(2026-09-05 のユーザー着眼)。既定は off ―― 測光の根拠が要る 検査画像に、見た目のための項を黙って混ぜないため。optscene.env_studio を 渡すのが手軽で、自前の関数((…,3) 方向 -> (…,) 明るさ)でもよい。

表示用に丸めたい場合は自分で **(1/2.2) する。実レンズの歪曲・PSF・ 周辺光量・センサ雑音を足すには lensimage.render_through_lens を後段に、 量子化と読み出し雑音だけなら sensor_capture を後段に掛ける。

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

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

詳しい使い方ガイド

背景知識ガイド(この op の手前にある物理・規約)

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

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

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

clearcoat_shade · wetness · defocus_blur · diffraction_blur · sensor_capture

同カテゴリ(scene)

scene_material · scene_plane · scene_sphere · scene_box · scene_cylinder · surface_defect · surface_finish · random_defects


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

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