ContextCapture水面约束

Posted BetterMe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ContextCapture水面约束相关的知识,希望对你有一定的参考价值。

    【问题描述】

    对于水面而言,由于特征点较少,软件在计算时很难匹配正确,导致输出模型的水面通常是支离破碎的。软件针对这种情况提供了一个约束工具,用户手动的为水面添加平面约束后,输出的水面模型就会非常平整。

  【添加方法】

    请留意这个功能只能在ContextCapture center版本中才能使用。
    首先,完成空三后,先进行一次常规建模,然后在Acute 3D viewer中打开,用测量工具测量一下水面的高度。
再次提交一次建模,然后如下图所示:选择Reconstruction constraints选项,这里提供两种加限制的方式。

       

 

  第一种是谷歌地图的KML格式,对ContextCapture中已导入照片的block点击右键,输出为kml格式,则谷歌地图会根据照片中的GPS数据自动匹配到照相的位置,然后如下截图所示,通过在谷歌地图中绘制polygon选定水面区域,注意这里的高度一定要设置对,可以参考第一次建模后测量出的高度。(如果高度不匹配则kml文件无法导入进ContextCapture。)然后保存这个polygon后,会在谷歌地图左侧列表中出现,点击鼠标右键将其保存为KML文件。然后导入到ContextCapture中。再次进行建模即可。

                    

 

  另一种方式是导入obj格式文件,如果模型是有地理坐标系的,那么obj文件也要定义相同的坐标系和中心点,高度也要正确。

如果对OBJ文件的设置不太熟悉,建议使用谷歌地图的KML文件方式。

最后进行建模时,软件会针对手动添加的约束对指定区域进行平面化处理。

 

  案例效果:

    修复前:

     

    修复后:

     

  ps:

    1、错误:无法添加表面约束,应为它与重建没有相交

    

        解决办法:一般是我们添加表面约束时Altitude 设置错误,导致没有与我们的模型产生交界处,我们只要在Acute3D Viewer中重新测量出正确的高程并设置,导出kml即可。

    2、 设置高度时,一定要设置测量范围内最高的高度,否则可能可能出现部分水面破洞无法被约束等问题,即水面破洞修复不完全。

    3、 ContextCapture的表面约束不仅仅适用于水面修复,还适合于草坪、公路、建筑等等的约束压平。

以上是关于ContextCapture水面约束的主要内容,如果未能解决你的问题,请参考以下文章

使用ContextCapture生成Cesium所需的3dtile

matlab simulink欠驱动水面船舶航迹自抗扰控制研究

Postgres 忽略表约束,即使约束不匹配也会扫描所有继承的表

打字稿:在没有实际扩展/扩大的情况下捕获/推断类型的约束

如何做一个卡通水面效果

生成正射影像/DSM,等高线提取