替换或修改 props 中的灯光

本文以 Enlisted 项目为例,介绍如何替换或修改 props 中的光源。但是,一般过程适用于任何基于 daNetGame 的项目。

第 1 阶段:设置 daEditor

  1. 打开 daEditor: 浏览到目录 <your_drive>:/<engine_root>/enlisted/develop ,然后运行 daEditor.cmd.

  2. 打开项目: 从菜单中选择 Open Project

  3. 加载地图: 打开battle_of_berlin地图。

  4. 隐藏不必要的视觉元素: 按 P 打开 Properties 窗口。在Navigation meshes部分中,取消选中不必要的选项,如下所示。

  5. 禁用样条线:红点表示样条线。要隐藏它们,请单击工具栏上的黑色叉号。

  6. 隐藏其他元素:如果需要隐藏任何其他内容,请按 F11 并取消选中弹出窗口中的相关框。

  7. 导航到 Prop:使用 freeCamera 模式飞到感兴趣的 prop,并使用Spacebar切换。使用 WASDLMB移动。

  8. 选择目标Composite:当您到达灯具时,选择Composite(在本例中为像 reichchancellery 这样的建筑物)并按P打开 Object Properties

  9. 识别所选资产:请注意显示资产名称(reichchancellery_cmp)的高亮按钮,该按钮比Name字段更可靠,因为它们可能不同。

  10. 将合成分解为组件:在 Landscape 菜单中,选择 Split components into separate objects 以分解合成。重复此作,直到您可以接触到灯具。

  1. 选择灯具:启用 object selection mode(红色面图标)并选择灯具。灯具的名称将出现在提到的按钮上。

第 2 阶段:Asset Viewer 和 Light 预设识别

  1. 打开 Asset Viewer:从与之前相同的目录运行daViewer.cmd。复制资源名称并使用它来搜索资源库。

  2. 选择复合:资产由三个部分组成:

    • Geometry

    • Composite (geometry + collision)

    • Collision

    选择复合,右键单击它,然后选择Reveal in Explorer

  3. 找到.blk文件:在文件目录中,右键单击.blk文件,然后使用文本编辑器或类似FAR Commander的工具打开它。

  4. 查找光照预设:在.blk文件中,找到灯具引用的光照预设。复制其名称。

  5. 搜索预设:使用 FAR Commander(或首选方法)在项目目录 <engine_root>/enlisted/prog中搜索预设。 使用Alt+F1选择正确的驱动器,使用Alt+F7开始搜索。 第一行指定文件掩码,而第二行用于您要搜索的内容的名称。在第二行中输入名称,然后按 Enter

  6. 打开预设文件:预设将在lights.blk文件中找到。 按 F4 打开它并查看所有光源模板。

  7. 搜索预设名称:使用F7 搜索特定的光照预设(例如,light_chandelier_big)并导航到预设。

第 3 阶段:修改和创建 Light 模板

  1. 查找父模板:预设中的extends参数引用另一个预设(例如,omni_light)。找到父预设。

  2. 描摹父预设:如有必要,将模板的层次结构描摹到顶级光照预设(例如, local_omni_light)。

  3. 创建新的光源模板:根据父模板,创建一个新模板。这将需要一个具有唯一名称的新 .gameObj 文件,新的 Light 模板将引用该文件。

  4. 复制并重命名旧游戏对象:在旧.gameObj文件所在的目录中,复制它并根据需要重命名它。打开相应的.blk文件并调整引用。

  5. 验证资产:在 Asset Viewer 中搜索重命名的资产,右键单击它,然后在文件结构中找到它的位置。

  6. 重命名游戏对象:遵循 命名约定 文章。

第 4 阶段:测试和导出

  1. 在 daEditor 中打开测试地图:在 daEditor 加载过程中选择 Open Project 打开测试地图。

    编译完成后,daEditor 将提示您打开一张地图。 要继续,请导航到levels/dev/asset_test_level并打开测试级别的.blk 文件。

  2. 清理场景:如前所述隐藏不必要的元素,然后按Ctrl+ADelete删除任何不需要的对象。

  3. 创建并放置新实体:单击工具栏上的白色人脸图标以创建实体。在搜索字段中搜索新的 gameObj 并将其拖动到场景中。

  4. 调整枢轴点:默认情况下,实体的枢轴点将设置为世界原点 (0, 0, 0),因为 Place on collision 切换器设置为 Place pivot。打开 Properties 窗口(P) 并将其设置为 -no-

  5. 放置吊灯资产:复制吊灯的资产名称,在 daEditor 中搜索它,将其拖动到场景中,并通过在坐标线中输入相同的数字来对齐其碰撞设置。

    Note

    游戏对象沿其轴的方向目前尚不清楚,只能通过实验来确定。

  6. 为灯泡添加实体:为将来的灯泡添加两个实体,并在按住Shift的同时拖动来复制它们。

  7. 在 daEditor 中更新复合:您可以通过 Property 窗口更改与实体关联的复合。选择资产,单击资产名称,然后选择相应的实体 (例如 light_***_big)。

  8. 导出合成:现在,您需要组合一个新的合成对象。 您选择的第一个对象将用作根节点,复合的枢轴将从该节点继承。首先选择枝形吊灯(其几何图形),然后按住 Ctrl 并拖动以选择其余元素。 然后,点击 Landscape 并选择 Export as composite

  9. 保存合成:在资源库中找到正确的目录,在名称后附加_cmp,然后保存。

  10. 在 Asset Viewer 中验证复合:在 Asset Viewer 中搜索复合,并确保一切看起来正确。

最后步骤:导出和测试

  1. 在 daEditor 中加载位置:打开 daEditor,加载 battle_of_berlin 关卡,然后取消选中 Navigation meshes 中的所有内容,以便更快地导出。

  2. 导出到游戏:选择“Project > Export to game (PC format)”,保持设置不变,并确认。

    场景将被导出,更改将被写入二进制文件。

    Important

    如果要添加新的 prop 而不是修改现有的 prop,则需要重新构建。

    在导出构建时,您可以将光照预设更新为所需的光照预设。为此,请转到prog目录并找到 light.blk文件。

  3. 替换光预设:在light.blk文件中,找到要替换的相应聚光灯预设并复制它。

    接下来,将活动模板替换为复制的预设。

    修改模板参数后,保存更改并关闭文件: F2 – 保存更改, F4 – 推出。

  4. 启动游戏:导航到<engine_root>/enlisted/game 目录,然后通过z_enlisted_launcher_prog启动游戏。

    Scene 部分,选择 berlin 地图,在 Vroms 中选择 source ,然后按 Play 按钮。

    (或者,您可以在控制台中输入命令app/timeSpeed 0来冻结游戏中的时间)。

  5. 调整光照方向:进入游戏后,切换到 free camera 模式或按F12并导航到您正在处理的资源。正如我们所看到的,现在有两个实体对象,确认已应用更改。但是,我们还注意到灯具的方向不正确。

    要解决这个问题,请返回到带有测试地图的 daEditor。调整光照实体的方向,重新组合并导出合成。 然后,重新导出地图,重新打开游戏,并再次测试更改。

    正确定向光源后,按照Lights 一文中的说明继续进行最终照明配置。