UE4模型贴图优化

Posted 凯尔八阿哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4模型贴图优化相关的知识,希望对你有一定的参考价值。

一、前言

         本章的内容主要来源于虚幻4官方学习视频为优化性能而准备设计数据,还参杂了其他的内容,将这些内容进行了编排和节选,文章主要适用于技术美术人员处理模型时应该考虑的问题,同时也可以为技术Leader人员提供项目管理时需要考虑的知识。

二、内容

2.1、模型的坐标轴设置

        对模型进行轴的设置可以说是我们经常要遇到的问题,从建模工具中导出的模型如果设置的坐标轴不合适放到Unity或者UE4中不好拖动和调整。从技术上来讲这个根本就不是问题,但是为了获得在编辑时更好的体验,我们还是需要遵循一些原则。如为每个模型的坐标轴都放置在你希望它熊与其他对象连接以及旋转的位置,如图1所示

图1

台灯的模型坐标轴在3DMax中编辑时就调整到了与桌子衔接的位置。这样做的好处时方便台灯在桌面上的旋转和平移。

2.2、光照贴图及其问题

       光照贴图最后占用的其实是显卡的显存空间,而显存空间都是有限的,因此需要尽量减少光照贴图的大小。光照贴图通常都是自动在UE4中烘培完成,然而自动烘培的通常会有一些问题,比如UV贴图的问题,如图2所示,UV壳的边缘出现了黑色条条纹,这类问题通常会在UE4烘培结束时在MEssage Log中提示“Object Has overlapping UVs",

图2

这是一个壳过度染色另外一个壳造成的。

     另外,在烘培一些特殊形状的物体时规则的UV贴图也会造成明显的接缝问题,如图3所示,它的贴图如图4所示,这种贴图一般可以保证正常模型的烘培,在遇到类似于3这种特殊的模型就会出现问题,通常处理这些问题都是需要将光照贴图重现导入到3DMax软件中进行编辑。

图3
图4

2.3、优化几何体

        几何体如果出现重叠面翻转的法线、T型顶点、多边形数量过多等问题会导致材质的渲染效果变差,并且会在低端移动设备上或者在VR环境中导致帧率丢失。

1)适用四边形而不是三角形

当需要细分一个网格体或者降低它的复杂度以实现LOD时,考虑使用四边形而不是三角形,会更易于简化。比如图5所示为一个沙发模型,由一堆乱糟糟的三角形和夹杂的四边形组成如果要细分这个沙发模型不是一件容易的事情,如果想要网格体在实时渲染时由良好的效果,没有任何着色问题,最好使用基于四边形的网格体而非容易产生混乱的三

图5

角形。如图6所示基本上,任何在3D工具中看起来乱糟糟,诸如出现重叠面、T型顶点等,都可以使用3D建模工具自带的网格检查器自动查找这类错误。

图6

2)适用LOD

3Dmax中可以复制原模型,然后减少其网格数量,最后合并起来这样的过程快速制造LOD模型。这样做的好处是不用改变UV贴图。之所以要讲这个问题是提醒项目管理工作者,不要相信你的美术模型师在布置人物安排做LOD模型的时候告诉你需要将同一个模型做几遍这样的鬼话,真正需要做的工作可能就几分钟的时候,他们有可能只是懒得思考。

3)开启遮挡剔除

UE4默认是不启用遮挡剔除,可以在项目设置->引擎->渲染中找到并将其开启,如图7所示,勾选该项后,凡是不渲染的都会被剔除掉,从而减少性能的开销。

图7

2.4、纹理贴图处理

1)UE4支持的纹理最大分辨率为8K;

2)纹理的长度都要确保是2的幂数,否则UE4不会生成多级纹理,多级纹理就是包含不同分辨率的纹理;

3)如果大量适用4K或者8K的纹理,最后都把它们压缩成DDS格式;

4)尽量减少适用纹理的Alpha通道,因为它会极大增加纹理占用的显存空间。

2.5、如何处理深度冲突

       

深度冲突是一个很常见的问题,基本上看到的现象就是物体忽隐忽现,它的名称源于显卡的Z缓存,3D场景的深入信息在这里以纹理的形式存储,Z在这里代表指向屏幕里面的坐标轴。深度重冲突产生的原因有很多种,如

1)两个面在相同的位置出现重叠,两个面都在相互争取渲染在另外一个前面;

2)缺乏足够的Z缓存精度;

3)使用半透明材质,如图8所示,是由三种相互重叠的半透明材质,墙面、窗帘和灯罩,可以明显看到这里有深度问题;

图8

三、总结

如果想要了解更多建议看本篇内容原视频,我在这里只是记录和理解我需要的方面,也是为了今后管理工作的需要。作为技术人员,我经常要跟美术人员打交到,一不小心就被带跑偏了,掌握点模型方面的知识,知己知彼。另外,在面试模型美术时也作为一个专业方面的知识储备,我还从视频中扒了点题目下来,这些题目都是我看完视频之后认真解答的,可以在面试的时候作为一个测试题目,很凑巧的是这些题目的答案都是A。

1、使用FBX导入以将场景导入虚幻引擎时,哪些对象将无法进行正确转换?

A、VRay材质。

B、实例化的网格体。

C、标准材质。

D、实例化的网格体。

答案:A

2、如果导入的材质比例过大,那么在虚幻引擎中有何方法可用于修复材质比例?

A、使用纹理坐标节点和标量乘数来更改材质中纹理的比例。

B、重新导入网格体并使用从虚幻引擎自动生成的UV。

C、在静态网格体编辑器中缩放网格体UV以使材质在网格体上看上去比例正确。

D、向网格体材质添加纹理坐标节点。这样将自动设置相对于网格体正确的纹理比例。

答案:A

3、进行光照烘焙后,网格体上的接缝处阴影或光照看上去不正常的可能原因是什么?

A、光照贴图UV上的UV岛状区彼此过于靠近,导致光照泄漏至相邻岛状区上。

B、光照贴图分辨率过高。

C、网格体放大过大。

D、创建的UV岛状区相对于UV纹理过大。

答案:A

4、您想要提升网格体性能,网格体哪一方面会影响性能?

A、多边形计数。

B、UV通道数量。

C、比例。

D、与镜头的距离。

答案:A

5、LOD对于性能而言有何重要意义?

A、网格体的LOD将根据与镜头之间的距离减少网格体的多边形计数,从而减少屏幕上的多边形数量。

B、可以最大程度减少应用程序用于存储的空间,从而加快地图载入速度。

C、LOD根据与相机之间的距离来缩放网格体大小,从而降低远距离处网格体的渲染成本。

答案:A

6、对于纹理,Epic建议将其分辨率设置为2的幂值,原因何在?

A、以便在导入时生成mipmap。

B、大小为2的幂值的纹理最适合提升场景性能。

C、Datasmith将允许导入大小为2的幂值的纹理。

D、只有大小为2的幂值的纹理才能在导入时自动进行设置。

答案:A

7、Z轴冲突可能是由多个问题导致的,包括错误的近点裁剪/远点裁剪平面比、重叠材质过多,除此之外还有什么问题可能会导致此冲突?

A、多个网格体重叠或者某个网格体的多个面重叠。

B、UV岛状区重叠。

C、单个网格体上的材质过多。

D、缺少光照贴图UV。

答案:A

8、何种类型的光照将会受到光照贴图UV质量的影响?

A、静态光源和固定光源。

B、点光源和聚光源。

C、定向光源。

D、固定光源和动态光源。

答案:A

以上是关于UE4模型贴图优化的主要内容,如果未能解决你的问题,请参考以下文章

Unity对项目性能优化的实现

ue4导入模型后法线贴图不正常,如图片显示?

3Dmax 导入UE4

UE4在PSVR中的抗锯齿和优化相关知识

ue4导入模型后加入法线后贴图不正常,如图片所示?

Unity场景优化工具:Mesh Baker 基础教程(贴图篇)