2016-08-17 54 views
0

我有多個模型(最多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); 

這種隱藏和顯示是很慢的多個模型。此外,搜索單個對象的加載模型非常緩慢。在加載/顯示兩個模型之前,唯一的方法是始終啓動整個觀察者?我嘗試使用getState()和restoreState(),但這隻保存視圖。它沒有從觀衆中清除模型。

回答

1

aggregate sample實現這個功能,你可以找到在this githubdirect 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) 
}