render op• 데이터 종류: mesh × vector → image2d
• 호출: import fullseye as fs; fs.ledger.cast_shadow(V, F, light, *, pose=None, intrinsics=None, width: 'int' = 256, height: 'int' = 256, directional: 'bool' = True, penumbra: 'float' = 0.0, samples: 'int' = 16, shadow_res: 'int' = 512, bias=None, pcf: 'int' = 0) -> 'np.ndarray'(구현을 직접 호출하려면 import render_shadow; render_shadow.cast_shadow(V, F, light, *, pose=None, intrinsics=None, width: 'int' = 256, height: 'int' = 256, directional: 'bool' = True, penumbra: 'float' = 0.0, samples: 'int' = 16, shadow_res: 'int' = 512, bias=None, pcf: 'int' = 0) -> 'np.ndarray', 원장에서 가져오려면 ops3d.get("cast_shadow"))
메시의 캐스트 그림자 / 소프트 섀도를 계산해 가시성 맵 (H,W) ∈ [0,1] 을 돌려줍니다.
1=완전히 비춰짐 / 0=완전한 그림자. 수광면이 없는 배경 화소는 1.0.
인수:
• V, F 정점 (N,3)과 삼각형 (M,3). 빈 메시는 그림자를 드리울 수 없으므로 거부.
• light (3,) 벡터. directional=True이면 평행광의 방향(장면→광원), False이면 점광원의 월드 위치.
• pose/intrinsics 카메라. 생략 시 render3d.auto_view로 보완.
• penumbra 면광원의 각반경(도). 0이면 하드 그림자, 늘릴수록 반그림자가 넓어진다.
• samples 반그림자 샘플 수(penumbra>0일 때만 사용, Fibonacci 디스크).
• shadow_res shadow map의 한 변 해상도.
• bias 그림자 판정의 깊이 바이어스(월드 단위). None이면 texel 크기와경사로부터 자동 설정(acne / peter-panning을 억제).
• pcf shadow map을 조회할 때 섞는 근방의 반경 [texel]. 0(기본값)은 최근접 1 점 = 종래대로. 1이면 3x3의 판정을 평균한다(깊이를 평균하는 것이 아니다 —— 깊이의 평균은앞과 뒤를 고르게 하여 존재하지 않는 면을 만든다). 경계가 texel로양자화되어 계단이 되는 것을, shadow map을 올리지 않고 완화한다.
기법은 shadow mapping(Williams 1978): 광원에서 render_mesh로 깊이를 얻고, 카메라 측의수광면 점을 광원 공간으로 사영하여 깊이를 비교한다. fail-closed: 퇴화 메시·부정 광원·양이 아닌크기/해상도는 ValueError.
• blender_interop — Blender와 함께 쓰기 — 형상을 만들고 fullseye로 측정(축·단위·정답 데이터의 함정)
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• render_beauty — py -3.11 examples_3d/render_beauty.py
• render_shadow — py -3.11 examples_3d/render_shadow.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 · phong_shade · matcap_shade · supersample_mesh
*Provenance: render_shadow.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.