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

# 阴影 / 3ds Max

这里介绍了在Verge3D中为3ds Max设置漂亮的实时阴影的设置方法和最佳实践。

在 Industrial Robot 演示中看到的动态阴影。

## 内容

- 准备Max视口设置
- 阴影过滤类型
  - Basic - 基本
  - Bilinear - 双线性
  - PCF
  - PCF (Bilinear) - 双线性PCF
  - PCF (Poisson Disk) - 泊松碟采样PCF
  - ESM
  - 选择哪种过滤类型？
- 全局设置
- 每个灯光的设置
- 每个对象的设置
- 故障排除

#

## 准备Max视口设置

建议按照本节所述设置 3ds Max 的视口，让配置阴影更加容易。

启用以下视窗选项。

- Lighting and Shadows → Illuminate with Scene Lights
- Lighting and Shadows → Shadows

#

## 阴影过滤类型

使用不同的阴影图过滤算法，会在Verge3D场景生成明显差异的阴影。位于 Verge3D Export Settings 面板上的 Shadow Filtering 属性是用来指定该算法的。

#

### 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 ，但缺点是它们对于特定场景的设置（伪影方面）可能很棘手。

#

## 全局设置

阴影的全局设置位于Verge3D Export Settings菜单中。

Shadow Filtering
  阴影贴图过滤算法。见 上文。
ESM Distance Scale
  ESM阴影的缩放系数。 由于ESM过滤算法使用的是绝对距离值， 如果您正在处理的场景比默认的立方体大得多， 那么就减少这个比例值，如果您的场景小得多， 就增加这个比例。默认为0.3。 只对 ESM 阴影作用。

#

## 每个灯光的设置

可以使用3ds Max的原生面板为每个单独的灯光启用或禁用阴影。支持的阴影设置以绿色突出显示。

Target Distance
  可以影响阴影停止渲染的距离。 只适用于聚光灯和平行光。只有在处理 故障排除 部分中的阴影剪切问题时才需调整它。
On
  启用/禁用阴影。
Shadow Map
  必须在下拉菜单中选择阴影，才能在Verge3D中出现。
Falloff/Field
  定义阴影量（越少越好）。 只适用于聚光灯和平行光。
Bias
  可以调节以消除自阴影伪影及 "peter-panning" 效果。 注：Peter Panning这个词的名字来源于童话人物彼得潘（他的影子与身体分离并且可以飞翔），此伪影使对象看起来像是悬浮在地表。
Size
  控制阴影纹理的大小 （在速度和质量之间进行平衡）。
Sample Range
  控制阴影的模糊度比例。
Shadow Bias
  类似于 偏移 的额外偏移设置。用于消除自阴影伪影及 "peter-panning" 效果。
ESM Bias
  偏离一定数值以减少ESM的 漏光 伪影。只对 ESM 阴影作用。
Count
  要使用的级联数量。更多级联意味着更好的阴影精度，但帧率更低。
Fade
  如果大于 `0`，则每个级联的大小（距离间隔）会增加，以使相邻级联重叠。然后在重叠区域应用淡入淡出以提供级联之间的平滑过渡。较高的值意味着级联大小增加更多，这会减少级联内可用的阴影分辨率，因为其中一部分用于重叠区域。如果不需要此参数，请不要使用（设置为 `0`）。
Distribution
  将更多分辨率放到近裁剪面。仅在透视视图中有效。
Cascade Margin
  仅当高或大的对象的阴影出现截断时才设置较大的值。
Max Distance
  控制阴影从摄影机可见的距离。保持较低值以维持更好的分辨率。

#

## 每个对象的设置

您也可以在每个对象的基础上启用和禁用接收和投射阴影。

Receive Shadows
  启用/禁用此对象的阴影接收。
Cast Shadows
  启用/禁用此对象的阴影投射。

您可以查看以下视频了解如何在3ds Max中设置阴影。

- YouTube: Verge3D for 3ds Max Basics - Part 3 - Light and Shadows
- Bilibili: Verge3D for 3ds Max基础 - 03.光源与阴影

另请看Autodesk的官方文档，了解更多信息和最佳实践方法。

#

## 故障排除

### Verge3D中的阴影和Max视口中的阴影看起来不同

- Verge3D不使用与3D软件相同的阴影渲染技术，主要是出于性能的考虑。 这可能包括光线分层， 各种后期处理效果和非实时渲染方法。 这是为什么会有差异， 以及为何阴影看起来和视口中的不完全一样。
- Verge3D的目标是类似于Max视口。 为了使配置阴影更容易，请遵循这里的说明： Max视口准备工作

### 阴影看起来太像素化了

- 使用较高的尺寸值。
- 如果使用定向光源，只要适合您的场景，尽量减少 衰减区/区域 参数。
- 尽量用柔和的半影来掩盖低分辨率。 使用 PCF（泊松） 和 ESM 这样的阴影过滤技术以及适当调整的 采样范围 可以使像素化不那么突出。

### 阴影在Max视口中是可见的，但在Verge3D中却看不到。

- 要在Verge3D中启用阴影， 阴影贴图类型 下拉菜单必须设置为阴影贴图。
- 偏移 数值非常大时， 阴影偏移 和 采样范围 有时会部分或完全删除阴影。如果是这样的话，试着降低这些数值。

### 阴影有伪影

- 这种伪影被称为"shadow acne"或"self-shadow artifacts"。增加 偏移 和/或 阴影偏移 值来消除它们。

### 阴影没有半影区或半影区很小

- 在 基本 和 双线性 类型中没有半影控制。请选择其他的 阴影过滤类型 。
- 增加采样范围。

### 来自聚光灯和平行光的阴影被剪掉了

- 增加 目标距离 值。

### ESM阴影看起来变淡了

- 增加 ESM偏移 值。
- 增加 ESM距离比例 值。

### ESM的阴影看起来太尖锐或没有半影

- 增加 采样范围。
- 减少 ESM偏移 值。
- 减少 ESM距离比例 值。
- 这种伪影会出现在接收对象的边缘。 这是ESM的缺点之一。解决方案时是尽量避免这种情况。
- 如果一个接受阴影的物体本身不投射阴影（例如，在 投射阴影 中被禁用），那么无论模糊半径有多大， 阴影都 没有半影 。解决方案是在接收对象上启用阴影投射， 或者使用一个额外的阴影投射对象作为底层来修复半影区。

### ESM阴影有伪影

- 减少 ESM偏移 值。
- 减少 ESM距离比例 值。

### 级联阴影贴图，阴影在某个角度被剪裁

- 增加 Cascade Margin。

### 级联阴影贴图和ESM阴影，阴影在级联交叉处看起来变淡

- 增加 Cascade Margin。
- 增加 ESM偏移 值。
- 增加 ESM距离比例 值。

## 遇到问题？

欢迎您随时在 论坛上提问！您还可以加入中文用户社区QQ群(171678760)，在线寻求帮助。