[英]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.