【问题标题】:Autodesk Forge Viewer - Selecting large number of elements (performance)Autodesk Forge Viewer - 选择大量元素(性能)
【发布时间】:2021-01-13 22:24:37
【问题描述】:

我在 Autodesk Forge Viewer 中加载了一个大型联合模型(来自多个 IFC 文件的约 300k 元素)。我正在做这样的跨模型(聚合)选择:

var selection = [{model1 : [ids...]}, {model2 : [ids...]}, {model3: [ids...]}, etc...);
viewer.impl.selector.setAggregateSelection(selection);

现在,鉴于所选元素的数量达到 100k+,这会使 UI 冻结几秒钟,然后一旦所有元素在查看器中突出显示,查看器的性能 (fps) 就会显着下降。切换到隔离而不是选择(突出显示)可以提高查看器的性能,但在执行此操作时仍会冻结 UI 几秒钟。

在进行这些大型选择时是否有任何性能提示,选择/隔离过程是否可以异步完成以使 UI 感觉更灵敏?

干杯

【问题讨论】:

    标签: performance selection autodesk-forge autodesk-viewer


    【解决方案1】:

    恐怕选择机制(状态切换和渲染)没有针对这些数字进行优化,并且没有办法自己优化。这将需要在内部查看器实现中更新代码。

    不过,在我们将其传递给工程团队之前,我想询问一下您的实际用例。选择功能通常用于将用户的注意力吸引到设计中的一个(或少量)元素,或允许用户选择一个(或少量)元素进行进一步处理。但是选择 100k+ 元素,然后在选择了 100k+ 元素的情况下继续使用查看器?你到底需要什么?您是否考虑过使用查看器的其他功能,例如theming colors

    【讨论】:

    • 嗨彼得,感谢您的回答。它实际上并没有太多选择,目标是使一组元素弹出其他元素,以使其对用户更明显。用例可以有很多,例如选择面积 > 10m2 的元素、在某个阶段构建的元素、具有开口的元素等。主题化是否能够有效地处理大量元素?
    • 主题颜色内置在标准材质/着色器中,所以我相信这绝对是一种更好的方法。
    • 很好,会试试。还有一件事,是否有可能为许多模型(如 setAggregateSelection(selection))上的多个元素提供聚合主题?在 API 文档中,它似乎只接收一个 dbid 和模型作为参数。
    • 主题化实际上是在几个层次上提供的:(1)通过viewer.setThemingColor(指定模型和对象ID),(2)通过model.setThemingColor(dbid, color, recursive),或(3)通过@987654324 @ 在片段列表级别(每个模型都有一个“片段”的平面列表,代表各个几何形状及其材料、xforms 等)。
    • 不过,我认为没有更高级别的功能。如果您想在多模型场景中为某些东西着色,您需要告诉我们我们正在谈论的模型。
    猜你喜欢
    • 2017-05-05
    • 2021-01-16
    • 2020-05-06
    • 2020-01-16
    • 2021-05-13
    • 2020-05-15
    • 2020-09-25
    • 2020-10-30
    • 2021-11-26
    相关资源
    最近更新 更多