问题描述
我正在使用 STL 加载器将 stl 文件加载到一个 Three.js 场景中。 这些 stl 文件的大小从 5mb 到 50mb。
有没有一种方法可以在模型加载时逐步加载/流式传输/增加细节级别(不确定正确的术语),以便我的用户在出现任何内容之前不会盯着空白屏幕几分钟?
如果模型是 20,000 个三角形,three.js 是否有一种方法可以先加载 2,000 个,然后再进行完全详细的模型?
1楼
antont
13
已采纳
2015-07-31 09:32:29
真正的渐进式加载/网格流不是开箱即用的。 不过这会很棒而且是可行的。
它已经通过 WebGL 完成,没有使用 POP 缓冲区的three.js: ://x3dom.org/pop/ &
演示之一是: :
我希望有一天我们也会为three.js 提供漂亮的POP 缓冲区(或类似的替代方案)渐进式加载——也在我/我们的待办事项/愿望清单中,但在此之前还有很多事情......当然不介意有人更早写了:)
三确实包含一个简单的 LOD 机制,但它有助于渲染加载而不是加载时间: : &
对于一个简单的解决方案,您可以编写模型的低版本和高版本,并编写自定义加载逻辑来首先加载低版本并显示它们,然后继续加载高版本等。
我们在一个项目中做到了这一点,按预期工作正常。 我能想到的唯一缺点是它增加了获得高版本的总时间。 但是低可以非常小所以没关系(在我们的例子中,低多边形没有纹理,只有垂直颜色,然后高多边形有更多的多边形,但本质上也是相当大的纹理)。
2楼
foobarbecue
2
2018-09-19 11:28:13
目前最好的解决方案是 ,它在过去几年中一直处于密集开发状态。 它有一个用于threejs的加载器。
3楼
Derek Wang
0
2020-05-05 00:41:26
Nexus 和 popbuffer 可能是渐进式 LoD 加载的正确解决方案。 但是,如果您只想尝试一个简单的(只是有效的)解决方案,建议看看这个: :
在GLTF格式的基础上,它逐个传输单个网格。 从某种意义上说,它减少了第一次渲染的等待时间。 实际上,如果您重新排列网格数据并使用流式缓冲区下载数据,您可能会获得渐进式加载/渲染的结果。