Zh/Cubemaps: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
m (clean up, replaced: {{ModernWarning| → {{warning| (2))
m (clean up, replaced: {{ModernNote| → {{note| (5), {{ModernWorkaround| → {{workaround| (3))
Line 80: Line 80:
=== 半条命: 起源 ===
=== 半条命: 起源 ===
{{ModernBug|在{{hls}}'''Half-Life: Source''' 中构建立方体cubemap目前不可用,因为它们的纹理尽管已生成,但之后不会嵌入到地图文件中。
{{ModernBug|在{{hls}}'''Half-Life: Source''' 中构建立方体cubemap目前不可用,因为它们的纹理尽管已生成,但之后不会嵌入到地图文件中。
{{ModernWorkaround|将地图文件移动到同一引擎分支的游戏的“map”文件夹中(例如 {{hl2}}'''Half-Life 2'''),在该游戏中构建其cubemap,然后将文件移回 '''Half-Life: Source''' 的文件夹。<nowiki>'</nowiki>s folder.}}}}
{{workaround|将地图文件移动到同一引擎分支的游戏的“map”文件夹中(例如 {{hl2}}'''Half-Life 2'''),在该游戏中构建其cubemap,然后将文件移回 '''Half-Life: Source''' 的文件夹。<nowiki>'</nowiki>s folder.}}}}


=== 传送门 2 ===
=== 传送门 2 ===
{{ModernBug|在 {{portal2}}'''Portal 2''' 构建cubemap,如果 BSP 不在编号最高的 DLC 文件夹中(默认情况下为 dlc2),'''传送门 2''' 将失败
{{ModernBug|在 {{portal2}}'''Portal 2''' 构建cubemap,如果 BSP 不在编号最高的 DLC 文件夹中(默认情况下为 dlc2),'''传送门 2''' 将失败
{{ModernWorkaround|可以先手动将地图移动到那里, 编辑 [[Hammer_Build_Programs|Build Programs]] 选项卡中的 "'''place compiled maps in this directory before running the game'''" 选项以自动执行此操作,或者创建一个 {{path|portal2_dlc3}}文件夹,再创建一个 {{path|maps}} 文件夹,并将所有自定义地图放入其中。 游戏会自动识别dlc3文件夹,因此无需编辑 '''gameinfo''' }}}
{{workaround|可以先手动将地图移动到那里, 编辑 [[Hammer_Build_Programs|Build Programs]] 选项卡中的 "'''place compiled maps in this directory before running the game'''" 选项以自动执行此操作,或者创建一个 {{path|portal2_dlc3}}文件夹,再创建一个 {{path|maps}} 文件夹,并将所有自定义地图放入其中。 游戏会自动识别dlc3文件夹,因此无需编辑 '''gameinfo''' }}}


=== Source Filmmaker ===
=== Source Filmmaker ===
[[Image:Cubemap_bug_sfm.jpg|thumb|right|300px|Improper rendering of an HDR cubemap's face in Source Filmmaker.]]
[[Image:Cubemap_bug_sfm.jpg|thumb|right|300px|Improper rendering of an HDR cubemap's face in Source Filmmaker.]]
{{ModernBug|内置低于 128x128 的 '''HDR''' cubemap在 {{tf2}}'''Team Fortress 2''' 和其他一些游戏通常会在反射上显示图形伪影,因为每个立方体贴图的最后一面没有正确渲染在 {{sfm}}'''Source Filmmaker'''。 虽然在'''Source Filmmaker''' 其中重建立方体贴图通常可以解决问题,但目前无法这样做, 因为它会生成空白纹理。
{{ModernBug|内置低于 128x128 的 '''HDR''' cubemap在 {{tf2}}'''Team Fortress 2''' 和其他一些游戏通常会在反射上显示图形伪影,因为每个立方体贴图的最后一面没有正确渲染在 {{sfm}}'''Source Filmmaker'''。 虽然在'''Source Filmmaker''' 其中重建立方体贴图通常可以解决问题,但目前无法这样做, 因为它会生成空白纹理。
{{ModernWorkaround|如果无法重新编译受影响地图的特殊版本, '''env_cubemaps''' 现在的大小为 128x128,请将地图文件移动到 {{as}}'''Alien Swarm'''的<nowiki>'</nowiki>s "maps" 文件夹中, 在该游戏中构建其cubemap,然后将文件移回 '''Source Filmmaker'''<nowiki></nowiki>的文件夹中。}}}}
{{workaround|如果无法重新编译受影响地图的特殊版本, '''env_cubemaps''' 现在的大小为 128x128,请将地图文件移动到 {{as}}'''Alien Swarm'''的<nowiki>'</nowiki>s "maps" 文件夹中, 在该游戏中构建其cubemap,然后将文件移回 '''Source Filmmaker'''<nowiki></nowiki>的文件夹中。}}}}
{{ModernNote|'''Alien Swarm'''<nowiki></nowiki>的"gameinfo.txt" 文件在此过程需要编辑,以便游戏可以访问其他游戏地图使用的资产,而不是构建缺少纹理或模型的cubemap。文件的 "SearchPaths" 部分应如下所示:}}
{{note|'''Alien Swarm'''<nowiki></nowiki>的"gameinfo.txt" 文件在此过程需要编辑,以便游戏可以访问其他游戏地图使用的资产,而不是构建缺少纹理或模型的cubemap。文件的 "SearchPaths" 部分应如下所示:}}
  "SearchPaths"
  "SearchPaths"
  {
  {
Line 101: Line 101:
  '''"Game" "..\SourceFilmmaker\game\hl2"'''
  '''"Game" "..\SourceFilmmaker\game\hl2"'''
  }
  }
{{ModernNote|以{{tf2}}'''Team Fortress 2''' 配置为例; 请考虑将游戏子文件夹 (仅限 '''Source Filmmaker''' 路径中的子文件夹) 替换为所需的子文件夹。}}
{{note|以{{tf2}}'''Team Fortress 2''' 配置为例; 请考虑将游戏子文件夹 (仅限 '''Source Filmmaker''' 路径中的子文件夹) 替换为所需的子文件夹。}}


== 删除 cubemaps ==
== 删除 cubemaps ==
Line 114: Line 114:
如果地图必须通过微小的修改并重新编译,并且其构建的cubemaps因此消失,则事先提取它们将使得在现实变得这样之前无需再次经历整个cubemaps构建过程。 要使用 '''BSPZIP''' 提取其cubemaps,请创建一个文件夹,该文件夹将包含提取的cubemaps在“maps”内,然后执行以下命令:
如果地图必须通过微小的修改并重新编译,并且其构建的cubemaps因此消失,则事先提取它们将使得在现实变得这样之前无需再次经历整个cubemaps构建过程。 要使用 '''BSPZIP''' 提取其cubemaps,请创建一个文件夹,该文件夹将包含提取的cubemaps在“maps”内,然后执行以下命令:
  ..\..\bin\bspzip -extractcubemaps 地图名称.bsp "foldername"
  ..\..\bin\bspzip -extractcubemaps 地图名称.bsp "foldername"
{{ModernNote|将“地图名称”替换为地图的实际名称,将 "''foldername''" 替换为要将cubemaps提取到的文件夹的实际名称。}}
{{note|将“地图名称”替换为地图的实际名称,将 "''foldername''" 替换为要将cubemaps提取到的文件夹的实际名称。}}




Line 129: Line 129:
  materials/maps/地图名称/cubemapdefault.vtf
  materials/maps/地图名称/cubemapdefault.vtf
  '''foldername\materials\maps\地图名称\cubemapdefault.vtf'''
  '''foldername\materials\maps\地图名称\cubemapdefault.vtf'''
{{ModernNote|将 "''地图名称''" 替换为映射的实际名称,将cubemaps的文件名替换为正确的文件名,将 "''foldername''" 替换为包含提取的cubemaps的文件夹的实际名称。}}
{{note|将 "''地图名称''" 替换为映射的实际名称,将cubemaps的文件名替换为正确的文件名,将 "''foldername''" 替换为包含提取的cubemaps的文件夹的实际名称。}}
文件需要两行专用行(路径):第一行表示它将在映射文件中使用的路径,而第二行是要嵌入到映射文件中的文件的实际位置。示例使用了相对位置路径,但它们也可以是绝对路径。文本文件准备就绪后,执行以下命令:
文件需要两行专用行(路径):第一行表示它将在映射文件中使用的路径,而第二行是要嵌入到映射文件中的文件的实际位置。示例使用了相对位置路径,但它们也可以是绝对路径。文本文件准备就绪后,执行以下命令:
  ..\..\bin\bspzip -addlist 地图名称.bsp textfile.txt 新地图名称.bsp
  ..\..\bin\bspzip -addlist 地图名称.bsp textfile.txt 新地图名称.bsp
{{ModernNote|将 "''mapname''" 替换为地图的实际名称,将 "''textfile''" 替换为文本文件的实际名称,将 "''新地图名称''" 替换为地图的实际名称或新名称,以免覆盖原始文件(而是创建一个单独的文件)。}}
{{note|将 "''mapname''" 替换为地图的实际名称,将 "''textfile''" 替换为文本文件的实际名称,将 "''新地图名称''" 替换为地图的实际名称或新名称,以免覆盖原始文件(而是创建一个单独的文件)。}}


== 重命名地图 ==
== 重命名地图 ==

Revision as of 23:42, 3 January 2024

English (en)Español (es)Français (fr)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)
Env cubemap.png
模型上的镜面反射
(夸张的使用r_showenvcubemap)

cubemap是表示区域中的三维呈现的纹理。起源使用 env_cubemap 实体作为采样点来生成这些纹理,然后将其自动嵌入到 地图文件中。构建Cubemaps之后,将反应在使用$envmap参数(以env_cubemap作为值)的表面上。


构建cubemap

待完善: cvar文档。似乎在启用 HDR 时禁用了泛光(bloom)?SDR 模式下无明显现象。生成cubemap后它将重置为0

构建cubemaps是生成其纹理并将其用作反射的过程。由于技术原因,此过程不是自动的,而是需要开发者来执行此操作;在此之前,现有的 env_cubemaps 将保持未启用的状态,并且由于不存在cubemap,地图将根据游戏将“缺失”纹理显示为反射。

Warning.png警告:要构建cubemaps,游戏的屏幕分辨率需要至少比现有 env_cubemap 的最高尺寸高4倍,否则尝试构建cubemaps将失败,甚至导致游戏崩溃。例如:如果最高 env_cubemap 的大小为 128x128,则需要 512x512 的分辨率。(128 × 4 = 512 -> 720x576 或更高)

Template:ModernNote Template:ModernNote Template:ModernTip Template:ModernTip Template:ModernWarning Template:ModernWarning

在搭建前

Template:ModernTip

LDR

Template:ModernNote 在以 LDR (低动态范围)模式编译的地图上构建cubemap将仅为该模式生成纹理,而不管游戏的 HDR (高动态范围)视频设置如何。要构建立方体贴图,请将以下命令提交到游戏的控制台中:

命令 描述
mat_specular 0 禁用反射。正确构建cubemap所需要
map cs_mymap 加载地图;将 "“cs_mymap”" 替换为地图的实际名称
sv_cheats 1 启用作弊命令。生成cubemap时需要
buildcubemaps 开始构建cubemap。(可选)指定迭代次数(默认值为 1)
disconnect 退出地图,返回主菜单
mat_specular 1 启用反射
quit (可选)关闭游戏。需要重新启动它才能显示新建的cubemap


HDR

在支持 HDR 在支持 HDR 的地图上构建cubemap需要执行两次 - 每种模式(HDRLDR)一次.。与 LDR 地图的情况相反,游戏的高动态范围视频设置必须设置为“完整”才能构建 HDR 的cubemap,必须设置为“无”才能构建 LDR cubemap。要构建cubemap,请将以下命令提交到游戏的控制台中:

命令 描述
mat_specular 0 禁用反射。正确构建cubemap需要
map cs_mymap 加载地图;将 "“cs_mymap”" 替换为地图的实际名称
sv_cheats 1 启用作弊命令。生成cubemap时需要
buildcubemaps 开始构建cubemap。(可选)指定迭代次数(默认值为 1)
disconnect 退出地图,返回主菜单
sv_cheats 0 禁用作弊命令。防止命令 mat_reloadallmaterials 不必要地自动执行并短暂冻结游戏
mat_hdr_level 0 切换到 LDR 模式 (从 HDR); mat_hdr_level 2 如果首先构建 LDR 则改为提交
map cs_mymap 再次加载地图以构建新模式的cubemap
sv_cheats 1
buildcubemaps 开始为新模式构建cubemap。(可选)指定迭代次数(默认值为 1)
disconnect
mat_specular 1 启用反射
mat_hdr_level 0/1/2 如有必要,切换回提交前的模式 mat_hdr_level 0/2
quit (可选)关闭游戏。需要重新启动它才能显示新建的cubemap


半条命: 起源

Template:ModernBug

传送门 2

{{ModernBug|在 传送门2Portal 2 构建cubemap,如果 BSP 不在编号最高的 DLC 文件夹中(默认情况下为 dlc2),传送门 2 将失败

PlacementTip.png解决方案:可以先手动将地图移动到那里, 编辑 Build Programs 选项卡中的 "place compiled maps in this directory before running the game" 选项以自动执行此操作,或者创建一个 🖿portal2_dlc3文件夹,再创建一个 🖿maps 文件夹,并将所有自定义地图放入其中。 游戏会自动识别dlc3文件夹,因此无需编辑 gameinfo

}

Source Filmmaker

Improper rendering of an HDR cubemap's face in Source Filmmaker.

Template:ModernBug

Note.png注意:Alien Swarm的"gameinfo.txt" 文件在此过程需要编辑,以便游戏可以访问其他游戏地图使用的资产,而不是构建缺少纹理或模型的cubemap。文件的 "SearchPaths" 部分应如下所示:
"SearchPaths"
{
	"Game"	"|gameinfo_path|."
	"Game"	"swarm_base"
	"Game"	"platform"
	"Game" "..\SourceFilmmaker\game\usermod"
	"Game" "..\SourceFilmmaker\game\tf_movies"
	"Game" "..\SourceFilmmaker\game\tf"
	"Game" "..\SourceFilmmaker\game\hl2"
}
Note.png注意:军团要塞2Team Fortress 2 配置为例; 请考虑将游戏子文件夹 (仅限 Source Filmmaker 路径中的子文件夹) 替换为所需的子文件夹。

删除 cubemaps

有几个工具可以删除不必要或过时的cubemap;其中,BSPZIP 不仅是官方的,而且是此过程最简单,最安全的选择,而且不会损坏地图。要删除cubemap,请在“maps”文件夹中执行以下命令:

..\..\bin\bspzip -deletecubemaps 地图名称.bsp
Note.png注意:将 "地图名称" 替换为地图的实际名称。
Warning.png警告:删除cubemap实际上会删除当时嵌入到贴图中的所有纹理 (".vtf") 文件,因此建议在删除立方体贴图之前不要嵌入自定义纹理。

Template:ModernBug

证实:删除 🖿cubemapdefault.vtf🖿cubemapdefault.hdr.vtf 可能会搞砸构建其他cubemap....

提取 cubemaps

如果地图必须通过微小的修改并重新编译,并且其构建的cubemaps因此消失,则事先提取它们将使得在现实变得这样之前无需再次经历整个cubemaps构建过程。 要使用 BSPZIP 提取其cubemaps,请创建一个文件夹,该文件夹将包含提取的cubemaps在“maps”内,然后执行以下命令:

..\..\bin\bspzip -extractcubemaps 地图名称.bsp "foldername"
Note.png注意:将“地图名称”替换为地图的实际名称,将 "foldername" 替换为要将cubemaps提取到的文件夹的实际名称。


嵌入 cubemaps

要使地图使用提取的立方体图,请创建一个将由 BSPZIP 使用的文本文件 - 该文件应在“maps”文件夹中创建,并将包含要嵌入到地图文件中的文件的路径。文件的内容应如下所示:

materials/maps/地图名称/c-128_384_64.hdr.vtf
foldername\materials\maps\地图名称\c-128_384_64.hdr.vtf
materials/maps/地图名称/c-128_384_64.vtf
foldername\materials\maps\地图名称\c-128_384_64.vtf
materials/maps/地图名称/c448_-256_64.hdr.vtf
foldername\materials\maps\地图名称\c448_-256_64.hdr.vtf
materials/maps/地图名称/c448_-256_64.vtf
foldername\materials\maps\地图名称\c448_-256_64.vtf
materials/maps/地图名称/cubemapdefault.vtf
foldername\materials\maps\地图名称\cubemapdefault.vtf
Note.png注意:将 "地图名称" 替换为映射的实际名称,将cubemaps的文件名替换为正确的文件名,将 "foldername" 替换为包含提取的cubemaps的文件夹的实际名称。

文件需要两行专用行(路径):第一行表示它将在映射文件中使用的路径,而第二行是要嵌入到映射文件中的文件的实际位置。示例使用了相对位置路径,但它们也可以是绝对路径。文本文件准备就绪后,执行以下命令:

..\..\bin\bspzip -addlist 地图名称.bsp textfile.txt 新地图名称.bsp
Note.png注意:将 "mapname" 替换为地图的实际名称,将 "textfile" 替换为文本文件的实际名称,将 "新地图名称" 替换为地图的实际名称或新名称,以免覆盖原始文件(而是创建一个单独的文件)。

重命名地图

构建的cubemaps将保存到使用其名称的地图文件中;重命名它将导致cubemaps不与地图一起加载,因此它将表现得好像没有一样。要解决此问题,请删除然后重建cubemaps,或者提取然后重新嵌入它们(其文件夹的名称与地图的名称匹配)。

参见