替换或修改 props 中的灯光
本文以 Enlisted 项目为例,介绍如何替换或修改 props 中的光源。但是,一般过程适用于任何基于 daNetGame 的项目。
第 1 阶段:设置 daEditor
打开 daEditor: 浏览到目录
<your_drive>:/<engine_root>/enlisted/develop,然后运行daEditor.cmd.
打开项目: 从菜单中选择 Open Project。

加载地图: 打开battle_of_berlin地图。

隐藏不必要的视觉元素: 按
P打开 Properties 窗口。在Navigation meshes部分中,取消选中不必要的选项,如下所示。
禁用样条线:红点表示样条线。要隐藏它们,请单击工具栏上的黑色叉号。

隐藏其他元素:如果需要隐藏任何其他内容,请按
F11并取消选中弹出窗口中的相关框。
导航到 Prop:使用 freeCamera 模式飞到感兴趣的 prop,并使用
Spacebar切换。使用WASD和LMB移动。选择目标Composite:当您到达灯具时,选择Composite(在本例中为像 reichchancellery 这样的建筑物)并按
P打开 Object Properties。识别所选资产:请注意显示资产名称(
reichchancellery_cmp)的高亮按钮,该按钮比Name字段更可靠,因为它们可能不同。
将合成分解为组件:在 Landscape 菜单中,选择 Split components into separate objects 以分解合成。重复此作,直到您可以接触到灯具。

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

第 2 阶段:Asset Viewer 和 Light 预设识别
打开 Asset Viewer:从与之前相同的目录运行
daViewer.cmd。复制资源名称并使用它来搜索资源库。选择复合:资产由三个部分组成:
Geometry
Composite (geometry + collision)
Collision
选择复合,右键单击它,然后选择Reveal in Explorer。

找到
.blk文件:在文件目录中,右键单击.blk文件,然后使用文本编辑器或类似FAR Commander的工具打开它。
查找光照预设:在
.blk文件中,找到灯具引用的光照预设。复制其名称。
搜索预设:使用 FAR Commander(或首选方法)在项目目录
<engine_root>/enlisted/prog中搜索预设。 使用Alt+F1选择正确的驱动器,使用Alt+F7开始搜索。 第一行指定文件掩码,而第二行用于您要搜索的内容的名称。在第二行中输入名称,然后按Enter。
打开预设文件:预设将在
lights.blk文件中找到。 按F4打开它并查看所有光源模板。

搜索预设名称:使用
F7搜索特定的光照预设(例如,light_chandelier_big)并导航到预设。
第 3 阶段:修改和创建 Light 模板
查找父模板:预设中的
extends参数引用另一个预设(例如,omni_light)。找到父预设。
描摹父预设:如有必要,将模板的层次结构描摹到顶级光照预设(例如,
local_omni_light)。
创建新的光源模板:根据父模板,创建一个新模板。这将需要一个具有唯一名称的新
.gameObj文件,新的 Light 模板将引用该文件。复制并重命名旧游戏对象:在旧
.gameObj文件所在的目录中,复制它并根据需要重命名它。打开相应的.blk文件并调整引用。
验证资产:在 Asset Viewer 中搜索重命名的资产,右键单击它,然后在文件结构中找到它的位置。


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

第 4 阶段:测试和导出
在 daEditor 中打开测试地图:在 daEditor 加载过程中选择 Open Project 打开测试地图。

编译完成后,daEditor 将提示您打开一张地图。 要继续,请导航到
levels/dev/asset_test_level并打开测试级别的.blk文件。
清理场景:如前所述隐藏不必要的元素,然后按
Ctrl+A和Delete删除任何不需要的对象。创建并放置新实体:单击工具栏上的白色人脸图标以创建实体。在搜索字段中搜索新的
gameObj并将其拖动到场景中。
调整枢轴点:默认情况下,实体的枢轴点将设置为世界原点 (
0, 0, 0),因为 Place on collision 切换器设置为 Place pivot。打开 Properties 窗口(P) 并将其设置为 -no-。
放置吊灯资产:复制吊灯的资产名称,在 daEditor 中搜索它,将其拖动到场景中,并通过在坐标线中输入相同的数字来对齐其碰撞设置。

Note
游戏对象沿其轴的方向目前尚不清楚,只能通过实验来确定。
为灯泡添加实体:为将来的灯泡添加两个实体,并在按住
Shift的同时拖动来复制它们。
在 daEditor 中更新复合:您可以通过 Property 窗口更改与实体关联的复合。选择资产,单击资产名称,然后选择相应的实体 (例如
light_***_big)。

导出合成:现在,您需要组合一个新的合成对象。 您选择的第一个对象将用作根节点,复合的枢轴将从该节点继承。首先选择枝形吊灯(其几何图形),然后按住
Ctrl并拖动以选择其余元素。 然后,点击 Landscape 并选择 Export as composite。
保存合成:在资源库中找到正确的目录,在名称后附加
_cmp,然后保存。
在 Asset Viewer 中验证复合:在 Asset Viewer 中搜索复合,并确保一切看起来正确。

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


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


场景将被导出,更改将被写入二进制文件。
Important
如果要添加新的 prop 而不是修改现有的 prop,则需要重新构建。
在导出构建时,您可以将光照预设更新为所需的光照预设。为此,请转到
prog目录并找到light.blk文件。

替换光预设:在
light.blk文件中,找到要替换的相应聚光灯预设并复制它。
接下来,将活动模板替换为复制的预设。

修改模板参数后,保存更改并关闭文件:
F2– 保存更改,F4– 推出。启动游戏:导航到
<engine_root>/enlisted/game目录,然后通过z_enlisted_launcher_prog启动游戏。
在 Scene 部分,选择 berlin 地图,在 Vroms 中选择
source,然后按 Play 按钮。(或者,您可以在控制台中输入命令
app/timeSpeed 0来冻结游戏中的时间)。
调整光照方向:进入游戏后,切换到 free camera 模式或按
F12并导航到您正在处理的资源。正如我们所看到的,现在有两个实体对象,确认已应用更改。但是,我们还注意到灯具的方向不正确。
要解决这个问题,请返回到带有测试地图的 daEditor。调整光照实体的方向,重新组合并导出合成。 然后,重新导出地图,重新打开游戏,并再次测试更改。

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