色彩校正

From Valve Developer Community
< Zh
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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色彩空间。

参见

外部链接