繁体   English   中英

伪造查看器中 nwc 文件对象的 x、y、z 坐标

[英]x, y, z coordinates of an object for a nwc file in forge viewer

我试图在 nwc 模型中找到一个对象的 x、y、z 坐标,我正在使用下面的代码。

尽管此代码适用于 rvt 文件,但它不适用于 nwc 模型。

有没有办法从 nwc 模型中获取 x、y、z 坐标?

getFragmentWorldMatrixByNodeId(nodeId) {
        let result = {
            fragId: [],
            matrix: [],
        };
        let viewer = this.viewer;
        this.tree.enumNodeFragments(nodeId, function (frag) {

            let fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
            let matrix = new THREE.Matrix4();

            fragProxy.getWorldMatrix(matrix);

            result.fragId.push(frag);
            result.matrix.push(matrix);
        });
        return result;
    }

您提到您正在寻找“对象的 x、y、z 坐标”。 你到底是什么意思? 我将假设您想要对象边界框中心点的坐标,因为这是人们通常要求的。 但是,在您的代码片段中,您检索的是整个变换矩阵,而不是位置。

如果边界框的中心点适合您,您可以像这样获得它:

function getObjectBoundingBox(model, dbid) {
    const tree = model.getInstanceTree();
    const frags = model.getFragmentList();
    let totalBounds = new THREE.Box3();
    tree.enumNodeFragments(dbid, function (fragid) {
        let fragBounds = new THREE.Box3();
        frags.getWorldBounds(fragid, fragBounds);
        totalBounds.union(fragBounds);
    }, true);
    return totalBounds;
}

getObjectBoundingBox(viewer.model, 123).center();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM