修复灯光与异常崩溃
![Warning.png](/w/images/thumb/c/cb/Warning.png/10px-Warning.png)
![SFM icon AddButton.png](/w/images/3/31/SFM_icon_AddButton.png)
当您开始使用Half-Life: Alyx的SFM时,您可能会立即注意到灯光出现了一些问题。 不过不要害怕,使用一个简单的技巧,您就可以得到正常工作的灯光。
前提
如果您只熟悉起源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的模型进行交互。
- 按照上面所描述的方式加载地图。
- 在SFM中,按视图底部的圆形“录制”按钮。
- 录制几秒钟的游戏,然后按Esc停止录制。
- 禁用地图的灯光,以阻止它们与你新录制的游戏灯光发生作用,在预览视图中右键,Draw Map Objects -> Lights 取消勾选。
您录制的灯光现在将会出现在SFM中,并且这些灯光会正常作用于SFM加载的模型和动画集。然而,太阳光可能会有一些问题,不会显示SFM模型的阴影。请参阅下一节,了解如何解决此问题。
对“游戏”灯光进行操作
如果您是起源1的SFM用户,您可能会习惯于通过Create Animation Set For New Light这种方式来生成灯光,当然,这在起源2的SFM中同样适用。 然而,在《Half-Life: Alyx》中,几乎所有游戏中使用的渲染技术都与用这种方式创建的灯光不兼容(这里将这种灯光称为“SFM灯光”),并且还存在一些其他的阴影问题。 所以,建议您使用已经存在于您场景之中的地图里的灯光(这里将这种灯光称为“游戏灯光”或“地图灯光”),或者通过以下步骤手动添加这类灯光:
- 如果您想对前面步骤中录制的地图灯光进行编辑操作, 那么您需要将这些已录制的灯光添加到动画集中:点击Add按钮(
), 选择 Create Animation Set(s) for Existing Element(s), 之后选中您想修改的已录制的地图灯光,点击OK就可以将已录制的灯光添加到动画集中。然后,您就可以复制这些灯光并在场景中重复使用它们了。
- 如果要在场景中生成所有可能的灯光类型,您最好的选择是拥有一个包含所有四种可用的灯光类型的模板工程。包含所有四种可用的灯光类型的模板工程可以点击这里下载。
在使用太阳光(Sun Light)时尤其需要注意,太阳光可能不会在SFM模型上投射阴影。这个问题可以通过切换到该灯光的Element viewer中取消勾选“mixedShadows”属性来轻松解决:
改善灯光
您可能会注意到这些新游戏灯光的一个问题,它们在某些地方会有锯齿现象。您可以通过灯光的“outerConeAngle”属性降低灯光FOV来改善这一点,但我有一个不同的方法,可以增加灯光的阴影分辨率。
![Warning.png](/w/images/thumb/c/cb/Warning.png/10px-Warning.png)
- 右键点击您想要调整的灯光(不支持太阳光(Sun Light),您可以在VConsole用csm_开头的命令来改变太阳光的分辨率)
- 点击 Show in Element Viewer->Light
- 找到“shadowTextureWidth”和“shadowTextureHeight”,并给它们设置一个高值,例如8192(无二次幂限制,但不建议使用)。
现在您的灯光应该更清晰了!
修复体积光崩溃
地图上的体积光有时会导致引擎崩溃或无响应。 通过加载“a1_intro_world”这张地图并尝试飞向Alyx的藏身之处的时候就很容易被触发,造成引擎无响应。
这似乎是一个内存处理的问题而且与特定的硬件有关(第一代Ryzen主板(A300,A320,B350,X370芯片组)在使用第三代Ryzen CPU时会出现这种问题)。如果您也遇到了这个问题,请尝试以下步骤进行修复:
- 打开您的 content 文件夹, 例如 C:/Steam/steamapps/content/Half-Life Alyx/content.
- 接着进入到 content/core/materials/dev
- 找到名为cs_volumetric_fog.vmat的文件。将文件重命名为cs_volumetric_fog.vmat.donotuse。
这应该会使SFM更加稳定,并且可能也会修复Hammer中的体积光问题。
![Note.png](/w/images/thumb/c/cc/Note.png/10px-Note.png)