• 展开光照贴图的 UV

    • 有关创建光照贴图
    • 示例
    • 光照贴图坐标索引
    • 相邻 UV 以及间隔

有关创建光照贴图


光照贴图可能是场景美术制作中最难的环节。我们依靠它们可以得到光照和阴影清晰可见的细节。它们必须是唯一地展开,这样模型中每个部分才会有属于它们自己的空间来接收亮和暗信息。

重点是记住光照贴图分辨率与贴图 UV 的分辨率相比是微不足道的。还有一点也很重要,那就是要了解关卡需要进行优化的地方越多,关卡设计师会将光照贴图的分辨率向下调整得更低,对那种较小的对象甚至使用的是 8x8 或 16x16 分辨率。这个趋势需要我们在每部分光照贴图 UV 周围留出大量‘padding(间隔)’,这样暗的区域不会渗开进入到亮区域中, 会破坏游戏中正确的阴影幻觉效果。

有 3 种创建光照贴图的方法

  • BOX UNWRAP(长方形展开)

通常这是最可靠的光照贴图展开方法,因为大多数环境模型都是互相结合或重复的方块形来创建一个结构。一个紧凑的网格物体(全部连结在一起,没有分离的元素)通常是构建结构非常有效的方法,它可以使光照贴图展开的效率更高,因为您只可以展开连接在一起的大部分设计。

这种方法非常实用,因为光照贴图的分辨率是这样低,如果它是作用在一大块上,那么从亮到暗的渐变处理会更加容易,当它在一些零散的部分上展开时,需要在这些块之间留出更多的间隔,这样光照才会正确。

这样通常会促使需要更高的光照贴图分辨率,而我们必须尽我们所能努力避免这种情况发生。有时没有办法避免分辨率更低的需求,我们必须添加比我们想要补偿的间隔还要更加多的间隔。

  • PLANAR UNWRAP(平面展开)

这种方法最适用于像 BSP 类型墙壁这样带有一些倒角或挤压的简单平面设计。它还适用于大型建筑物表面部分,例如,公寓大楼。使用连续网格物体对平面展开的帮助很大,因为它更多涉及的是展开网格物体 UV 并将覆盖范围手动添加给游戏中光照不正确的倒角。

有时候它需要反反复复来回进行操作,但是经验告诉我们,要确保展开的水平方向空间比垂直方向更大,因为阴影通常是从侧面略高一点的角度投射过来的,而不是从正上方直接投射下来的。

所以水平方向要为较尖锐的阴影信息提供更多的空间,因为关卡设计师光照选择的发展趋势是创建比他们使用自上而下光照的情况下可能生成的阴影更有生动的阴影。

  • CYLINDRICAL UNWRAP(圆柱形展开)

环境中除长方形和平面形状外,大多数其他形状都分解为圆柱形。圆柱形可以很好地弥补那些既有侧面同时又有正面但是现在是背面部分的设计,如若不然我们会使用 Box Unwrap(长方形展开)方法。

示例


这是一个紧凑的网格物体,所以它比较适于长方形展开,只要从水平方向展开,尽可能多地使用光照贴图分辨率。将中间那张图片中突出显示的底面从整个模型中分离出来,因为它们几乎始终会渲染为黑色,如果将它们与这个 UV 的其他部分连接在一起,那么模型中原本不应该暗的地方都会因为它们的渗开而变暗。

这对于在最下面图片中显示的分离出来的顶面也同样适用,它们一直都是亮的。最上面的图片显示的是这个贴图 UV。

这种尽量在安全情况多连接的方法使我们得到了近乎完美的游戏中光照贴图,分辨率为 32x32。这里根本没有缝隙,所以在本不该暗的地方没有难于察觉的暗线。

有时候您需要用力将这些部分强制弄在一起。使表面看上去整洁同时不会对光照贴图产生影响是值得的。按照 1 比 1 比率拉伸对于光照贴图所产生影响实际上并没有覆盖率所产生的影响大,所以除 1 比 1 等级外太小的区域由于渗透问题都不能进行正确的光照,但是 1 比 1 等级是覆盖率的两倍看起来效果不错。在这里您还会看到我分离了非建设性破口的内部,因为它们通常都是暗的,而我们需要避免从这些破口中渗开到外部去。

像这样的大型建筑物正面部分,使用 Planar(平面)展开效果很好。这个网格物体是紧密接邻的,这对我们要在这里进行的工作有所帮助,但是同样的屋架可以与其中包含一些垂直或水平元素的网格物体结合在一起使用。只要您放置在光照贴图 UV 上的最具代表性的内容与这个低多边形匹配,即使是需要一些间隔以防有些侧面部分在与其他部分堆放在一起时渲染为黑色也一样可以正常工作。

您可以在这里看到这个相接的网格物体布局允许我更加轻松地使用镜像低多边形网格物体的方法展开 UV。我还会将这些侧面,顶部 & 底部盖子从主要部分中移出来,允许出现渗透问题,我保证在它们周围留有间隔,主要部分和顶部的窗户都具有相同的间隔量。

有时候您的设计会违反这些简单的设计规则,如果设计中包含大量的带有一些单个元素的非建设性空间,那么我们需要拆分光照贴图并添加更多的间隔。

您可以看到在将栏杆固定在一起的相交垂直部分上有一些非常明显的弯曲,我们只是在这 3 块中强制地将这 2 个侧面与中间 & 中央部分弄在一起。

对于圆柱形栏杆内部,我们将其中一个面单独分离出来,同时将另一个面赋给内表面和外表面。完成上述操作后,在 3/4 这些区域中遮蔽着光滑的光照贴图,而且另一个面上光照贴图中只有一个裂缝,由于它顶上有金属光束直射,所以看不到这个裂缝。

有些设计可能与我们通常所进行的常规操作不同,例如下面这个设计。

当单个元素较多的时候,我们没有其他选择,只好提高贴图分辨率,否则我们将会浪费很多光照贴图空间,因为每个部分之间都有足够的间隔,这样做在游戏中看起来效果会很差。所以我计划将光照贴图分辨率提高到 128x128,不过我知道效果仍然不会完美,会有一些渗透现象,幸运的是这种现象并不严重不会破坏这个对象。

有时将模型投射为一个近似平面然后展开 UV 会很容易,因为各个部分很整洁清晰相连,这样可以轻松地将它们连接在一起,以下面这个模型为例。

这个设计肯定就是一个圆柱形的盖子加上一个平面的底座,所以我使用这 2 种基础的方法展开这个 UV。地面的那部分中心很容易就可以在 Z 轴上进行平面展开,然后应用放松修改器,微量调整选项使所有内容都不会因为倒角上的 1:1 比率问题所获得的覆盖太小。

中间部分与底座部分一样结构清晰明了,我直接强制手动使用圆柱形展开,获得了最大的覆盖率以及使用空间。通常,与低多边形网格物体的每个小平面的 1 比 1 表现形式相比,我们更加关注的是覆盖率。我在向上的 Z 轴上对顶部狮头运动部分的下部表面进行了平面展开,然后使用松弛值进行确认。

这样分离模型有一个好处就是可以将缝隙放在低多边形设计中真实的缝隙部分,所以这里的光照中有一点裂缝,感觉很自然。在有明显深度凹陷或裂缝的地方分割您的光照贴图 uv 是选择在哪里分割部分的理想经验法则,这种方法有助于表现游戏中模型并降低它的等级。

光照贴图坐标索引


默认情况下,在为静态光照生成光照贴图的时候将会使用静态网格物体的第一组 UV(索引 0)。这意味着用于将材质应用于这个网格物体的同一组坐标也可以用于光照贴图。这通常不是很理想。其中一个原因是用于生成光照贴图的 UV 需要是唯一的,也就是说网格物体的每一个面必须不能与 UV 空间中的其他任何面重叠。

针对这个问题,这个原因应该十分明显。如果这些面共享同一个 UV 空间,与这个空间对应的光照贴图部分将会被应用到这两个面上。它对于漫反射和其他贴图而言可能非常重要,因为它会使每个面的贴图分辨率更高。但是,它将会使光照不正确。静态网格物体有一个名为 LightmapCoordinateIndex 的属性,它可以使用指定的一组 UV 生成光照贴图。通过将这个属性设置为指向一组唯一的 UV,然后为光照贴图进行正确设置,静态网格物体可以享用最好的两个世界: 漫反射贴图具有较好的贴图分辨率,光照贴图产生精确的光照。

相邻 UV 以及间隔


其中具有相邻 UV 的三角形组被称为 UV 图表。

UV 图标之间必需有间隔以防渗透失真。但是,光照贴图 UV 布局的边周围不需要有间隔,因为Lightmass自动在边周围进行间隔就可以防止渗透失真。 注意,当您设置 UV 图表间的间距时通常需要 4 个贴图像素避免所有的渗透失真,因为 DXT 压缩会对 4x4 贴图块产生作用。

这意味着对于分辨率为 32 的光照贴图来说,UV 图表之间的间隔应该是整个 UV 空间的 12.5%。但是,记住在 UV 图表之间放置的间隔越多,在分辨率较高的光照贴图上浪费的光照贴图内存越多。如果您可以使静态光照 UV 尽量紧凑,那么您所得到的结果会更好。这将会减少需要的间隔量,同时会使分辨率增加。在执行 Lightmass 之前或在大部分依赖顶点光照的时候,静态网格物体可能已经通过单独对元素进行建模并将它们组合到一起创建完成。

不过这没有依赖于光照贴图并使用 Lightmass 时理想。它无法得到好的紧凑的光照贴图 UV。

而您最终将会得到一个破裂的光照贴图,其中的多边形在模型内部被渲染为黑色,渗开到网格物体的另一部分。另一个潜在缺点是像它这样也依赖于自动展开可能会引发相同的问题。

为光照贴图创建网格物体并展开它们的 UV 的最好方法是将整个网格物体建模为一个相邻的元素并手动展开这个 UV。

这样会得到紧凑的光照贴图 UV,没有缝隙,同时提高光照贴图的利用率。

最终结果是一个被正确照射的网格物体,没有任何渗透失真现象。

这个方法还有一个优点是它同时可以逐渐减少模型所需的三角形数量。

 


  • 展开光照贴图的 UV

    • 有关创建光照贴图
    • 示例
    • 光照贴图坐标索引
    • 相邻 UV 以及间隔

有关创建光照贴图


光照贴图可能是场景美术制作中最难的环节。我们依靠它们可以得到光照和阴影清晰可见的细节。它们必须是唯一地展开,这样模型中每个部分才会有属于它们自己的空间来接收亮和暗信息。

重点是记住光照贴图分辨率与贴图 UV 的分辨率相比是微不足道的。还有一点也很重要,那就是要了解关卡需要进行优化的地方越多,关卡设计师会将光照贴图的分辨率向下调整得更低,对那种较小的对象甚至使用的是 8x8 或 16x16 分辨率。这个趋势需要我们在每部分光照贴图 UV 周围留出大量‘padding(间隔)’,这样暗的区域不会渗开进入到亮区域中, 会破坏游戏中正确的阴影幻觉效果。

有 3 种创建光照贴图的方法

  • BOX UNWRAP(长方形展开)

通常这是最可靠的光照贴图展开方法,因为大多数环境模型都是互相结合或重复的方块形来创建一个结构。一个紧凑的网格物体(全部连结在一起,没有分离的元素)通常是构建结构非常有效的方法,它可以使光照贴图展开的效率更高,因为您只可以展开连接在一起的大部分设计。

这种方法非常实用,因为光照贴图的分辨率是这样低,如果它是作用在一大块上,那么从亮到暗的渐变处理会更加容易,当它在一些零散的部分上展开时,需要在这些块之间留出更多的间隔,这样光照才会正确。

这样通常会促使需要更高的光照贴图分辨率,而我们必须尽我们所能努力避免这种情况发生。有时没有办法避免分辨率更低的需求,我们必须添加比我们想要补偿的间隔还要更加多的间隔。

  • PLANAR UNWRAP(平面展开)

这种方法最适用于像 BSP 类型墙壁这样带有一些倒角或挤压的简单平面设计。它还适用于大型建筑物表面部分,例如,公寓大楼。使用连续网格物体对平面展开的帮助很大,因为它更多涉及的是展开网格物体 UV 并将覆盖范围手动添加给游戏中光照不正确的倒角。

有时候它需要反反复复来回进行操作,但是经验告诉我们,要确保展开的水平方向空间比垂直方向更大,因为阴影通常是从侧面略高一点的角度投射过来的,而不是从正上方直接投射下来的。

所以水平方向要为较尖锐的阴影信息提供更多的空间,因为关卡设计师光照选择的发展趋势是创建比他们使用自上而下光照的情况下可能生成的阴影更有生动的阴影。

  • CYLINDRICAL UNWRAP(圆柱形展开)

环境中除长方形和平面形状外,大多数其他形状都分解为圆柱形。圆柱形可以很好地弥补那些既有侧面同时又有正面但是现在是背面部分的设计,如若不然我们会使用 Box Unwrap(长方形展开)方法。

示例


这是一个紧凑的网格物体,所以它比较适于长方形展开,只要从水平方向展开,尽可能多地使用光照贴图分辨率。将中间那张图片中突出显示的底面从整个模型中分离出来,因为它们几乎始终会渲染为黑色,如果将它们与这个 UV 的其他部分连接在一起,那么模型中原本不应该暗的地方都会因为它们的渗开而变暗。

这对于在最下面图片中显示的分离出来的顶面也同样适用,它们一直都是亮的。最上面的图片显示的是这个贴图 UV。

这种尽量在安全情况多连接的方法使我们得到了近乎完美的游戏中光照贴图,分辨率为 32x32。这里根本没有缝隙,所以在本不该暗的地方没有难于察觉的暗线。

有时候您需要用力将这些部分强制弄在一起。使表面看上去整洁同时不会对光照贴图产生影响是值得的。按照 1 比 1 比率拉伸对于光照贴图所产生影响实际上并没有覆盖率所产生的影响大,所以除 1 比 1 等级外太小的区域由于渗透问题都不能进行正确的光照,但是 1 比 1 等级是覆盖率的两倍看起来效果不错。在这里您还会看到我分离了非建设性破口的内部,因为它们通常都是暗的,而我们需要避免从这些破口中渗开到外部去。

像这样的大型建筑物正面部分,使用 Planar(平面)展开效果很好。这个网格物体是紧密接邻的,这对我们要在这里进行的工作有所帮助,但是同样的屋架可以与其中包含一些垂直或水平元素的网格物体结合在一起使用。只要您放置在光照贴图 UV 上的最具代表性的内容与这个低多边形匹配,即使是需要一些间隔以防有些侧面部分在与其他部分堆放在一起时渲染为黑色也一样可以正常工作。

您可以在这里看到这个相接的网格物体布局允许我更加轻松地使用镜像低多边形网格物体的方法展开 UV。我还会将这些侧面,顶部 & 底部盖子从主要部分中移出来,允许出现渗透问题,我保证在它们周围留有间隔,主要部分和顶部的窗户都具有相同的间隔量。

有时候您的设计会违反这些简单的设计规则,如果设计中包含大量的带有一些单个元素的非建设性空间,那么我们需要拆分光照贴图并添加更多的间隔。

您可以看到在将栏杆固定在一起的相交垂直部分上有一些非常明显的弯曲,我们只是在这 3 块中强制地将这 2 个侧面与中间 & 中央部分弄在一起。

对于圆柱形栏杆内部,我们将其中一个面单独分离出来,同时将另一个面赋给内表面和外表面。完成上述操作后,在 3/4 这些区域中遮蔽着光滑的光照贴图,而且另一个面上光照贴图中只有一个裂缝,由于它顶上有金属光束直射,所以看不到这个裂缝。

有些设计可能与我们通常所进行的常规操作不同,例如下面这个设计。

当单个元素较多的时候,我们没有其他选择,只好提高贴图分辨率,否则我们将会浪费很多光照贴图空间,因为每个部分之间都有足够的间隔,这样做在游戏中看起来效果会很差。所以我计划将光照贴图分辨率提高到 128x128,不过我知道效果仍然不会完美,会有一些渗透现象,幸运的是这种现象并不严重不会破坏这个对象。

有时将模型投射为一个近似平面然后展开 UV 会很容易,因为各个部分很整洁清晰相连,这样可以轻松地将它们连接在一起,以下面这个模型为例。

这个设计肯定就是一个圆柱形的盖子加上一个平面的底座,所以我使用这 2 种基础的方法展开这个 UV。地面的那部分中心很容易就可以在 Z 轴上进行平面展开,然后应用放松修改器,微量调整选项使所有内容都不会因为倒角上的 1:1 比率问题所获得的覆盖太小。

中间部分与底座部分一样结构清晰明了,我直接强制手动使用圆柱形展开,获得了最大的覆盖率以及使用空间。通常,与低多边形网格物体的每个小平面的 1 比 1 表现形式相比,我们更加关注的是覆盖率。我在向上的 Z 轴上对顶部狮头运动部分的下部表面进行了平面展开,然后使用松弛值进行确认。

这样分离模型有一个好处就是可以将缝隙放在低多边形设计中真实的缝隙部分,所以这里的光照中有一点裂缝,感觉很自然。在有明显深度凹陷或裂缝的地方分割您的光照贴图 uv 是选择在哪里分割部分的理想经验法则,这种方法有助于表现游戏中模型并降低它的等级。

光照贴图坐标索引


默认情况下,在为静态光照生成光照贴图的时候将会使用静态网格物体的第一组 UV(索引 0)。这意味着用于将材质应用于这个网格物体的同一组坐标也可以用于光照贴图。这通常不是很理想。其中一个原因是用于生成光照贴图的 UV 需要是唯一的,也就是说网格物体的每一个面必须不能与 UV 空间中的其他任何面重叠。

针对这个问题,这个原因应该十分明显。如果这些面共享同一个 UV 空间,与这个空间对应的光照贴图部分将会被应用到这两个面上。它对于漫反射和其他贴图而言可能非常重要,因为它会使每个面的贴图分辨率更高。但是,它将会使光照不正确。静态网格物体有一个名为 LightmapCoordinateIndex 的属性,它可以使用指定的一组 UV 生成光照贴图。通过将这个属性设置为指向一组唯一的 UV,然后为光照贴图进行正确设置,静态网格物体可以享用最好的两个世界: 漫反射贴图具有较好的贴图分辨率,光照贴图产生精确的光照。

相邻 UV 以及间隔


其中具有相邻 UV 的三角形组被称为 UV 图表。

UV 图标之间必需有间隔以防渗透失真。但是,光照贴图 UV 布局的边周围不需要有间隔,因为Lightmass自动在边周围进行间隔就可以防止渗透失真。 注意,当您设置 UV 图表间的间距时通常需要 4 个贴图像素避免所有的渗透失真,因为 DXT 压缩会对 4x4 贴图块产生作用。

这意味着对于分辨率为 32 的光照贴图来说,UV 图表之间的间隔应该是整个 UV 空间的 12.5%。但是,记住在 UV 图表之间放置的间隔越多,在分辨率较高的光照贴图上浪费的光照贴图内存越多。如果您可以使静态光照 UV 尽量紧凑,那么您所得到的结果会更好。这将会减少需要的间隔量,同时会使分辨率增加。在执行 Lightmass 之前或在大部分依赖顶点光照的时候,静态网格物体可能已经通过单独对元素进行建模并将它们组合到一起创建完成。

不过这没有依赖于光照贴图并使用 Lightmass 时理想。它无法得到好的紧凑的光照贴图 UV。

而您最终将会得到一个破裂的光照贴图,其中的多边形在模型内部被渲染为黑色,渗开到网格物体的另一部分。另一个潜在缺点是像它这样也依赖于自动展开可能会引发相同的问题。

为光照贴图创建网格物体并展开它们的 UV 的最好方法是将整个网格物体建模为一个相邻的元素并手动展开这个 UV。

这样会得到紧凑的光照贴图 UV,没有缝隙,同时提高光照贴图的利用率。

最终结果是一个被正确照射的网格物体,没有任何渗透失真现象。

这个方法还有一个优点是它同时可以逐渐减少模型所需的三角形数量。

 

UE3 展开光照贴图的 UV相关推荐

  1. 光照贴图UV Lightmapping UVs

    Unity will use UV2 for lightmaps, if the channel is present. Otherwise it will use primary UVs. Unit ...

  2. UE4-(光照)光照贴图

    光照贴图是引擎内部自动生成的一种纹理,可以应用到模型表面. 在世界场景设置中: 找到光照贴图分段,就可以看到光照贴图.由引擎生成的光照贴图纹理要比一般光照贴图稍微复杂点,引擎会为这张贴图创建两个不同的 ...

  3. GraphicsLab Project之光照贴图烘焙(一)

    作者:i_dovelemon 来源:CSDN 日期:2018-05-19 主题:Radiosity Algorithm, Global Illumination, Barycentric Coordi ...

  4. Unity项目运行时动态更新光照贴图 | LightMap

    Unity项目运行时动态更新烘培的光照贴图 动态更新烘培的光照贴图 场景的物件没有发生变化(也就是说没有运行时加载在场景上的Prefab) 场景的烘培贴图已经更新,但是有些物件prefab想运行时加载 ...

  5. 光照贴图(Lightmapping)与辐照度(Radiosity)

    对于一个3D场景光照是加强真实感的重要因素, 目前来说大概可以分为静态光照和动态光照.在这里我们主要讨论的是静态光照. 静态光照的好处很多, 比如: 渲染速度快, 效果好, 可以逐象素的计算光照和阴影 ...

  6. unity技美34——解决unity中烘焙光照,同mesh同uv的模型烘焙光照时多出一张光照贴图的问题

    我们再开发中,经常会遇到需要烘焙场景光照的情况.但是尴尬的是,一个场景中你好几个物体用的都是一个贴图,但是不同mesh.或者是相同mesh.你都会如下图,多出一张光照贴图.正常unity开发的解决办法 ...

  7. 使用预计算实时全局光照优化照明-微调光照贴图参数

    本文地址:https://blog.csdn.net/t163361/article/details/124107784 翻译说明: 教程翻译主要用谷歌翻译后,对特别不通顺的地方进行了微调.同时针对一 ...

  8. Blender烘焙Lightmap光照贴图

    1.创建场景中的物体 2.取得UV展开图 2.1 创建新窗口 保持物体模式 -> 鼠标左键选中一个物体 -> 通过Shift+鼠标左键依次选中场景内将要被贴图烘焙的物体(或从右侧大纲视图中 ...

  9. 光照贴图深入学习 Lightmapping In-Depth

    If you are about to lightmap your first scene in Unity, this Quickstart Guide might help you out. 如果 ...

最新文章

  1. extjs4.0视频教程下载
  2. R语言单变量分析实战:汇总统计(Summary Statistics)、频率表(Frequency Table)、图表(charts: boxplot、histogram、density)
  3. 如何设置使eclipse修改代码不重启tomcat
  4. 【GVA】gorm多对多many2many删除数据的同时级联删除关联中间表中的关联数据
  5. Java 并发编程系列之闭锁(CountDownLatch)
  6. 【转】Android 4.4前后版本读取图库图片和拍照完美解决方案
  7. Leetcode 260. 只出现一次的数字 III
  8. 修改窗口图标 AfxRegisterWndClass()
  9. php7安装xhprof,PHP 7.1安装xhprof进行性能分析的介绍
  10. firefox flash插件_巧用firefox下载视频资源
  11. java setundecorated_java JFrame中与setUndecorated()相关的几个特效
  12. python中的reg_如何在python中从注册表读取字符串格式的Reg_二进制类型值
  13. ueditor 编辑器增加css样式_Web入侵之利用编辑器漏洞入侵
  14. html5类似ios下拉选择器,iosselect:一个js picker项目,在H5中实现IOS的select下拉框效果 - mufc-go...
  15. MYSQL数据库中导入中国各个省份编号和省份
  16. 新手CrossApp 之IndicatorView小结
  17. 修复Win10任务栏开始菜单等系统图标无法点击问题
  18. 短视频平台开发,将图片、视频保存到本地的相册中
  19. php代码出现notice,PHP提示Notice: Undefined variable的解决办法
  20. win10笔记本识别不到蓝牙鼠标的解决办法

热门文章

  1. 加工中心宏程序生成器_宏程序G1铣锥度螺纹NPT
  2. 比较运算符(ComparisonOperator)
  3. 顶岗实习周记java方向_前途虽远,扶摇可接 | 商务日语专业顶岗实习动员大会...
  4. 有效数据包含额外数据_1-2-5 转换数据以包含在报表中
  5. Pycharm回车之后不能换行或不能缩进的解决方法
  6. php管道的概念,管道线的概念定义及分析技巧的讲解
  7. 组态软件运行在云服务器是上,如何将本地组态画面发布到云服务器
  8. java case switch面试_Java基础篇——Java中switch case语句用法及注意事项面试题9期
  9. 私有静态成员变量,在多线程环境,别的线程会修改当前线程的变量值
  10. 采用Jetty搭建简单的WebApplicationServer