以下是一些创建模型以获得最佳性能的技巧。其中一些技巧适用于所有模型,而另一些技巧仅适用于动画模型
使用这些技巧可能会帮助提高模型的动画和渲染速度,但请注意,它们也可能会降低您试图实现的视觉保真度和真实效果。对于每种情况,都没有一个单一的答案可以完美平衡更好的性能和视觉真实感。您必须根据角色的复杂性和您的场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是分段设计和构建您的游戏。 更多信息
参见 术语表与您所需的整体外观和真实感之间的平衡。
您应该使用多少个多边形取决于您所需的视觉质量和您所针对的平台。这两个相互矛盾的事实同样属实
还要考虑其他哪些因素在争夺渲染资源。如果您同时在屏幕上显示大量游戏对象或地形场景中的景观。地形游戏对象会在场景中添加一个大的平面,您可以使用地形的检查器窗口来创建详细的景观。 更多信息
参见 术语表对象,请考虑减少每个网格的多边形数量。
请注意,图形硬件必须处理的实际顶点数量通常与建模应用程序报告的数量不同。建模应用程序通常显示构成模型的不同角点的数量(称为几何顶点计数)。但是,对于图形卡,某些几何顶点需要为渲染目的而拆分为两个或多个逻辑顶点:例如,如果顶点具有多个法线、UV 坐标或顶点颜色,则必须拆分顶点。因此,Unity 中的顶点计数通常高于 3D 应用程序提供的计数。
尽可能减少每个模型上的材质定义表面如何渲染的资源。 更多信息
参见 术语表数量。仅当需要对不同部分使用不同的着色器在 GPU 上运行的程序。 更多信息
参见 术语表时,才在角色上使用多个材质;例如,您可能会对角色模型的眼睛使用特殊的着色器。
对于使用蒙皮网格渲染器的动画角色模型,您应该每个角色只使用一个这样的组件。Unity 的动画系统使用可见性剔除和包围盒表示碰撞体或触发器边缘和面的封闭形状。
参见 术语表更新来优化动画。只有当您在一个模型上使用一个动画组件和一个蒙皮网格Unity 的主要图形基元。网格构成了 3D 世界的大部分内容。Unity 支持三角形或四边形多边形网格。NURBS、NURMS、细分曲面必须转换为多边形。 更多信息
参见 术语表渲染器时,它才会激活这些优化。
使用两个蒙皮网格代替一个蒙皮网格可能会使模型的渲染时间大致翻倍,而且使用多个网格几乎没有任何实际优势。
一般来说,使用的骨骼越少,性能越好。但是,有时您需要创建具有大量骨骼的角色模型:例如,当您想要大量可自定义的附件时。这些额外的骨骼会增加构建的大小,并且每个额外的骨骼可能会产生相对的处理成本。例如,在已经拥有 30 根骨骼的绑定中添加 15 根骨骼,需要 Unity 多花费 50% 的操作来在通用模式下求解,这可能会影响求解所需的时间。
请注意,您可以为通用和人形类型添加额外的骨骼。当您没有使用这些额外的骨骼播放任何动画时,处理成本应该可以忽略不计。如果它们的附件不存在或隐藏,则此成本甚至更低。
出于性能考虑,请使用线性混合蒙皮将骨骼关节绑定到角色网格或“皮肤”顶点的过程。使用外部工具(如 Blender 或 Autodesk Maya)执行。 更多信息
参见 术语表,每个顶点最多具有四个影响。但是,一些 3D 建模应用程序允许超过四个骨骼影响顶点,因此您必须权衡性能成本与更大的控制权。
当 Unity 导入动画时,它会将模型的逆向运动学 (IK) 节点烘焙到正向运动学描述角色关节和身体位置和方向的几何图形。逆向运动学用于控制角色运动。
参见 术语表 (FK) 中,因此 Unity 完全不需要 IK 节点。但是,如果它们保留在模型中,则 Unity 仍然将它们包含在计算中,即使它们不影响动画。您可以在 Unity 或 3D 建模应用程序中删除冗余的 IK 节点。为了方便删除 IK 节点,在建模时请保持单独的 IK 和 FK 层次结构。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.