阴影 / Blender
这里描述了在 Verge3D for Blender 中设置漂亮实时阴影的设置和最佳实践。
内容
准备Blender视口
建议按照本节所述设置 Blender 的视口,让配置阴影更加容易。
Verge3D 的目标是类似于 Blender 的 Eevee 渲染器。按照以下说明启用:
-
确保 Render Properties → Render Engine 选项设置为 EEVEE:
Eevee 在 Blender 中默认启用,但对于特定的 .blend 文件可能使用了其他渲染引擎。在这种情况下,建议切换回 Eevee。
-
将 Viewport Shading 选项设置为 Rendered:
另请注意,Verge3D 不以与 Blender 相同的方式支持阴影。为了在 Verge3D 中实现柔和阴影,可以尝试不同的 阴影过滤方法,并调整 阴影模糊半径 设置。
阴影过滤类型
在 Verge3D 中,阴影的外观因所使用的阴影贴图过滤算法不同而有很大差异。Shadow Filtering 属性位于 Render Properties 选项卡中,用于指定算法。
有关使用示例,请查看 Tea Ceremony 演示(也可在资源商店中找到)。
Basic - 基本
禁用过滤,按原样渲染阴影贴图。这是渲染阴影最快的方法。
Bilinear - 双线性
使用双线性滤波平滑相邻阴影贴图像素。
PCF
代表 Percentage Closer Filtering - 百分比近距离过滤。使用多个阴影贴图查询实现平滑的阴影渲染。平均质量和性能。使用伪随机 Poisson Disk Sampling - 泊松碟采样 来消除 PCF 阴影的像素化。这是默认设置,因为它最符合 3D 编辑器视口中看到的效果。
ESM
代表 Exponential Shadow Maps - 指数阴影贴图。阴影最平滑,但可能出现漏光。在灯光上使用 ESM Bias 设置来消除漏光伪影。性能与 PCF 算法相当。
ESM 阴影的设置可能特别棘手,因此请参见 故障排除 章节中的 ESM 相关问题。
选择哪种过滤类型?
建议首先尝试默认的 PCF 阴影,因为它们具有良好的质量和性能。如果您需要更快但质量较低的阴影,请尝试 Basic 或 Bilinear。如果您想要更高质量、更柔和的阴影,可以尝试 ESM,但缺点是对于特定场景的设置(伪影方面)可能比较棘手。
全局设置
阴影的渲染通过 Blender 的 Render 选项卡中的 Shadows 和 Verge3D Settings 面板来调整。
- Shadows
- 为场景启用/禁用阴影。
- Light Threshold
- 用于计算阴影体积距离的光照强度阈值。
- Shadow Filtering
- 阴影贴图过滤算法。见 上文。
- Map Side
- 表示在阴影通道中对多边形的哪一面进行渲染。调整此值以消除自阴影伪影,或当渲染平面模型时(如树叶或纸张)。
- ESM Distance Scale
-
ESM 阴影的缩放系数。由于 ESM 过滤算法使用绝对距离值,如果您正在处理的场景比默认立方体大得多,则减小该比例值;如果场景小得多,则增大该比例。默认值为
1。仅对 ESM 阴影有效。 - Cube Size
- 从 Point - 点光源、Spot - 聚光灯 和 Area - 面光源 投射的阴影贴图大小。较高的值提供更好的渲染质量,但会降低性能。
- Cascade Size
- 从 Sun - 日光 投射的阴影贴图大小。较高的值提供更好的渲染质量,但会降低性能。
每个灯光的设置
可以使用 Shadow 和 Verge3D Settings 面板为每个单独的灯光启用/禁用/调整阴影。
- Shadows
- 启用/禁用该灯光投射的阴影。
- Blur Radius
-
指定大于
1的值使阴影更平滑(增加阴影模糊度)。此参数仅对 PCF 和 ESM 阴影有效。 - Clip Start
- 近剪切距离,较高的值可能会略微改善阴影质量。
- Bias
- 应重点调整的参数,以消除自阴影伪影及"阴影悬浮(peter-panning)"效果。
- ESM Bias
- 偏移以减少 ESM 漏光(light leaking) 伪影。仅对 ESM 阴影有效。
对于日光(Sun light),还有额外的参数来配置阴影级联:
- Count
- 用于渲染阴影级联的贴图数量。
- Fade
- 级联之间过渡的平滑因子。
- Max Distance
- 最后一个级联的结束距离(从摄影机测量)。
- Distribution
- 较高的值会增加朝向视点的分布。
- Cascade Margin
- 如果高大或大型物体的阴影出现截断,请增大此默认值。
配置日光的级联阴影
级联阴影贴图从 Verge3D 4.6 开始完全支持。推荐的配置方法如下:
- 使用 View→Cameras→Active Camera 菜单或 Numpad 0 键转到活动摄影机视图。
- 调整 Cascaded Shadow Map 参数。
- 在 Verge3D 中检查阴影效果。
- 如果高大或大型物体的阴影出现截断,请增大 Cascade Margin 参数。
为了获得更好的渲染性能,请尽量保持级联数量(及其分辨率)较低。
每个对象的设置
可以通过 Visibility 和 Verge3D Settings 面板为每个单独的对象启用/禁用阴影。
- Ray Visibility → Shadow
- 启用/禁用对象的阴影投射。
- Receive Shadows
- 在给定对象上接收(渲染)阴影。
故障排除
Verge3D 中的阴影和 Blender 视口中的阴影看起来不同
- Verge3D 不使用与 3D 软件相同的阴影渲染技术——主要是出于性能原因。这可能包括光线追踪、各种后期处理效果和非实时方法。因此会存在差异,阴影不会与视口中的完全相同。
- Verge3D 的目标是类似于 Eevee 渲染引擎。为了使在 Eevee 中配置阴影更容易,请遵循这里描述的说明:准备 Blender 视口。
- 如果使用 Sun 光源,请参阅 配置日光阴影。
阴影看起来太像素化了
- 为 Point - 点光源、Spot - 聚光灯 和 Area - 面光源 使用较高的 Cube Size 值。为 Sun - 日光 使用较高的 Cascade Size 值。
- 如果使用 Sun 光源,请尽量降低 Max Distance 值,只要适合您的场景即可。
- 尝试用柔和的半影来掩盖低分辨率。PCF 和 ESM 等阴影过滤技术,配合适当调整的 Blur Radius,可以使像素化不那么明显。
在 Blender 视口中可见阴影,但在 Verge3D 中没有
- 阴影默认启用,但可以手动禁用。请确保 Shadows 选项处于激活状态。另外,确保应该接收阴影的对象的 Receive Shadows 选项未被禁用。
- 非常高的 Bias 值以及有时 Blur Radius 可以部分或完全消除阴影。如果是这种情况,请尝试降低这些值。
阴影有伪影
- 这种伪影被称为"shadow acne - 阴影失真"或"self-shadow artifacts - 自影伪影"。增加 Bias 值来消除它们。
阴影没有半影区或半影区很小
- 在 Basic 或 Bilinear 阴影中无法控制半影。请选择其他的 阴影过滤类型。
- 增加 Blur Radius。
ESM 阴影看起来变淡了
- 增加 ESM Bias 值。
- 增加 ESM Distance Scale 值。
ESM 阴影看起来太尖锐或没有半影
- 增加 Blur Radius。
- 减少 ESM Bias 值。
- 减少 ESM Distance Scale 值。
-
这种伪影可能出现在接收对象的边缘。
这是 ESM 的缺点之一。解决方案是尽量避免这种情况。
- 如果接收阴影的对象本身不投射阴影(例如通过 Shadow Mode 被禁用),则无论 Blur Radius 多大,阴影都可能完全没有半影。解决方案是在接收对象上启用阴影投射,或使用额外的阴影投射对象作为底层来修复半影。
ESM 阴影有伪影
- 减少 ESM Bias 值。
- 减少 ESM Distance Scale 值。
级联阴影贴图,阴影在某个角度被截断
- 增加 Cascade Margin。
级联阴影贴图与 ESM 阴影,阴影在级联交汇处看起来变淡
- 增加 Cascade Margin。
- 增加 ESM Bias 值。
- 增加 ESM Distance Scale 值。
遇到问题?
欢迎您随时在 论坛上提问!您还可以加入中文用户社区QQ群(171678760),在线寻求帮助。