Autodesk forge 锻造查看器:更改碎片材质

Autodesk forge 锻造查看器:更改碎片材质,autodesk-forge,Autodesk Forge,有没有办法改变现有碎片的材质?我看到文档中有一个函数,但它似乎是用于添加自定义模型,而不是操纵查看器中的现有片段 我特别希望更改材质,以便可以操纵片段的线宽。我尝试过操纵viewer.model.getFragmentList()的片段,特别是viewer.model.getFragmentList().getMaterial(I)及其属性(例如线宽),但没有成功,即使在通过viewer.impl.invalidate更新后,虽然这不是官方支持的查看器API的一部分,但您可以使用片段列表的set

有没有办法改变现有碎片的材质?我看到文档中有一个函数,但它似乎是用于添加自定义模型,而不是操纵查看器中的现有片段


我特别希望更改材质,以便可以操纵片段的线宽。我尝试过操纵
viewer.model.getFragmentList()
片段,特别是
viewer.model.getFragmentList().getMaterial(I)
及其属性(例如
线宽
),但没有成功,即使在通过
viewer.impl.invalidate

更新后,虽然这不是官方支持的查看器API的一部分,但您可以使用片段列表的
setMaterial
方法更改现有片段的材质,例如:

功能更改选定对象(查看器、自定义材质){
const materialManager=viewer.impl.matman();
materialManager.addMaterial('myCustomMaterial',customMaterial,true/*跳过材料启发式*/);
const model=viewer.model;
model.unsolidate();//如果合并模型,则材料更改不会产生任何影响
常量树=model.getInstanceTree();
const fragments=model.getFragmentList();
const dbids=viewer.getSelection();
for(dbid的常量dbid){
tree.enumNodeFragments(dbid,(fragid)=>{
frags.setMaterial(fragid,customMaterial);
});
}
}
有关更具体的示例,请参见

话虽如此,更改线宽可能更为棘手,尤其是在涉及修改二维图形的情况下。我认为这种定制还没有得到很好的探索