javascript 如何使用Autodesk Platform Services v7查看器API以编程方式将所有对象的默认颜色设置为灰色,以便进行进度跟踪?

v8wbuo2f  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(72)

我正在使用Autodesk Platform Services v7,我正在尝试找到一种方法,以编程方式将所有对象的默认颜色设置为无色或灰色。这是为了在建筑施工中跟踪进度,在这种情况下,用户需要手动为已完成施工的对象着色。
问题
我已经搜索了官方文档,虽然我确实遇到了一个方法,允许我改变选定对象的颜色,这不符合我的需要,因为我想改变所有对象的颜色一次。
https://aps.autodesk.com/en/docs/viewer/v7/reference/Viewing/Viewer3D/#setselectioncolor-color-selectiontype

预期行为

我正在寻找一个代码片段,可以自动设置所有对象的默认颜色为无色或灰色。
任何帮助将不胜感激。提前感谢您!
编号

const viewer = this.viewer;
const instanceTree = viewer.model.getInstanceTree();
const rootId = instanceTree.getRootId(); // it was 1
const color = new THREE.Vector4(1, 0, 0, 1);

viewer.setThemingColor(rootId, color, viewer.model, true);

-----------------3月14日,添加-----------------------
下面我会用截图来进一步解释,首先我想把这张图片中所有的对象的颜色都改成灰色,比如我面前有一个黄色的大方框,我想把它改成灰色,还有一个蓝色的栅栏,我想把它改成灰色,还有一些黄色的管道,我想把它改成灰色,等我们把所有的东西都改成灰色之后,我们想把它们漆成另一种颜色作为施工进度控制。

如果我只是点击这个黄色的框来选择它,它会变成浅蓝色。接下来,当我运行你教我的代码,然后点击它,它会变成透明的。
第一节第一节第一节第二节第一节
所以,我一直没能实现我想要实现的......我想要实现的是让所有被涂上各种颜色的物体一劳永逸地变成灰色。

ylamdve6

ylamdve61#

一种简单的方法是使用setThemingColor()
你可以在根dbid上设置这个函数(在大多数情况下是dbid1,要用示例树派生树来确认),并通过recursive选项将这个颜色应用到所有对象。

NOP_VIEWER.setThemingColor(1, new THREE.Vector4(0.9, 0.9, 0.9, 1), NOP_VIEWER.model, true)

然而,它并不替换对象颜色。所以如果你减少你的颜色的alpha通道,原始对象颜色和主题颜色将被混合。
你说的“无颜色”是什么意思?如果你想要透明的对象(也许只有轮廓),你可以隐藏这些对象,让隐藏对象的重影选项来完成这项工作?

相关问题