三维可视域分析如何获取绿色部分的可视面

0 投票

我在做idesktop 10i的插件开发时,在场景中对三维模型进行可视域分析,第一张图中可视的部分是绿色的,不可视的部分我设置成了透明的,然而使用Viewshed3D的GetVisibleInterface获取到的可视面包含了不可见的部分,第二张图中的绿色部分和第一张图的不完全相同。

请问有没有什么方法能够获取到和第一张图中的绿色部分完全相同的面?

6月 30 分类:  55次浏览 | 用户: LiangJN (5 分)

1个回答

0 投票
您好,您第一张图一第二张图的分析参数是否完全相同?

从您发的第二张截图来看,第二张分析的中间粉色区域,只有上面一小部分是高出视距,可视域上空完全不可见的,其余部分仍有部分可可视。

排查上面问题您可以用GetFrustumBody 全视域体 ,GetHiddenBody 不可视域体,GetVisibleBody可视域体来进行对比,观察您可视分析的具体情况。

希望可以帮助到您!
7月 1 用户: 执笔画月 名扬四海 (1,640 分)
您好,我用GetVisibleInterface获取第一张图中的可视面并进行投影,得到的就是第二张图的绿色部分。我遇到的问题是使用可视面进行投影得到的结果包含了第一张图中透明的部分(也就是不可见的部分)。

经过测试发现第一张图中相邻的有高低差的绿色区域之间存在倾斜的可视面,虽然在场景中这部分倾斜可视面没有与模型相交所以显示不可见,但是经过投影后该斜面的存在会导致在地图中这部分模型是绿色可见的。

我想找一个方法获取场景中绿色的那部分可视面,这样就可以在地图上看到正确的可视域分析结果,如果有什么想法,希望您可以分享出来,谢谢您的帮助!
您这边为什么要对获取的可视面进行投影呢?
我想在地图上看到可视域分析的结果,并获取可视面的面积,投影是我找到的最接近正确结果的方法
您的模型与地面不是水平的,倾斜物体投影出来面的拓扑关系肯定是物体实际相交面拖布关系不同的。
面积的话在三维里计算的才是正确的,非平行面投影出来的一定是有变形而且面积会更小,您可以拿物品模拟现象一想。

如果只是显示效果的话,您可以对整个可视体进行投影,得到的面与您粉色的面使用擦除算子做叠加分析,用粉色的面去擦除全可视体的面。但是要注意这个方法在二维上的面积和形状是正确的投影面,但是不等于实际相交面哦。
我理解您关于面积部分的意思了,我之前确实没注意到投影产生的变形问题。

不过关于显示效果的部分,把障碍物看作一个长方体,那么俯视地面时,障碍物的顶部应该是可视的,但是障碍物旁边的地面被障碍物遮挡了,所以障碍物旁边有一块条形的不可视地面。如果在二维上直接用粉色的面进行擦除的话,和三维中俯视时看到的不一致,所以我才会使用投影进行尝试,请问这个问题有办法解决吗?
...