色彩校正

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)中文 (zh)Translate (Translate)

Source中的色彩校正。
有关实现色彩校正的实体,请参阅color_correctioncolor_correction_volumeLeft 4 Dead series fog_volume

色彩校正是指调整图像的色彩平衡以实现预期效果的概念。它主要用于设定情感色调或传达重要信息。

  • 通过向蓝色或灰色倾斜,可以营造寒冷或孤立的感觉(例如,Wikipedia icon 《少数派报告》)。
  • 更亮、更饱和的颜色如红色或黄色会产生相反的效果,增强情感(Wikipedia icon 《英雄》)。
  • 色彩校正还可以帮助复制其他媒介的效果(Wikipedia icon 《罪恶之城》)。

游戏中的色彩校正具有独特的动态效果。它可以反映世界或玩家的状态,或者与特定位置或物体关联。

Note.png注意:在《求生之路》之前的游戏中,玩家可以在图形选项中禁用色彩校正,这可能不是很理想。强制所有玩家启用色彩校正的解决方法可以在[1]找到。

使用色彩校正

Source将色彩校正配置文件存储在“查找表”中,这些表是大小为96KB的二进制文件,扩展名为.raw。通常,使用一套游戏内工具来创建这些文件,并通过color_correction点实体(en),带衰减)和color_correction_volume刷子实体(en))将其添加到地图中。色彩校正非常cheap(en)

要在您的地图中使用色彩校正,创建至少一个color_correctioncolor_correction_volume实体。如果使用color_correction,请禁用衰减。必须靠近实体才能看到校正效果。如果您打算创建自己的色彩校正,请不要为实体指定查找表。在求生之路 求生之路之前的游戏中,您可能需要确保在视频选项 > 高级中启用色彩校正(或设置mat_colorcorrection 1)。

有多种方法可以创建色彩查找表。最初也是最常见的方法是通过游戏内的colorcorrectionui。其他方法涉及使用Photoshop或Paint.NET导入和导出.raw文件。以下列出了这些方法。

使用colorcorrectionui创建色彩校正

Warning.png警告:查找表不存储用于创建它们的滤镜,只存储它们的组合结果。查找滤镜允许您加载一个并在其上创建额外的滤镜,但一旦主窗口关闭,无法直接编辑。
主色彩校正窗口

要使用colorcorrectionui

  1. 如果您正在进行多人游戏,请启用sv_cheats
  2. 在控制台中输入colorcorrectionui
Note.png注意:求生之路 求生之路求生之路2 求生之路2中,必须将sv_lan设置为1,才能加载地图并预览色彩校正。

在出现的窗口中,校正滤镜可以通过以下方式进行管理:

  • 在层窗口底部的按钮中创建和管理。
  • 通过点击其圆形图标启用或禁用。
  • 使用混合滑块调整强度。
  • 使用Alt + 双击复制。

窗口中还有一个层窗口用于管理滤镜,以及一个'查找视图'用于预览它们在一组彩色像素上的效果。

滤镜

选定的HSV
曲线 - 搜索教程
与图像编辑器中的曲线工具完全相同。横轴表示原始图像中的色值;纵轴表示最终图像中的亮度。点击并拖动线条进行操作。黑色位于左下角,白色位于右上角。
Icon-Bug.png错误:无法删除点。  [todo tested in?]
Icon-Bug.png错误:只有当光标位于图表区域内时,释放拖动才会被记录下来。这使得将点放置在边缘附近变得困难。  [todo tested in?]
色阶 - 搜索教程
同样,这个滤镜与图像编辑器中的色阶工具直接对应。两个滑块控制图像中色彩的范围:上面的滑块将范围外的值剪切为纯黑(左)或纯白(右),而下面的滑块将图像的范围压缩以适应它。上滑块的中间指示器权衡图像的范围(即调整伽马)。
Icon-Bug.png错误:如果两个指示器重叠,分开它们几乎不可能。  [todo tested in?]
选定的HSV
这是最复杂的滤镜。图像是当前场景的实时缩略图,当前选定的颜色以红色突出显示。点击可以选择一个颜色,或按下选择按钮直接从场景中选择颜色(之后按Esc)。按住Ctrl可以在这两种情况下选择多个颜色。
容差和模糊度可以调整选择;色相、饱和度和亮度(即HSV)可以应用效果。色彩化会使色相滑块替换而不是调整。
Tip.png提示:下拉菜单中包含许多不同的算法,并非所有都需要点击来选择颜色。
Icon-Bug.png错误:有几种情况,预览缩略图可能会锁死。唯一已知的解决方法是重新启动引擎。  [todo tested in?]
查找
加载一个现有的查找表。
Icon-Bug.png错误:文件夹视图从底层游戏的根目录开始,而不是当前的mod。  [todo tested in?]
平衡 - 搜索教程
另一个与桌面工具相同的工具。它根据场景中的明亮、中等和/或暗区域调整色彩通道的偏移。

使用Photoshop创建色彩校正

Note.png注意:以下教程直接基于Mr Funreal的色彩校正视频教程,该教程是为求生之路2 求生之路2制作的,但应适用于任何Source引擎游戏。
待完善: 包括可以在Photoshop中使用的默认查找表的直接图像。

Photoshop能够导入和导出.raw文件。这意味着您可以导入一个色彩查找表,在Photoshop中进行调整,然后导出用于游戏中。这对于您在使用游戏内工具时遇到问题,或者如果您更喜欢在Photoshop中进行调整时,可能会更为方便。

您可以按照以下步骤在Photoshop中创建新的色彩查找表:

  1. 在游戏中禁用色彩校正,可以通过使用colorcorrectionui或在控制台中输入mat_colorcorrection 0来完成。
  2. 截取一张您想要作为参考的地图截图。
  3. 在Photoshop中打开截图。
  4. 导入一个默认的查找表到Photoshop。在求生之路2 求生之路2中,可以在文件中找到materials/correction/off.raw
  5. 如果Photoshop提示导入选项,使用:宽度32像素,高度1024像素,3个通道,交错,8位,0个头部大小。
  6. 将查找表直接复制到您的截图上。
  7. 对截图进行调整,直到获得所需的效果。确保这些调整的图层位于截图查找表的上方。
  8. 隐藏截图层,将所有层合并为一层,然后将调整后的查找表复制回导入的文件中。
  9. 将查找表导出为一个新的.raw文件,并命名为新名称。

现在,您应该能够在您的color_correctioncolor_correction_volume实体中使用该色彩查找表。您可以通过使用colorcorrectionui或在控制台中输入mat_colorcorrection 1来重新启用色彩校正。

使用Paint.NET创建色彩校正

未应用任何调整的默认色彩查找表。

默认情况下,Paint.NET无法像Photoshop那样导入或导出.raw文件。本教程使用了一个社区插件,该插件特别添加了用于创建色彩校正的能力。要安装它,请访问Paint.NET Source Engine RAW插件并下载最新版本的.dll。然后,将其放置在Program Files\paint.net\FileTypes目录中。

安装完成后,您可以按照以下步骤在Paint.NET中创建新的色彩查找表:

  1. 在游戏中禁用色彩校正,可以通过使用colorcorrectionui或在控制台中输入mat_colorcorrection 0来完成。
  2. 截取一张您想要作为参考的地图截图。
  3. 在Paint.NET中打开截图。
  4. 导入一个默认的查找表到Paint.NET。在求生之路2 求生之路2中,可以在文件中找到materials/correction/off.raw。您还可以下载并使用本节右上角的图像。
  5. 将查找表直接复制到截图的左上角。
  6. 对截图进行调整,直到获得所需的效果。
  7. 将查找表导出为一个新的.raw文件,并命名为新名称。在保存时,确保禁用"允许任何分辨率"选项。

现在,您应该能够在您的color_correctioncolor_correction_volume实体中使用该色彩查找表。您可以通过使用colorcorrectionui或在控制台中输入mat_colorcorrection 1来重新启用色彩校正。

控制台命令

  • colorcorrectionui
  • mat_colcorrection_disableentities 0/1
  • mat_colorcorrection 0/1
  • sv_allow_color_correction 0/1(允许或禁止客户端在该服务器上使用色彩校正)

色彩强度修正

在某些情况下,您创建的.raw文件在游戏中加载时可能会比在编辑器中创建时显得更为强烈。这是由于客户端色彩校正代码的问题,导致权重被应用了两次。以下是一些可能的解决方法:

如果您正在一个现有的游戏中工作,或者无法编写自己的代码,那么您可以简单地将色彩校正.raw文件的强度减半。最简单的方法是在色彩校正工具中保存.raw文件之前,先将每个滤镜的'Blend'值减半。或者,您也可以在Photoshop中进行修正:

  1. 创建一个中性.raw文件(即删除所有.raw文件,打开您的地图,打开色彩校正UI,点击保存,但不创建任何滤镜)
  2. 创建您想要的色彩校正并保存。
  3. 在Photoshop中打开两个.raw文件,将您的.raw文件粘贴到中性文件上,设置色彩校正图层的不透明度为50%,然后将其保存为具有适当文件名的RAW文件(即您的地图将查找的文件名)
Note.png注意:如果Photoshop提示导入选项,请使用:宽度32像素,高度1024像素,3个通道,交错,8位,0个头部大小。

您也可以使用代码修复它。这样更为理想,因为只需要做一次修改,就能修复后续所有的色彩校正,而不需要每次保存时都调整每个.raw文件。但这是一个权衡,修正后的结果并非100%相同,但非常接近。最简单的方法是调整color_correctioncolor_correction_volume实体应用的权重: 在client/c_colorcorrection.cpp的第140行,将

g_pColorCorrectionMgr->SetColorCorrectionWeight( m_CCHandle, m_flCurWeight * ( 1.0 - weight ) );

修改为

g_pColorCorrectionMgr->SetColorCorrectionWeight( m_CCHandle, (m_flCurWeight * ( 1.0 - weight )) * 0.675f );

然后在client/c_colorcorrectionvolume.cpp的第105行,将

g_pColorCorrectionMgr->SetColorCorrectionWeight( m_CCHandle, m_Weight );

修改为

g_pColorCorrectionMgr->SetColorCorrectionWeight( m_CCHandle, m_Weight * 0.675f );

一个更好但更复杂的解决方法是找到并解决CColorCorrectionMgr::SetColorCorrectionWeight()被调用两次且中间没有重置的原因,并设计一个替代方案。如果您想调查此问题,最好的第一步是阅读client/colorcorrectionmgr.cpp第77行的注释。

Note.png注意:如果您已经使用非代码方法减半了现有的.raw文件的强度,请不要忘记回去并将它们的强度加倍!

修复sv_pure服务器上的色彩校正

有时,色彩校正可能无法在sv_pure服务器上正常工作。 将以下代码添加到您的白名单中:

whitelist
{
 
//MATERIALS 

    materials\colorcorrection\correction_file_name_here.raw                from_steam      //指向单个文件
    materials\colorcorrection\*.*                from_steam      //允许在此服务器上使用自定义色彩校正。
     
}
证实:打包在BSP中的RAW文件是否能绕过sv_pure白名单,因为BSP已经是纯净的吗?

RAW文件格式

该文件作为RGB值的查找表。每个条目是一个3字节的RGB值,第一个字节为红色值。该表是三维的32x32x32,使用RGB值作为坐标查找输出的RGB值。每个条目的后续条目表示R字节值增加4(因为256个强度除以32个条目等于4的步长)。在R值为256的条目处,值会回绕到零,并将G字节增加4。同样,绿色值在256时回绕,并将B字节增加4。条目的索引可以通过以下公式计算,其中R、G和B是从0到255的整数值。

//注意使用整数除法,任何小数值会在下一次操作前被截断
int EntryIndex = (R / 4) + ((G / 4) + (B / 4) * 32) * 32

在游戏中使用时,来自32x32x32表的值会被插值到适应256x256x256色彩空间。

参见

外部链接