材质编辑器改进

现在可以导入 NVIDIA MDL 和 MaterialX 材质、在“材质编辑器”中调整显示的参数,以及在全部三种渲染模式(OpenGL、CPU 光线跟踪和 GPU 光线跟踪)下进行渲染。我们还将材质粗糙度控制更改为感知线性行为,范围为 0 - 1,以便更轻松地控制。

视频字幕:在 VRED 2024 中,我们开始对整个用户界面进行重新设计并实现现代化。此外,我们还添加了导入 MaterialX 和 MDL 材质的功能。这为您在处理材质时提供了多得多的选项,它们可以捕获复杂的材质定义,并且它们可以是程序性的,但采用了外部许多应用程序都已使用的开放标准,因此可以在 Autodesk 内外更好地进行交换。

您可能希望下载材质,例如,从 Nvidia 网站下载 MDL 材质,从 AMD 网站下载 MaterialX。然后是直接创建 MaterialX 或 MDL 材质,并加载材质定义。现在提供了所有可编辑参数。这样,在处理材质时可以大幅改进工作流程。

感谢您观看本视频。

材质库示例

单击以下链接可访问以下材质库:

重要信息:

在 VRED 中,尚无法从头开始创建 NVIDIA MDL 或 MaterialX 材质,也没有基于节点的材质编辑器。

我们建议您监视渲染性能,因为这些材质库中的某些材质很庞大,包含非常高级的参数或包含的纹理多达 16 种,因此可能会显着降低渲染性能,尤其是在进行光线跟踪时。

提示:

如果要编写自己的材质文件,由于 MaterialX 和 MDL 都是 ASCII 纯文本文件,因此您应该能够使用外部编辑器来编写。

有关帮助了解和使用 MDL 的其他资源,请参见 NVIDIA MDL - 手册。此手册提供了该语言的背景、理论和实用示例。

OpenGL 和光线跟踪器“预计算的照明”模式下的 MDL 支持

对于 OpenGL 渲染器以及 CPU 和 GPU 光线跟踪器中的“预计算的照明”模式,由于实时约束,MDL 材质被处理为简化的模型。这一简化的模型基于粗糙度/金属度PBR模型,并进行了一些修改。MDL 材质被简化为使用各向异性/各向同性建模的一般金属、镜面反射和漫反射层GGX BRDF。在这些层之上,有一个使用各向同性 GGX BRDF 建模的透明涂层。使用 absorption_coefficientscattering_coefficients 作为 Beer-Lambert 定律的组合系数对镜面反射透射进行建模,而不改变 OpenGL 边界之间的IOR(无折射或内部反射),并充分考虑在光线跟踪器的“预计算的照明”模式下边界之间的 IOR。OpenGL 中的漫反射透射是通过次表面散射的简化漫反射照明近似来近似计算的。透明度作为 Alpha 混合来实现。发射不会照亮场景。

请注意,根据 OpenGL 渲染器和 CPU/GPU 光线跟踪器的“预计算的照明”模式约束,简化 MDL 材质的过程会生成接近原始材质的材质。在此过程中,MDL 的一些特征将被移除或切换为更简单的形状。

不受支持的功能

OpenGL 渲染器和 CPU/GPU 光线跟踪器“预计算”模式下,不支持这些功能:

这些功能仅在 OpenGL 渲染器中不受支持:

部分支持的功能

OpenGL 渲染器和 CPU/GPU 光线跟踪器“预计算”模式下,这些功能部分受支持:

材质粗糙度

我们还将材质粗糙度控制更改为感知线性行为,范围为 0 - 1,以便更轻松地控制。这使 VRED 能够映射其他材质库中的粗糙度值。打开现有场景时,材质外观不会更改;但该值将根据新的 0 - 1 范围进行调整。

将旧粗糙度转换为新粗糙度

如果用户有旧材质需要转换为采用此新粗糙度范围,可以手动或使用 Python 进行此操作。

手动方法

使用计算器计算出新的转换值。例如,如果之前某些材质类型(例如皮革)使用了 VRED 粗糙度值 2.0,则需要计算该值以在 2024 版中使用。

注意:

如果将旧版本中具有特定值的材质导入到 2024 版中,系统会自动完成转换,您将看到新值。

可使用以下公式将旧粗糙度值转换为新粗糙度值,反之亦然。

Python 方法

可以使用 Python 脚本设置材质粗糙度。VRED 2024 要求这些值使用新范围 (0 - 1)。VRED 2023 及更低版本要求这些值使用旧范围 (0 - 40)。

因此,为较低 VRED 版本(2023.4 及更低版本)编写的脚本可能会设置特定的粗糙度值。

例如:

leather = vrMaterialService.createMaterial("leather", vrMaterialTypes.Plastic)
leather.setRoughness(2.0) # legacy roughness value for VRED 2023

在 VRED 2024 版中使用此脚本时,需要转换此值以获得与旧 VRED 版本中相同的视觉结果。为此,可以将上述公式定义为以下两个 Python 函数:

from math import sqrt, pow

def toNewRoughness(oldRoughness):
    return sqrt(sqrt(oldRoughness / 40.0))

def toOldRoughness(newRoughness):
    return pow(newRoughness, 4.0) * 40.0

因此,对于 VRED 2024,这会将旧粗糙度值转换为 2024 版值:

leather = vrMaterialService.createMaterial("leather", vrMaterialTypes.Plastic)
leather.setRoughness(toNewRoughness(2.0)) # convert legacy roughness value to 2024 value