在 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 Forge Viewer 透明背景

将模型从 Autodesk Viewer 加载到 Forge Viewer

如何在ES6中重写Headless Autodesk Forge Viewer

在 Autodesk Forge Viewer 中获取 THREE.Mesh 元素

如何在对象上调整大小 - Autodesk Forge Viewer

如何在 Autodesk Forge Viewer 中嵌入 pdf?