【发布时间】:2016-02-04 05:10:23
【问题描述】:
我正在为 Android 使用 Unity 制作 3D 游戏。在游戏中,屏幕上可能同时出现一个主角和最多大约 10 个对手,所有对手都使用相同的模型(“对手”的预制件仅在一种材料上与其他颜色不同)。
该模型是使用 MakeHuman 和 Blender 设计的。
在 PC 上(因为渲染要快得多)没有问题,但在 Android 设备上测试时,当有 3-4 个或更多物体时,渲染时间会将帧速率降低到 25-30 FPS 左右屏幕,创造一种真正“滞后”的感觉(我预计帧速率约为 60 FPS)。
在导入 Blender 模型之前,我使用了占位符球体并且没有这样的行为。由于这是我第一次使用 Blender 和这样的 3D 模型,我不确定我的模型是否在手机游戏的预期尺寸范围内。我当前的模型包括:5,956 Verts, 10,456 Faces, 10,819 Tris,文件大小约为 6.5 MB(最初由 MakeHuman 生成的更大,但我设法对其进行了压缩和优化,但仍然没有重大影响)。
我尝试了不同的解决方案,包括将模型中的所有网格合并为一个、关闭阴影、使用尽可能少的材料等。所有尝试都没有或非常有限的改进。
欢迎任何想法。干杯!
【问题讨论】:
-
您模型的分辨率(5,956 Verts,10,456 Faces,10,819 Tris,文件大小约为 6.5 MB)对于 PC 来说似乎还可以,但对于移动平台,您应该瞄准十分之一这个数量(每个角色模型大约 500-600)。如果您的目标是在屏幕上显示更多内容而不仅仅是几个,那么您需要降低(这没关系,因为您的相机也会更远)。
-
根据您的世界有多大,LOD 可能会有很大帮助。
-
我的世界比较小,有时候应该会很拥挤。将模型减少到大约 900 个顶点通常可以解决问题(尽管如建议的那样,在屏幕上显示 7-8 个实例会导致一些延迟)。
标签: android unity3d blender makehuman