[MS C++] 如何找到离摄像头最近的那个元素

各位老师好,

想请问下,如何找到离摄像头最近的那个元素?

Parents
  • 有函数mdlSolid_minimumDistanceBetweenEntities可求得两个三维实体间的最短距离。你可以把摄像头位置作为一个非常小的圆球看待(在内存中该位置创建一个小球),按镜头方向扩大一定的范围去扫描到一些三维体然后一个个计算最小距离。选出最小的那个即可。

    如果给的范围太小,一个元素都没有的话,可以逐步扩大扫描的范围。

    按范围扫描元素,请用ScanCriteria类或mdlScanCriteria_xxx这套函数。



  • 谢谢符工提供思路  抱歉之前没说清楚,这些元素为Transient临时元素,因此没有无法用mdlSolid_minimumDistanceBetweenEntities。 现在有个大致的思路是获取当前视图下垂直于屏幕向外的向量,然后取所有元素(当前问题下所有元素都为一条线段)上的中点,用DPoint3dOps::ProjectedParameterRange投影到该向量上获取Range

Reply
  • 谢谢符工提供思路  抱歉之前没说清楚,这些元素为Transient临时元素,因此没有无法用mdlSolid_minimumDistanceBetweenEntities。 现在有个大致的思路是获取当前视图下垂直于屏幕向外的向量,然后取所有元素(当前问题下所有元素都为一条线段)上的中点,用DPoint3dOps::ProjectedParameterRange投影到该向量上获取Range

Children