【发布时间】:2019-07-09 14:20:01
【问题描述】:
为了在 Forge 查看器中为许多对象设置颜色,我做了一个扩展,它在材质上设置颜色并将对象连接到它。这样我只更新查看器一次而不是多次。但是我想没有透明度,但我一直得到它,即使我已经将材料透明度设置为假。我该如何解决这个问题?
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
-
我没有看到您的
addMaterial正在返回您创建的不透明材质,也没有看到您的mesh_material被应用于添加到叠加层的对象? -
Bryan:我根据您的建议修复了代码(据我了解)。添加了更新的代码。