阴影/Blender
这里描述了在 Verge3D 中为 Blender 设置漂亮实时阴影的设置和最佳实践。
内容
准备Blender视口
建议按照本节所述设置Blender的视口, 让配置阴影更加容易。
Verge3D的目标是类似于Blender的Eevee渲染器。 按照以下说明启用:
- 确保渲染属性 -> 渲染引擎 选项被设置为 "Eevee"。 Eevee在Blender 2.8+版本中是默认启用的, 但如果打开了特定的.blend文件, 可能会被指定为其他渲染引擎。在这种情况下,建议将其切换回Eevee。
- 将视口着色方式选项设置为 渲染。
另请注意, Verge3D并不像Blender那样支持柔和阴影(Soft Shadows)。 Blender的柔和阴影选项可以实现渐变的阴影渲染, 但Verge3D依赖于实时渲染技术。 鉴于上述情况, 禁用柔和阴影选项可能更好。 另外,为了在Verge3D中实现柔和阴影, 可以尝试不同的 阴影过滤方法 , 并调整 阴影模糊半径 的设置。
阴影过滤类型
使用不同的阴影图过滤算法,会在Verge3D场景生成明显差异的阴影。请在渲染属性选项卡中的阴影贴图过滤(Shadow Map Filtering)属性中指定算法。
有关使用示例,请查看 Tea Ceremony 演示(也可在资源商店中找到)。
Basic - 基本
禁用过滤,按原样渲染阴影贴图。这是渲染阴影的最快的方法。
Bilinear - 双线性
使用双线性滤波平滑相邻阴影贴图像素。
PCF
Percentage Closer Filtering,代表 “百分比近距离过滤”。使用多个阴影贴图查询以实现平滑的阴影渲染。质量和性能一般。
PCF (Bilinear) - 双线性PCF
与PCF类似,但对每个阴影贴图查询使用双线性插值。在牺牲更多计算能力的情况下提供平滑的阴影。
PCF (Poisson Disk) - 泊松碟采样PCF
使用伪随机 泊松碟 采样来消除PCF阴影的像素化。这被作为默认设置,因为它最符合您在3D编辑器视口中看到的效果。其性能与双线性PCF算法相当或更好。
ESM
Exponential Shadow Maps,代表指数阴影贴图。 阴影是最平滑的, 但有可能出现漏光。 在灯光上使用 ESM偏移 设置来消除漏光伪影。 其性能与双线性PCF算法相当。 ESM阴影的设置可能特别棘手, 因此请参见 故障排除 章节中的ESM相关问题。
选择哪种过滤类型?
建议首先尝试默认的 泊松碟PCF 阴影, 因为它们具有良好的质量和性能。 如果您需要质量较低但速度更快的阴影, 请尝试 基础 或 双线性。 如果您需要更好的质量、更柔和的阴影, 可以尝试 ESM , 但缺点是它们对于特定场景的 设置(伪影方面)可能很棘手。
全局设置
阴影的渲染是通过Blender的阴影和Verge3D Settings面板来调整的,这些面板位于渲染属性选项卡中。
- 方块大小(Cube Size)
- 阴影贴图的大小,用于 点光源 、 聚光灯 和 面光 投射的阴影。较高的数值可以提供更好的质量,但会降低性能。
- 级联尺寸(Cascade Size)
- 从 日光 投射的阴影贴图的大小。较高的值可以提供更好的质量,但会降低性能。
- 光线阈值(Light Threshold)
- 用于计算阴影体积距离的光照强度阈值。
- 启用阴影(Enable Shadows)
- 在Verge3D中启用/禁用阴影。
- 阴影贴图过滤(Shadow Map Filtering)
- 阴影贴图过滤算法。见 上文。
- 阴影贴图面(Shadow Map Side)
- 表示在阴影通道中对多边形的哪一面进行渲染。调整以消除自阴影伪影,或当被渲染的是普通模型时(如树叶或纸张)请调整此值。
- ESM距离比例(ESM Distance Scale)
- ESM阴影的缩放系数。由于ESM过滤算法使用的是绝对距离值, 如果您正在处理的场景比默认的立方体大得多, 那么就减少这个比例值, 如果您的场景小得多, 就增加这个比例。默认为1。 只对 ESM 阴影作用。
每个灯光的设置
可以使用阴影和Verge3D Settings面板为每个单独的灯光启用、禁用或调整阴影。
- 剪切开始(Clip Start)
- 接近剪切距离,较高的值可能会略微改善阴影质量。
- 偏移(Bias)
- 应重点调整的参数,以消除自阴影伪影及阴影悬浮效果。注:Peter Panning - 阴影悬浮,这个词的名字来源于童话人物彼得潘(他的影子与身体分离并且可以飞翔),此伪影使对象看起来像是悬浮在地表。
- 模糊半径(Blur Radius)
- 指定值为1以使阴影更平滑(增加阴影的模糊度)。 这个参数只对 PCF、 双线性PCF、 泊松碟采样PCF 和 ESM 阴影起作用。
- ESM偏移(ESM Bias)
- 偏离一定数值以减少ESM的 漏光 伪影。 只对 ESM 阴影作用。
每个对象/材质的设置
可以通过设置面板为每个单独的材质 启用或禁用阴影。
- 阴影模式
- 材质的阴影投射模式。目前只支持 无(None) 和 不透明(Opaque) 。
可以通过 Verge3D Settings 面板为每个对象单独启用或禁用阴影接收。
- 接收阴影(Rceive Shadows)
- 在给定的对象上渲染阴影或不渲染阴影。
配置日光阴影
由于Verge3D还不支持级联阴影贴图,您必须按照以下步骤来配置日光的阴影。
- 将级联的 数量 设置为1。
- 使用 视图 -> 摄影机 -> 活动摄影机 菜单或按下 数字小键盘的0键 转到活动摄影机视图。
- 调整 最大距离 参数。
故障排除
Verge3D中的阴影和Blender视口中的阴影看起来不同
- Verge3D不使用与3D软件相同的阴影渲染技术, 主要是出于性能的考虑。这可能包括光线分层, 各种后期处理效果和非实时渲染方法。 这是为什么会有差异, 以及为何阴影看起来和视口中的不完全一样。
- Verge3D的目标是类似于Eevee渲染引擎的实时效果。 为了使在Eevee中配置阴影更容易, 请遵循这里描述的介绍:Blender视口准备工作
- 如果使用日光做光源, 请参阅 配置日光阴影。
阴影看起来太像素化了
- 为点光源、 聚光灯、 面光使用较高的 方块尺寸(Cube Size 数值。 为日光使用更高的 级联尺寸(Cascade Size) 数值。
- 如果使用日光, 请尽量降低 最大距离数值 以适合您的场景,
- 尽量用柔和的半影来掩盖低分辨率。 像 PCF (Poisson) 和 ESM 这样的阴影过滤技术, 适当调整 模糊半径 , 可以使像素化不那么突出。
在Blender视口中可见阴影,但在Verge3D中没有。
- 阴影在默认情况下是启用的,但可以手动禁用。 请确保 启用阴影(Enable Shadows) 选项处在激活状态。 另外,确保需 接收阴影(Rceive Shadows) 的对象的接收选项没有被禁用。
- 偏离 距离很大时, 以及 模糊半径(Blur Radius) 在某些情况下可能可能会部分或完全删除阴影。 如果是这样的话,试着降低这些数值。
阴影有伪影
- 这种伪影被称为 “阴影失真(shadow acne)” 或 “自影伪影(self-shadow artifacts)”。 可通过增加 偏移 值来消除。
阴影没有半影区或半影区很小
ESM阴影看起来变淡了
ESM的阴影看起来太尖锐或没有半影
- 增加 模糊半径。
- 减少 ESM偏移 值。
- 减少 ESM距离比例 值。
- 这种伪影会出现在接收对象的边缘。 这是ESM的缺点之一。解决方案时是尽量避免这种情况。
- 如果一个接受阴影的物体本身不投射阴影(例如, 在 阴影模式中被禁用), 那么无论模糊半径有多大, 阴影都 没有半影 。 解决方案是在接收对象上启用阴影投射, 或者使用一个额外的阴影投射对象作为 底层来修复半影区。
ESM阴影有伪影
遇到问题?
欢迎您随时在 论坛上提问!您还可以加入中文用户社区QQ群(171678760),在线寻求帮助。