透明度 / 3ds Max
在这里,我们展示了如何在3ds Max中为Physical、OpenPBR、Standard和glTF兼容的PBR材质启用和调整透明特性。
有关使用示例,请查看 Transparency 演示(也可在资源商店中找到)。
混合与蒙版
作为一个实时渲染3D引擎,Verge3D提供了两种主要的方法来处理透明物体:alpha混合和alpha剪切(通常需要一个图像蒙版)。混合法(blending)可以将一个半透明的前景色与背景色结合起来,使用前景色的alpha作为混合系数。相对而言,剪切法(clipping)只是简单地丢弃所有alpha值小于某个预定义阈值的像素(在Verge3D for 3ds Max中总是等于0.5)。
混合可以实现平滑过渡,通常看起来更漂亮,但计算成本比剪切高。当多边形以错误的顺序被渲染时,它也可能产生Z向排序的伪影。剪切法更适合用于可视化大量小物体的场景(如草和树叶)。但它会产生没有任何过渡的硬边缘,可能会出现锯齿。
使用材质设置中的 Alpha Mode 下拉菜单,在混合和遮蔽之间进行选择。
还有一种 Mask 模式的变体称为 Coverage。它使用MSAA渲染来提高alpha剪切的质量。
加法合成(又称加法混合)
Verge3D还提供了一种特殊的透明表面渲染方法,称为加法合成。通过以加法方式混合并将多边形排除在像素深度比较之外,可以消除透明度伪影。
在 Alpha Mode 下拉菜单中选择 Add,并取消勾选材质设置中的 Depth Write 选项以启用该模式。此外,您还需要增大 对象设置 中的 Rendering Order 值,使透明对象渲染在所有其他对象之上。
顺序无关透明度(OIT)
Verge3D允许使用近似的顺序无关透明度技术,该技术不需要按排序顺序渲染几何体,因此无需上述任何考虑即可解决大多数透明度问题。
OIT可以在 Verge3D导出设置 对话框中启用。
已知限制:
- OIT仅兼容WebGL 2,否则无效。
- OIT被反射立方体贴图光照探针和反射平面光照探针忽略。
- 在高不透明度对象上可能效果不佳。
- 不应与包含2个或更多不透明对象的场景中的 MSAA(多重采样抗锯齿)一起使用。相反,您可以使用 FXAA(快速近似抗锯齿),它与OIT完全兼容。
物理材质的透明度
Physical(以及OpenPBR)材质的透明度可以通过同名的材质设置进行调整。
参数:
- Transparency
- 透明度的权重、颜色和粗糙度。颜色和粗糙度参数只支持基于折射的透明度(Thin-walled 关闭时)。
- Thin-walled
- 使用通用的(Thin-walled 打开时)或基于折射的(Thin-walled 关闭时)透明度。
- Alpha Mode
-
材质的透明度模式。
- Auto
- 查看材质以解析可能的透明度方法:Opaque 或 Blend。
- Opaque
- 渲染材质时不带透明度。
- Blend
- 混合透明度(参见上文)。
- Add
- 加法透明度合成(参见上文)。
- Mask
- 蒙版透明度(参见上文)。
- Coverage
- 哈希透明度,又称alpha to coverage。此方法介于蒙版和混合透明度之间。它使用MSAA渲染来提高alpha剪切的质量。
- Transparency Hack
-
启用两种非标准渲染方法之一来消除透明度伪影:
- Nearest Layer
- 通过使用单独的深度缓冲区进行剔除(又称"深度预处理"),仅渲染最靠近摄影机的透明层。
- Two-Pass
- 先渲染背面表面,然后渲染正面表面。此方法仅适用于双面材质,即应设置 2-Sided 属性。
- Depth Write
- 禁用以启用加法透明度合成(参见上文)。
在3ds Max中,默认情况下 Thin-walled 参数是关闭的,这会使得在网页应用中的渲染与您的预期不同,最典型的透明度渲染会失效。当您处理透明的物理材质时,一定要留意这个设置。
可以将贴图和图像的任意组合连接到 Transparency Map 输入节点,来影响透明度。
标准材质的透明度
标准材质的透明度可以通过材质设置中的 Opacity 进行调整。
可以用标准材质的 Opacity 输入创建有趣的依赖关系,以获得更好的真实感。
可使用在alpha通道中含有透明信息的图像作为输入。也可以使用一个单独的alpha图像。
使用 Alpha Mode 下拉菜单来选择透明模式。
glTF兼容的PBR材质的透明度
为了使此类材质具有透明度,需要使用一个 单独的 alpha贴图与物理材质的 Transparency Map 输入相连。
使用 Alpha Mode 下拉菜单来选择支持的透明模式:Auto、Opaque、Blend 或 Mask。
遇到问题?
欢迎您随时在 论坛上提问!您还可以加入中文用户社区QQ群(171678760),在线寻求帮助。