[英]Forge Viewer Custom Shaders
我对着色器进行了一些研究,发现了这一点:
https://forge.autodesk.com/blog/forge-viewer-custom-shaders-part-1
我的问题是。 看起来这不仅会改变颜色,还会改变材质,这意味着您无法撤消它。 在我的情况下,我们需要能够撤消它(重置颜色和材质)。 我能以某种方式使这成为可能吗?
要撤消这些更改,您必须做一些事情以保持原始材料和Forge片段ID之间的关系。 例如,您可以创建一个数组来记住setMaterial
函数中的此映射,如下所示:
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 );
}
要还原材料,可以按照以下方式进行:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.