繁体   English   中英

更改Autodesk Forge Viewer隐藏元素的材质

[英]Change material of hidden elements of Autodesk Forge viewer

我想更改观看者隐藏的元素的材质(THREE.MeshPhongMaterial)。 默认的隐藏元素仍然可见,但是我想更改其透明度和颜色。

这是示例代码。 我尝试更改主题颜色和材料,但没有成功:

viewer.hideById(dbId);

var color = 0x0000ff; // blue color
viewer.setThemingColor(dbId, color, viewer.model);

var instanceTree = viewer.model.getData().instanceTree;
var fragmentList = viewer.model.getFragmentList();

instanceTree.enumNodeFragments(dbId, function (fragId) {
    fragmentList.setMaterial(fragId, new THREE.MeshPhongMaterial( { opacity: 0.5 } ));
});

viewer.impl.invalidate(true);

但是,更新隐藏元素的材质后,什么都不会改变。 如何解决。 我希望我的自定义隐藏元素具有不同的颜色和透明度。

使用Forge Viewer,如果您隐藏对象(如Augusto所述),则似乎该对象将被完全隐藏,因此您无法设置材质以根据需要进行查看。 但是,有一个技巧性的解决方法可能有助于实现您在http://app.netonapp.com/JavaScript/Three.js/select_inner_objects.html中对Three.js所做的操作,您可以选择内部对象,并且仍然可以看到外部的“隐藏”对象。

我所做的很简单,在“ mousedown”事件的回调函数中,我要做的第一件事是设置由API viewer.hideById(dbId)隐藏的外部对象,然后由您的API viewer.impl.renderer选择该对象。 ().idAtPixel。在这种情况下,它将忽略隐藏的对象,只选择内部对象,然后在“ SELECTION_CHANGED_EVENT”事件的函数中,添加代码查看器.show(dbid)以显示外部对象。

通过这种方式,您可以为外部对象设置所需的材质,外部对象将显示为其他普通对象,但是当您尝试选择对象时,它将仅隐藏一段时间。 该解决方案似乎对我有利,但是我没有对其进行彻底的测试,您可以尝试看看是否可行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM