【问题标题】:Forge Viewer - Cannot view multiple different models properlyForge Viewer - 无法正确查看多个不同的模型
【发布时间】:2019-03-23 02:58:14
【问题描述】:

我无法在查看器中加载不同的模型。我怀疑问题出在模型中混合了不同的单位(米和毫米)。

所以我有 3 个模型:

  • IFC 1,以毫米为单位。

    • 将 SVF 导数加载到查看器中时,执行

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

      输出:

      0.001, mm

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

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

    • 将 SVF 导数加载到查看器中时,执行

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

      输出:

      1, null

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

国际金融公司 1 和 2:

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

对象:

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-up 方向”问题

编辑 2

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

【问题讨论】:

    标签: autodesk-forge


    【解决方案1】:

    我认为最后加载的模型将始终优先于任何先前设置的世界向上向量。所以如果你想全局控制world-up,你需要在所有模型加载完成后手动使用viewer.navigation.setWorldUpVector方法。

    【讨论】:

      猜你喜欢
      • 2021-09-12
      • 2023-03-03
      • 2022-01-02
      • 2018-06-14
      • 2021-02-10
      • 2021-03-21
      • 2018-07-16
      • 1970-01-01
      • 2020-03-09
      相关资源
      最近更新 更多