【问题标题】:Rendering large STL files in threejs在threejs中渲染大型STL文件
【发布时间】:2018-11-16 18:47:48
【问题描述】:

我有这个 stl 模型,它有 >300 万个顶点并且必须在屏幕上渲染它。现在,使用 Threejs STL 加载器加载模型会使浏览器崩溃。根据一些研究,我正在考虑执行以下操作:

  1. 将 STL 文件流式传输到客户端并让 STL 加载器以 1mb 块加载模型

  2. 每次加载一个块时,我都可以创建一个缓冲区几何体并从中构造一个网格。我可以为每个块执行此操作并将所有网格添加到场景中。因此场景中会有多个网格,但看起来就像是原始模型。

我对如何执行第 2 步有一个很好的想法,但第一部分可能吗?正如我所描述的,three.js STL 加载器能否以块的形式加载 STL(假设它以块的形式交付给客户端)?

【问题讨论】:

  • 我会在我最喜欢的编辑器中将该模型拆分为多个模型,然后分别处理每个部分。在加载单个模型时合并几何图形。
  • 使用glTF 可以减少解析开销。我会从这个选项开始。
  • 你知道崩溃发生在哪里吗?这实际上是STLLoader 的问题,还是文件如何定义形状的问题?在不了解您的数据的情况下,我认为您的选项 2(或 @Hesha 建议的)是正确的方法。

标签: three.js


【解决方案1】:

Three.js STL 加载器不会为您执行此操作(它总是会加载整个文件然后解析)。

您必须自己分块加载和解析文件。这是一种非常简单的文件格式 (https://en.wikipedia.org/wiki/STL_(file_format)),但是您必须处理 STL 三角形结构跨越块的情况。

如果对您的应用程序有意义,另一个选项是读取文件并将其预处理为可以在浏览器中分块读取的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多