查看器中的模型聚合-协调问题

时间:2018-12-13 15:07:33

标签: javascript autodesk-forge autodesk-viewer

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

这些大多数是NVC文件(我用于测试的文件),它们共享坐标系。动态加载模型并正确“缝合”模型。

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

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

我尝试了多种组合,当第一个加载的模型未占据聚合模型的完整大小(例如,建筑物的一层)时,似乎会发生此问题。

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

这不是一个很好的用户体验,因为我希望能够在用户围绕先前聚合的模型集移动时在后台加载模型。如果我在加载新的游戏后隐藏/显示,那会给用户带来烦恼。

有没有一种方法可以“重置”查看器的坐标系(达到与隐藏/显示模型相同的效果)?

希望能为您解决此问题提供帮助。

谢谢 班杜

1 个答案:

答案 0 :(得分:0)

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

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

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

按住Alt键单击对象上的任意位置以创建枢轴点,并使用此技巧(https://github.com/wallabyway/markupExt/issues/2)获得x,y,z值。

您应该看到这样的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);

`

这可以逆转此大偏移量的影响。结果是由于精度问题,几何图形停止了闪烁,并且摄像机的运动停止了“抖动”。

让我知道这是否对您有用。 迈克尔