在 Autodesk Forge Viewer 中为对象着色的最佳方法
Posted
技术标签:
【中文标题】在 Autodesk Forge Viewer 中为对象着色的最佳方法【英文标题】:Best approach to color objects in Autodesk Forge Viewer 【发布时间】:2020-11-03 10:01:00 【问题描述】:我正在使用 Autodesk forge 查看器(我正在使用查看器版本 6*)进行 BIM 项目。
我想根据完成状态为不同的对象涂上不同的颜色。
查看下图。
对象已经着色我尝试使用 setThemingColor 但它不起作用。我不想使用 setSelectionColor,因为我的对象是在不选择特定对象的情况下显示颜色。
例如:在下图中,我想用相应的颜色为圆圈对象着色。
sample_image
更新:
这是我正在使用的代码 sn-p
function changeObjectColor(modelId, status)
var color ;
switch (status)
case 'Green':
color = new THREE.Vector4(0, 0.5, 0, 0.5);
break;
case 'Red':
color = new THREE.Vector4(1, 0, 0, 0.5);
break;
viewerApp.getCurrentViewer().setThemingColor(modelId,color);
结果 result after setting the color
我也使用了隔离和选择方法,但是即使在删除这两个方法调用之后,特定对象的颜色仍然不会改变
新的尝试:
所以我设法在tutorial 之后设置/隐藏对象纹理(只是灰色)。但是后来我尝试使用 setThemingColor 方法,但对象仍然不会显示预期的颜色
viewerApp.getCurrentViewer().setThemingColor(modelId, color, null, true);
viewerApp.getCurrentViewer().impl.invalidate(true, true, false);
我在这里错过了什么?
【问题讨论】:
【参考方案1】:setThemingColor 方法在 v6 中可用,应该可以正常工作。考虑发布负责设置颜色的代码的 sn-p。
这是example 在Forge Digital Twin 演示中如何使用该方法的@。
【讨论】:
你好 Petr,我用我的代码更新了帖子,我将通过这个例子谢谢 谢谢!请注意,如果您正在为不是叶节点的对象 ID 着色(换句话说,具有此 ID 的对象由多个对象组成),您需要将setThemingColor
方法的第 4 个参数设置为 @ 987654326@ 以递归方式应用颜色。
我使用了 viewerApp.getCurrentViewer().setThemingColor(modelId, color, null, true);但结果对我来说是一样的
不确定this 是否有帮助?以上是关于在 Autodesk Forge Viewer 中为对象着色的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章
将模型从 Autodesk Viewer 加载到 Forge Viewer
如何在ES6中重写Headless Autodesk Forge Viewer
在 Autodesk Forge Viewer 中获取 THREE.Mesh 元素