Forge Viewer中模型的默认材料

时间:2019-02-01 08:09:09

标签: autodesk-forge autodesk-viewer autodesk-model-derivative

我需要让完整的模型使用默认材质(例如灰色),然后为每个节点使用外部定义的材质。

所以我在两点上寻求一些建议: 1)在所有节点上设置默认材质。 2)设置从外部来源获取的给定节点的材质/颜色。

是否可以在将模型加载到查看器之前的某个时候完成? (即服务器端)?如果没有,可以在查看器中完成吗?

1 个答案:

答案 0 :(得分:1)

所有来自Forge的几何图形都将始终为其定义一些材料,但是您可以遍历模型上所有对象的dbID,并使用以下方法为它们设置自定义THREE.js材料:

function setCustomMaterial(viewer, dbids) {
    const material = new THREE.MeshPhongMaterial({
        color: 0xAB00EE,
        specular: 0xEEABEE
    });
    viewer.impl.matman().addMaterial('CustomMaterial', material, true);
    const fragList = viewer.model.getFragmentList();
    const instanceTree = viewer.model.getData().instanceTree;
    for (let dbid of dbids) {
        instanceTree.enumNodeFragments(dbid, function(frag) {
            fragList.setMaterial(frag, material);
        });
    }
}