forge 查看器中 nwc 文件的对象的 x、y、z 坐标
Posted
技术标签:
【中文标题】forge 查看器中 nwc 文件的对象的 x、y、z 坐标【英文标题】:x, y, z coordinates of an object for a nwc file in forge viewer 【发布时间】:2021-12-24 23:03:29 【问题描述】:我正在尝试在 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;
【问题讨论】:
【参考方案1】:您提到您正在寻找“对象的 x,y,z 坐标”。你到底是什么意思?我将假设您想要对象边界框的中心点 的坐标,因为这是人们通常要求的。然而,在您的代码 sn-p 中,您检索的是整个变换矩阵,而不是位置。
如果边界框的中心点适合您,您可以像这样获得它:
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();
【讨论】:
谢谢彼得,为我工作以上是关于forge 查看器中 nwc 文件的对象的 x、y、z 坐标的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Autodesk forge 2d 查看器中确定对象的起点和终点