Материал по умолчанию для модели в Forge Viewer - PullRequest
0 голосов
/ 01 февраля 2019

Мне нужно, чтобы полная модель использовала материал по умолчанию (например, серый цвет), а затем использовала внешне определенные материалы для каждого узла.

Поэтому я ищу несколько советов по двум пунктам: 1) Установка материала по умолчанию на всех узлах.2) Установка материала / цвета для заданных узлов после их извлечения из внешнего источника.

Может ли это быть сделано в какой-то момент до загрузки модели в средство просмотра?(т.е. на стороне сервера)?Если нет, можно ли это сделать в программе просмотра?

1 Ответ

0 голосов
/ 04 февраля 2019

Для всей геометрии, поступающей из 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);
        });
    }
}
...