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欠驱动水面船舶航迹自抗扰控制研究