删除不需要的模型
Removing unnecessary models
我有多个模型(最多 20 个模型),每次我只想从中加载两个模型。有没有办法在加载新模型之前清除查看器或删除加载的模型。
目前先隐藏所有模型
function hideAllModels() {
for (var i = 0; i < loadedModels.length; i++) {
var instanceTree = loadedModels[i].getData().instanceTree;
var rootId = instanceTree.getRootId();
var vm = new Autodesk.Viewing.Private.VisibilityManager(viewer.impl, loadedModels[i]);
vm.hide(rootId);
vm.setNodeOff(rootId, true);
}
}
然后显示我想要的。
var vm = new Autodesk.Viewing.Private.VisibilityManager(viewer.impl, viewer.model);
vm.setNodeOff(rootId, false);
vm.show(rootId);
对于多个模型,这种隐藏和显示速度非常慢。此外,在加载的模型中搜索单个对象的速度也非常慢。在 loading/showing 这两个模型之前始终启动整个查看器的唯一方法是什么?我也尝试使用 getState() 和 restoreState(),但这只会保存视图。它不会从查看器中清除模型。
这个aggregate sample implements this feature, you can find the source code at this github (direct link), 但我在下面复制:
deleteModel (model, fireEvent = true) {
delete this.modelCollection[model.modelId]
if(Object.keys(this.modelCollection).length === 0){
this.firstModelLoaded = null
}
if(fireEvent) {
this.emit('model.delete', model)
}
this._viewer.impl.unloadModel(model)
}
我有多个模型(最多 20 个模型),每次我只想从中加载两个模型。有没有办法在加载新模型之前清除查看器或删除加载的模型。
目前先隐藏所有模型
function hideAllModels() {
for (var i = 0; i < loadedModels.length; i++) {
var instanceTree = loadedModels[i].getData().instanceTree;
var rootId = instanceTree.getRootId();
var vm = new Autodesk.Viewing.Private.VisibilityManager(viewer.impl, loadedModels[i]);
vm.hide(rootId);
vm.setNodeOff(rootId, true);
}
}
然后显示我想要的。
var vm = new Autodesk.Viewing.Private.VisibilityManager(viewer.impl, viewer.model);
vm.setNodeOff(rootId, false);
vm.show(rootId);
对于多个模型,这种隐藏和显示速度非常慢。此外,在加载的模型中搜索单个对象的速度也非常慢。在 loading/showing 这两个模型之前始终启动整个查看器的唯一方法是什么?我也尝试使用 getState() 和 restoreState(),但这只会保存视图。它不会从查看器中清除模型。
这个aggregate sample implements this feature, you can find the source code at this github (direct link), 但我在下面复制:
deleteModel (model, fireEvent = true) {
delete this.modelCollection[model.modelId]
if(Object.keys(this.modelCollection).length === 0){
this.firstModelLoaded = null
}
if(fireEvent) {
this.emit('model.delete', model)
}
this._viewer.impl.unloadModel(model)
}