用于Blender的Verge3D：阴影 - Soft8Soft
Description: 学习如何在Verge3D for Blender中设置漂亮的阴影。

# 阴影 / Blender

这里描述了在 Verge3D for Blender 中设置漂亮实时阴影的设置和最佳实践。

## 内容

- 准备Blender视口
- 阴影过滤类型
  - Basic - 基本
  - Bilinear - 双线性
  - PCF
  - ESM
  - 选择哪种过滤类型？
- 全局设置
- 每个灯光的设置
- 配置日光的级联阴影
- 每个对象的设置
- 故障排除

#

## 准备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 开始完全支持。推荐的配置方法如下：

1. 使用 View→Cameras→Active Camera 菜单或 Numpad 0 键转到活动摄影机视图。
2. 调整 Cascaded Shadow Map 参数。
3. 在 Verge3D 中检查阴影效果。
4. 如果高大或大型物体的阴影出现截断，请增大 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)，在线寻求帮助。