Forge viewer: Как отключить прозрачность в разделе Материалы - PullRequest
0 голосов
/ 15 февраля 2019

Чтобы установить цвета на многих объектах в программе просмотра кузницы, я сделал расширение, которое устанавливает цвет на материале и соединяет объекты с ним.Таким образом, я обновляю зрителя только один раз, а не несколько раз.Однако я не хотел бы иметь прозрачность, но я продолжаю получать ее, даже если я установил материальную прозрачность как ложную.Как я могу это исправить?

void setColorMaterial(material, viewer) 
{
    var mesh_material = this.addMaterial(material, viewer)

    for (var i=0; i< material.dbIds.length; i++) {
        var dbid = material.dbIds[i]

        var it = viewer.model.getData().instanceTree
        it.enumNodeFragments(dbid, function (fragId) {
            var renderProxy = viewer.impl.getRenderProxy(viewer.model, fragId)
        renderProxy.meshProxy = new THREE.Mesh(renderProxy.geometry, renderProxy.material)
        renderProxy.meshProxy.matrix.copy(renderProxy.matrixWorld)
        renderProxy.meshProxy.matrixWorldNeedsUpdate = true
        renderProxy.meshProxy.matrixAutoUpdate = false
        renderProxy.meshProxy.frustumCulled = false
        viewer.impl.addOverlay(material.name, renderProxy.meshProxy)
      }, false)
    }
    this.materialHolder.push(material)
    viewer.impl.invalidate(true)
}

void addMaterial(material, viewer) 
{
    var mesh_material = new THREE.MeshPhongMaterial({
        color: #007dfa,
        opacity: 1,
        transparent: false,
        name: 'materialName'
})
    viewer.impl.matman().addMaterial(this.newGuid(), mesh_material)
    viewer.impl.createOverlayScene(material.name, mesh_material, mesh_material)
}

1 Ответ

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

Во-первых, спасибо за ваши ответы, к сожалению, прозрачность все еще там.

Алекс: Я убрал непрозрачность.

Брайан: Я исправил код в соответствии с вашими предложениями (как я их понял).Ниже обновленный код.

Как видно из рисунка в ссылке, прозрачность еще есть.Любые другие предложения будут с благодарностью.

setColorMaterial(material, viewer) {
    var mesh_material = this.addMaterial(material, viewer)

    for (var i=0; i< material.dbIds.length; i++) {
        var dbid = material.dbIds[i]

        //from dbid to node, to fragid
        var it = viewer.model.getData().instanceTree
        it.enumNodeFragments(dbid, function (fragId) {
            var renderProxy = viewer.impl.getRenderProxy(viewer.model, fragId)
            renderProxy.meshProxy = new THREE.Mesh(renderProxy.geometry, mesh_material)
            renderProxy.meshProxy.matrix.copy(renderProxy.matrixWorld)
            renderProxy.meshProxy.matrixWorldNeedsUpdate = true
            renderProxy.meshProxy.matrixAutoUpdate = false
            renderProxy.meshProxy.frustumCulled = false
            viewer.impl.addOverlay(material.name, renderProxy.meshProxy)
        }, false)
    }
    viewer.impl.invalidate(true)
}

addMaterial(material, viewer) {
  var mesh_material = new THREE.MeshPhongMaterial({
      color: material.color,
      transparent: false,
      blendEquationAlpha: false,
      name: material.name
  })
  viewer.impl.matman().addMaterial(this.newGuid(), mesh_material)
  viewer.impl.createOverlayScene(material.name, mesh_material)
  return mesh_material
}

Прозрачность все еще там изображение

...