如何获取视点内的所有构件?

当我保存了一个视点后,我想要获取视点可视范围内的所有构件,只要出现在视点内的都获取,请问有什么好的方法吗?因为是视点我想自定义包围盒不过不知道怎么去判断这个盒子的范围?

阅读 2k
1 个回答

可由摄像机得截头体并判断其与构件的包围盒有否碰撞来,如

var frustum = new THREE.Frustum();
var cameraViewProjectionMatrix = new THREE.Matrix4():
camera.matrixWorldInverse.getInverse( camera.matrixWorld );
cameraViewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
frustum.setFromMatrix( cameraViewProjectionMatrix );

model.getInstanceTree().enumNodeChildren(rootid, (dbid) => {
  var box = getComponentBoundingBox(model,dbid);
  if (frustum.intersectsBox(box))
      dbidArrayToSelect.push(dbid)
});

Viewer.select(dbidArrayToSelect)

其中getComponentBoundingBox可以参考:https://github.com/Autodesk-F...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进