Autodesk forge 如何为特定dbId设置独立材质
我正在使用以下代码为具有特定dbId的元素设置材质 getFragIdListFromGuid是我实现的一个函数,用于从特定dbId检索fragIdList。但我发现这张照片实际上改变了场景中所有的碎片材质。他们一起分享材料吗Autodesk forge 如何为特定dbId设置独立材质,autodesk-forge,Autodesk Forge,我正在使用以下代码为具有特定dbId的元素设置材质 getFragIdListFromGuid是我实现的一个函数,用于从特定dbId检索fragIdList。但我发现这张照片实际上改变了场景中所有的碎片材质。他们一起分享材料吗 const fragIdList = await getFragIdListFromDBId(this.dataComponents, this.instanceTree, dbId) fragIdList.forEach((fragId) => { let m
const fragIdList = await getFragIdListFromDBId(this.dataComponents, this.instanceTree, dbId)
fragIdList.forEach((fragId) => {
let material = fragList.getMaterial(fragId)
if (material) {
material.opacity = opacity
material.transparent = true
material.needsUpdate = true
}
})
有一种可能性,即材料在不同的碎片之间共享。要解决在处理和应用克隆之前克隆原始材料的问题,请执行以下操作:
let material = fragList.getMaterial(fragId).clone();
if (material) {
material.opacity = opacity
material.transparent = true
material.needsUpdate = true
}
viewer.impl.matman().addMaterial ('myCustomMaterial', material, true);
viewer.model.getFragmentList().setMaterial(fragId, material);
viewer.impl.invalidate(true);