AFrame+Three.js 在每个有几个三角形的多个网格和每个有很多三角形的几个

我正在使用带有 Three.js 111 的 Aframe 1.0.4,我目前正在尝试了解两者之间的性能更高 - 很少有实体有很多三角形 - 很多实体都有几个三角形

在这种特殊情况下,我试图了解将场景的地板加入一个大网格中是否更好,或者是否有许多不同的实体但三角形更少。

一般来说,我认为

  • 由于 AFrame(我将不得不加载许多 gltf 模型,实体的组件会随着它们的滴答声等重复)和 THREE.js(GPU 上的过多绘制调用、加载开销、获取等),因此拥有很多实体会引入开销)。

  • 拥有几个大实体会引入更长的加载时间(gltf-model),可能会引入更重的光线投射(但我不确定这一点,请确认),并且可能对三个上的转换(缩放/旋转等)进行更繁重的管理.js 端

以下是我场景中的一些平均数字:

  • 实体数量约为 40(简单的地板、墙壁、屋顶和更复杂的家具,如沙发、桌子、架子等),此外还有 2-10 个启用阴影的灯

  • 一个普通的架子大约有 25K

  • 三角形 一层 约 800 个三角形

我想知道的是:

  1. 一般来说,在性能方面,在具有大量三角形的少数实体和每个具有少量三角形的实体之间有什么更好的?

  2. 谈论像楼层这样的简单实体,在 3-4 个楼层之间,每个楼层有 1K 个三角形,或者 1000 个楼层,每个楼层有 4 个三角形,哪个更好?

  3. 我上面所说的假设是否正确?

我对 THREE.js/GPU(加载时间、绘制调用等)方面和 Aframe 方面(光线投射、组件开销等)都感兴趣。谢谢


ibeautiful
浏览 133回答 1
1回答

侃侃无极

绝对是 4 层,每层有 1k 个三角形更好。1000 个单独的网格将立即扼杀您的渲染性能。您希望将绘图调用的数量限制在最多几百个。物理学也是如此。弹药物理在内部使用包围体层次结构来提高碰撞计算的效率,因此对于静态几何体,绝对使用大网格而不是许多小网格。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript