【问题标题】:What's the use of lightmap?光照贴图有什么用?
【发布时间】:2015-05-22 11:16:27
【问题描述】:

首先,我知道什么是光照贴图,使用它可以获得什么,以及如何实现它。我不明白的是,如果你有动态移动的物体,它不能生成光照贴图,你仍然需要一个光源来投射它们的阴影。那么,如果我们仍然需要为那些不会获得任何光照贴图的对象(即动态对象)提供光照,光照贴图会获得什么?

提前致谢。

【问题讨论】:

    标签: graphics unity3d 3d game-engine


    【解决方案1】:

    如果您不使用实时阴影(这是一个选项,通常在移动设备上),那么对于动态对象,您可以使用或多或少 2 种方法:

    • 使用烘焙到探针中的光照贴图数据来近似每个顶点的光照(无需实时光照)。这是一个近似值,但可以在某些情况下使用。
    • 仅在动态对象上使用实时灯光,这样您就可以在不牺牲静态对象的任何性能的情况下改善这些对象的外观,静态对象只能使用烘焙灯光

    如果您需要动态对象在静态烘焙对象上投射的动态阴影,您仍然可以从光照贴图中受益,原因如下:

    • 即使需要额外的光照通道来在静态光照贴图对象上投射阴影,也可能并非所有对象都会受到阴影的影响,而只有相对接近动态阴影投射对象的对象才会受到影响。因此,您仍然可以节省大量 GPU 时间。
    • 光照贴图(尤其是在前向渲染路径上)允许生成复杂的光照场景,否则无法实时实现。动态对象,不需要受到所有烘焙灯光的影响,但最终只受到更重要的灯光的影响。通过这种方式,您可以为非常漂亮的静态环境使用有限数量的绘制调用,并使用有限数量的“重要”灯光来影响动态对象

    如果您有动态移动的对象,则无法 生成光照贴图,你仍然需要一个光源来投射它们 阴影。

    确实如此。但是:

    1. 您可以节省静态光照贴图对象的计算着色,因为光线不会影响它们
    2. 如前所述,投影阴影将投射在有限的一组对象上

    【讨论】:

    • 我明白了。这就说得通了。但是,如果我有多个相同模型的静态对象将被池化(如果它们不在相机的视口之外),并且如果它在视口内则只是重用呢?
    • @Bawenang Rukmoko Pardian Putra:什么意思?
    • 说,如果我有 1000 个卷心菜,它们是环境的一部分,分布在整个关卡中,但我只实例化其中的 10 个,因为最多只能渲染 10 个(即,卷心菜分布得不太紧密)并且每次需要渲染时只使用这 10 个卷心菜(通过将一个看不见的卷心菜移动并旋转到渲染位置)。所以卷心菜的实际表示只是一个带有变换的空节点/游戏对象。还是我应该将它们全部实例化,然后让剔除系统来处理它?
    • LM 仅适用于静态对象。如果您在对象被光照贴图后移动它,则包裹在其上的光纹理将与周围环境不一致。因此,您需要实例化所有对象(至少在烘焙期间)
    • 是的,但是因为我只会使用 10 个可以在需要时移动的对象,所以光照贴图不会出错吗?
    猜你喜欢
    • 1970-01-01
    • 2019-01-27
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多