three.js - 3d gltf模型渲染优化(threejs)
问题描述
我在 iPad 上使用 threejs 加载一些 3d gltf 模型时遇到问题。加载实际上工作正常,它在台式电脑和安卓平板电脑上加载正常,但在我的具体情况下,它需要在 iPad 平板电脑上运行并且页面不断崩溃,因为它耗尽了所有试图渲染模型的内存(我猜Android 为浏览器提供了更多内存使用)。
我的问题是如何优化模型以使其能够在 iPad 上运行?我的第一个想法是顶点/索引等的数量会影响渲染,但事实证明,具有更多顶点和索引的模型能够加载,而“优化”模型无法加载。我们将模型放入巴比伦在线预览器以查看其信息,我注意到,与不起作用的新模型相比,具有更多顶点和索引的旧模型具有更少的网格和更少的绘制调用。那么我们应该专注于优化而不是顶点和索引的数量吗?
问题是我们需要优化模型以在 iPad 上渲染,但我不知道模型的哪一部分需要优化,因此非常感谢任何帮助!
PS我尝试实现DRACO压缩和DRACOLoader,但它没有帮助,因为它只是压缩文件,一旦它需要在屏幕上呈现,压缩就根本无关紧要,因为它基本上仍然是需要的相同3d文件呈现。如果需要,我可以共享代码,但我认为这并不重要,因为加载没有问题,只是模型没有优化。
解决方案
过大的纹理是问题所在。我们有 2048x2048px 的纹理,但里面只有一种颜色。所以我把所有的纹理缩小到 1x1px 并且效果很好。
推荐阅读
- python - SVC 找不到属性“_probA”
- r - 使用 facet_grid 在 ggplot 中自动设置数据代表中断
- mysql - 定制 Camunda 平台
- c# - 在 TimeSeriesPredictionEngine ML.NET 时间序列 ForecastbySsa 中使用 DateTime 预测值
- python-3.x - 比较两个列表元素的更快方法
- javascript - 在 notify.js 中完成 HTML
- java - APK 不工作 膨胀 NavigationView 时出错
- django - 序列化来自另一个模型的特定字段
- java - 如何获取在我的 spring 错误控制器中抛出的异常类
- scala - 如何过滤列表哪些元素以非降序排列