This article relates to the game "Half-Life: Alyx". Click here for more information.
This article relates to the workshop tools for "Half-Life: Alyx". Click here for more information.
This article's documentation is for Source 2. Click here for more information.

修复灯光与异常崩溃

From Valve Developer Community
Jump to: navigation, search
English (en)中文 (zh)
... Icon-Important.png

Warning.pngWarning:请注意:在Half-Life: Alyx 1.4.1版本更新后,Valve为HLA的SFM新增了添加游戏灯光的选项,现在您可以直接通过点击Add按钮(SFM icon AddButton.png), 选择您想要的游戏灯光种类进行快速添加。请再注意一点:通过SFM加载的模型仍然不会与地图中自带的游戏灯光发生交互,若想使游戏世界的灯光与SFM加载的模型发生交互,那么您仍需要进行如下的灯光录制操作!

当您开始使用Half-Life: Alyx的SFM时,您可能会立即注意到灯光出现了一些问题。 不过不要害怕,使用一个简单的技巧,您就可以得到正常工作的灯光。

前提

新版VConsole控制台

如果您只熟悉起源1的SFM,您可能不知道新版控制台是如何工作的。简言之,按下键盘上的~键,就可以打开VConsole控制台。

在起源2中,控制台是以VConsole的形式出现的,它是一个完全独立的程序,允许您独立于引擎运行控制台命令,以及其他新特性。

和之前的控制台一样,您仍然可以通过它运行所有您喜欢的命令。

加载地图

与起源1一样,如果要在SFM中加载地图,在预览视图中右键单击,选择“Set Session Map”就可以加载指定的地图。但是对于灯光的修复,我们需要按照以下步骤来加载地图:

打开VConsole控制台(按~),有两个控制台命令可以让您加载地图,使用哪一个命令取决于您要载入什么类型的地图:

  • 如果地图是原HLA游戏中的地图或是存在于game文件夹(例如,hlvr/maps)中的地图,您需要使用命令“map 地图名称”
  • 如果是来自创意工坊的地图或是存在于addon文件夹(例如,hlvr_addons/mod_name/maps)中的地图,则需要使用命令“addon_tools_map 地图名称”

录制灯光

禁用地图灯光以防渲染两次

默认情况下,您会注意到灯光会出现这两个问题中的其中之一:SFM中的灯光无法照明,或者灯光不会对SFM中加载的模型进行着色。

如果您遇到了这些问题中的任何一个,那么您就需要录制游戏世界中的灯光,利用这种灯光来与SFM的模型进行交互。

  1. 按照上面所描述的方式加载地图。
  2. 在SFM中,按视图底部的圆形“录制”按钮。
  3. 录制几秒钟的游戏,然后按Esc停止录制。
  4. 禁用地图的灯光,以阻止它们与你新录制的游戏灯光发生作用,在预览视图中右键,Draw Map Objects -> Lights 取消勾选。

您录制的灯光现在将会出现在SFM中,并且这些灯光会正常作用于SFM加载的模型和动画集。然而,太阳光可能会有一些问题,不会显示SFM模型的阴影。请参阅下一节,了解如何解决此问题。

对“游戏”灯光进行操作

SFM中的"游戏灯光"

如果您是起源1的SFM用户,您可能会习惯于通过Create Animation Set For New Light这种方式来生成灯光,当然,这在起源2的SFM中同样适用。 然而,在《Half-Life: Alyx》中,几乎所有游戏中使用的渲染技术都与用这种方式创建的灯光不兼容(这里将这种灯光称为“SFM灯光”),并且还存在一些其他的阴影问题。 所以,建议您使用已经存在于您场景之中的地图里的灯光(这里将这种灯光称为“游戏灯光”或“地图灯光”),或者通过以下步骤手动添加这类灯光:

  • 如果您想对前面步骤中录制的地图灯光进行编辑操作, 那么您需要将这些已录制的灯光添加到动画集中:点击Add按钮(SFM icon AddButton.png), 选择 Create Animation Set(s) for Existing Element(s), 之后选中您想修改的已录制的地图灯光,点击OK就可以将已录制的灯光添加到动画集中。然后,您就可以复制这些灯光并在场景中重复使用它们了。
  • 如果要在场景中生成所有可能的灯光类型,您最好的选择是拥有一个包含所有四种可用的灯光类型的模板工程。包含所有四种可用的灯光类型的模板工程可以点击这里下载。

在使用太阳光(Sun Light)时尤其需要注意,太阳光可能不会在SFM模型上投射阴影。这个问题可以通过切换到该灯光的Element viewer中取消勾选“mixedShadows”属性来轻松解决:

Mixed-Shadows-Source2.png

改善灯光

SFM中的阴影贴图分辨率设置

您可能会注意到这些新游戏灯光的一个问题,它们在某些地方会有锯齿现象。您可以通过灯光的“outerConeAngle”属性降低灯光FOV来改善这一点,但我有一个不同的方法,可以增加灯光的阴影分辨率。

Warning.pngWarning:更高的阴影分辨率会影响到系统性能,如果场景有太多的灯光,某些可能会被剔除。
  1. 右键点击您想要调整的灯光(不支持太阳光(Sun Light),您可以在VConsole用csm_开头的命令来改变太阳光的分辨率)
  2. 点击 Show in Element Viewer->Light
  3. 找到“shadowTextureWidth”和“shadowTextureHeight”,并给它们设置一个高值,例如8192(无二次幂限制,但不建议使用)。

现在您的灯光应该更清晰了!

修复体积光崩溃

地图上的体积光有时会导致引擎崩溃或无响应。 通过加载“a1_intro_world”这张地图并尝试飞向Alyx的藏身之处的时候就很容易被触发,造成引擎无响应。

这似乎是一个内存处理的问题而且与特定的硬件有关(第一代Ryzen主板(A300,A320,B350,X370芯片组)在使用第三代Ryzen CPU时会出现这种问题)。如果您也遇到了这个问题,请尝试以下步骤进行修复:

  1. 打开您的 content 文件夹, 例如 C:/Steam/steamapps/content/Half-Life Alyx/content.
  2. 接着进入到 content/core/materials/dev
  3. 找到名为cs_volumetric_fog.vmat的文件。将文件重命名为cs_volumetric_fog.vmat.donotuse。

这应该会使SFM更加稳定,并且可能也会修复Hammer中的体积光问题。

Note.pngNote:这个问题目前还没有报告给Valve。

相关文档