Forge Viewer 中模型的默认值 material
Default material for model in Forge Viewer
我需要让完整模型使用默认 material(例如灰色),然后为每个节点使用外部定义的 material。
所以我正在寻找关于两点的建议:
1) 在所有节点上设置默认值 material。
2) 在从外部源获取给定节点后,为给定节点设置 material / 颜色。
是否可以在将模型加载到查看器之前的某个时刻完成此操作? (即服务器端)?如果没有,是否可以在查看器中完成?
来自 Forge 的所有几何体总是会为其定义一些 material,但是您可以遍历模型上所有对象的 dbID 并设置自定义 THREE.js material他们沿着这些方向使用了一些东西:
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);
});
}
}
我需要让完整模型使用默认 material(例如灰色),然后为每个节点使用外部定义的 material。
所以我正在寻找关于两点的建议: 1) 在所有节点上设置默认值 material。 2) 在从外部源获取给定节点后,为给定节点设置 material / 颜色。
是否可以在将模型加载到查看器之前的某个时刻完成此操作? (即服务器端)?如果没有,是否可以在查看器中完成?
来自 Forge 的所有几何体总是会为其定义一些 material,但是您可以遍历模型上所有对象的 dbID 并设置自定义 THREE.js material他们沿着这些方向使用了一些东西:
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);
});
}
}