当前位置: 代码迷 >> JavaScript >> Three.js 中的渐进式加载 / LOD / 流式网格
  详细解决方案

Three.js 中的渐进式加载 / LOD / 流式网格

热度:45   发布时间:2023-06-05 11:42:05.0

我正在使用 STL 加载器将 stl 文件加载到一个 Three.js 场景中。 这些 stl 文件的大小从 5mb 到 50mb。

有没有一种方法可以在模型加载时逐步加载/流式传输/增加细节级别(不确定正确的术语),以便我的用户在出现任何内容之前不会盯着空白屏幕几分钟?

如果模型是 20,000 个三角形,three.js 是否有一种方法可以先加载 2,000 个,然后再进行完全详细的模型?

真正的渐进式加载/网格流不是开箱即用的。 不过这会很棒而且是可行的。

它已经通过 WebGL 完成,没有使用 POP 缓冲区的three.js: ://x3dom.org/pop/ &

演示之一是: :

我希望有一天我们也会为three.js 提供漂亮的POP 缓冲区(或类似的替代方案)渐进式加载——也在我/我们的待办事项/愿望清单中,但在此之前还有很多事情......当然不介意有人更早写了:)

三确实包含一个简单的 LOD 机制,但它有助于渲染加载而不是加载时间: : &

对于一个简单的解决方案,您可以编写模型的低版本和高版本,并编写自定义加载逻辑来首先加载低版本并显示它们,然后继续加载高版本等。

我们在一个项目中做到了这一点,按预期工作正常。 我能想到的唯一缺点是它增加了获得高版本的总时间。 但是低可以非常小所以没关系(在我们的例子中,低多边形没有纹理,只有垂直颜色,然后高多边形有更多的多边形,但本质上也是相当大的纹理)。

目前最好的解决方案是 ,它在过去几年中一直处于密集开发状态。 它有一个用于threejs的加载器。

Nexus 和 popbuffer 可能是渐进式 LoD 加载的正确解决方案。 但是,如果您只想尝试一个简单的(只是有效的)解决方案,建议看看这个: :

在GLTF格式的基础上,它逐个传输单个网格。 从某种意义上说,它减少了第一次渲染的等待时间。 实际上,如果您重新排列网格数据并使用流式缓冲区下载数据,您可能会获得渐进式加载/渲染的结果。

  相关解决方案