查看器坐标问题中的模型聚合



我正在查看器中动态聚合模型(来自多个BIM文件(。基本上,我初始化查看器,然后为用户选择动态查看的每个模型初始化LoadDocument和LoadModel。

这些大多是NVC文件(我用来测试的(,它们共享坐标系。模型得到动态加载并得到正确的"缝合"。

然而,当加载第二个模型时,坐标系会变得一团糟——并非总是如此,但在某些情况下(在v6.3中,没有检查以前的版本(。当这种情况发生时,我可以注意到以下内容:

  1. 当我点击查看器中的"主页"图标时,它不会显示完整的聚合模型,而是只在中央显示第一个加载的模型,其余的都在屏幕外
  2. 当我单击要选择的元素时,它会选择其他元素(带有偏移(,而在某些情况下则什么都不选择(这意味着单击的坐标被错误地解释(

我尝试过多种组合,当第一个加载的模型没有占据聚合模型的全部尺寸(比如说,建筑物的一层(时,这个问题似乎会发生。

不过我想出了一个解决办法。加载模型后(每次用户选择某个模型时(,如果我"隐藏"所有模型并再次"显示"它们,它将修复单击和AGGREGATE_SELECTION事件的问题。

这不是一个好的用户体验,因为我希望能够在用户移动之前聚合的模型集时在后台加载模型。如果我在加载新的后隐藏/显示,用户会很讨厌。

有没有办法"重置"查看器的坐标系(与隐藏/显示模型时的效果相同(?

我希望你能帮我解决这个问题。

谢谢班杜

ok,因此存在大量偏移,导致精度问题。这就是为什么你会看到很多相机的"抖动"。

要解决此问题。。。我们需要通过手动将所有几何体返回到更接近原点的位置来校正大量偏移。(或修复原始navisworks文件(。

首先,让我们大致计算一下偏移值。。。

按住ALT键并单击对象上的任意位置。这将设置一个绿点,即轴心点。然后使用viewer.navigation.getPivotPoint((获取x,y,z值。(详细信息:https://github.com/wallabyway/markupExt/issues/2)。

你应该看到这样的xyz值。。。Z.Vector3{x:129628.515098644,y:1495636.431742325,Z:364.26238179027337}

现在,使用该值调整设置全局偏移,以正确地将所有模型移动到更接近0,0,0的位置。像这样。。。

第70行:

var modelOptions = {
sharedPropertyDbPath: doc.getPropertyDbPath(),
globalOffset: {x:1296285.515098644, y: 14995636.431742325, z:0}
};
viewer.loadModel(svfUrl, modelOptions, onLoadModelSuccess);

`

这将扭转这种大偏移的影响。结果是,由于精度问题,几何体停止闪烁,相机移动停止"抖动"。

如果这对你有用,请告诉我。Michael

ps。您可以从小文件AECModelData.json中提取"精确"的全局偏移量,请参阅博客:forge.autodesk.com/blog/add-revit-levels-and2d-minimap-your-3d

最新更新