隐藏节点性能

时间:2016-09-09 11:49:12

标签: autodesk-forge autodesk-viewer

当隐藏节点时,使用较大的IFC HVAC型号(80000节点及以上),性能似乎会大幅下降。在标准计算机上,这需要将近10秒钟。我有两个模型,想要隐藏其中一个。目前,这是使用rootId完成的。是否有任何修改可以加快速度?什么是隐藏所有节点的最快方法?

var vm = new Autodesk.Viewing.Private.VisibilityManager(viewer.impl, viewer.model);
var instanceTree = viewer.model.getData().instanceTree;
var rootId = instanceTree.getRootId();
vm.hide(rootId);
vm.setNodeOff(rootId, true);

当显示相同文件的部分时,只有几千个节点,这似乎要快得多。尽管节点一个接一个地显示出来。

var totalNodes = nodesToIsolate.length;
for (var i = 0; i < totalNodes; i++) {                          
   vm.show(nodesToIsolate[i]);
   vm.setNodeOff(nodesToIsolate[i], false); // True = hide completely                            
}

1 个答案:

答案 0 :(得分:1)

所以你说第二种方法比第一种方法快得多......在这种情况下是什么阻止你使用第二种方法而不是第一种方法呢?您可以从rootId遍历模型结构以确定所有节点,然后使用第二种方法,或者我错过了什么?

我猜测更快的方法是影响模型的每个片段的自定义ShaderMaterial并控制着色器代码的可见性,但是遍历模型以影响材质也需要时间,但操作可能在较早阶段进行。

此外,您可以使用 viewer.impl.unloadModel(model)从场景中完全卸载模型,显然如果您需要稍后恢复它需要时间。