据我所知,LUT 旨在应用于颜色通道 (RGB),因为我们正在进行颜色空间转换。但是 Nuke 的查看器 LUT 设置也会影响 Alpha 通道。我知道查看器 LUT 不会改变原始像素值,而只会根据 LUT 设置显示它们,但是我们不应该在处理 alpha 通道时关闭查看器 LUT 吗?例如拉钥匙或做 roto ?
我们不应该在线性色彩空间中查看 alpha 吗?我在这里错过了什么吗?
据我所知,LUT 旨在应用于颜色通道 (RGB),因为我们正在进行颜色空间转换。但是 Nuke 的查看器 LUT 设置也会影响 Alpha 通道。我知道查看器 LUT 不会改变原始像素值,而只会根据 LUT 设置显示它们,但是我们不应该在处理 alpha 通道时关闭查看器 LUT 吗?例如拉钥匙或做 roto ?
我们不应该在线性色彩空间中查看 alpha 吗?我在这里错过了什么吗?
没错,NUKE Viewer 的 LookUp Table 根本不会改变 alpha,但会影响它。您需要使用查看器的f/8
(乘数)滑块和y
(伽玛)滑块来更改您在键入时的 Alpha 外观。NUKE 的工作色彩空间是LINEAR,但默认LUT 设置为monitor
,8-bit
并且16-bit
文件经过 superRGB校正:
阅读有关 NUKE 颜色空间和颜色转换的文章:这里。
为了补偿 sRGB 伽玛以获得线性工作色彩空间,NUKE 使用镜像伽玛:
为方便起见,您可以随时更改任何默认 LUT 设置或关闭 Alpha 通道(或 rgb 或您想要的任何通道)。
执行此代码,然后使用ctrl-i快捷方式(在 Mac 上为 -)cmd创建新的查看器节点:i
import nuke
# to change Viewers' properties globally
nuke.knobDefault('Viewer.channels', 'rgb')
nuke.knobDefault('Viewer.viewerProcess', 'rec709') # use rec709, for instance
你会得到这个:
或者简单地执行 Viewer1 的代码,更改viewerProcess
为None
(线性颜色空间):
nuke.toNode('Viewer1').knob('channels').setValue('alpha')
nuke.toNode('Viewer1').knob('viewerProcess').setValue('None')
# then add these 3 lines to menu.py file (they'll work after restart)
nuke.knobDefault("Root.monitorLut", "linear") # monitor LUT
nuke.knobDefault("Root.int8Lut", "linear") # 8-bit files LUT
nuke.knobDefault("Root.int16Lut", "linear") # 16-bit files LUT
此外,要对当前 LUT 进行物理转换,您可以使用工具栏菜单中的OpenColorIO LUT
和3D LUT
节点。Color
还有关于 Pixel Analyzer 面板的几句话:
Current
、Min
、和Pixel Analyzer 面板Max
中的操作适用于下拉菜单中的任何通道。如果您只需要 alpha 值或只需要值,只需从菜单中选择它。Average
Median
rgb
但。如果您将使用 rgba 模式,那就没有错。核实。将 Keyer 节点应用到图像,您会看到 RGB 值在有或没有 alpha 的情况下是相同的(但前提是 rgba 没有预乘)。
很遗憾,Pixel Analyzer 面板仍然无法通过 Python 访问 API。