Um diese Änderungen rückgängig zu machen, müssen Sie etwas tun, um die Beziehungen zwischen Originalmaterialien und der ID des Forge-Fragments beizubehalten. Zum Beispiel können Sie ein Array zu erinnern, diese Abbildung in der Funktion setMaterial
, wie auf diese Weise erstellen:
setMaterial(fragIds, material) {
const fragList = this._viewer.model.getFragmentList();
// Array for kepping original materials of the Forge fragment.
if(!Array.isArray(this.materialMap)) {
this.materialMap = [];
}
this.toArray(fragIds).forEach((fragId) => {
// Keep material relations.
const originalMat = fragList.getMaterial(fragId);
this.materialMap[fragId] = originalMat;
fragList.setMaterial(fragId, material);
});
this._viewer.impl.invalidate(true);
}
für die Wiederherstellung Materialien, können Sie auf diese Weise folgen:
restoreMaterials() {
if(!Array.isArray(this.materialMap)) return;
for(let fragId in this.materialMap) {
const material = this.materialMap[fragId];
fragList.setMaterial(fragId, material);
}
this._viewer.impl.invalidate(true);
// Clean mappings.
this.materialMap.length = 0;
}
Vielen Dank für die ausführlichen und gute Hilfe – Mykita