我想暂时隐藏使用 SceneBuilder 扩展添加的模型中的对象。 但是,即使 changeMaterial 的结果为 true,我也没有在屏幕上看到任何变化,如下所示。
我还需要做任何额外的操作吗?
感谢您的帮助。
const customModel = await (
sceneBuilderExt
).addNewModel({
conserveMemory: false,
modelNameOverride: 'Custom Object Model',
});
const exstingMaterial = this.customModel.findMaterial(id);
const newMaterial = new THREE.MeshPhongMaterial({
...exstingMaterial,
visible: false
});
const res = this.customModel.changeMaterial(exstingMaterial, newMaterial);
this.customModel.sceneUpdated();
this.viewer.impl.invalidate(true, true, true);
您需要将新材质添加到场景生成器中:
modelBuilder.addMaterial('newMaterial', newMaterial);
那么,你能展示一下你的
changeMaterial
函数里面有什么吗?我不认为这是一个内置函数。
为什么不直接使用
viewer.hide([DBIDS-YOU-WANT-TO-HIDE], model)
或 model.hide()
(如果你想隐藏整个模型)?
隐藏对象(无重影)的另一种方法如下所述:完全隐藏查看器节点,无重影