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

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

阅读 3.4k
1 个回答

你是需要构件的坐标,还是其它什么坐标信息? 如果是构件,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)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进