Houdini 中的 Redshift - 渲染中的颜色看起来不正确/出现 OCIO 色彩空间不可用警告时的解决方案

Netinho Da Costa
Netinho Da Costa
  • 更新

 

在本篇文章中,我们将研究在 Houdini 中使用 Redshift 进行渲染时,如果出现 “OCIO 色彩空间不可用 ”的警告,会发生什么情况。首先(第 1 部分),我们将简要介绍基于 Redshift 默认设置的正确色彩空间设置。之后(第 2 部分),我们将强制渲染显示 OCIO 色彩空间问题,并(第 3 部分)解释为什么会出现这种情况以及相关解决方案。

 

第 1 部分 - 根据 redshift 预设进行正确的设置
第 2 部分 - OCIO 警告、错误和不匹配问题
第 3 部分 - 如何修复与 OCIO 相关的问题

 

第 1 部分 - 根据 Redshift 的预设来正确设置您的渲染设置

 

1.1 - 在 Houdini 中分配正确的色彩空间

在 Houdini 中使用 Redshift 进行渲染时, 首先要仔细检查 Houdini 的默认色彩空间。Redshift 默认使用 ACEScg。

您可以打开 Houdini 中的 OCIO 设置面板来确认 Houdini 当前使用的色彩空间。您可以在 “编辑”-->“OCIO 设置” 中查看。

 

ocio_settings.png

 

如下截图所示,在 Houdini 中,默认设置通常为 “线性 Rec.709 (sRGB) / Linear Rec.709 (sRGB)” 渲染工作空间以及 “非色调映射 (Un-tone-mapped)” 视图变换。

在 OCIO 设置面板中,您还可以在底部验证是否使用了 Houdini 的内置默认 .ocio 配置文件。在 Houdini 20.5 中,默认 OpenColorIO (OCIO) 配置文件位于 Houdini 安装目录中。具体来说,您可以在以下位置找到 .ocio 文件:

 

C:\Program Files\Side Effects Software\Houdini 20.5.x\packages\ocio\

 

在以上路径中,20.5.x 代表您安装的 Houdini 20.5 的具体版本号。在该路径下,您可以找到 OCIO 配置文件,该文件通常名为 houdini-config-v2.1.0_aces-v1.3_ocio-v2.3.ocio

 

houdini_default_ocio.png

 

为了使用 Redshift 的默认渲染设置(默认为 ACEScg),您还需要匹配此处的设置。在这种情况下,您可以将 “渲染工作空间 ”设置为 “ACEScg”,将 “视图变换 ”设置为 “ACES 1.0 - SDR 视频”,如下图所示。

 

houdini_matched_ocio_to_redshift.png



 

1.2 - 验证当前 Houdini 构建中使用的 .ocio 配置文件。

 

比方说,您有一个自定义 .ocio 文件集。例如,您希望强制 Houdini 使用 Redshifts 自带的 .ocio 文件,或者目前在生产中使用的另一个自定义 .ocio 配置文件。

您在 Houdini 中设置了以下环境变量:
OCIO = “C:\ProgramData\redshift\Data\OCIO\config.ocio” 它将指向 Redshifts 内置的 .ocio。

如果您现在打开 Houdini,就能验证您的 Houdini 现在使用的是 .ocio 配置文件。现在,它也将默认为 ACEScg,视图变换设置为 Un-tone-mapped。

 

forced_RS_ocio.png

 

 

1.3 - Redshift ROP 节点内的正确渲染设置

在 Redshift ROP 中,您还可以根据需要设置/更改颜色设置。

如果将 Redshift ROP 渲染节点模式设置为高级,您就会看到额外的选项卡。您会其中看到名为 “Globals ”的选项卡。在 “Globals ”选项卡中,您会看到 “渲染色彩空间” 的部分。在 Redshift 中默认为 ACEScg。(注:该面板还将告诉您当前场景使用的 .ocio 配置文件)

 

ROP_color_settings.png

 

1.4 - 着色器中的色彩空间设置

您使用的纹理也有自己的色彩空间设置。

一般来说,您要参考以下规则。


1. 色彩纹理(反照/漫反射、镜面、发射)
将色彩空间设为:sRGB - Texture

这些纹理要在显示器上正确, 因此通常以 sRGB 编写。
Redshift 会自动将它们从 sRGB 转换为 ACEScg 以进行渲染。

2. Utility 纹理(粗糙度、金属、正常、位移等)
将色彩空间设置为 Raw/Linear
这些纹理是数据贴图,而不是色彩贴图。它们不该应用任何伽玛校正(sRGB 会应用伽玛校正)。使用 “Raw/Linear” 色彩空间可确保这些纹理原封不动地通过。

3. HDR/EXR 环境地图
将色彩空间设置为 ACEScg(或地图采用的任何色彩空间)
HDR 和 EXR 环境贴图通常已采用线性色彩空间。如果地图是以 ACEScg 制作的,请确保在下拉菜单中选择 ACEScg,以避免双重转换。

 

texture_color_space_setting.png

 

1.5 - Houdini 相机中的色彩设置

除了您使用的 ROP 和纹理外,在 Houdini 中您还需要确保相机设置是否正确。

 

camera_default.png

 

如果这些下拉列表显示为空,请尝试重新打开场景文件。如果失败,可以考虑点击 “Redshift 相机设置 ”来添加这些参数。您可以在 Redshift 图标中找到名为 “CamParms ”的按钮。

 

cam_parms.png

 

参照上述所有设置,您就应该可以在 Redshift 渲染窗口以及保存在您的硬盘上看到显示正确颜色的渲染结果。

 

correct.png

 

 

 

第 2 部分 - OCIO 警告、错误和错配

2.1 - 添加自定义 .ocio 配置文件

我们需要尝试强制执行一个非常常见的 ocio 错误。
我们将为 Houdini 分配一个 ocio 配置文件,该文件与我们之前保存场景的方式不相匹配。

首先,我们会为 Houdini 分配一个较旧的 ocio 配置文件,并将其添加为环境变量。

 

forcing_incorrect_ocio.png

 

如果我们现在打开 Houdini,就可以验证我的场景文件中确实使用了这个 .ocio。
您还可以看到,有了这个特定的 .ocio 配置文件,默认的渲染工作空间现在是 ACES - ACEScg,视图变换是 sRGB D60 sim。

 

wrong_ocio_verified.png

如果我们现在对场景进行渲染,很快就会发现颜色可能看起来不正确。同时,您还可以在 Redshift 渲染视图的底部看到警告文。

problem_when_rendering.png

 

2.1 - 了解错配及 ocio 警告

 

如果点击底部的栏,就可以打开 Redshift 反馈显示。在那里,你可以转到菜单,点击File -> Open Log

 

open_log_file.png

 

在日志文件中,您可以看到多个与 ocio 相关的黄色警告↓

error_log.png

 


我们先来查看其中的一个警告,再来调查造成这一警告的实际原因

warninng.PNG

 

redshift 无法找到所需的 OCIO 设置。在本例中,它不在显示设置中,但也不在视图设置中。因此,它恢复了当前 .ocio 文件中的默认设置。这就是渲染不会崩溃的原因,也是这只是一个警告而非错误的原因。然而,这样做的结果是,我们目前无法在渲染中看到正确的颜色。无论当前 .ocio 文件中的默认色彩空间是什么,都不是我们创建场景和保存文件时使用的色彩空间。

具体到显示屏,redshift 希望在 .ocio 配置文件中找到 “sRGB - 显示屏”。但在我们现在使用的当前(自定义).ocio 配置文件中,这个名称根本不存在。

如果我们现在查看 Redshift ROP、摄像机以及纹理节点。您就可以看到,这些节点都被设置为我们最初创建场景时没有使用的配置。

我们已经看到,默认的渲染工作空间现在是 ACES - ACEScg,视图变换是 sRGB D60 sim。这个场景中的纹理着色器现在指向的是自动色彩空间。

 

shader_auto.png

 

相机现在显示这些不正确的显示设置:

camera_wrong.png

Redshift ROP 现在也显示了这些设置。现在设置为 “ACES - ACEScg”,而不是 “ACEScg”。
ROP_wrong.png

 

所有这些设置都与我们第一次创建和保存场景文件时的设置不一致。
到底是什么地方出了问题?以及为什么会出现这些警告和颜色不匹配的情况?

 

当您打开 .ocio 配置文件时,其中会包含许多命名的色彩空间定义。以我们的例子为例,在原始场景文件中,Redshift ROP 特别指向一个名为 ACEScg 的色彩空间。而在新设置的 .ocio 配置文件中,这个名称并不存在。因此它现在默认为其默认值,在本例中就是 “ACES - ACEScg”。这些名称听起来很像,但并不相同。其名称必须 100% 匹配。

 

我们来更进一步的调查,通过实际打开两个 .ocio 配置文件来验证一下

name_mismatch.png

 

您可以看到两个文件中都有哪些名称。左边是自定义配置文件,也就是本例中使用的旧版 aces_1.0.2 配置文件。右边是默认内置 Redshift 配置文件。

这就是导致色彩生成失败和出现警告的原因。基本上,在这种情况下,渲染器在渲染时寻找的色彩空间名称在当前使用的 .ocio 配置文件中根本不存在。在当前使用的配置文件中,ACEScg 这一确切名称并不存在。

 

 

2.2 无法应用 POST FX, LUTS 等效果

默认情况下不会应用 LUT 等后期特效调整。在 Redshift ROP 的 Output --> Post Effects(输出-->后期特效)选项卡中的复选框显示,有些复选框默认是未被选中的。

 

其中几个复选框可以让渲染考虑到色彩管理、LUT(查找表)和其他色彩调整控件的使用。不过,如果你在 redshift POST 设置中更改了这些设置,那么选中这些复选框也会在渲染中显示出来。

 

例如,如果您使用了自定义 LUT,并且在 Houdini 中渲染到 MPLAY 时没有看到 LUT 的应用,那么请务必选中 Mplay Color/LUT/Controls 复选框。

 

POST_FX.png

 

光度曝光会被默认选中。这些复选框会考虑到您在后期特效或相机中对摄影曝光所做的更改。这些设置是相互关联的。更改其中一项,也会自动更改另外一项。

 

camera_optical.png

 

 

 

Part 3 - 如果解决 ocio 相关问题?

3.1 - OCIO 警告


根据上面的例子,我们可以清楚地了解到,要防止 ocio 出错,只需确保当前 ocio 配置文件中包含的色彩配置文件名称与首次创建和保存场景时使用的名称相同。

 

如有您不确定,请打开 Redshift 日志文件或 Redshift 反馈显示,仔细阅读警告信息。它将告诉你,根据当前使用的 .ocio 配置文件,哪些设置是预期的,哪些是找不到的 (a),以及哪些设置已更改/调整为默认设置 (b)。

 

 

3.2a - 验证自动化纹理命名规范

.在渲染 ROP 中,高级用户有时会启用 “使用 OCIO 文件规则 ”复选框。在自动化是生产的重要组成部分的情况下,有时会使用此功能。默认情况下该功能未被选中。

其作用为: 该选项可让 Houdini 使用 OCIO 配置文件中定义的文件规则。OCIO 文件规则是一种根据文件名称、扩展名或其他元数据自动检测并为文件(如纹理)分配色彩空间的方法。


选中此选项后,Houdini 将参考 OCIO 配置中的文件规则部分,以确定为导入的纹理或其他输入文件指定哪个色彩空间。例如:

- 名为 texture_diffuse_sRGB.png 的文件可能会被自动指定为 sRGB 色彩空间
- 名为 texture_roughness.exr 的文件可能会被分配一个线性色彩空间,如 Linear

它能自动为纹理和输入分配正确的色彩空间,减少人为出错的机会。它能确保工作流程的一致性,特别是对于拥有大量资产的大型项目。

如果没有确认的话会发生怎样的情况:

您需要手动为纹理和文件分配色彩空间。Houdini 不会尝试解释文件名或扩展名, 这是其默认设置。

 

将此功能用于自动化目的时,请务必验证纹理命名规范

启用 “使用 OCIO 文件规则 ”后,使用一致的纹理命名规范(如 _sRGB、_Linear)有助于在 Redshift 中自动分配色彩空间。
不匹配的名称或命名不当的纹理可能会导致不正确的自动分配。

如果您的项目或公司遵守非常严格的纹理命名规范(如 diffuse_sRGB、roughness_Linear),该选项在某些情况下可以通过自动分配色彩空间来简化工作流程。

 

3.2b 将输入颜色转换为 OCIO 渲染空间


同样,默认情况下也不会选中 “将输入颜色转换为 OCIO 渲染空间”。这是一种特别设计。这样 Houdini 就会认为输入颜色已经在渲染色彩空间中,而不会应用转换。如果纹理准备不当,则可能会导致不正确的结果。

 

其作用为:

该选项可确保将所有输入文件(纹理、颜色等)从其指定的色彩空间转换为 OCIO 渲染空间(例如 ACEScg)。

选中该选项后,Houdini 将进行必要的转换,使所有输入文件与渲染色彩空间保持一致。例如:

sRGB 纹理将转换为 ACEScg。
线性纹理(如位移贴图)不会被转换,因为它们已经在线性空间中。

默认情况下,我们不希望 Redshift 或 Houdini 默认进行此类更改。
这些功能通常会在自动化发挥重要作用的情况下使用。

 

3.3 - Post Effects 以及 LUTs:

为什么我们默认禁用色彩/LUT/控制?
请注意,在渲染中直接应用后期特效或 LUT(例如启用色彩/LUT/控制)时,会将这些效果烘焙到输出图像中,可能会在后期制作中造成问题。大多数工作室更倾向于禁用此功能,并在后期制作中执行此类调整。

同样,建议禁用 HDR 输出的后期特效(如 Bloom/Glare、LUT),因为这些特效应保持原始状态以便合成。对 HDR 文件应用后期特效可能会使它们与下游工作流程不兼容。

 

3.4 - 全局 ocio 概况与范围

您还可以通过在机器中添加全局 .ocio 环境变量来设置该环境变量。如果以这种方式设置 OCIO 环境变量(整个机器的全局变量),它将覆盖 Houdini 的默认 OCIO 文件。

如果无法加载自定义 .ocio 配置文件,您可以考虑通过 Houdini 软件包(.json 文件)添加,而不是通过 Houdini .env 文件添加。

 

3.5 - 视窗和 Mplay 不匹配:

如果您遇到视窗和或 Mplay 不匹配的情况(与 Redshift 渲染视图中看到的情况相比),请记住,Houdini 的视窗和 Mplay 自身的色彩管理以及 Redshift 的 ROP 设置之间的不匹配会导致预览时看到的效果与最终渲染效果不一致。

我们建议在处理场景时使用 Redshift RenderView 进行预览,然后再进行渲染并保存到您的本地硬盘。

 

例如,Mplay 有自己的 ocio 设置。它的默认设置是 sRGB - 显示,并且没有色调映射 (un-tone-mapped)。


mplay_default.png

不过,在使用 Redshift 进行渲染时,最好将显示屏设为 sRGB - Display,并将非色调映射 (un-tone-mapped) 设为 ACES 1.0 - SDR Video。

 

untonemapped Mplay.gif

 

 

 

这篇文章有帮助吗?

/

评论

0 条评论

登录写评论。