透明度/Blender
在这里,我们展示了如何在Blender为Eevee/Cycles和glTF兼容的材质启用透明特性。
在Blender中的设置
可以通过Transparent BSDF和Mix Shader节点组合来启用Eevee材质的透明度。Mix Shader节点中的因子可以用来定义alpha值——您可以直接指定数值,或者创建其他节点(如Fresnel)作为依赖,以创作更真实的外观。
或者,您也可以使用原理化BSDF节点的Alpha输入。
使用Blend Mode下拉菜单来选择透明度模式:
- Auto
- 检查材质以确定可能的透明度方法:Opaque或Alpha Blend。
- Opaque
- 渲染材质时不使用透明度。
- Alpha Clip
- 蒙版透明度(参见下文)。
- Alpha Hashed
- 哈希透明度,又称alpha to coverage。此方法位于蒙版和混合透明度之间。它使用MSAA渲染来改善alpha剪切的质量。
- Alpha Blend
- 混合透明度(参见下文)。
要调整材质的透明度,在Verge3D Settings面板上还有其他选项:
- Clip Threshold
- Alpha剪切(蒙版)材质的阈值。对于alpha值低于剪切阈值的像素,表面将被剔除且不会被渲染。
- Transparency Hack
-
启用两种非标准渲染方法之一来消除透明度伪影:
- Nearest Layer
- 通过使用单独的深度缓冲区进行剔除(又称"深度预传递"),仅渲染最接近摄影机的透明层。
- Two-Pass
- 先渲染背面,然后渲染正面。此方法仅适用于双面材质,即Render Side属性应设置为Double-sided。
有关使用示例,请查看 Transparency 演示(也可在资源商店中找到)。
混合与蒙版
作为一个实时渲染3D引擎,Verge3D提供了两种主要的方法来处理透明物体:alpha混合和alpha剪切(通常需要一个图像蒙版)。混合法可以将一个半透明的前景色与背景色结合起来,使用前景色的alpha作为混合系数。相对而言,剪切法只是简单地丢弃所有alpha值小于某个预定义阈值的像素(默认为0,但可以在材质设置中改变)。
混合可以实现平滑过渡,通常看起来更漂亮,但计算成本比剪切高。当多边形以错误的顺序被渲染时,它也可能产生Z向排序的伪影。剪切法更适合用于可视化大量小物体的场景(如草和树叶)。但它会产生没有任何过渡的硬边缘,可能会出现锯齿。
加法合成(又称加法混合)
Verge3D还提供了一种特殊的透明表面渲染方法,称为加法合成。通过以加法方式混合并将多边形排除在像素深度比较之外,您可以消除透明度伪影。
要启用此模式,请使用以下材质设置。将Glossy BSDF替换为您材质所需的实际节点。
同时禁用位于Verge3D Settings面板上的Depth Write选项:
渲染顺序(又称为Z-index)
Verge3D不排序对象内部的多边形,而是在对象 之间 进行排序。这在大多数情况下生成正确的混合,但有时可能需要强行设置对象渲染顺序。
可以在Verge3D设置面板中用数值排序来修改对象渲染顺序。索引值越小,该对象就越早被渲染。
因此,如果您的场景中后景有一个透明的、连续的对象,并希望前景中的其他透明物体能够正确地渲染,请将后景对象的渲染顺序设置为负值。
顺序无关透明度(OIT)
Verge3D允许使用近似顺序无关透明度技术,该技术不需要按排序顺序渲染几何体,因此无需上述任何考虑即可解决大多数透明度问题。
OIT可以通过Verge3D Settings面板启用。
已知限制:
- OIT仅与WebGL 2兼容,否则无效。
- OIT被反射立方盒光照探头和反射平面光照探头忽略。
- 在高不透明度对象上可能效果不佳。
- 不应与MSAA(多采样抗锯齿)在包含2个或更多不透明对象的场景中一起使用。您可以使用FXAA(快速近似抗锯齿)代替,它与OIT完全兼容。
符合glTF标准的材质的透明度
为了使这些材质具有透明度,请在基色纹理的alpha通道中添加alpha蒙版信息。您也可以用原理性BSDF节点的 Alpha 输入来调整alpha通道。
使用 Blend Mode 下拉菜单来选择支持的透明度模式:Auto、Opaque、Alpha Clip或Alpha Blend。
遇到问题?
欢迎您随时在 论坛上提问!您还可以加入中文用户社区QQ群(171678760),在线寻求帮助。