无法在 Forge 查看器中完全隐藏模型

Not able to completely hide model in forge viewer

我试图在 forge-viewer 中隐藏完整模型,为此我调用 forge 可见性 API 如下:

viewer.impl.visibilityManager.setNodeOff(viewer.model.getModelId(),true)

其中 viewer 是 GUIViewer3D 的对象。

但这并没有隐藏完整的模型,模型中的一些组件仍然可见。

我认为这是 forge-viewer 中的错误,因为如果我将模型的根节点传递给 setNodeOff() API,它必须隐藏整个模型。我确定我的查看器会话中只加载了一个模型。

Refer this image 对于调用 viewer.impl.visibilityManager.setNodeOff(viewer.model.getModelId(),true)

后仍然可见的元素

getModelId() returns 模型 ID,可见性 API 需要 节点 ID。为了隐藏整个模型,请考虑以下事项:

viewer.hide(model.getRootId());

你能帮我试试吗...

在转换 .RVT 文件时,能否尝试将 header 'x-ads-force':'true' 添加到 POST 作业请求中?

这是关于 API 请求的文档... https://forge.autodesk.com/en/docs/model-derivative/v2/reference/http/job-POST/#headers

然后,像以前一样检索 URN 并将其提供给 Forge Viewer,如下例所示: https://forge.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-manifest-GET/#example

.

So... What's going on?

当您将 RVT 转换为 SVF(对于 Forge Viewer)时,它会生成一组随机的 DBIds。

当您调用 GetProperties API 时,它会使用缓存的 SVF 提取 DBIds 并为您提供结果。

早在 8 月份,GetProperty API 引擎就已更新。与旧的转换后的 SVF 相比,它产生不同顺序的 DBIds。

由于缓存了旧的SVF,即使提交新作业,也会使用旧的SVF。

为了避免使用旧的 SVF,我们需要 'force convert' RVT 到 SVF 的转换,以刷新缓存,以便新的 SVF 可见并且 Forge Viewer 可以检索它。

一旦 Forge Viewer 可以看到新的 SVF,它应该匹配 GetProperties 的 DBIds API。

复杂吧?

让我知道这是否解决了问题。

由于我的目标是对查看器完全隐藏模型,因此我通过以下方式实现了这一点:

viewer.clearSelection(); viewer.model.setAllVisibility(0); viewer.impl.toggleGhosting(false); viewer.impl.toggleGroundShadow(false);

这给了我所需的行为。我无法隐藏的元素现在通过这种方法隐藏了。

要完全隐藏模型,您可以隔离一个空列表,这将显示整个模型重影,然后您可以全局关闭重影

viewer.isolate([]);
viewer.setGhosting(false);