【问题标题】:Autodesk Forge Viewer getting fragment positionAutodesk Forge Viewer 获取片段位置
【发布时间】:2021-02-21 06:25:45
【问题描述】:

我正在尝试获取模型中单独网格的位置(从 revit 文件转换而来)。 我正在做的是获取fragmentProxy,然后使用getOriginalWorldMatrix() 来获取THREE.Matrix4()。然后从 Matrix4 调用 getPosition() 来获取片段的 THREE.Vector3 世界位置。 但是,每个网格都返回相同的位置值。那是因为模型最初是如何构建的吗?或者我必须使用其他方法获取片段位置?

【问题讨论】:

    标签: autodesk-forge forge


    【解决方案1】:

    您检索片段转换的过程是正确的。或者,您可以使用以下内容:

    function getFragmentTransform(model, fragid) {
        const frags = model.getFragmentList();
        let xform = new THREE.Matrix4();
        frags.getOriginalWorldMatrix(fragid, xform);
        return xform;
    }
    

    恐怕你是对的,在某些情况下,变换可能会直接烘焙到网格顶点中。

    【讨论】:

    • 非常感谢。所以我猜测位置是相同的,因为 Revit 如何处理位置,所有片段都将具有相同的枢轴位置,并且它们的位置是枢轴?有什么方法可以获取模型世界空间中每个片段的位置?也许将 Matrix4 世界位置转换为每个片段的本地位置?
    • 我对 Revit 不太熟悉,所以我无法确认是否是这种情况,但看起来确实如此。如果世界位置已经烘焙到片段的顶点中(而不是在片段变换矩阵中指定),您可以获得片段的“世界边界框”(fragList.getWorldBounds(fragid, bbox))并将其中心点用作世界位置.
    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 2019-09-15
    • 2017-01-29
    • 2017-05-05
    • 2020-05-06
    • 2021-05-13
    • 2021-09-03
    • 2021-03-02
    相关资源
    最近更新 更多