灯光创建指南

要点

使用光照时的关键规则是仔细检查源放置结果。光源的半径应足以照亮房间或区域的必要部分,但不能超过合理的限制。例如,使用专为小型警卫室设计的光源来照亮大型机库是不合适的。

光源

光源模板位于<project_name>/prog目录下的lights.blk文件中。例如,在基于 daNetGame 的项目中,可以在此处找到它:

<project_name>/prog/gameBase/content/common/gamedata/templates/lights.blk

有关光源设置的详细信息,请参阅 灯光 一文。

要点:

  • 对于每个新的视觉模型,创建并配置一个新的光源,在光源名称中包含视觉模型的名称(如果需要,还包括光半径等功能参数)。

  • 更喜欢使用 spot 灯而不是 omni 灯。

  • 光源可以通过任务编辑器(游戏中的F12)进行调整。这些更改不会保存,但可以立即预览。

  • 要更改一天中的时间,请使用基于浏览器的工具 Var Editor

  • 在配置光源时平衡亮度和最大半径。

  • 如果创建用于室外的 omni (在envi_probe之外),请确保禁用 light__use_box参数;否则,光源不会在外部渲染。

  • 如果可能,请避免激活阴影。

  • 如果启用了阴影,则它们应仅应用于静态对象。如有必要,动态对象可能具有唯一的光源。

  • 始终在游戏中检查阴影,因为在某些情况下,启用的阴影可能会降低场景质量,具体取决于光源相对于视觉模型的位置。

  • 如果光源的视觉模型可以被销毁,请在光源模板中添加 destroyable_with_rendinst:tag 参数。

  • 如果光源仅在夜间激活(例如,路灯),请将参数light__nightly:b=yes添加到模板中。

IES 纹理

有关创建 IES 纹理的详细信息,请参阅 光度学灯光 一文。不要犹豫,生成多个 IES 纹理。根据光源和/或视觉模型命名它们。

闪烁的光源

有关闪烁光源的更多信息,请参阅 闪烁的灯光 文章。

要正确设置闪烁的光源,必须创建以下实体:

  1. 闪烁的光源。

    Note

    这与光源不同;有关详细信息,请参阅 文章

  2. 带有动画控制器的动态视觉模型。

  3. 将动态模型的 animChar 链接到闪烁源的模板。如果动态模型可以被销毁,请不要忘记指定 destructibility。

  4. 一个 gameObj 模板,用于将动态模型的 animChar 链接到闪烁源。

  5. 光源。

  6. 将光源与闪烁光源链接的模板。

  7. 将光源链接到闪烁光源的 gameObj 模板。

  8. 一个由两个游戏对象组成的复合文件:一个用于将闪烁源链接到动态模型,另一个用于将闪烁源链接到光源。

视觉模型

这是指光源的几何模型,例如灯、聚光灯、手电筒或光源的任何其他视觉表示。

考虑光源是否需要闪烁。对于应急灯、火把和大多数灯(因为许多灯可能具有闪烁的变体),请创建具有自发光表面的动力学模型,并在必要时创建渲染实例基。将视觉模型分为渲染实例和动态模型背后的逻辑及其准备工作在 Flickering Lights 一文中进行了详细说明。

发射强度

发射强度没有确切的值,因为它取决于反照率、发射掩码和发射表面的大小等因素。单独配置发射强度,请记住,值越低通常越好。过度发射会破坏摄像机的适应能力,并对游戏体验产生负面影响。

有关配置发射的更多详细信息,请参见 本文

GameObj

See also

有关更多信息,请参阅 gameObjects.

为光源和动态视觉模型创建 gameObj。例如,在基于 daNetGame 的项目中,它们位于以下位置:

<project_name>/develop/assets/common/gameRes/gameObjects

为方便起见,请确保在 gameObj 中定义一个参考模型。例如:

ref_dynmodel:t="lamppost_d_glass_flicker_dynmodel"

这是在 daEditor 中显示几何体所必需的。

限制框

限制框 是一个用于切断光线的 gameObj。对于不投射阴影的光源,需要它来防止光线穿过墙壁。通常,它不会包含在包含光源的复合文件中,而是手动放置在该位置或添加到整个建筑物的复合文件中。

对象命名为:

omni_light_restriction_box.gameObj.blk

Composite

复合 文件可以使用相同的视觉模型,但具有不同的光源。在这种情况下,请确保在复合文件名中包含光源功能。始终在包含光源的合成图像的名称中指定半径,例如:

factory_lamp_a_flicker_10m_cmp.composit.blk

包含光源的复合材料可能包括:

  • RendInst – static base,可以是可破坏的,并包含销毁逻辑。

  • 描述光源或将光源链接到闪烁光源的 GameObj 模板。

  • GameObj 模板,以防光源具有闪烁变体。

  • 用于切断光线的 限制框 ,尽管它通常单独放置,不包括在与光源的合成中。

放置光源

请记住在放置光源时考虑光半径。同一光源不能同时照亮小房间和大大厅。 这将使大厅照明不足或导致小房间过度照明。过高的亮度不仅会破坏视觉沉浸感,还会破坏游戏体验。