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

Model aggregating in viewer - coordinate issue

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

这些主要是共享坐标系的 NVC 文件(我用于测试的文件)。模型正在动态加载并正确获取 'stitched'。

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

  1. 当我在查看器中单击 'home' 图标时,它不会显示完整的聚合模型,只会在中心显示第一个加载的模型,其余的则显示在屏幕外。
  2. 当我点击一个元素到 select 时,它 select 是其他东西(带有偏移量),在某些情况下 select 什么都没有(意思是,点击的坐标已被解释不正确)。

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

不过我想出了一个解决办法。加载模型后(每次当用户选择一些模型时),如果我 'hide' 所有模型并再次 'show' 它们,它会修复点击和 AGGREGATED_SELECTION 事件的问题。

这不是一个很好的用户体验,因为我希望能够在用户在先前聚合的模型集中移动时在后台加载模型。如果我 hide/show 加载新的后,用户会很烦。

有没有办法 'reset' 查看器的坐标系(与 hide/show 模型时发生的效果相同)?

如果能帮我解决这个问题,我将不胜感激。

谢谢 坂都

好的,所以有一个巨大的偏移量,导致精度问题。这就是为什么您会看到很多 'jittering' 相机。

要解决此问题...我们需要通过手动将所有几何体返回到更接近原点的方式来纠正大量偏移。 (或修复原始 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);

`

这逆转了这个大抵消的影响。由于精度问题,结果是几何图形 stops 闪烁,相机移动 stops 'jittering'。

让我知道这是否适合您。 迈克尔

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