淘宝刷单网站建设,信息产业部网站备案系统,三个字吉利好听的公司名称,网页qq登录网址上期我们学习了最简单的audio音效的优化#xff0c;接下来我们继续model模型资源的优化#xff0c;我将汇总各路大神关于模型优化的思路和方法供你和我学习。
首先我们还是要把我们优化的目标重申一遍#xff1a;
优化的目标
1.文件体积尽可能小
2.内存占用尽可能小
3.…上期我们学习了最简单的audio音效的优化接下来我们继续model模型资源的优化我将汇总各路大神关于模型优化的思路和方法供你和我学习。
首先我们还是要把我们优化的目标重申一遍
优化的目标
1.文件体积尽可能小
2.内存占用尽可能小
3.画质够用 DCC中模型要求
Unity 支持多种标准和专有模型文件格式DCC。Unity 内部使用 .fbx 文件格式作为其导入链。最佳做法尽可能使用 .fbx 文件格式并且不应在生产中使用专有文件格式。优化原始导入模型文件删除不需要的数据 统一单位导出的网格必须是多边形拓扑网格不能是贝塞尔曲线、样条曲线、NURBS、NURMS、细分曲面等烘培Deformers,在导出之前确保变形体被烘培到网格模型上如骨骼形变烘培到蒙皮权重上不建议模型使用到的纹理随模型导出如果你需要导入blend shape normals必须要指定光滑组smooth groupsDCC导出面板设置, 不建议携带场景信息导出如不建议导出摄像机、灯光、材质等信息因为这些的信息与Unity内默认都不同。除非你自己为某DCC做过自定义导出插件。 Unity模型导入流程 原始模型文件对性能的影响点
最小化面数不要使用微三角形一定要使用lod对原始模型进行调整三角面尽量分布尽量均匀合理的网络拓扑和平滑组尽可能是闭包尽量少的使用材质个数 材质的增多同样会使shader和贴图的暴涨尽可能少的使用蒙皮网格尽可能少的骨骼数量 过多的骨骼数量后期可能会导致CPU和GPU的瓶颈FK与IK节点没分离unity不支持导入的ik骨骼导出时ik骨骼节点应删除 Unity模型的设置面板
Model界面 Scene场景级属性例如是否导入灯光和照相机以及使用什么比例因子。
Scale Factor缩放因子也就是模型导入后大小如果小了或者大了在这里直接改是相当于该模型的大小的而且在scale那栏里不会有缩放数值
Convert Units单位转换unity默认单位为米用咱们三维软件做的时候单位不统一的情况下在这里她会执行一遍单位转换默认是勾着的
Import BlendShapes是否导入BlendShape表情/混合形状。BlendShape表情主要工作量在美术美术制作好表情动画之后导入Unity中按照下面设置播放即可。美术方面美术额外导出一个FBX带有蒙皮信息、骨骼动画只保留一个造型、单独面部的动画信息Morphing经过测试只有美术网格、骨骼、蒙皮、Morphing动画一起导出来的Fbx才能保留表情动画信息。导入到Unity中基础模型要开启Import BlendShape对应的面部SkinnedMeshRenderer上会多出BlendShape的配置调整这些值就可以看到表情变化了。
Import Visibility可见性是否导入在编辑模型导出之前可以隐藏模型隐藏模型选上他了还是可以导出来勾选上这个在模型拖入场景时她会显示为隐藏状态
Import Cameras摄像机是否导入在3D软件打好摄像机了摄像机的信息会存在fbx里
Import Lights灯光信息是否导入在3D软件打好灯光了灯光的信息会存在fbx里
Preserve Hierarchy保留层次结构即使此模型只有一个根也要始终创建一个明确的预制根。通常FBX 导入会从模型中剥离所有空的根节点作为优化策略。但是如果您有多个FBX文件且它们具有相同层次结构的某些部分则可以使用此选项保留原始层次结构。例如file1.fbx包含一个装备而Mesh和file2.fbx包含相同的装备但仅包含该装备的动画。如果在未启用此选项的情况下导入file2.fbx则Unity会剥离根节点层次结构不匹配并且动画会中断。 Mesh网格的属性。
Mesh Compression设置压缩率级别以减小网格的文件大小。通过使用网格边界和每个组件较低的位深度来压缩网格数据增加压缩率会降低网格的精度。最好将其调高到尽可能高的水平而网格物体看起来与未压缩版本没有太大不同。这对于优化游戏大小很有用。off:不使用压缩;Low:使用低压缩率;Medium:使用中等压缩比;High:使用高压缩比。
Read/Write Enabled:启用此选项后Unity会将Mesh数据上传到GPU可寻址的内存但也将其保留在CPU可寻址的内存中。这意味着Unity可以在运行时访问Mesh数据并且您可以从脚本中访问它。例如如果您要按程序生成网格或者要从网格复制某些数据则可能要执行此操作。禁用此选项后Unity会将Mesh数据上传到GPU可寻址的内存然后将其从CPU可寻址的内存中删除。默认情况下此选项是禁用的。在大多数情况下要节省运行时内存使用量请禁用此选项。
Optimize Mesh:确定网格中三角形的排列顺序以提高GPU性能。(Nothing:没有优化Everything一切让Unity重排多边形和顶点的顶点和索引。这是默认值。Polygon Order多边形排序仅对多边形重新排序。Vertex Order顶点顺序仅对顶点重新排序。)
Generate Colliders启用自动生成网格碰撞器mesh collider。 Generate 与几何相关的属性用于处理拓扑UV和法线。
Keep Quads启用此选项可阻止Unity将具有四个顶点的多边形转换为三角形。例如如果您正在使用“镶嵌着色器”Tessellation Shaders则可能要启用此选项因为镶嵌四边形可能比镶嵌多边形更有效。Unity可以导入任何类型的多边形三角形到N-gon。无论此设置如何具有四个以上顶点的多边形始终会转换为三角形。但是如果网格具有四边形和三角形或将N形转换为三角形则Unity会创建两个子网格来分隔四边形和三角形。每个子网格仅包含三角形或仅包含四边形。提示如果要从3ds Max将四边形导入Unity则必须将其导出为可编辑多边形。
Weld Vertices合并在空间上具有相同位置的顶点但前提是它们在整体上具有相同的属性包括UV法线切线和顶点颜色。通过减少网格的总数可以优化网格上的顶点数。默认情况下启用此选项。在某些情况下导入网格物体时可能需要关闭此优化。例如如果您故意有重复的顶点在网格中占据相同位置则您可能更喜欢使用脚本来读取或操纵单个顶点和三角形数据。
Index Format定义网格索引缓冲区的大小。注意出于带宽和内存存储大小的原因您通常希望将16位索引保留为默认值并且在必要时仅使用32位这是“自动”选项所使用的。Auto让Unity根据网格顶点数来决定在导入网格时是使用16位索引还是32位索引。这是在Unity 2017.3及更高版本中添加的资产的默认设置。16bit导入网格时使用16位索引。如果网格较大则将其划分为64k个顶点块。这是Unity 2017.2或更早版本中创建的项目的默认设置。32bit导入网格时使用32位索引。如果您使用的是基于GPU的渲染流水线例如使用计算着色器三角形剔除使用32位索引可确保所有Mesh都使用相同的索引格式。这减少了着色器复杂性因为它们只需要处理一种格式。
Legacy Blend Shape Normals计算法线的旧方法版本2017.1之前。在某些情况下与当前实施方式相比它给出的结果略有不同。这是所有FBX预制件的默认设置在将项目迁移到最新版本的Unity之前导入。
Blend Shape Normals2019版本定义是否以及如何计算混合形状的法线。使用与“法线”属性相同的值。
Normals定义是否以及如何计算法线。这对于优化游戏大小很有用。(Import从文件导入法线‘’这是默认选项。如果文件不包含法线则将对其进行计算。Calculate计算根据法线模式平滑度源和平滑角如下计算法线。None禁用法线。如果网格既不是法线贴图也不是实时光照的影响则使用此选项。)
Normals Mode定义Unity如何计算法线。仅在将法线设置为计算或导入时可用。Unweighted Legacy计算法线的旧方法版本2017.1之前。在某些情况下与当前实施方式相比它给出的结果略有不同。这是所有FBX预制件的默认设置在将项目迁移到最新版本的Unity之前导入。Unweighted法线不加权。Area Weighted法线由面的面积大小加权。Angle Weighted法线由每个面上的顶角大小加权。Area and Angle Weighted法线由面的面积和每个面的顶角加权。这是默认选项。
Smoothing Angle控制是否为硬边分割顶点通常较高的值会减少顶点。注意仅在非常光滑的物体或非常高的多边形模型上使用此设置。否则最好在3D建模软件中手动进行平滑处理然后将“法线”选项设置为“导入”如上进行导入。由于Unity的硬边仅基于一个角度所以您可能会错误地对模型的某些部分进行平滑处理。仅在将法线设置为计算时可用。
Tangents:定义应如何导入或计算顶点切线。仅在将法线设置为计算或导入时可用。Import如果将法线设置为导入则从FBX文件导入顶点切线。如果“网格”没有切线则它不适用于法线贴图着色器。计算切线空间使用MikkTSpace计算切线。Calculate Tangent Space如果“法线”设置为“计算”则这是默认选项。Calculate Legacy使用传统算法计算切线。Calculate Legacy - Split Tangent使用传统算法计算切线并在UV图表上进行分割。如果法线贴图使用此网格上的接缝破坏了照明。这通常仅适用于字符。None不导入顶点切线。网格没有切线因此不适用于法线贴图着色器。
Swap UVs交换网格中的UV通道。如果漫反射纹理使用光照贴图中的UV请使用此选项。Unity最多支持八个UV通道但并非所有3D建模应用程序都导出两个以上的通道。
Generate Lightmap UVs:为光照贴图创建第二个UV通道。 Rig 这一栏也就是我们俗称的骨骼 Animation Type有四个选项分别是None/Legacy/Generic/Humanoid
None没有骨骼静态物件就选这个 Legacy使用旧版动画系统。与Unity 3.x及更早版本一样导入和使用动画。 Generic如果您的装备不是类人动物四足动物或要进行动画处理的任何实体请使用通用动画系统。Unity选择一个根节点但是您可以标识另一个骨骼作为“根”节点代替。用自己的骨骼系统分类Humanoid如果您的装备是类人动物它有两条腿两条手臂和一个头请使用类人动物动画系统。Unity通常会检测骨架并将其正确映射到头像。在某些情况下您可能需要更改“头像定义”并手动配置映射。用unity通用的四足动物骨骼分类可以动画通用。
Animation Materials Material Creation Mode里面选项有None、Standard、Import via MaterialDescription Experimental
None不导入材质Standard导入材质用标准材质球也就是StandardImport via MaterialDescription Experimental根据Fbx里面的材质信息分析用的什么材质比如 Autodesk Interactive Location:
Use External Materials Legacy:使用外部材质也就是她会直接导出材质到当前materials文件夹Use Embedded Materials嵌入材料就和prefab似的可以手动赋予。
Extract Textures和Extract Materials 就是导出材质和贴图。 导出贴图就是在导出FBX时候勾选了 Embed Media 的时候会显示直接从FBX里导出里面的贴图
Extract Materials 是Location选择Use Embedded Materials时有效。因为刚导入的FBX材质都会在FBX内部发现不能修改也不建议这么做所以需要手动导出来或者手动赋予一个材质。 下面On Demand Remap部分就是一些导出材质或者索引材质的命名规则了。导出之前一定要先设置这部分
Naming这部分就是命名了
By Base Texture Name使用主贴图命名From Models Material使用原本的材质球命名Model Name Models Material使用模型命名材质命名Search部分是下面Search and Remap按钮查找以有材质自动挂到材质上的索引规则
Local Materials Folder 当前的Materials
Recursive-Up 从当前文件夹往Assets根目录查找Project-Wide项目所有的位置
下面一堆材质部分就是Location选择Use Embedded Materials时会显示 用来察看已挂在的材质和手动挂载用 优化过程
尽可能的将网格合并到一起尽可能使用共享材质不要使用网格碰撞体不必要不要开启网格读写使用合理的LOD级别Skin Weights受骨骼影响个过多合理压缩网格不需要rigs和BlendShapes尽量关闭如果可能禁用法线或切线多套模型
以下是在处理导入Unity的网格(模型)时要记住的几点。可以根据设置来改进导入模型数据的性能。应注意以下四点。
已启用读写Read/Write Enabled顶点压缩Vertex Compression网格压缩Mesh Compression优化网格数据Optimize Mesh Data
1.Read/Write Enabled
第一个网格注释是Read/Write Enabled。模型检查器中的这个选项在默认情况下是禁用的。 如果你不需要在运行时访问网格你应该禁用它。具体来说如果模型被放置在Unity中并且只用于播放AnimationClip, Read-/Write Enabled可以禁用。 启用读/写将消耗两倍的内存因为CPU可访问的信息存储在内存中。请检查一下因为简单地禁用它将节省内存。
2.Vertex Compression
顶点压缩是一个将网格顶点信息的精度从float改为half的选项。这可以在运行时减少内存使用和文件大小。 但是请注意在以下条件下顶点压缩是禁用的 •已开启读写功能 •Mesh Compression是启用的 •启用动态批处理和可适应的网格(少于300个顶点和少于900个顶点属性)
3.Mesh Compression
网格压缩允许你改变网格的压缩比。压缩比越高文件大小越小占用的存储空间越少。压缩后的数据在运行时解压缩。因此运行时的内存使用不会受到影响。 网格压缩提供了四种压缩设置。
Off:未压缩Low:低压缩Medium:中等压缩High:高压缩 4.Optimize Mesh Data
优化网格数据是一个功能自动删除不必要的顶点数据从网格。不必要的顶点数据将根据使用的着色器自动确定。这将减少运行时的内存和存储。 可以在“Project Settings - Player ”下的“Other ”中进行设置。但是可能会导致模型的动画不正确 这个选项很有用因为它会自动删除顶点数据但要注意它可能会导致意想不到的问题。例如在运行时切换材质和着色器时访问的属性可能会被删除导致不正确的渲染结果。当只绑定网格资源时不正确的材质设置可能会导致不必要的顶点数据。这在只提供网格参考的情况下很常见例如在粒子系统中。
5.如果模型未使用法线、切线、光照UV等可以设置为None或取消勾选 6.勾选Rig中的Optimize Game Objects可以优化模型
7.没有动画的模型取消勾选Animation中的Import Animation 8.通过Anim.Compression选择合适的动画压缩策略 今天是2024年11月21日
重复一段毒鸡汤来勉励我和你
你的对手在看书
你的仇人在磨刀
你的闺蜜在减肥
隔壁的老王在练腰
而你在干嘛