开发者问题收集

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

2018-12-13
1845

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

这些主要是 NVC 文件(我用于测试的文件),它们共享坐标系。模型被动态加载并正确“拼接”。

但是,当加载第二个模型时,坐标系会搞砸 - 并非总是如此,但在某些情况下(在 v6.3 中 - 尚未检查以前的版本)。发生这种情况时,我会注意到以下情况:

  1. 当我单击查看器中的“主页”图标时,它不会显示完整的聚合模型,而只会在中心显示第一个加载的模型,其余的模型则显示在屏幕外。
  2. 当我单击要选择的元素时,它会选择其他内容(带有偏移),并且在某些情况下不会选择任何内容(这意味着单击的坐标被错误地解释)。

我尝试了多种组合,这个问题似乎发生在第一个加载的模型没有占据聚合模型的整个尺寸(例如,建筑物的一层)时。

不过,我想出了一个解决方案。加载模型后(每次用户选择一些模型时),如果我“隐藏”所有模型并再次“显示”它们,则可以解决单击和 AGGREGATED_SELECTION 事件的问题。

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

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

我希望得到一些帮助来解决这个问题。

谢谢 Bandu

1个回答

好的,因此存在大量偏移,从而导致精度问题。这就是您看到大量“抖动”相机的原因。

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

首先,让我们粗略地找出偏移值...

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

您应该看到这样的 xyz 值... Z.Vector3 {x:1296285.515098644,y:14995636.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);

`

这会反转这个大偏移的影响。结果是几何图形停止闪烁,相机移动停止因精度问题而“抖动”。

如果这对您有用,请告诉我。 迈克尔

PS。您可以从小型侧文件 AECModelData.json 中提取“精确”全局偏移,请参阅博客: forge.autodesk.com/blog/add-revit-levels-and-2d-minimap-your-3d

michael beale
2018-12-19