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 的 判定取平均(不是对深度取平均 —— 深度的平均会把前方和后方抹平,造出不存在的面)。在不提高 shadow map 的情况下,缓解边界被量化为 texel 而形成阶梯的问题。
方法为 shadow mapping(Williams 1978): 从光源用 render_mesh 取深度,把相机侧的受光面点投影到光源空间进行深度比较。fail-closed: 退化网格、非法光源、非正的尺寸/分辨率为 ValueError。
• blender_interop — 与 Blender 配合使用 —— 在 Blender 中建形、用 fullseye 测量(坐标轴、单位、真值数据的陷阱)
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 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 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.