Unity手册-外部创建资源准则

角色建模的性能优化

  1. 使用单个带蒙皮的网格渲染器
    对于每个角色,仅应使用单个带蒙皮的网格渲染器。Unity 使用可见性剔除和包围体更新来优化动画,这些优化仅在您将单个动画组件和单个带蒙皮的网格渲染器组合使用时才会生效。如果使用两个蒙皮网格代替单个网格,模型的渲染时间大概会是单个网格的两倍,并且这样做很少能带来实际的意义。
  2. 使用尽可能少的材质
    尽可能减少每个网格上的材质数量。只有在需要为角色的不同部分使用不同着色器(例如,眼睛的特殊着色器)时,才应对一个角色使用多种材质。其余大多数情况下,每个角色有两到三种材质就应该足够了。
  3. 使用尽可能少的骨骼
    一般来说,骨骼的数量越少,性能就越好。但有些时候,您需要创建具有大量骨骼的角色:例如,在需要大量可自定义的连接时。这些额外骨骼会增加构建大小,并且每个额外的骨骼都可能带来相对处理成本。例如,在通用模式下,已拥有 30 个骨骼的绑定上增加 15 个骨骼会让 Unity 再花费 50% 的时间来解析,这可能会影响解析所花费的时间。
    请注意,对于通用和人形类型,您可以额外添加骨骼。如果未播放使用额外骨骼的动画,则处理成本应该可以忽略不计。如果连接不存在或为隐藏状态,此成本甚至会更低。
    出于性能原因,请使用每个顶点最多有四个影响的线性混合蒙皮。但是,某些 3D 建模应用程序允许四个以上的骨骼对顶点产生影响,因此必须在性能成本与更大程度的控制之间进行权衡。
  4. 尽量减少多边形数量
    您应该使用的多边形数量取决于您需要达到的视觉质量,以及您的目标平台。然而,以下两个相互冲突的事实都正确:
    ①在网格中使用的多边形越少,应用程序运行的速度就越快。这是因为每个顶点、边或面都需要计算资源。
    ②在网格中使用的多边形越多,游戏对象的外观就越细致和自然,因为较小的多边形使您可以在更大程度上控制形状。
    此外,还需要考虑其他元素也会争夺渲染资源。如果同时在屏幕上有很多游戏对象或地形对象,请考虑减少每个网格的多边形数量。
    与移动平台相比,桌面平台通常可以处理更多的复杂性,但是移动平台的性能可能会因设备本身的质量和能力而千差万别。
  5. 正向和反向动力学保持分离
    在导入动画时,Unity 会将模型的反向动力学 (IK) 节点将烘焙为正向动力学 (FK),因此 Unity 根本不需要 IK 节点。但是,如果这些节点留在了模型中,那么即使不影响动画,Unity 也会计算它们。可以在 Unity 或 3D 建模应用程序中删除冗余的 IK 节点。为了方便删除 IK 节点,应在建模时保留单独的 IK 和 FK 层级视图。

人形模型注意

  1. 建模
    此过程将在 3D 建模软件(如 Autodesk® 3ds Max®、Autodesk® Maya® 或 Blender)中创建自定义的人形网格。虽然这本身就是一个完整的主题,但为了确保模型在 Unity 项目中与动画顺利结合,可以遵循以下一些准则:
    ①使用结构良好的拓扑。网格“良好”结构的具体含义相当微妙,但一般来说,应注意模型的顶点和三角形在动画化时的扭曲情况。不良的拓扑要求必须扭曲网格才能移动模型。请研究现有的 3D 角色网格,了解拓扑的排列方式和原因。
    ②检查网格的比例。进行测试性导入,并将导入的模型的大小与“米立方体”(meter cube) 进行比较。标准 Unity 立方体图元的边长为一个单位,因此可在大多数用途中将其作为 1 米立方体。检查 3D 建模软件使用的单位并调整导出设置,使模型的大小与立方体成正比。创建没有任何比例概念的模型很容易,但这种做法的后果是,将模型导入 Unity 时可能产生一组大小不成比例的对象。
    ③对网格进行排列,使角色的双脚站在模型的局部原点或“锚点”上。由于角色通常在地面上直立行走,如果其锚点(即其变换位置)直接位于该地面上,则会大幅降低处理难度。
    如有可能,以 T 形姿势建模。这样可提供在必要位置(例如腋下)细化多边形细节的空间。此外也更容易将骨架放置在网格内。
    在构建时,清理您的模型。在可能的情况下,请盖住孔洞、焊接顶点并移除隐藏面。这有助于蒙皮,尤其是自动蒙皮过程。
  2. 骨架绑定
    此过程创建关节骨架来控制模型运动。
    3D 建模软件提供了多种方法为人形骨架创建关节。从现成的两足动物骨架(可以缩放这些骨架来适应个人需求的网格),一直到用于单独骨骼创建和父子化以自行创建骨骼结构的工具。为了在 Unity 中与动画结合使用,请确保它们是骨骼层级视图的根元素。骨架中至少需要 15 个骨骼。
    骨架必须具备所需的最少骨骼才能让 Unity 产生有效的匹配。为了提高与 Avatar 相匹配的机会,请确保骨骼的命名方式反映了其所代表的身体部位。例如,“LeftArm”和“RightForearm”明确显示了这些骨骼的控制对象。
    关节/骨骼层级视图应遵循所创建的角色的自然结构。鉴于手臂和大腿成对出现,应使用一致的约定来命名它们(例如,左臂为“arm_L”,右臂为“arm_R”)。层级视图的可能结构包括:
  • HIPS - spine - chest - shoulders - arm - forearm - hand
  • HIPS - spine - chest - neck - head
  • HIPS - UpLeg - Leg - foot - toe - toe_end
  1. 蒙皮
    此过程将网格连接到骨架。
    蒙皮过程涉及将网格中的顶点绑定到骨骼:既可直接绑定(刚性绑定),也可通过混合影响将顶点绑定到多个骨骼(软性绑定)。不同的 3D 建模软件应用程序使用不同的方法。例如,您可以分配各个顶点,并将每个骨骼的影响权重绘制到网格上。
    初始设置通常是自动化的:例如,通过查找最近的影响或使用__热图__。蒙皮通常需要进行大量的工作和动画测试,以便确保皮肤变形取得令人满意的结果。
    此过程的一些一般准则包括:
    ①最初使用自动化过程来设置某种蒙皮(请参阅 3D 建模软件提供的蒙皮教程)。
    ②为骨架创建简单的动画,或导入一些动画数据用于蒙皮测试。这样应该就能快速评估蒙皮是否在运动中看起来良好。
    ③逐步编辑和优化蒙皮解决方案。
    ④出于性能原因,在使用软性绑定时,请考虑将影响数限制为最多四个。这是 Unity 默认支持的最大数量。如果您的网格使用四个以上的影响,则可以选择以下两个选项之一:

    • 使用 Skin Weights 属性增大最大影响数。
    • 在从 Maya 导出模型之前使用 Bake Deformer 工具烘焙变形关节(使用 Maya 的顶部菜单:Skin > Bake Deformers to Skin Weights)。有关更多信息,请参阅 Autodesk 文档中的在角色上烘焙变形体 (Bake deformers on a character)。
  2. 导出并验证
    Unity 可导入许多不同的通用和原生 3D 文件格式。FBX 是导出和验证模型的推荐格式,因为可以使用它来执行以下操作:
    ①导出网格以及骨架层级视图、法线、纹理和动画。
    ②将网格重新导入 3D 建模软件,从而验证动画模型是否符合预期。
    ③导出不含网格的动画。

后续补充。。。。。。。。。。。。。。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值