View里如何获取模型的坐标信息

发布于 2022-09-11 17:55:32 字数 24 浏览 8 评论 0

Viewer里面如何获取坐标信息?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤凫 2022-09-18 17:55:32

你是需要构件的坐标,还是其它什么坐标信息? 如果是构件,viewer加载的是几何面片,而非设计软件有所谓‘位置’信息。

viewer提供的是构件的变换矩阵信息,通过以下代码可以拿到。如果只是希望有个基准点,可以考虑用包围盒的中心,以下代码也有演示:

var dbid = 1234;
var bounds = new THREE.Box3();
var box = new THREE.Box3();
var instanceTree = NOP_VIEWER.impl.model.getData().instanceTree;
var fragList = NOP_VIEWER.impl.model.getFragmentList();

instanceTree.enumNodeFragments(dbid, function (fragId) {
   console.log('fragId:' + fragId);

   //某几何单元的全局坐标系包围盒
   fragList.getWorldBounds(fragId, box)
   //合并计算最终整个构件包围盒
   bounds.union(box);
             
   //某几何单元的全局坐标系变换矩阵
   //从中读取平移或旋转数值
   //由于构件的几何单元应该都是同步变换,所以这些矩阵初始值应该是一样的
   var fm = new THREE.Matrix4();
   fragList.getWorldMatrix(fragId,fm);
   console.log('frag matrix:' + JSON.stringify(fm));  
 }, true)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文