brdf_lommel_seeliger — 3D render op

• 데이터 종류: normalmap → image2d

• 호출: import fullseye as fs; fs.ledger.brdf_lommel_seeliger(normals, light=(0.0, 0.0, 1.0), view=(0.0, 0.0, 1.0), w: 'float' = 0.42) -> 'np.ndarray'(구현을 직접 호출하려면 import render_shade; render_shade.brdf_lommel_seeliger(normals, light=(0.0, 0.0, 1.0), view=(0.0, 0.0, 1.0), w: 'float' = 0.42) -> 'np.ndarray', 원장에서 가져오려면 ops3d.get("brdf_lommel_seeliger"))

사용법

Lommel-Seeliger 반사 법칙(가장자리까지 밝은 레골리스)으로 법선 맵에 음영을 넣고 I/F (H, W) 를 돌려줍니다.

Lambert(phong_shade의 확산항)는 가장자리(μ→0)에서 0이 되지만, Lommel-Seeliger는 μ0/(μ0+μ)이므로 가장자리에서도 μ0 그대로 밝아, 소행성·달의 "평탄한 원반" 같은 외관이 된다. w = 단일 산란 알베도. fail-closed(법선 형상·w의 범위).

계산은 brdf_shade의 model='lommel_seeliger'와 동일하며, 각 화소에 대해 μ0 = clip(N·L, 0, 1), μ = clip(N·V, 0, 1)를 취하고, I/F = π · (w/4π) · μ0/(μ0+μ)(= (w/4)·μ0/(μ0+μ))를 반환한다. μ0 또는 μ가 0 이하인 화소(빛이 닿지 않는 면·시선을 등진 면)는 0.

• normals: float (H, W, 3). 길이 0의 벡터는 배경으로 간주하여 출력 0 (render3d.render_mesh의 normals를 그대로 넘길 수 있다). 단위화는 내부에서 수행한다.

• light / view: 면→광원, 면→시점으로 향하는 방향 벡터(내부에서 단위화). 카메라는 -Z를 보는 규약이므로 기본값 view=(0,0,1). 평행광·정사영 근사이며, 방향은 화면 내에서 일정.

• w: 단일 산란 알베도, (0, 1] 이외는 ValueError.

반환값은 float64 (H, W)의 I/F. 정사영에서 light == view(위상각 0)이면 μ0 = μ가 되어 전경 전체가 w/8의 균일한 값이 된다. 값은 [0, w/4) 에 들어가며 [0,1] 로정규화하지 않는다. 하이라이트를 다루려면 phong_shade, 충효과(opposition effect)·거칠기까지 넣으려면 brdf_hapke를 사용한다.

배경 지식 가이드(이 연산자 앞에 있는 물리·규약)

• blender_interop — Blender와 함께 쓰기 — 형상을 만들고 fullseye로 측정(축·단위·정답 데이터의 함정)

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• itokawa_regolith_hero — py -3.11 examples_3d/itokawa_regolith_hero.py

타입이 이어지는 다음 연산자(image2d 를 입력으로 받는 것)

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 · ambient_occlusion · cast_shadow · phong_shade · matcap_shade


*Provenance: render_shade.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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