Forge Viewer-无法正确查看多个不同的模型

时间:2018-10-18 10:07:34

标签: autodesk-forge

我无法在查看器中加载不同的模型。我怀疑问题来自于将模型中的不同单位(米和毫米)混合在一起。

所以我有3种型号:

  • IFC 1 ,以毫米为单位。

    • 将SVF衍生物加载到查看器中时,进行

      console.log(model.getUnitScale(), model.getUnitString());

      输出:

      0.001, mm

  • IFC 2 ,以毫米为单位。获得与 IFC 1

  • 相同的输出
  • Obj 。以原点[0,0,0]为中心的简单立方体的模型。这似乎没有任何固有的单位。

    • 将SVF衍生物加载到查看器中时,进行

      console.log(model.getUnitScale(), model.getUnitString());

      输出:

      1, null

为了使用正确的坐标加载模型,我使用以下选项:

IFC 1和2:

{
    globalOffset: {x: 1000000, y: 100000, z: 7000},
    sharedPropertyDbPath: doc.getPropertyDbPath(),
}

Obj:

let mat = new THREE.Matrix4();
mat.makeTranslation(1000000, 100000,7000);

{
    placementTransform: mat,
    sharedPropertyDbPath: doc.getPropertyDbPath(),
}

这里的理由是,IFC模型位于远离原点的位置,而Obj模型位于原始位置。为IFC使用globalOffset似乎使它们在查看器中对齐,使用placementTransform使Obj接近IFC模型是必要的。

我在这里遇到以下问题:

  • 对模型进行导航非常困难,当突出显示Obj模型时,似乎设置为使用y-up或其他方法,从而很难对其他模型进行方向导航。
  • 尝试更改缩放时,似乎只有Obj受到影响。这可能是由于比例尺设置不同导致的吗?

编辑1

看起来像使Obj立方体的大小与其他模型一样,可以解决缩放问题。 另外,如果先加载IFC文件,则方向导航正确。只有在首先加载OBJ文件时,我们才会出现“ y向上方向”问题

编辑2

可以使用viewer.navigation.setWorldUpVector(new THREE.Vector3(0,0,1), false);解决方向导航问题。 是否也可以全局控制这样的行为,而不是总是让不同的模型来设置行为?

1 个答案:

答案 0 :(得分:1)

我认为最后加载的模型将始终优先于任何先前设置的世界化矢量。因此,如果您想全局控制全局,则需要在加载所有模型之后手动使用viewer.navigation.setWorldUpVector方法。